BoT-SORT: надежное отслеживание нескольких пешеходов
Нир Аарон, Рой Орфейг, Бен-Цион Бобровски
https://arxiv.org/abs/2206.14651
Целью отслеживания нескольких объектов (MOT) является обнаружение и отслеживание всех объектов в сцене, сохраняя при этом уникальный идентификатор для каждого объекта. В этой статье мы представляем новый надежный современный трекер, который может сочетать в себе преимущества информации о движении и внешнем виде, а также компенсацию движения камеры и более точный вектор состояния фильтра Калмана. Наши новые трекеры BoT-SORT и BoT-SORT-ReID занимают первое место в наборах данных MOTChallenge [29, 11] как на тестовых наборах MOT17, так и на MOT20 по всем основным метрикам MOT: MOTA, IDF1 и HOTA. Для MOT17: достигаются 80,5 MOTA, 80,2 IDF1 и 65,0 HOTA.
Трекер | МОТА | ИДФ1 | ХОТА |
---|---|---|---|
БОТ-СОРТИРОВКА | 80,6 | 79,5 | 64,6 |
BoT-SORT-ReID | 80,5 | 80,2 | 65,0 |
Трекер | МОТА | ИДФ1 | ХОТА |
---|---|---|---|
БОТ-СОРТИРОВКА | 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. Установите torch и соответствующий torchvision с pytorch.org.
Код был протестирован с использованием 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
Свяжите набор данных с export FASTREID_DATASETS=<BoT-SORT_dir>/fast_reid/datasets
. Если значение не установлено, по умолчанию используется fast_reid/datasets
Загрузите и сохраните обученные модели в папке «предварительно обученные» следующим образом:
<BoT-SORT_dir>/pretrained
Мы использовали общедоступную модель зоопарка ByteTrack, обученную на MOT17, MOT20 и исследовании абляции для обнаружения объектов YOLOX.
Наши обученные модели ReID можно загрузить с MOT17-SBS-S50, MOT20-SBS-S50.
Для многоклассового MOT используйте YOLOX или YOLOv7, обученные на COCO (или любые другие веса).
После создания набора данных 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 для дополнительных пояснений и опций.
Отправив текстовые файлы, созданные в этой части, на веб-сайт 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.
Для оценки набора поездов и проверки мы рекомендуем использовать официальный оценочный код MOTChallenge от TrackEval.
# For all the available tracking parameters, see:
python3 tools/track.py -h
Другие параметры можно использовать без передачи флага --default-parameters.
Для оценки набора поездов и проверки мы рекомендуем использовать официальный оценочный код MOTChallenge от TrackEval.
# 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)
Наш модуль компенсации движения камеры основан на C++-версии VideoStab Global Motion Estimation, которая в настоящее время не имеет версии Python.
Файлы движения можно создавать с помощью проекта C++ под названием «VideoCameraCorrection» в папке GMC.
Сгенерированные файлы можно использовать с трекера.
Кроме того, доступны методы оценки движения на основе Python, которые можно выбрать, передав
'--cmc-метод' <файлы | шар | 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. Спасибо за их отличную работу!