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