BoT-SORT:強大的關聯多人行人跟踪
尼爾阿哈龍、羅伊奧費格、班錫安博布羅夫斯基
https://arxiv.org/abs/2206.14651
多對象追蹤 (MOT) 的目標是偵測和追蹤場景中的所有對象,同時為每個物件保留唯一的識別碼。在本文中,我們提出了一種新的魯棒的最先進的追蹤器,它可以結合運動和外觀資訊的優點,以及相機運動補償和更準確的卡爾曼濾波器狀態向量。我們的新追蹤器 BoT-SORT 和 BoT-SORT-ReID 在 MOT17 和 MOT20 測試集上的 MOTchallenge [29, 11] 資料集中排名第一,就所有主要 MOT 指標而言:MOTA、IDF1 和 HOTA。對於 MOT17:實現了 80.5 MOTA、80.2 IDF1 和 65.0 HOTA。
追蹤器 | 莫塔 | 以色列國防軍1 | 和田 |
---|---|---|---|
機器人排序 | 80.6 | 79.5 | 64.6 |
機器人排序-ReID | 80.5 | 80.2 | 65.0 |
追蹤器 | 莫塔 | 以色列國防軍1 | 和田 |
---|---|---|---|
機器人排序 | 77.7 | 76.3 | 62.6 |
機器人排序-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
我們使用在 MOT17、MOT20 和消融研究上訓練的公開可用的 ByteTrack 模型動物園來進行 YOLOX 物件檢測。
我們訓練有素的 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網站,可以獲得與論文中相同的結果。
仔細調整追蹤參數可以帶來更高的效能。在本文中我們應用了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
使用基於 YOLOX 和多類別的 BoT-SORT(-ReID) 進行示範。
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
基於 YOLOv7 和多類別的 BoT-SORT(-ReID) 演示。
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。感謝他們的出色工作!