This repository is a fork of Tracktor. Tracktor is a tracking-by-detection framework that achieved state-of-the-art on the multiple object tracking benchmark. The method was published at ICCV 2019.
The cool thing about using an object detector for tracking is that it doesn't require tracking data. However, the original method also used a separate siamese network for reidentification that was trained on tracking ground-truth data.
Our project makes the usage of a siamese network redundant. Instead, we fine-tune the object detector to each track through self-supervised learning. This makes Tracktor fully independent of tracking data and improves its applicability. Our experiments show that self-supervision works as well as a siamese network for reidentification 🎉.
You can also have a look at the report for more details.
- Clone and enter this repository:
git clone https://github.com/phil-bergmann/tracking_wo_bnw
cd tracking_wo_bnw
-
Install packages for Python 3.7 in virtualenv:
pip3 install -r requirements.txt
- Install Tracktor:
pip3 install -e .
-
MOTChallenge data:
- Download MOT17Det, MOT16Labels, 2DMOT2015, MOT16-det-dpm-raw and MOT17Labels and place them in the
data
folder. As the images are the same for MOT17Det, MOT17 and MOT16 we only need one set of images for all three benchmarks. - Unzip all the data by executing:
unzip -d MOT17Det MOT17Det.zip unzip -d MOT16Labels MOT16Labels.zip unzip -d 2DMOT2015 2DMOT2015.zip unzip -d MOT16-det-dpm-raw MOT16-det-dpm-raw.zip unzip -d MOT17Labels MOT17Labels.zip
- Download MOT17Det, MOT16Labels, 2DMOT2015, MOT16-det-dpm-raw and MOT17Labels and place them in the
-
Download object detector and re-identifiaction Siamese network weights and MOTChallenge result files:
- Download zip file from here.
- Extract in
output
directory.
To run the experiment for classification go to the branch reproduce-classification and run the command
python experiments/scripts/finetune_tacktor.py with cfg_classification
To run the experiment for regression go to the branch reproduce-regression and run the command
python experiments/scripts/finetune_tacktor.py with cfg_regression
python experiments/scripts/finetune_tacktor.py with cfg_regression_collect_training_set