← all repositories
shaoshengsong/DeepSORT

A C++17 tracking switchboard wired for four famous algorithms

DeepTracker wraps ByteTrack, OC-SORT, Deep OC-SORT and DeepSORT behind a single C++ interface so you can swap tracking strategies without rewriting your pipeline.

1k stars C++ Computer Vision
DeepSORT
Collecting fresh signals — velocity needs a few days of history.
star history

What it does

DeepTracker is a real-time multi-object tracking application built in C++17 with Qt 6 and ONNX Runtime. It runs a YOLO detector through one of four pluggable trackers—ByteTrack, OC-SORT, Deep OC-SORT, or DeepSORT—behind a thin ITracker interface. A Qt desktop app provides interactive tracking with live preview and trajectory trails, while a command-line demo handles headless use.

The interesting bit

The project treats tracker choice as a policy decision rather than an architectural one. ByteTrack, OC-SORT and Deep OC-SORT all inherit from a shared BaseTracker template-method pipeline and override virtual hooks to change association behavior, while DeepSORT stands alone with its own faithful age-ordered cascade, 100-frame feature gallery, and χ² motion gating. Switching between them is nominally a one-line change.

Key highlights

  • All four trackers share the same ITracker interface (update, reset, frame_id) and a constant-velocity Kalman filter on the [cx, cy, aspect, height] state.
  • Detection and ReID embeddings run through ONNX Runtime with plain .onnx files, so models can be swapped without recompiling; inference defaults to CPU but can target CUDA, DirectML, or OpenVINO without touching tracking code.
  • DeepSORT falls back to ByteTrack automatically when no ReID model is present, and Deep OC-SORT likewise degrades to plain OC-SORT without appearance features.
  • The Qt GUI discovers models automatically, supports color-theme switching, and exposes Global Motion Compensation options (sparseOptFlow, orb, sift, ecc) for moving-camera footage.
  • Association math includes a Jonker–Volgenant linear assignment solver and both IoU and embedding distance matrices.

Caveats

  • Tracker parameters are compiled-in presets inside src/core/tracker_config.cpp; tuning behavior requires editing C++ and rebuilding.
  • The build system is Windows-centric: it expects Visual Studio 2022, Qt 6.9.x, and prebuilt OpenCV and ONNX Runtime libraries placed under external/.
  • The README does not mention Linux or macOS build instructions, and the .pro file paths suggest a Windows-first deployment.

Verdict

Worth a look if you need a self-contained C++ tracker with algorithmic variety and a Qt frontend. Skip it if you were hoping for runtime parameter tuning or a cross-platform build out of the box.

Frequently asked

What is shaoshengsong/DeepSORT?
DeepTracker wraps ByteTrack, OC-SORT, Deep OC-SORT and DeepSORT behind a single C++ interface so you can swap tracking strategies without rewriting your pipeline.
Is DeepSORT open source?
Yes — shaoshengsong/DeepSORT is an open-source project tracked on heatdrop.
What language is DeepSORT written in?
shaoshengsong/DeepSORT is primarily written in C++.
How popular is DeepSORT?
shaoshengsong/DeepSORT has 1k stars on GitHub.
Where can I find DeepSORT?
shaoshengsong/DeepSORT is on GitHub at https://github.com/shaoshengsong/DeepSORT.

heatdrop uses Google Analytics to see which pages get read — nothing else. Your call. How we handle data.