先月、物体検出の分野において、最新のSOTAモデルであるYOLOv9が公開されました。このモデルは、物体検出タスクにおいて優れた性能を発揮することが期待されています。本記事では、YOLOv9とオブジェクトトラッキングの手法であるDeepSORTを組み合わせて物体追跡を行う方法について紹介します。
概要
オブジェクトトラッキングは、動画や画像内の物体を時間の経過に沿って追跡する技術です。この技術は、監視カメラの映像分析や自動運転などさまざまな応用分野で利用されています。物体を追跡するためには、まず物体を検出し、その後に物体の動きを追跡する必要があります。
物体追跡モデル:DeepSORT
DeepSORTは、オブジェクトトラッキングの分野において非常に人気があり、広く利用されているフレームワークの一つです。検出モデルで検出した物体に対して、ID付与や軌跡推定を行うことで、スムーズな追跡を実現します。
YOLOv9とDeepSORTでリアルタイム物体追跡
環境の準備
必要なリポジトリをダウンロードする。
git clone https://github.com/sujanshresstha/YOLOv9_DeepSORT.git
cd YOLOv9_DeepSORT
新しい仮想環境を作成
- Condaを使用する場合:
conda env create -f conda.yml conda activate yolov9-deepsort
- pipを使用する場合:
python3 -m virtualenv -p python3.11 yolov9-deepsort source yolov9-deepsort/bin/activate pip install -r requirements.txt
必要なリポジトリとライブラリをダウンロード
git clone https://github.com/WongKinYiu/yolov9.git
cd yolov9
pip install -r requirements.txt
YOLOv9モデルの重みをダウンロード
mkdir weights
wget -P weights https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt
物体を追跡してみましょう。
事前にデモを行う動画を用意します。今回デモ用の動画は./data/test.mp4で出力動画のパスは./output/output.mp4にしました。
python object_tracking.py --video ./data/test.mp4 --output ./output/output.mp4
デモ
その他使用方法
ビデオファイルの準備:
- ビデオファイルを適切な場所に配置します
- ビデオファイルのパスを更新するか、0に設定してウェブカメラを入力として使用します
YOLOv9モデルのダウンロード:
出力ビデオの設定:
- コード内のoutputフラグを更新して、出力ビデオファイルのパスとファイル名を指定します
confの閾値の設定:
- オブジェクト検出のconfidenceの閾値を設定するために、confフラグを調整します。この閾値以下の信頼度を持つオブジェクトはフィルタリングされます
特定のオブジェクトの検出と追跡:
- コード内のclass_idフラグを変更して、検出のためのクラスIDを指定します。フラグのデフォルト値はNoneに設定されています。人物のみを検出して追跡する場合は、0に設定するか、他のオプションについてはcoco.namesファイルを参照してください
特定のオブジェクトの追跡中のぼかし:
- コード内のblur_idフラグを変更して、検出のためのクラスIDを指定します。フラグのデフォルト値はNoneに設定されています
コードの実行:
# オブジェクト追跡の実行
python object_tracking.py --video ./data/test.mp4 --output ./output/output.mp4
# ウェブカメラでオブジェクト追跡の実行 (videoフラグを0に設定)
python object_tracking.py --video 0 --output ./output/webcam.mp4
# 人物の追跡の実行 (class_idフラグを0に設定)
python object_tracking.py --video ./data/test.mp4 --output ./output/output.mp4 --class_id 0
# 特定のオブジェクトをぼかしながらビデオの追跡の実行 (blur_idフラグを0に設定)
python object_tracking.py --video ./data/test.mp4 --output ./output/output.mp4 --blur_id 0
コードリポジトリ
まとめ
最後までご覧いただきありがとうございました。
2024年2月に公開されたYOLOシリーズの最新バージョンである「YOLOv9」と「DeepSORT」を用いて物体追跡を試してみました。