shaoshengsong/DeepSORT

A real-time multi-object tracking application in C++17 with Qt and ONNX Runtime that runs a YOLO detector with four pluggable trackers — ByteTrack, OC-SORT, Deep OC-SORT, and DeepSORT.

解決的問題

DeepTracker 是一個用於影片的即時多物件追蹤(MOT)系統。它允許使用者在影片幀之間識別並維持多個物件(例如人)的身分,能處理遮蔽、運動模糊和移動鏡頭等挑戰。

工作原理

系統使用 YOLO 檢測器在每一幀中尋找物件。然後應用四種追蹤演算法之一,將這些檢測結果與現有軌跡關聯起來。所有追蹤器共享一個通用的 C++ 接口(ITracker)和用於運動預測的恆定速度卡爾曼濾波器。

根據所選演算法,系統使用不同方法進行物件關聯:

  • ByteTrack:利用運動資訊(IoU 和置信度)恢復因遮蔽而遺失的軌跡。
  • OC-SORT:專注於運動(觀測中心)以處理模糊和遮蔽,無需外觀模型。
  • Deep OC-SORT:結合運動與外觀特徵,並加入全域運動補償(GMC)以應對移動鏡頭。
  • DeepSORT:結合外觀嵌入(ReID)與平方馬氏距離運動門控來維持身分。

推論由 ONNX Runtime 處理,支援使用 .onnx 模型進行檢測與外觀編碼,無需重新編譯。

適用對象

本專案適用於需要高效率 C++ 實作經典多物件追蹤演算法進行影片分析的開發者與研究人員。

主要亮點

  • 多種演算法:支援 ByteTrack、OC-SORT、Deep OC-SORT 與 DeepSORT。
  • 彈性推論:使用 ONNX Runtime 支援 CPU、CUDA、DirectML 與 OpenVINO 提供者。
  • 整合 YOLO:整合 YOLO 檢測器用於初始物件檢測階段。
  • 互動式 GUI:包含基於 Qt 的桌面應用程式用於互動式追蹤,以及用於腳本的命令列工具。
  • 模組化架構:所有追蹤器均實作共享介面,僅需一行程式碼變更即可輕鬆切換演算法。

相關

  • 專案
  • 專案
  • 專案
  • 專案