このレポは、セグメンテーション、オブジェクト検出、ポーズ推定モデルのためのプラグ可能な最先端のマルチオブジェクトトラッカーのコレクションが含まれています。外観の説明を使用したメソッドの場合、重い(Clipreid)と軽量の最先端のReidモデル(LightMBN、OSNETなど)の両方が自動ダウンロードに利用できます。 Yolov8、Yolov9、Yolov10などの一般的なオブジェクト検出モデルと一緒にこのパッケージを使用する方法に関する例を提供します
トラッカー | 状態 | hota↑ | Mota↑ | IDF1↑ |
---|---|---|---|---|
Botsort | ✅ | 68.504 | 77.165 | 80.986 |
ストロングソート | ✅ | 68.329 | 76.348 | 81.206 |
Bytetrack | ✅ | 66.536 | 76.909 | 77.855 |
OCSORT | ✅ | 65.187 | 74.819 | 75.957 |
インバソック | ✅ | 64.096 | 76.511 | 71.875 |
deepocsort | ✅ | 62.913 | 74.483 | 73.459 |
ハイブリッドソート |
注:検証セットには公開されていないため、評価はMOT17トレーニングセットの後半で実施されました。使用された事前に生成された検出と埋め込みは、ここから供給されました。各トラッカーは、公式リポジトリで提供される元のパラメーターで構成されていました。
今日のマルチオブジェクト追跡オプションは、下層ハードウェアの計算機能に大きく依存しています。 Boxmotは、CPUからより大きなGPUまで、さまざまなハードウェアの制限を満たすさまざまな追跡方法を提供します。モロバーでは、検出と埋め込みを保存することにより、超高速実験のスクリプトを提供し、任意の追跡アルゴリズムにロードされます。このデータを繰り返し生成するオーバーヘッドを回避します。
Python> = 3.9環境から始めます。
Yolov8、Yolov9、またはYolov10の例を実行したい場合:
git clone https://github.com/mikel-brostrom/boxmot.git
cd boxmot
pip install poetry
poetry install --with yolo # installed boxmot + yolo dependencies
poetry shell # activates the newly created environment with the installed dependencies
ただし、追跡モジュールのみをインポートしたい場合は、簡単にできます。
pip install boxmot
$ python tracking/track.py --yolo-model yolov10n # bboxes only
python tracking/track.py --yolo-model yolov9s # bboxes only
python tracking/track.py --yolo-model yolov8n # bboxes only
yolov8n-seg # bboxes + segmentation masks
yolov8n-pose # bboxes + pose estimation
$ python tracking/track.py --tracking-method deepocsort
strongsort
ocsort
bytetrack
botsort
imprassoc
トラッキングは、ほとんどのビデオ形式で実行できます
$ python tracking/track.py --source 0 # webcam
img.jpg # image
vid.mp4 # video
path/ # directory
path/ * .jpg # glob
' https://youtu.be/Zgi9g1ksQHc ' # YouTube
' rtsp://example.com/media.mp4 ' # RTSP, RTMP, HTTP stream
一部の追跡方法は、追跡のプロセスにおける外観の説明と動きを組み合わせています。外観を使用する人のために、このReidモデル動物園のニーズに基づいてReidモデルを選択できます。これらのモデルは、reid_export.pyスクリプトによってあなたのニーズに合わせてさらに最適化できます
$ python tracking/track.py --source 0 --reid-model lmbn_n_cuhk03_d.pt # lightweight
osnet_x0_25_market1501.pt
mobilenetv2_x1_4_msmt17.engine
resnet50_msmt17.onnx
osnet_x1_0_msmt17.pt
clip_market1501.pt # heavy
clip_vehicleid.pt
...
デフォルトでは、トラッカーはすべてのMS CoCoクラスを追跡します。
モデルが予測するクラスのサブセットを追跡する場合は、クラスフラグの後に対応するインデックスを追加します。
python tracking/track.py --source 0 --yolo-model yolov8s.pt --classes 16 17 # COCO yolov8 model. Track cats and dogs, only
Yolov8モデルがCoco MSで訓練したすべての可能なオブジェクトのリストを次に示します。このリポジトリのクラスのインデックス作成はゼロから始まることに注意してください
標準MOTデータセットの検出器、追跡方法、Reidモデルの組み合わせを評価するか、1つをカスタムします
$ python3 tracking/val.py --benchmark MOT17-mini --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method deepocsort --verbose --source ./assets/MOT17-mini/train
$ python3 tracking/val.py --benchmark MOT17 --yolo-model yolov8n.pt --reid-model osnet_x0_25_msmt17.pt --tracking-method ocsort --verbose --source ./tracking/val_utils/MOT17/train
検出と埋め込みは、選択したYoloおよびReidモデル用にそれぞれ保存され、任意の追跡アルゴリズムにロードされます。このデータを繰り返し生成するオーバーヘッドを回避します。
トラッカーハイパーパラメーターチューニングには、高速でエリート主義的な多目的遺伝的アルゴリズムを使用しています。デフォルトでは、目標は次のとおりです。Hota、Mota、IDF1。それを実行します
# saves dets and embs under ./runs/dets_n_embs separately for each selected yolo and reid model
$ python tracking/generate_dets_n_embs.py --source ./assets/MOT17-mini/train --yolo-model yolov8n.pt yolov8s.pt --reid-model weights/osnet_x0_25_msmt17.pt
# evolve parameters for specified tracking method using the selected detections and embeddings generated in the previous step
$ python tracking/evolve.py --benchmark MOT17-mini --dets yolov8n --embs osnet_x0_25_msmt17 --n-trials 9 --tracking-method botsort
最高のHOTA結果につながるハイパーパラメーターのセットは、トラッカーの構成ファイルに書き込まれます。
ONNX、OpenVino、Torchscript、TensortへのReidモデルのエクスポートをサポートしています
# export to ONNX
$ python3 boxmot/appearance/reid_export.py --include onnx --device cpu
# export to OpenVINO
$ python3 boxmot/appearance/reid_export.py --include openvino --device cpu
# export to TensorRT with dynamic input
$ python3 boxmot/appearance/reid_export.py --include engine --device 0 --dynamic
最高のHOTA結果につながるハイパーパラメーターのセットは、トラッカーの構成ファイルに書き込まれます。
例の説明 | ノート |
---|---|
Boxmotを使用したTorchVision Bounding Boxトラッキング | |
Torchvisionは、Boxmotで追跡をポーズします | |
Boxmotを使用したTorchvisionセグメンテーショントラッキング |
Yoloのバグと機能のリクエストの追跡については、GitHubの問題をご覧ください。ビジネスに関するお問い合わせや専門的なサポートのリクエストについては、[email protected]にメールを送信してください。