Multi-Object Tracking (MOT)
다중 객체 추적(MOT)은 비디오의 모든 객체를 추적하고 프레임 전반에서 객체마다 하나의 ID를 유지합니다. 트래커가 검출 결과를 연결하는 방식, 지표, 코드를 살펴봅니다.
다중 객체 추적 (MOT)은 컴퓨터 비전 작업으로, 비디오에서 관심 객체를 한 번에 모두 추적하고 각 객체에 지속적인 ID를 부여하여 프레임 전체의 위치를 궤적으로 나타냅니다. 객체 수는 알려져 있지 않으며 사람이나 차량이 들어오고, 나가고, 서로 교차하고, 다른 객체 뒤로 사라지면서 계속 바뀝니다. 따라서 추적기는 각 프레임에서 어떤 감지가 기존 트랙을 이어 가는지, 어떤 감지가 새 트랙을 시작하는지, 어떤 트랙이 종료되었는지를 판단해야 합니다. MOT는 가장 일반적인 객체 추적 유형입니다. 단일 객체 추적 (SOT)은 클래스와 관계없이 첫 프레임에서 선택한 하나의 대상을 추적합니다.
다중 객체 추적의 작동 방식#
대부분의 MOT 시스템은 감지 기반 추적 방식을 사용합니다. 객체 감지 모델이 각 프레임에서 객체를 찾고, 추적기가 해당 감지를 기존 트랙에 연결합니다. 추적기는 일반적으로 칼만 필터인 모션 모델로 각 트랙의 예상 위치를 예측합니다. 그런 다음 박스 중첩 (IoU), 모션, 그리고 선택적으로 객체 재식별 (Re-ID) 모델의 외형 임베딩을 바탕으로 예측된 트랙과 새로운 감지 사이의 비용 행렬을 만들고, 헝가리안 알고리즘을 사용해 선형 할당 문제로 매칭을 계산합니다. 매칭된 트랙은 ID를 유지하고, 매칭되지 않은 신뢰도 높은 감지는 새 트랙을 시작합니다. 매칭되지 않은 트랙은 가림 이후 복구할 수 있도록 일정 프레임 수 동안 "유실" 상태로 유지됩니다.
군중 속에서는 가려진 사람의 신뢰도 낮은 감지를 단순 임계값으로 제거할 수 있으므로 연관 단계가 어려워집니다. ByteTrack은 두 번째 매칭 단계에서 이러한 감지를 활용합니다.
추적기 설계#
- SORT와 후속 기법: SORT (2016)는 칼만 필터, IoU 비용, 헝가리안 알고리즘을 결합했습니다. DeepSORT는 가림 이후 ID를 복구하기 위해 외형 특징을 추가했고, ByteTrack은 신뢰도가 낮은 감지를 처리하는 단계를 추가했습니다. OC-SORT는 가림에 강한 모션 추정 방식을 적용했으며, BoT-SORT는 움직이는 카메라를 보정하기 위해 카메라 모션 보상을 추가했습니다.
- 공동 감지 및 임베딩 (FairMOT): FairMOT는 감지와 Re-ID 임베딩을 함께 출력하는 하나의 네트워크를 학습하므로, 외형 특징을 위해 두 번째 모델이 필요하지 않습니다.
- 종단 간 추적 (MOTR): MOTR과 TrackFormer는 DETR 트랜스포머를 확장해 프레임 간 객체 ID를 전달하는 트랙 쿼리를 사용하므로, 연관 관계가 학습 과정에서 학습됩니다.
Ultralytics YOLO의 추적 모드는 모든 YOLO26 탐지, 세그멘테이션, 포즈 또는 회전 박스 모델에서 탐지 기반 추적을 수행합니다. tracker 인수로 기본 제공 추적기 6개를 선택할 수 있습니다. TrackTrack(기본값), BoT-SORT, ByteTrack, OC-SORT, Deep OC-SORT, FastTracker가 이에 해당합니다. 다음 예제는 짧은 클립의 사람을 추적하고 각 ID가 유지된 프레임 수를 계산합니다.
from collections import Counter
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
video = "https://github.com/ultralytics/assets/releases/download/v0.0.0/decelera_portrait_min.mov"
# 사람 추적 (COCO 클래스 0) 및 각 트랙 ID가 나타나는 프레임 수 계산
frames_per_id = Counter()
for result in model.track(video, stream=True, classes=[0]):
if result.boxes.is_track:
frames_per_id.update(result.boxes.id.int().tolist())
# 가장 긴 궤적 5개를 (트랙 ID, 프레임 수)로 표시
print(frames_per_id.most_common(5))각 쌍은 트랙 ID와 해당 트랙이 유지된 프레임 수를 나타냅니다. 따라서 오래 유지된 ID는 추적기가 여러 프레임에 걸쳐 한 사람을 계속 추적했음을 의미합니다.
추적 품질 측정#
MOT는 MOT17, 밀집 군중을 위한 MOT20, 댄서의 외모가 서로 비슷하고 움직임이 예측하기 어려운 DanceTrack 등의 벤치마크에서 평가됩니다. 다음 세 가지 지표가 주로 사용됩니다.
- MOTA: 누락 객체, 오탐, ID 전환의 합을 실제 객체 수로 나눈 값을 1에서 뺀 값으로, 감지 성능의 영향을 크게 받습니다.
- IDF1: 올바르게 식별된 감지 결과의 F1 점수로, 각 실제 객체가 하나의 ID를 얼마나 일관되게 유지하는지 측정합니다.
- HOTA: 감지 정확도와 연관 정확도의 기하 평균으로, 객체를 찾는 능력과 객체를 연결하는 능력에 동일한 가중치를 둡니다.
과제#
- 가림: 객체가 여러 프레임 동안 가려지면 모션 예측이나 외형 매칭으로 복구하지 않는 한 새로운 ID로 돌아올 수 있습니다.
- 군중과 유사한 외형: 사람이 밀집한 집단이나 유니폼을 입은 스포츠 선수처럼 외형이 비슷한 경우, IoU 및 외형 비용이 모호해져 ID가 서로 바뀔 수 있습니다.
- 카메라 모션: 카메라가 회전하거나 진동하면 모든 박스가 한꺼번에 움직입니다. 추적기가 이를 보정하지 않으면 등속도 모션 모델이 무너집니다.
- 실시간 처리 예산: 감지, 연관 처리, Re-ID 모델이 각 프레임의 시간 예산을 나누어 사용하며, 별도의 Re-ID 모델은 감지된 객체마다 네트워크를 한 번 더 실행해야 합니다.










