Multi-Object Tracking (MOT)
コンピュータービジョンにおけるマルチオブジェクトトラッキング(MOT)を確認します。自動運転、リテールなどの分野で、Ultralytics YOLO26を使用して対象を検出・追跡する方法を学びます。
マルチオブジェクトトラッキング(MOT)は、動画ストリーム内で複数の異なるエンティティを検出し、時間の経過に伴ってその同一性を維持する、コンピュータービジョン(CV)における動的なタスクです。各フレームを独立したスナップショットとして扱う標準的な物体検出とは異なり、MOTは人工知能(AI)に時間的な次元を導入します。検出された各インスタンスに一意の識別番号(ID)を割り当てることで、例えば群衆の中の特定の歩行者や高速道路上の車両などを対象に、MOTアルゴリズムはシステムによる軌跡の追跡、行動の分析、相互作用の理解を可能にします。この機能は現代の動画理解の基盤であり、変化する環境の中で機械が連続性を認識できるようにします。
MOTの仕組み#
現在のほとんどのトラッキングシステムは、「検出によるトラッキング(tracking-by-detection)」のパラダイムで動作します。このアプローチでは、処理を2つの主要な段階に分けます。まずフレーム内に何が存在するかを特定し、次にその検出結果を過去から把握しているオブジェクトと関連付けます。
-
検出: 各フレームで、YOLO26のような高性能モデルが画像をスキャンしてオブジェクトの位置を特定し、バウンディングボックスとクラス確率を生成します。
-
動きの予測: オブジェクトが次にどこへ移動するかを予測するため、アルゴリズムではカルマンフィルターがよく使用されます。この数学的ツールは、速度や位置などの動的システムの状態を推定し、次のフレームでの探索範囲を絞り込むのに役立ちます。
-
データアソシエーション: システムは新たに検出した対象を既存のトラックと照合します。ハンガリアンアルゴリズムのような最適化手法は、照合コストを最小化することでこの割り当て問題を解決します。その際、空間的な重なりを測定するためにIntersection over Union(IoU)に依存することがよくあります。
-
再識別(ReID): オクルージョンと呼ばれる視覚的な遮蔽が発生した場合、高度なトラッカーは視覚的な埋め込みを使用して、オブジェクトが再び現れたときに認識します。これにより「IDの切り替わり」を防ぎ、トンネルから出てきた車がトンネルに入った車と同じものであることをシステムが認識できるようにします。
MOTと単一オブジェクトトラッキングの違い#
用語は似ていますが、**マルチオブジェクトトラッキング(MOT)**は単一オブジェクトトラッキング(SOT)とは大きく異なります。SOTは、最初のフレームで初期化された1つの特定のターゲットを追跡することに重点を置き、他のエンティティを無視することがよくあります。一方、MOTは、いつでもシーンに入ったりシーンから出たりする可能性がある、数が不明で変動するターゲットを処理する必要があります。そのためMOTは計算負荷が高く、トラックの開始や終了、複数の移動体間の複雑な相互作用を処理する堅牢なロジックが必要です。
実世界での利用例#
複数のエンティティを同時に追跡する機能は、複数の主要産業におけるイノベーションを推進しています。
- 自動運転: 自動運転車は、安全に走行するためにMOTに大きく依存しています。歩行者、自転車利用者、その他の車両を追跡することで、自律システムは将来の位置を予測し、衝突を回避できます。最大限の信頼性を確保するため、カメラとLiDARセンサーからのデータを融合することがよくあります。
- 小売分析: 実店舗では、小売業者が小売業におけるAIを使用して顧客の動線をマッピングします。MOTアルゴリズムは人の流れのヒートマップを生成し、管理者が店舗レイアウトを最適化したり、繁忙時間帯の待ち行列管理を改善したりするのに役立ちます。
- スポーツ分析: プロチームはMOTを使用して、選手の動きやチームのフォーメーションを分析します。フィールド上のすべての選手を追跡することで、コーチはポーズ推定技術を使用して、速度、走行距離、戦術的なポジショニングに関する詳細なメトリクスを抽出できます。
PythonでMOTを実装する#
Ultralyticsを使用すると、最先端のモデルによるトラッキングを簡単に実装できます。track()メソッドは検出ロジックとトラッキングロジックをシームレスに統合し、ByteTrackやBoT-SORTなどのアルゴリズムをサポートします。以下の例では、推奨されるYOLO26モデルを使用して動画内の車両を追跡する方法を示します。
from ultralytics import YOLO
# Load the official YOLO26 small model
model = YOLO("yolo26s.pt")
# Track objects in a video file (or use '0' for webcam)
# The 'persist=True' argument keeps track IDs consistent between frames
results = model.track(source="traffic_analysis.mp4", show=True, persist=True)
# Print the IDs of objects tracked in the first frame
if results[0].boxes.id is not None:
print(f"Tracked IDs: {results[0].boxes.id.int().tolist()}")マルチオブジェクトトラッキングにおける課題#
進歩が続いているにもかかわらず、MOTは依然として困難な分野です。オクルージョンは主要な課題の1つです。オブジェクト同士が交差したり障害物の背後に隠れたりすると、同一性を維持することが複雑になります。混雑したマラソン大会や鳥の群れなどの混雑したシーンでは、データアソシエーションアルゴリズムの限界が試されます。さらに、高解像度の動画ストリームを処理しながらリアルタイム推論速度を維持するには、効率的なモデルアーキテクチャと、多くの場合NVIDIA Jetsonデバイスのような専用ハードウェアが必要です。
これらの課題に対処するため、研究者は検出とトラッキングを単一のネットワークに統合するエンドツーエンドのディープラーニングアプローチを探究しています。また、Ultralytics Platformを活用して、困難なデータセットにアノテーションを付け、堅牢なカスタムモデルをトレーニングする取り組みも進められています。









