Awesome
[Japanese/English]
MOT-Tracking-by-Detection-Pipeline
Tracking-by-Detection形式のMOT(Multi Object Tracking)について、<br>DetectionとTrackingの処理を分離して寄せ集めたフレームワークです。<br>
<img src="https://user-images.githubusercontent.com/37477845/154173587-51b7773e-4e7b-46c0-b8a7-da2bf774edb4.png" loading="lazy" width="100%">
Requirement
opencv-python 4.5.5.62 or later
onnxruntime 1.10.0 or later
mediapipe 0.8.9.1 or later ※MediaPipeを実行する場合
filterpy 1.4.5 or later ※motpyを実行する場合
lap 0.4.0 or later ※ByteTrackを実行する場合
Cython 0.29.27 or later ※ByteTrackを実行する場合
cython_bbox 0.1.3 or later ※ByteTrackを実行する場合
rich 11.2.0 or later ※Norfairを実行する場合
gdown 4.4.0 or later ※YoutuReIDを実行する場合
tensorflow 2.8.0 or later ※Light Person Detectorをtfliteで実行する場合
※Windowsでcython_bbox のインストールが失敗する場合は、GitHubからのインストールをお試しください(2022/02/16時点)<br>
pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox
Usage
デモの実行方法は以下です。
python main.py
- --device<br> カメラデバイス番号の指定<br> デフォルト:0
- --movie<br> 動画ファイルの指定 ※指定時はカメラデバイスより優先<br> デフォルト:指定なし
- --detector<br> Object Detectionのモデル選択<br> yolox, efficientdet, ssd, centernet, nanodet, mediapipe_face, mediapipe_hand, light_person_detector の何れかを指定<br> デフォルト:yolox
- --tracker<br> トラッキングアルゴリズムの選択<br> motpy, bytetrack, mc_bytetrack, norfair, mc_norfair, person_reid, youtureid, sface の何れかを指定<br> デフォルト:motpy
- --target_id<br> トラッキング対象のクラスIDを指定<br>複数指定する場合はカンマ区切りで指定 ※Noneの場合は全てを対象とする<br> 例:--target_id=1<br>例:--target_id=1,3<br> デフォルト:None
- --use_gpu<br> GPU推論するか否か<br> デフォルト:指定なし
Direcotry
│ main.py
│ test.mp4
├─Detector
│ │ detector.py
│ └─xxxxxxxx
│ │ xxxxxxxx.py
│ │ config.json
│ │ LICENSE
│ └─model
│ xxxxxxxx.onnx
└─Tracker
│ tracker.py
└─yyyyyyyy
│ yyyyyyyy.py
│ config.json
│ LICENSE
└─tracker
各モデル、トラッキングアルゴリズムを格納しているディレクトリには、<br> ライセンス条項とコンフィグを同梱しています。
Detector
モデル名 | 取得元リポジトリ | ライセンス | 備考 |
---|---|---|---|
YOLOX | Megvii-BaseDetection/YOLOX | Apache-2.0 | YOLOX-ONNX-TFLite-Sampleにて<br>ONNX化したモデルを使用 |
EfficientDet | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて<br>ONNX化したモデルを使用 |
SSD MobileNet v2 FPNLite | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて<br>ONNX化したモデルを使用 |
CenterNet | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて<br>ONNX化したモデルを使用 |
NanoDet | RangiLyu/nanodet | Apache-2.0 | NanoDet-ONNX-Sampleにて<br>ONNX化したモデルを使用 |
MediaPipe Face Detection | google/mediapipe | Apache-2.0 | 目、鼻、口、耳のキーポイントは未使用 |
MediaPipe Hands | google/mediapipe | Apache-2.0 | ランドマークから外接矩形を算出し使用 |
Light Person Detector | Person-Detection-using-RaspberryPi-CPU | Apache-2.0 | - |
Tracker
アルゴリズム名 | 取得元リポジトリ | ライセンス | 備考 |
---|---|---|---|
motpy<br> (0.0.10) | wmuron/motpy | MIT | - |
ByteTrack<br> (2022/01/26) | ifzhang/ByteTrack | MIT | ByteTrackはシングルクラス用トラッカー<br>マルチクラス拡張版を使用したい場合は「mc_bytetrack」を指定してください |
Norfair<br> (0.4.0) | tryolabs/norfair | BSD 3-Clause | Norfairはシングルクラス用トラッカー<br>マルチクラス拡張版を使用したい場合は「mc_norfiar」を指定してください |
person-reidentification-retail | openvinotoolkit/open_model_zoo | Apache-2.0 | ONNXモデルはPINTO0309/PINTO_model_zooから取得<br>人用モデルのため使用時はtarget_idオプションでクラスを指定してください |
YoutuReID | opencv/opencv_zoo | Apache-2.0 | 人用モデルのため使用時はtarget_idオプションでクラスを指定してください |
SFace | opencv/opencv_zoo | Apache-2.0 | Detectorに顔検出を指定してください<br>また、SFaceは推論前に顔の角度を垂直に補正する処理を実施すべきですが、本ソースでは未対応です |
vehicle-reid-0001 | vehicle-reid-0001 | Apache-2.0 | 車用モデルのため使用時はtarget_idオプションでクラスを指定してください |
Author
高橋かずひと(https://twitter.com/KzhtTkhs)
License
MOT-Tracking-by-Detection-Pipeline is under MIT License.<br><br> MOT-Tracking-by-Detection-Pipelineのソースコード自体はMIT Licenseですが、<br> 各アルゴリズムのソースコードは、それぞれのライセンスに従います。<br> 詳細は各ディレクトリ同梱のLICENSEファイルをご確認ください。
License(Movie)
サンプル動画はNHKクリエイティブ・ライブラリーのイタリア ミラノの横断歩道を使用しています。