[Japanese/English]
Tracking-by-Detection形式のMOT(Multi Object Tracking)について、
DetectionとTrackingの処理を分離して寄せ集めたフレームワークです。
09.MOT.mp4
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時点)
pip install -e git+https://github.com/samson-wang/cython_bbox.git#egg=cython-bbox
デモの実行方法は以下です。
python main.py
- --device
カメラデバイス番号の指定
デフォルト:0 - --movie
動画ファイルの指定 ※指定時はカメラデバイスより優先
デフォルト:指定なし - --detector
Object Detectionのモデル選択
yolox, efficientdet, ssd, centernet, nanodet, mediapipe_face, mediapipe_hand, light_person_detector の何れかを指定
デフォルト:yolox - --tracker
トラッキングアルゴリズムの選択
motpy, bytetrack, mc_bytetrack, norfair, mc_norfair, person_reid, youtureid, sface の何れかを指定
デフォルト:motpy - --target_id
トラッキング対象のクラスIDを指定
複数指定する場合はカンマ区切りで指定 ※Noneの場合は全てを対象とする
例:--target_id=1
例:--target_id=1,3
デフォルト:None - --use_gpu
GPU推論するか否か
デフォルト:指定なし
│ 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
各モデル、トラッキングアルゴリズムを格納しているディレクトリには、
ライセンス条項とコンフィグを同梱しています。
モデル名 | 取得元リポジトリ | ライセンス | 備考 |
---|---|---|---|
YOLOX | Megvii-BaseDetection/YOLOX | Apache-2.0 | YOLOX-ONNX-TFLite-Sampleにて ONNX化したモデルを使用 |
EfficientDet | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて ONNX化したモデルを使用 |
SSD MobileNet v2 FPNLite | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて ONNX化したモデルを使用 |
CenterNet | tensorflow/models | Apache-2.0 | Object-Detection-API-TensorFlow2ONNXにて ONNX化したモデルを使用 |
NanoDet | RangiLyu/nanodet | Apache-2.0 | NanoDet-ONNX-Sampleにて 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 | - |
アルゴリズム名 | 取得元リポジトリ | ライセンス | 備考 |
---|---|---|---|
motpy (0.0.10) |
wmuron/motpy | MIT | - |
ByteTrack (2022/01/26) |
ifzhang/ByteTrack | MIT | ByteTrackはシングルクラス用トラッカー マルチクラス拡張版を使用したい場合は「mc_bytetrack」を指定してください |
Norfair (0.4.0) |
tryolabs/norfair | BSD 3-Clause | Norfairはシングルクラス用トラッカー マルチクラス拡張版を使用したい場合は「mc_norfiar」を指定してください |
person-reidentification-retail | openvinotoolkit/open_model_zoo | Apache-2.0 | ONNXモデルはPINTO0309/PINTO_model_zooから取得 人用モデルのため使用時はtarget_idオプションでクラスを指定してください |
YoutuReID | opencv/opencv_zoo | Apache-2.0 | 人用モデルのため使用時はtarget_idオプションでクラスを指定してください |
SFace | opencv/opencv_zoo | Apache-2.0 | Detectorに顔検出を指定してください また、SFaceは推論前に顔の角度を垂直に補正する処理を実施すべきですが、本ソースでは未対応です |
vehicle-reid-0001 | vehicle-reid-0001 | Apache-2.0 | 車用モデルのため使用時はtarget_idオプションでクラスを指定してください |
高橋かずひと(https://twitter.com/KzhtTkhs)
MOT-Tracking-by-Detection-Pipeline is under MIT License.
MOT-Tracking-by-Detection-Pipelineのソースコード自体はMIT Licenseですが、
各アルゴリズムのソースコードは、それぞれのライセンスに従います。
詳細は各ディレクトリ同梱のLICENSEファイルをご確認ください。
サンプル動画はNHKクリエイティブ・ライブラリーのイタリア ミラノの横断歩道を使用しています。