GIAOTracker:多クラス多物体の追尾のための包括的フレームワークを提案!
3つの要点
✔️ MCMOT(MultiClass Multi-Object Tracking)のためのフレームワークを3つのステージで提案
✔️ ドローン映像の追尾タスクで既存の追尾モデルよりも高い精度を達成
✔️ 各技術は汎用性が高く他の追尾手法に容易に導入可能
GIAOTracker: A comprehensive framework for MCMOT with global information and optimizing strategies in VisDrone 2021
written by Yunhao Du, Junfeng Wan, Yanyun Zhao, Binyu Zhang, Zhihang Tong, Junhao Dong
(Submitted on 24 Feb 2022)
Comments: ICCV 2021
Subjects: Computer Vision and Pattern Recognition (cs.CV)
code:
本記事で使用している画像は論文中のもの、紹介スライドのもの、またはそれを参考に作成したものを使用しております。
はじめに
今回紹介するのは、生の動画データから物体1つ1つを検出・追尾する、画像処理AIの中でも最も直感的でワクワクする追尾タスクの論文です。画像処理AIでよく挙げられるタスクに画像分類や物体検出、セマンティックセグメンテーションなどがあります。これらに比べて重要さの割にあまり解説が少ないのが物体追尾です。物体検出では動きに関する情報を取得できず、画像分類では画像データが分類対象の物体を代表として画角に収められている前提を置いているため制約が大きいです。一方で物体追尾は生の動画データから細かな物体の時間的な変化を捉えるため得られる特徴が多く、データの分析や防犯・ロボットの制御などに大きく役立ちます。
今回は物体追尾の中でもドローン映像のMCMOT(MultiClass Multi-Object Tracking)タスクのための高精度なフレームワークを提案した「GIAOTracker: A comprehensive framework for MCMOT with global information and optimizing strategies in VisDrone 2021」を解説します。
MCMOTは特定のクラスや1つの物体に注目するのではなく、様々なクラスの複数の物体を同時に追尾する必要があるため難易度が高いタスクです。しかしドローン映像では更に以下のような条件に対応する技術が必要となります。監視カメラなどの固定カメラの場合よりも複雑で困難であることがわかると思います。
- 空撮により映り込む大量の小さな物体
- 不規則な物体の運き・カメラの移動
- 木や橋などの障害物で物体が隠れる問題(オクルージョン)
これらは動画データ全般に言えることですがドローン映像では特に顕著になり、解決できれば他の様々な追尾タスクに応用が効くことが期待されます。
今回紹介するGIAOTrackerは追尾を3つのステージに分け、それぞれで効果的な技術を提案・組み合わせることでこれらに対応しています。「オンライン追尾・グローバルリンク・後処理」からなるGIAOTrackerの全体像が下図になります。
更に各ステージの技術はGIAOTrackerに特化しているものではなく、他の追尾手法にも簡単に適用可能で精度を上げることが可能と主張されています。各ステージの概要は次のようになります。
実験ではアブレーションによりベースラインであるDeepSORTと比較して各ステージの有効性を実証し、VisDrone MOTデータセットで行ったSOTAモデルとの比較では2位を達成しました。検出モデルの精度や学習データの幅が広がれば更に精度は良くなると主張しています。それでは早速この手法の詳細を見ていきましょう。
体系的位置付け
まずは本手法の体系的な位置付けから解説します。追尾タスクは正確には各フレームで検出された同じ物体をフレーム間で結びつけるタスクです。時刻tで検出された物体が時刻t+1でどこに位置するかを予測し、実際の検出結果と照らし合わせてフレーム間でマッチング(ReID)を行います。つまり追尾タスクは検出タスクを前提としており、追尾精度はどうしても検出段階の精度に大きく依存してしまいます。
ここで大きく分かれるのが追尾のアプローチです。検出と追尾を1つのモデルで同時に学習させるか、複数のモデルを用意して別々に学習させるかでSDEとJDEの2つに分けられます。SDE(Separate Detection and Embedding)はTracking by Detetectionとも呼ばれ、検出器を学習した後、追尾の学習を行うアプローチを指します。検出と追尾を別々に最適化するためより柔軟で複雑な映像に適している特徴があります。一方でJDE(Joint Detection and Embedding)は検出と追尾を1つに統一させるアプローチです。Faster R-CNN、CenterNet、YOLOv3などの検出器に追尾のための特徴抽出器や予測器を分岐・追加することで同時に実装しています。一般的にJDEはSDEよりも高速に動作しますが複雑な環境下ではJDEの精度は落ちてしまします。検出は検出のみ、追尾は追尾のみで最適化させたほうが精度は高まると考えられるため、複雑なドローン映像を扱う本論文ではSDEを選択しており、ベースの手法としてDeepSORTを採用しています。
また追尾に関する論文ではTrackletやTrajectoryという単語をよく目にします。どちらも追尾結果である軌跡を指しますが、様々な論文を読んだ印象として、Trackletは"追尾自体は正確だがある短期間しか追尾できていない不完全な軌跡"を指し、Trajectoryは"複数のTrackletを結合した完全な軌跡"を指す印象があります。本論文においてもそれに準じた使い方で解説していきます。
オンライン追尾(Stage1)
このステージでは新たな特徴の更新手法、物体の動き予測、カメラ補正により高精度なTrackletを生成することを目指します。
追尾タスクにおけるオンラインとオフラインの違いは追尾に未来の情報を使うか否かです。オンライン追尾では最新の2フレームのみでマッチングを行います。対してオフライン追尾は、オンライン追尾で生成したTrackletを繋ぎ合わせて完全なTracjectoryを生成します。まずは第一ステージのオンライン追尾から解説していきます。下図がベースラインであるDeepSORTと提案手法との違いです。肝は外見特徴、物体の動き予測です。これらの情報を基にコスト行列を生成しています。
EMA Bank
EMA (Exponential Moving Average) Bankは外見特徴の更新時に慣性項を導入することでTrackletを代表する特徴と特徴の変化を同時に捉えることを可能にしています。追尾では検出段階で同じクラスに属した物体同士を区別できるような外見の特徴を得る必要があります。提案手法はDeepSORTで採用された単純な特徴抽出器ではなくOSNetというモデルを採用し、更に特徴の更新にEMA Bankという新たな更新方法を提案しています。従来の手法はTrackletの各フレームの特徴をそのまま保持していたため検出ノイズの影響を受けやすい欠点がありました。そこでEMA Bankは慣性項による特徴量の更新・保持を行うことで1つのTrackletに1つの特徴量を持たせるよう改良を行いました。
eは時刻tにおけるTracklet i の特徴量、fは時刻tで検出された物体の特徴量、αは慣性項を表します。特徴量の変化を反映させつつ、統合されることで検出ノイズを軽減させることができます。
NSA Karman
NSAカルマンはカルマンフィルタのノイズを検出の信頼度に応じて適応的に変化させ、複雑な物体の動きに対応させています。カルマンフィルタは物体が持つ真の状態(座標)とは別に、我々が確認できる観測(座標)はノイズが載ることで真の状態と異なる値を持つ事を仮定しています。このノイズの正体は追尾タスクにおいては検出段階でのbboxのズレを表しており、線形カルマンフィルタでは全ての物体で共通したノイズを仮定しています。一方でNSAカルマンは検出の信頼度によって変化させるというアプローチを取ります。
ckが各物体の信頼度を表します。検出器が各物体毎に出力する検出の信頼度が高いほど検出ノイズは小さいとして動き予測を行うことで様々な複雑な物体の動きに対応した位置推定を行うことができます。例外として車両クラスには非線形な動きによりロバストなUKF(Unscented Kalman Filter)を用いているとのことです。
その他
追尾タスクではカメラの動きに対応することも重要です。提案手法ではORBとRANSACという手法を用いてカメラの動きを補正させています。
また対象となるデータには区別が難しい2つのクラス(車とバンなど)があったりします。そこで異なるクラスを独立して追尾するのではなくまず抽象度の高いカテゴリで追尾を行い、その後投票機構を用いてTrackletの細かいカテゴリを決定するRough2Fineという手法を提案しています。従来の手法は1つの抽象的なカテゴリを割り当てる"had-vote"であるのに対して、この手法は複数のクラスを割り当て各クラスの検出の信頼度に応じて重みづけて投票する"soft-vote"となります。
グローバルリンク(Stage2)
このステージではStage1で生成されたTrackletを結びつけ、完全なTrajectoryを生成する事を目指します。
Stage1では高精度なTrackletが生成されました。しかしオンライン追尾のため、Trackletは不完全です。オンライン追尾は処理が高速な一方で、一度物体を見失った場合に再度検出できても同じ物体であると見做すことが難しくなります。途切れた期間でも物体は移動しており、大きさや向き、角度が大きく変わってしまうためマッチングが困難になるためです。そのため途切れてしまった同じ物体のTrackletをオンライン追尾の後で再度結びつける必要があります。そのためのオフライン処理がグローバルリンクです。オンライン追尾が検出結果のマッチングであるのに対し、グローバルリンクは追尾結果(Tracklet)のマッチングを行います。この段階的なマッチングで提案手法は高精度を達成することができます。肝はGIModel、Trackletのコストです。マッチングの際に用いる外観特徴抽出器にGIModelという手法を提案しています。
GIModel
提案手法であるGIModelは検出ノイズや物体の外観の急激な変化に対してロバストな外見特徴抽出器です。Stage1で生成されたTrackletの特徴を大域的・局所的に抽出し、Transformerを用いてフレーム間の関連性を適切に考慮した特徴抽出を行います。
Trackletの外見特徴はオンライン追尾とは異なる方法で抽出します。まずGIModelはTrackletのNフレームそれぞれをCNN(ResNet50-TP)に入力し特徴マップを得ます。この時通常(a)では得られた特徴を単純にflattenにすることで全結合層などタスクに応じた層につなげていきますが、GIModelでは特徴全体のflatten(青)とは別に、空間方向の部分的な特徴(緑、橙)をflattenさせます。大域的な特徴と部位毎の局所的な特徴を結合させることで、物体の異なる部位の詳細な特徴に焦点を当て、オクルージョンに対してより頑健にさせることができます。オクルージョン時でも鮮明に見えている部位の情報を上手く利用することが出来るためと考えられます。
続いて得られたNフレームの特徴を統合する必要があります。従来の手法(c)ではN個の特徴に単純にaverage-poolingを取りますが、単純な平均ではフレーム間の関係を上手く捉えられません。一方でGIModelは平均を取る前にTransformer Encoderに入力しています。TransformerはSelf-Attentionというパッチ間の関係性を学習することが出来る機構を備えているため、フレーム間の関係をより柔軟に学習した上で平均化することができます。
以上により検出ノイズや物体の外観の急激な変化に対してロバストな特徴を抽出することができます。
コスト行列
オンライン追尾では外見特徴と位置情報を利用してマッチングを行いました。一方でTrackletのマッチングの場合には位置情報の他に時間情報をマッチングのコストに用います。オンライン追尾では常に最新フレームとのマッチングでしたが、グローバルリンクは途切れてしまった異なる時間帯のTrackletを結びつける必要があるためです。Tracklet iとjのマッチングコストは次のように表されます。
CaはGIModelにより抽出された特徴量間のコサイン距離、CtはTracklet間の時間の差、Csは空間的な距離になります。より適切にマッチングを行うために各コストには閾値を設け、全ての条件を満たしたペアのみマッチングに用いています。
グローバルリンクは以上のように外見特徴と時空間的な距離を基にStage1で得られた不完全なTrackletを結びつけることが出来ます。
グローバルリンク(Stage3)
このステージではStage1,Stage2で生成したTrajectoryに4つの後処理を適用することでTrajectoryを洗練化させます。
追尾タスクでは後処理が軽視されているようですが、提案手法では4つの効果的な後処理を適用することで精度を更に高めています。ノイズ除去・補間・Rescoring・Trajectoryの融合です。
ノイズ除去
1つの物体に対して検出器が重複して検出した場合、無意味なTrajectoryが増えてしまいます。重複した検出を防ぐために空間方向のIoUを基にNMSを適用することは一般的です。提案手法は検出ではなくTrajectoryを取り除くために、時間方向のTemporal-IoUを使用しSoftNMSを適用しています。
補間
続いて検出ミスによる追尾の途切れの補間です。追尾できた範囲についてはグローバルリンクにより結びつけられていますが、途切れた範囲はそのままになっています。提案手法は途切れたフレームが60フレーム以内の場合には補間可能として線形補間を適用し、精度を高めています。
Rescoring
検出タスクでは評価時に検出結果の閾値として信頼度を使用しますが、追尾タスクでは平均値を用います。提案手法では単純な平均値ではなく、軌跡の長さに応じて信頼度を重み付けるRescoringを行なっています。これは長く追尾できている軌跡ほど結果が信頼できるという仮説に基づいています。Tracklet iの重みωiは次の式で表されます。
liはTrajectoryの長さです。長さが0に近いほど重みは0に近づき、長いほど1に近づきます。これにより評価時のTrajectoryの閾値をより適切に与えることが出来ます。
Trajectoryの融合
ここでは複数のモデルによる追尾結果を融合します。画像分類や物体検出では複数のモデルの結果を利用するアプローチは取られていますが、追尾タスクではあまり注目されていませんでした。そこで提案手法ではTrackNMSという手法を提案し、複数のモデルの全Trajectoryの中で不要なTrajectoryを除去し、有用なもののみを残しています。機構の詳細は次の通りです。
実験
データセット
実験では上記全ての機構の有効性をアブレーションで実証し、SOTAとの比較をおこなっています。検証を行うVisDrone MOTデータセットは96シーケンス(合計39,988フレーム)の5クラス追尾タスクのデータセットです。評価指標はクラス後に異なる閾値を設けたmAP(mean Average Precision)と全クラスの平均です。正解のTrajectoryとのIoUが閾値より高い場合にそのTrajectoryは正解とみなされます。
モデルの選択
先述の通り検出器の選択は追尾精度に大きく影響します。検出器はMS COCOデータセットで事前学習されたResNetベースの検出器DetectoRSを用いてVisDrone MOTでfine-tuningさせます。過学習を避けるため5フレーム中1フレームをサンプリングし学習に使用しています。
本実験では検出器を学習の仕方の違いで2種類用意します。Dev1とDev2です。
続いて外観特徴抽出に用いるOSNetです。ImageNetで事前学習済みのOSNetを用いてVisDrone MOTデータセットをベースに作成したReIDデータセットで学習させています。ReIDデータセットは5フレーム間隔でサンプリングし、更にオクルージョンや見切れが50%以上見られる物体は削除させることで作成しています。また物体クラス毎に異なる入力サイズで学習させています。
GIModelも同様にImageNetで学習済みのモデルを用います。上記のReIDデータセットのようにGIModel用のデータセットを作成し学習させています。サンプリングレートが3フレームであるという違いがあります。
パラメータ
各ステージのパラメータは論文から抜粋します。DeepSORTやJDEをベースとしています。
アブレーション
オンライン追尾について、ベースラインであるDeepSORTから順に機構を加えた時の精度比較を行っています。addはGIAOTrackerに採用されているか否かを示しています。ORBに基づくマッチングはカメラの動きを補正し追尾性能を向上させています。強力な特徴抽出器OSNetとロバストなEMA Bankについても有用であることが分かります。またNSAカルマンとUKFは線形カルマンよりはるかに優れる結果となっています。Rough2Fineについては「soft-vote」が「hard-vote」を大きく上回っています。このように導入した各機構の有効性が実証されています。
続いてはグローバルリンク内のGIModelです。ReIDデータセットに対して評価指標にはmAPとRank1を用いています。ベースラインに対して+trainはVisDroneで学習したGIModel、+satはTransformerによるフレーム間の関係性の考慮を行ったもの、最後の+partは大域的・局所的なflattenを導入したものになります。表から各機構が精度を大きく向上させていることが分かります。
最後は後処理です。GIAOTracker-GlobalはStage2までを採用したGIAOTrackerです。これに対してノイズ除去・補間・Rescoringを採用した結果、冗長なTrajectoryの除去・Trajectoryの補間がうまく行われていることが分かります。また追尾の質がTrajectoryの長さと相関していることが分かります。
全ステージの性能比較
ここまで各ステージ毎の性能比較を行いましたが、次は全ステージを導入した時の性能比較です。DeepSORTに対してStage1,Stage2,Stage3と順に変更・追加した時の精度を示しています。2-4行目はDetV1を検出器としたGIAOTrackerであり、-DetV2はGIAOTracker-PostにてDetV2に変更したモデルです。-FusionはDetV1を採用した-Postと-DetV2を用いて最後の後処理である軌跡の融合をおこなった時の精度を表します。最後のGIAOTracker*は検出にはアノテーションデータを用いた時の精度です。つまり検出精度が100%の時の追尾精度を表しています。各ステージが精度を向上させていることを確認できます。アノテーションデータを使用した時の精度はDetV1やDetV2などの個々のモデルの推定から92%向上しています。つまり検出器の推定をベースとしていると一見全体的に低く見えますが、検出精度を担保できればGIAOTrackerの各ステージが非常に有効である事がわかります。
SOTAとの比較
最後の実験はVisDrone2021のSOTAモデルとの比較です。
上位9モデルの中で2番目の精度を達成し、優位性を示しました。1番になっていないのは検出器の精度や学習データ数が制限されたためだとしており、表4の結果から検出器の精度が上がれば更に本手法の精度は増すと主張しています。
所感
最後のSOTAとの比較が少し気になりました。検出精度に影響されてしまう事を述べていましたが、それなら全てのSOTAに対してアノテーションデータを用いて追尾を行うとどうなるかが気になります。JDEの場合は公平な比較が難しいかもしれませんが、VisDrone-MOT2021を見ると、精度で劣ったSOMOTはSDEですし、公平な比較ができるように思いました。
またハイパーパラメータが多い事がアプリケーションとして有用か疑問に思いました。グローバルリンクだけで各コストの重み3つと閾値3つで6つのパラメータを制御する必要があり、いずれも直感的には設定できないように思います。
まとめ
GIAOTrackerはドローン映像のMCMOTにおいて優れた精度を達成することが分かりました。各機構の有効性はアブレーションで実証されました。魅力的なのは「カメラ補正やカルマンフィルタの改良、特徴更新の改良、グローバルリンク、後処理」のどれをとっても簡単に他の追尾手法に導入できる機構ばかりであることです。実際にDeepSORTの改良版であるStrongSORTもGIAOTrackerのアプローチを採用しています。
本論文は物体追尾を体系的に理解したい人、最新のフレームワークに興味のある人には良い知見になると思いました。
この記事に関するカテゴリー