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 기반 데스크톱 애플리케이션과 스크립팅용 명령줄 도구를 포함합니다.
  • 모듈러 아키텍처: 모든 트래커가 공유 인터페이스를 구현하여 한 줄의 변경만으로 알고리즘을 쉽게 전환할 수 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트