Multi-Object Tracking (MOT)
複数物体追跡(MOT)は、動画内のすべての物体を追跡し、フレームをまたいで物体ごとに1つのIDを維持します。トラッカーによる検出結果の対応付け、評価指標、コードを解説します。
マルチオブジェクトトラッキング(MOT)は、コンピュータービジョンのタスクであり、動画内の関心対象となるすべての物体を同時に追跡します。各物体に永続的なIDを割り当て、フレーム間の位置を軌跡として記録します。物体の数は不明で、人や車両が入ってきたり、出ていったり、交差したり、互いの背後に隠れたりするため、絶えず変化します。そのためトラッカーは、各フレームでどの検出が既存トラックの継続を示すのか、どれが新しいトラックを開始するのか、どのトラックが終了したのかを判断する必要があります。MOTは最も一般的な物体追跡の形式です。単一物体追跡(SOT)は、クラスを問わず最初のフレームで選択された1つの対象を追跡します。
マルチオブジェクトトラッキングの仕組み#
ほとんどのMOTシステムは、検出ベースの追跡を使用します。物体検出モデルが各フレームで物体を検出し、トラッカーが検出結果を保持している既存のトラックに関連付けます。トラッカーは、通常カルマンフィルターを使ったモーションモデルで各トラックの位置を予測します。そして、ボックスの重なり(IoU)、動き、および必要に応じて物体再識別(Re-ID)モデルによる外観埋め込みから、予測トラックと新しい検出結果のコスト行列を作成します。次に、ハンガリアンアルゴリズムを使った線形割り当て問題として対応付けを解きます。一致したトラックはIDを維持し、信頼度の高い未対応の検出結果は新しいトラックを開始します。対応する検出がないトラックは「ロスト」として一定数のフレーム保持され、オクルージョン後に再検出できるようにします。
混雑した環境では、一部が隠れた人の信頼度の低い検出を単純なしきい値で破棄してしまうため、対応付けが難しくなります。ByteTrackは、2回目の対応付けに低信頼度の検出結果を利用します。
トラッカーの設計#
- SORTとその派生手法: SORT(2016年)は、カルマンフィルター、IoUコスト、ハンガリアンアルゴリズムを組み合わせました。DeepSORTはオクルージョン後にIDを復元するための外観特徴を追加し、ByteTrackは低信頼度の検出を使う段階を追加しました。OC-SORTはオクルージョンに強い動きの推定を実現し、BoT-SORTは移動カメラに対応するためのカメラ動き補正を追加しました。
- 検出と埋め込みの同時処理(FairMOT): FairMOTは検出結果とRe-ID埋め込みを同時に出力する単一のネットワークをトレーニングするため、外観特徴の抽出に2つ目のモデルは必要ありません。
- エンドツーエンド追跡(MOTR): MOTRとTrackFormerは、各物体のIDをフレーム間で引き継ぐトラッククエリによってDETR Transformerを拡張し、トレーニング中に対応付けを学習します。
Ultralytics YOLOのトラックモードは、あらゆるYOLO26の検出、セグメンテーション、姿勢推定、または回転ボックスモデルに対して、検出ベースのトラッキングを実行します。組み込みトラッカー6種類は、tracker引数で選択できます。TrackTrack(デフォルト)、BoT-SORT、ByteTrack、OC-SORT、Deep OC-SORT、FastTrackerを利用できます。この例では短い動画の人物を追跡し、各IDが存続するフレーム数を数えます。
from collections import Counter
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
# COCOクラス0の人物を追跡し、各トラックIDが出現するフレーム数を数えます
frames_per_id = Counter()
for result in model.track(video, stream=True, classes=[0]):
if result.boxes.is_track:
frames_per_id.update(result.boxes.id.int().tolist())
# 最も長い5つの軌跡を(トラックID、フレーム数)として表示します
print(frames_per_id.most_common(5))各ペアはトラックIDと、そのIDが維持されたフレーム数を示します。長く続くIDは、トラッカーが多くのフレームにわたって同じ人物を追跡し続けたことを意味します。
追跡品質の測定#
MOTの評価には、ベンチマークとしてMOT17、混雑した場面を対象とするMOT20、ダンサーの見た目が似ていて動きが予測しにくいDanceTrackなどが使われます。主な指標は次の3つです。
- MOTA: 見逃した物体、誤検出、IDスイッチの合計を正解物体数で割り、1から差し引いた値です。そのため、検出品質に大きく左右されます。
- IDF1: 正しくIDが付与された検出結果のF1スコアであり、各正解物体のIDがどれだけ一貫して維持されるかを測定します。
- HOTA: 検出精度と対応付け精度の幾何平均であり、物体の検出と追跡対象間の関連付けを同等に評価します。
課題#
- オクルージョン: 物体が多数のフレームにわたって隠れると、動きの予測や外観による対応付けで復元できない限り、再び現れたときに新しいIDが付与されることがあります。
- 混雑した環境と似た外観: 人の密集した集団や、同じユニフォームを着たスポーツ選手では、IoUと外観のコストだけでは区別が難しくなり、IDが入れ替わることがあります。
- カメラの動き: パンや振動によってすべてのボックスが一斉に動くため、トラッカーが補正しない限り、等速運動モデルが機能しなくなります。
- リアルタイムの処理時間: 検出、対応付け、Re-IDモデルは各フレームの処理時間を分け合います。また、別個のRe-IDモデルを使うと、検出した物体ごとにネットワークの処理が1回追加されます。










