Skip to content

C++ implementation of BoT-SORT MOT algorithm with Re-ID and Camera Motion Compensation

Notifications You must be signed in to change notification settings

viplix3/BoTSORT-cpp

Repository files navigation

BoT-SORT: Unofficial C++ Implementation

BoT-SORT: Robust Associations Multi-Pedestrian Tracking

Nir Aharon, Roy Orfaig, Ben-Zion Bobrovsky

Description

This repository contains an unofficial C++ implementation of BoT-SORT multi-pedestrian tracking algorithm.

This implementation has been tested on NVIDIA Jetson NX and it achieves real-time performance on 1080p videos.

YOLOv8-tracking, Official BoT-SORT and Official ByteTrack GitHub repositories were used as references.

TODO

  • Implement BoT-SORT tracker
  • Load parameters from config file
  • Implement Re-ID model for BoT-SORT tracker using TensorRT
  • Dockerize the project
  • Re-ID performance analysis
  • Re-ID model quantization

Preview of Results

These results demonstrate the BoT-SORT tracker, implemented in this repository, utilizing MOT provided detections.

MOT20-01

More Result Videos

Installation Guide

  1. Install Docker and NVIDIA Container Toolkit

  2. Clone the repository

    git clone git@github.com:viplix3/BoTSORT-cpp.git
    cd BoTSORT-cpp
  3. Build Docker image

    ./docker_build.sh
  4. Run Docker container

    ./docker_run.sh
  5. Build BoT-SORT tracker

    cd /home/user/work/
    mkdir build && cd build
    cmake .. -DCMAKE_BUILD_TYPE=Release
    make -j$(nproc)

Usage

Example code for using the BoT-SORT tracker is provided in botsort_tracking_example.cpp The project by default builds the example code.

To test the example code, run the following command:

cd <project-root-dir>/build
./bin/botsort_tracking_example ../config/tracker.ini ../config/gmc.ini ../config/reid.ini ../assets/osnet_x0_25_market1501.onnx ../examples/data/MOT20-01.mp4 ../examples/data/det/det.txt ../output/

Performance Analysis

The performance of the BoT-SORT tracker, implemented in this repository, was evaluated on the MOT20 dataset. Details are provided in this document.

Execution time of different modules (Host Machine, Release Build, Best of 3)

Sequence Average Objects/Frame Re-ID Camera Motion Estimation Motion Compensation Kalman Filter Algorithm Execution Time (ms) Algorithm Execution FPS
MOT20-01 62 4.7771 209.3333
MOT20-01 62 0.2074 4819.2466
MOT20-01 62 0.2016 4959.9266
MOT20-05 226 6.6817 149.6633
MOT20-05 226 2.0498 487.9570
MOT20-05 226 2.0054 498.6453

Execution time of different modules (Jetson-NX, Release Build, Best of 3)

Sequence Avg Objects/image Re-ID Camera Motion Estimation Motion Compensation Kalman Filter Algorithm Execution Time (ms) Algorithm Execution FPS
MOT20-01 62 39.9968 25.0229
MOT20-01 62 2.6441 378.2070
MOT20-01 62 2.5185 397.0786
MOT20-05 226 52.4251 19.0749
MOT20-05 226 15.6337 63.9844
MOT20-05 226 14.7918 67.7275

Accuracy Analysis

The accuracy of the BoT-SORT tracker, implemented in this repository, was evaluated on the MOT20 train set. Details are provided in this document.

About

C++ implementation of BoT-SORT MOT algorithm with Re-ID and Camera Motion Compensation

Topics

Resources

Stars

Watchers

Forks