5
5

先月、物体検出の分野において、最新の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

デモ

cars2-ezgif.com-video-to-gif-converter.gif

その他使用方法

ビデオファイルの準備:

  • ビデオファイルを適切な場所に配置します
  • ビデオファイルのパスを更新するか、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」を用いて物体追跡を試してみました。

5
5
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5