ByteTrack-ONNX-Sample

ByteTrack(Multi-Object Tracking by Associating Every Detection Box)のPythonでのONNX推論サンプルです。
ONNXに変換したモデルも同梱しています。
変換自体を試したい方はByteTrack_Convert2ONNX.ipynbを使用ください。
ByteTrack_Convert2ONNX.ipynbはColaboratory上での実行を想定しています。
書き動画はWindowsでの実行例です。

sample_.mp4


Requirement

opencv-python 4.5.3.56 or later
onnx 1.9.0 or later
onnxruntime-gpu 1.9.0 or later
Cython 0.29.24 or later
torch 1.8.1 or later
torchvision 0.9.1 or later
pycocotools 2.0.2 or later
scipy 1.6.3 or later
loguru 0.5.3 or later
thop 0.0.31.post2005241907 or later
lap 0.4.0 or later
cython_bbox 0.1.3 or later

※onnxruntime-gpuはonnxruntimeでも動作しますが、推論時間がかかるためGPUを推奨します
※Windowsでcython_bbox のインストールが失敗する場合は、GitHubからのインストールをお試しください(2021/11/19時点)
pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox

Demo

デモの実行方法は以下です。

動画:動画に対しByteTrackで追跡した結果を動画出力します

python demo_video_onnx.py
実行時オプション
  • –use_debug_window
    動画書き込み時に書き込みフレームをGUI表示するか否か
    デフォルト:指定なし
  • –model
    ByteTrackのONNXモデル格納パス
    デフォルト:byte_tracker/model/bytetrack_s.onnx
  • –video
    入力動画の格納パス
    デフォルト:sample.mp4
  • –output_dir
    動画出力パス
    デフォルト:output
  • –score_th
    人検出のスコア閾値
    デフォルト:0.1
  • –score_th
    人検出のNMS閾値
    デフォルト:0.7
  • –input_shape
    推論時入力サイズ
    デフォルト:608,1088
  • –with_p6
    YOLOXモデルのFPN/PANでp6を含むか否か
    デフォルト:指定なし
  • –track_thresh
    追跡時のスコア閾値
    デフォルト:0.5
  • –track_buffer
    見失い時に何フレームの間、追跡対象を保持するか
    デフォルト:30
  • –match_thresh
    追跡時のマッチングスコア閾値
    デフォルト:0.8
  • –min-box-area
    最小のバウンディングボックスのサイズ閾値
    デフォルト:10
  • –mot20
    MOT20を使用しているか否か
    デフォルト:指定なし

Webカメラ:Webカメラ画像に対しByteTrackで追跡した結果をGUI表示します

python demo_webcam_onnx.py
実行時オプション
  • –model
    ByteTrackのONNXモデル格納パス
    デフォルト:byte_tracker/model/bytetrack_s.onnx
  • –device
    カメラデバイス番号の指定
    デフォルト:0
  • –width
    カメラキャプチャ時の横幅
    デフォルト:960
  • –height
    カメラキャプチャ時の縦幅
    デフォルト:540
  • –score_th
    人検出のスコア閾値
    デフォルト:0.1
  • –score_th
    人検出のNMS閾値
    デフォルト:0.7
  • –input_shape
    推論時入力サイズ
    デフォルト:608,1088
  • –with_p6
    YOLOXモデルのFPN/PANでp6を含むか否か
    デフォルト:指定なし
  • –track_thresh
    追跡時のスコア閾値
    デフォルト:0.5
  • –track_buffer
    見失い時に何フレームの間、追跡対象を保持するか
    デフォルト:30
  • –match_thresh
    追跡時のマッチングスコア閾値
    デフォルト:0.8
  • –min-box-area
    最小のバウンディングボックスのサイズ閾値
    デフォルト:10
  • –mot20
    MOT20を使用しているか否か
    デフォルト:指定なし

Reference

Author

高橋かずひと(https://twitter.com/KzhtTkhs)

License

ByteTrack-ONNX-Sample is under MIT License.

License(Movie)

サンプル動画はNHKクリエイティブ・ライブラリーイギリス ウースターのエルガー像を使用しています。

GitHub

View Github