Object Tracking
コンピュータビジョンにおけるオブジェクトトラッキングの仕組みを学びます。リアルタイム解析のために、Ultralytics YOLO26を使用して一意のIDでオブジェクトを識別および監視する方法を発見しましょう。
オブジェクト追跡は、ビデオ内の特定のエンティティを特定し、一連のフレームにわたるその移動を監視する、コンピュータビジョン (CV)における動的なプロセスです。各スナップショットを個別に処理する静的な画像分析とは異なり、追跡では時間の概念が導入されます。これにより、人工知能 (AI)システムは、検出された各アイテム(車、人、動物など)に一意の識別番号 (ID) を割り当て、オブジェクトが移動したり、向きを変えたり、一時的に遮られたりしても、その同一性を維持することができます。この機能は高度なビデオ理解の基礎であり、機械が行動を分析し、軌跡を計算し、生データから実用的なインサイトを引き出すことを可能にします。
オブジェクトトラッキングの仕組み#
現代のトラッキングシステムは、一般的に「検出によるトラッキング (tracking-by-detection)」パラダイムを利用しています。このワークフローでは、強力な検出モデルと専門的なアルゴリズムを組み合わせて、時系列で検出結果を関連付けます。このプロセスは通常、以下の3つの主要な段階で構成されます。
-
検出: すべてのフレームにおいて、最先端のYOLO26などのオブジェクト検出モデルが画像をスキャンして、対象のオブジェクトを特定します。モデルは、各オブジェクトの空間的範囲を定義するバウンディングボックスを出力します。
-
モーション予測: カルマンフィルターのようなアルゴリズムは、オブジェクトの現在の速度と軌跡に基づいてその将来の位置を推定します。この予測により、次のフレームの検索スペースが削減され、システムの効率が向上します。
-
データ関連付け: システムは、ハンガリー法などの最適化手法を使用して、新しい検出結果を既存のトラックに一致させます。このステップでは、予測されたボックスが新しい検出とどれだけ重なっているかを測定するために、Intersection over Union (IoU)などの指標がよく使用されます。高度なトラッカーは、視覚的な特徴抽出を使用して、似た外観のオブジェクトを再識別することもあります。
オブジェクトトラッキングと物体検出の違い#
これらの用語は密接に関連していますが、機械学習 (ML)パイプライン内ではそれぞれ異なる機能を果たします。
- 物体検出は、「この画像には何がどこにあるか?」という問いに答えます。これはステートレスであり、過去のフレームのメモリを持たないことを意味します。車がビデオ内を走行している場合、検出器はフレーム1で「車」を、フレーム2でも「車」を認識しますが、それらが同一の車両であるとは認識しません。
- オブジェクト追跡は、「この特定のオブジェクトはどこに向かっているのか?」という疑問に答えます。これはステートフルです。フレーム1の「車」とフレーム 2の「車」を接続し、「Car ID #42」が左から右へ移動していることをシステムが記録できるようにします。これは、予測モデリングやカウントなどのタスクに不可欠です。
実社会での応用#
オブジェクトの同一性を維持する能力により、さまざまな業界で複雑なリアルタイム推論アプリケーションが可能になります。
- インテリジェント交通システム: 追跡は、自動運転車が安全にナビゲートするために不可欠です。歩行者や他の車両を追跡することで、車は潜在的な衝突を予測できます。さらに、交通エンジニアは安全性規制の実施と交通流の最適化のために、これらのシステムを速度推定に活用しています。
- リテールアナリティクス: 実店舗では、顧客の行動を理解するためにAI in retailを活用しています。追跡により、ストアマネージャーはオブジェクトカウントを実行して歩行者数を測定し、ヒートマップを使用してディスプレイ前の滞在時間を分析し、キュー管理を最適化して待ち時間を短縮することができます。
- スポーツ分析: プロスポーツにおいて、コーチは追跡と姿勢推定を組み合わせて、選手の生体力学やチームのフォーメーションを分析します。このデータは、肉眼では見えないパターンを明らかにすることで、競争優位性をもたらします。
Pythonでのトラッキングの実装#
Ultralyticsを使用すると、高性能な追跡を簡単に実装できます。ライブラリ内の track モードは、検出、モーション予測、ID割当を自動的に処理します。以下の例は、Ultralytics Platform互換のYOLO26モデルを使用してビデオ内のオブジェクトを追跡する方法を示しています。
from ultralytics import YOLO
# Load the official YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Track objects in a video file or webcam (source=0)
# 'show=True' displays the video with bounding boxes and unique IDs
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=True)
# Access the unique tracking IDs from the results
if results[0].boxes.id is not None:
print(f"Detected Track IDs: {results[0].boxes.id.cpu().numpy()}")関連概念#
追跡のエコシステムを完全に理解するには、単なるボックスではなくオブジェクトの正確なピクセルレベルの輪郭を追跡するインスタンスセグメンテーションを調べることが役立ちます。さらに、マルチオブジェクトトラッキング (MOT) の課題では、アルゴリズムが混雑したシーンやオクルージョンをどの程度うまく処理するかを評価するために、MOTChallengeなどの広く使用されているベンチマークがよく関わってきます。本番環境でのデプロイメントにおいて、開発者はNVIDIA DeepStreamやOpenCVなどのツールを使用して、これらのモデルを効率的なパイプラインに統合することがよくあります。






