BoT-SORT: 堅牢なアソシエーションによる複数歩行者追跡
ニル・アハロン、ロイ・オーファイグ、ベン=ジオン・ボブロフスキー
https://arxiv.org/abs/2206.14651
マルチオブジェクト トラッキング (MOT) の目標は、各オブジェクトの一意の識別子を維持しながら、シーン内のすべてのオブジェクトを検出および追跡することです。この論文では、動きと外観の情報、カメラ動き補償、およびより正確なカルマン フィルター状態ベクトルの利点を組み合わせることができる、新しい堅牢な最先端のトラッカーを紹介します。当社の新しいトラッカー BoT-SORT および BoT-SORT-ReID は、すべての主要な MOT メトリクス (MOTA、IDF1、および HOTA) に関して、MOTChallenge [29、11] のデータセットで MOT17 および MOT20 テスト セットの両方で 1 位にランクされています。 MOT17の場合:MOTA 80.5、IDF1 80.2、HOTA 65.0を達成。
トラッカー | モタ | IDF1 | 保田 |
---|---|---|---|
ボットソート | 80.6 | 79.5 | 64.6 |
BoT-SORT-ReID | 80.5 | 80.2 | 65.0 |
トラッカー | モタ | IDF1 | 保田 |
---|---|---|---|
ボットソート | 77.7 | 76.3 | 62.6 |
BoT-SORT-ReID | 77.8 | 77.5 | 63.3 |
コードは Ubuntu 20.04 でテストされました
BoT-SORT コードは ByteTrack と FastReID に基づいています。
その他のセットアップ オプションについては、インストール ガイドを参照してください。
ステップ 1. Conda 環境を作成し、pytorch をインストールします。
conda create -n botsort_env python=3.7
conda activate botsort_env
ステップ 2. pytorch.org から torch と一致する torchvision をインストールします。
コードは torch 1.11.0+cu113 および torchvision==0.12.0 を使用してテストされました。
ステップ 3. BoT-SORT をインストールします。
git clone https://github.com/NirAharon/BoT-SORT.git
cd BoT-SORT
pip3 install -r requirements.txt
python3 setup.py develop
ステップ 4. pycocotools をインストールします。
pip3 install cython ; pip3 install ' git+https://github.com/cocodataset/cocoapi.git#subdirectory=PythonAPI '
ステップ5. その他
# Cython-bbox
pip3 install cython_bbox
# faiss cpu / gpu
pip3 install faiss-cpu
pip3 install faiss-gpu
MOT17とMOT20は公式サイトからダウンロードしてください。そして、それらを次の構造に入れます。
<dataets_dir>
│
├── MOT17
│ ├── train
│ └── test
│
└── MOT20
├── train
└── test
ReID をトレーニングするには、次のように検出パッチを生成する必要があります。
cd < BoT-SORT_dir >
# For MOT17
python3 fast_reid/datasets/generate_mot_patches.py --data_path < dataets_dir > --mot 17
# For MOT20
python3 fast_reid/datasets/generate_mot_patches.py --data_path < dataets_dir > --mot 20
データセットを FastReID export FASTREID_DATASETS=<BoT-SORT_dir>/fast_reid/datasets
にリンクします。設定しない場合、デフォルトはfast_reid/datasets
です。
次のように、トレーニング済みモデルをダウンロードして「pretrained」フォルダーに保存します。
<BoT-SORT_dir>/pretrained
YOLOX 物体検出には、MOT17、MOT20、およびアブレーション研究でトレーニングされた、公開されている ByteTrack モデル Zoo を使用しました。
弊社のトレーニング済み ReID モデルは、MOT17-SBS-S50、MOT20-SBS-S50 からダウンロードできます。
マルチクラス MOT の場合は、COCO (または任意のカスタム重み) でトレーニングされた YOLOX または YOLOv7 を使用します。
「データの準備」セクションの説明に従って MOT ReID データセットを生成した後。
cd < BoT-SORT_dir >
# For training MOT17
python3 fast_reid/tools/train_net.py --config-file ./fast_reid/configs/MOT17/sbs_S50.yml MODEL.DEVICE " cuda:0 "
# For training MOT20
python3 fast_reid/tools/train_net.py --config-file ./fast_reid/configs/MOT20/sbs_S50.yml MODEL.DEVICE " cuda:0 "
追加の説明とオプションについては、FastReID リポジトリを参照してください。
この部分で作成した txt ファイルを MOTChallenge の Web サイトに送信すると、論文と同じ結果が得られます。
追跡パラメータを慎重に調整すると、パフォーマンスが向上する可能性があります。この論文では、ByteTrack のキャリブレーションを適用します。
cd < BoT-SORT_dir >
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --with-reid --benchmark " MOT17 " --eval " test " --fp16 --fuse
python3 tools/interpolation.py --txt_path < path_to_track_result >
cd < BoT-SORT_dir >
python3 tools/track.py < dataets_dir/MOT 20> --default-parameters --with-reid --benchmark " MOT20 " --eval " test " --fp16 --fuse
python3 tools/interpolation.py --txt_path < path_to_track_result >
cd < BoT-SORT_dir >
# BoT-SORT
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --benchmark " MOT17 " --eval " val " --fp16 --fuse
# BoT-SORT-ReID
python3 tools/track.py < dataets_dir/MOT 17> --default-parameters --with-reid --benchmark " MOT17 " --eval " val " --fp16 --fuse
--default-parameters フラグを渡さずに他のパラメータを使用できます。
トレーニング セットと検証セットを評価するには、TrackEval の公式 MOTChallenge 評価コードを使用することをお勧めします。
# For all the available tracking parameters, see:
python3 tools/track.py -h
--default-parameters フラグを渡さずに他のパラメータを使用できます。
トレーニング セットと検証セットを評価するには、TrackEval の公式 MOTChallenge 評価コードを使用することをお勧めします。
# For all the available tracking parameters, see:
python3 tools/track_yolov7.py -h
BoT-SORT(-ReID) ベースの YOLOX とマルチクラスを使用したデモ。
cd < BoT-SORT_dir >
# Original example
python3 tools/demo.py video --path < path_to_video > -f yolox/exps/example/mot/yolox_x_mix_det.py -c pretrained/bytetrack_x_mot17.pth.tar --with-reid --fuse-score --fp16 --fuse --save_result
# Multi-class example
python3 tools/mc_demo.py video --path < path_to_video > -f yolox/exps/example/mot/yolox_x_mix_det.py -c pretrained/bytetrack_x_mot17.pth.tar --with-reid --fuse-score --fp16 --fuse --save_result
BoT-SORT(-ReID) ベースの YOLOv7 とマルチクラスを使用したデモ。
cd < BoT-SORT_dir >
python3 tools/mc_demo_yolov7.py --weights pretrained/yolov7-d6.pt --source < path_to_video/images > --fuse-score --agnostic-nms (--with-reid)
私たちのカメラ モーション補正モジュールは、VideoStab Global Motion Estimation の OpenCV contrib C++ バージョンに基づいていますが、現在 Python バージョンはありません。
モーション ファイルは、GMC フォルダー内の「VideoCameraCorrection」という C++ プロジェクトを使用して生成できます。
生成されたファイルはトラッカーから利用できます。
さらに、Python ベースの動き推定技術が利用可能であり、渡すことで選択できます。
'--cmc-method' <ファイル |オーブ | ecc> を、demo.py または track.py に追加します。
@article{aharon2022bot,
title={BoT-SORT: Robust Associations Multi-Pedestrian Tracking},
author={Aharon, Nir and Orfaig, Roy and Bobrovsky, Ben-Zion},
journal={arXiv preprint arXiv:2206.14651},
year={2022}
}
コード、アイデア、結果の大部分は、ByteTrack、StrongSORT、FastReID、YOLOX、および YOLOv7 から借用しています。彼らの素晴らしい仕事に感謝します!