Trackers¶
motcpp provides 9 state-of-the-art multi-object tracking algorithms. This guide helps you choose the right one for your application.
Overview¶
| Tracker | Type | Speed | Accuracy | Use Case |
|---|---|---|---|---|
| SORT | Motion | ⚡⚡⚡⚡⚡ | ⭐⭐⭐ | Real-time, simple scenes |
| ByteTrack | Motion | ⚡⚡⚡⚡⚡ | ⭐⭐⭐⭐ | General purpose |
| OC-SORT | Motion | ⚡⚡⚡⚡ | ⭐⭐⭐⭐ | Occlusion handling |
| UCMCTrack | Motion | ⚡⚡⚡⚡ | ⭐⭐⭐⭐ | Camera motion |
| DeepOC-SORT | ReID | ⚡⚡⚡ | ⭐⭐⭐⭐⭐ | Re-identification |
| StrongSORT | ReID | ⚡⚡ | ⭐⭐⭐⭐⭐ | High accuracy |
| BoT-SORT | ReID | ⚡⚡ | ⭐⭐⭐⭐⭐ | Camera motion + ReID |
| BoostTrack | ReID | ⚡⚡ | ⭐⭐⭐⭐⭐ | State-of-the-art |
| HybridSORT | ReID | ⚡⚡ | ⭐⭐⭐⭐⭐ | Hybrid approach |
Motion-Only Trackers¶
These trackers use only motion cues (Kalman filter + IoU matching) without appearance features.
SORT¶
Simple Online and Realtime Tracking — The foundational tracker that many others build upon.
#include <motcpp/trackers/sort.hpp>
motcpp::trackers::Sort tracker(
0.3f, // det_thresh: detection confidence threshold
1, // max_age: frames before track deletion
50, // max_obs: max observation history
3, // min_hits: hits before track confirmation
0.3f // iou_threshold: matching threshold
);
Best for: - Maximum speed requirements - Simple scenes with minimal occlusion - Baseline comparisons
Paper: arXiv:1602.00763 (2016)
ByteTrack¶
BYTE: Multi-Object Tracking by Associating Every Detection Box — Two-stage association for better handling of low-confidence detections.
#include <motcpp/trackers/bytetrack.hpp>
motcpp::trackers::ByteTrack tracker(
0.3f, // det_thresh
30, // max_age
50, // max_obs
3, // min_hits
0.3f, // iou_threshold
false, // per_class
80, // nr_classes
"iou", // asso_func
false, // is_obb
0.1f, // min_conf: low confidence threshold
0.45f, // track_thresh: high confidence threshold
0.8f, // match_thresh
30, // track_buffer
30.0f // frame_rate
);
Best for: - General-purpose tracking - Crowded scenes - When you need good speed/accuracy balance
Paper: ECCV 2022
OC-SORT¶
Observation-Centric SORT — Improved Kalman filter with observation-centric momentum.
#include <motcpp/trackers/ocsort.hpp>
motcpp::trackers::OCSort tracker(
0.2f, // det_thresh
30, // max_age
50, // max_obs
3, // min_hits
0.3f, // iou_threshold
false, // per_class
80, // nr_classes
"iou", // asso_func
false, // is_obb
0.1f, // min_conf
3, // delta_t: observation window
0.2f, // inertia: velocity dampening
false, // use_byte: use ByteTrack association
0.01f, // Q_xy_scaling: process noise
0.0001f // Q_s_scaling: scale noise
);
Best for: - Non-linear motion - Occlusion recovery - When objects temporarily disappear
Paper: CVPR 2023
UCMCTrack¶
Unified Camera Motion Compensation — Ground-plane tracking with camera parameters.
#include <motcpp/trackers/ucmc.hpp>
motcpp::trackers::UCMCTrack tracker(
0.3f, // det_thresh
30, // max_age
50, // max_obs
3, // min_hits
0.3f, // iou_threshold
false, // per_class
80, // nr_classes
"iou", // asso_func
false, // is_obb
100.0, // a1: confirmed association threshold
100.0, // a2: tentative association threshold
5.0, // wx: process noise x
5.0, // wy: process noise y
10.0, // vmax: max velocity
0.033, // dt: time step (1/fps)
0.5f // high_score: confidence split
);
Best for: - Drone/aerial footage - Moving cameras - When camera parameters are available
Paper: AAAI 2024
ReID-Enhanced Trackers¶
These trackers use appearance features (ReID embeddings) in addition to motion cues.
DeepOC-SORT¶
Deep OC-SORT — OC-SORT with deep appearance features.
#include <motcpp/trackers/deepocsort.hpp>
motcpp::trackers::DeepOCSort tracker(
"osnet_x1_0.onnx", // reid_weights
false, // use_half
false, // use_gpu
0.2f, // det_thresh
30, // max_age
// ... additional parameters
);
Best for: - Long-term tracking - Re-identification after long occlusions - Similar-looking objects
Paper: arXiv:2302.11813 (2023)
StrongSORT¶
StrongSORT++ — Enhanced SORT with appearance features and NSA Kalman.
#include <motcpp/trackers/strongsort.hpp>
motcpp::trackers::StrongSORT tracker(
"osnet_x1_0.onnx", // reid_weights
false, // use_half
false, // use_gpu
0.3f, // det_thresh
30, // max_age
// ... additional parameters
);
Best for: - High accuracy requirements - When appearance is distinctive - Benchmark evaluations
Paper: TMM 2023
BoT-SORT¶
BoT-SORT — Camera motion compensation with ReID.
#include <motcpp/trackers/botsort.hpp>
motcpp::trackers::BotSort tracker(
"osnet_x1_0.onnx", // reid_weights
false, // use_half
false, // use_gpu
0.3f, // det_thresh
30, // max_age
// ... additional parameters
);
Best for: - Moving cameras + appearance - Sports broadcasting - Surveillance with PTZ cameras
Paper: arXiv:2206.14651 (2022)
BoostTrack¶
BoostTrack — Latest SOTA with confidence-aware tracking.
#include <motcpp/trackers/boosttrack.hpp>
motcpp::trackers::BoostTrackTracker tracker(
"osnet_x1_0.onnx", // reid_weights
false, // use_half
false, // use_gpu
0.3f, // det_thresh
30, // max_age
// ... additional parameters
);
Best for: - Maximum accuracy - Research/benchmarks - When speed is not critical
Paper: MVA 2024
HybridSORT¶
HybridSORT: A Simple but Strong Association for Multi-Object Tracking — Combines motion and appearance cues with hybrid matching.
#include <motcpp/trackers/hybridsort.hpp>
motcpp::trackers::HybridSort tracker(
0.3f, // det_thresh
30, // max_age
50, // max_obs
3, // min_hits
0.3f, // iou_threshold
"hmiou" // asso_func: "iou" or "hmiou"
);
Best for: - Balanced accuracy and speed - Scenes with moderate occlusion - When ReID is available
Paper: arXiv:2303.XXXX
Choosing a Tracker¶
┌─────────────────────┐
│ Need maximum speed? │
└──────────┬──────────┘
│
┌────────────────┴────────────────┐
│ │
▼ ▼
┌────────┐ ┌────────┐
│ Yes │ │ No │
└───┬────┘ └───┬────┘
│ │
▼ ▼
┌─────────────────┐ ┌─────────────────────┐
│ SORT/ByteTrack │ │ Need ReID features? │
└─────────────────┘ └──────────┬──────────┘
│
┌─────────────────┴─────────────────┐
│ │
▼ ▼
┌────────┐ ┌────────┐
│ No │ │ Yes │
└───┬────┘ └───┬────┘
│ │
▼ ▼
┌──────────────────┐ ┌──────────────────┐
│ OC-SORT/UCMCTrack│ │ StrongSORT/ │
│ (motion focus) │ │ BoostTrack │
└──────────────────┘ └──────────────────┘
Benchmarks¶
Performance on MOT17 test set:
| Tracker | HOTA↑ | MOTA↑ | IDF1↑ | FPS |
|---|---|---|---|---|
| SORT | 62.4 | 75.2 | 69.2 | 1250 |
| ByteTrack | 66.5 | 76.4 | 77.6 | 1100 |
| OC-SORT | 64.6 | 73.9 | 74.4 | 850 |
| UCMCTrack | 64.0 | 75.6 | 73.9 | 980 |
| DeepOC-SORT | 65.8 | 75.1 | 76.2 | 120 |
| StrongSORT | 66.2 | 75.8 | 77.1 | 95 |
| BoT-SORT | 66.8 | 76.2 | 78.3 | 85 |
| BoostTrack | 67.5 | 77.1 | 79.2 | 75 |