Object Tracking
컴퓨터 비전에서 객체 추적이 작동하는 방식을 알아보세요. Ultralytics YOLO26을 사용하여 고유 ID로 객체를 식별하고 모니터링하여 실시간 분석을 수행하는 방법을 살펴보세요.
객체 추적은 컴퓨터 비전(CV)에서 동적으로 이루어지는 프로세스로, 동영상에서 특정 개체를 식별하고 일련의 프레임에 걸쳐 그 움직임을 모니터링합니다. 각 스냅샷을 개별적으로 처리하는 정적 이미지 분석과 달리, 추적에는 시간이라는 차원이 추가됩니다. 이를 통해 인공지능(AI) 시스템은 자동차, 사람 또는 동물과 같은 각 탐지 항목에 고유 식별 번호(ID)를 할당하고, 객체가 이동하거나 방향을 바꾸거나 일시적으로 가려지는 동안에도 해당 ID를 유지할 수 있습니다. 이 기능은 고급 비디오 이해의 핵심으로, 기계가 행동을 분석하고 궤적을 계산하며 원본 영상에서 실행 가능한 인사이트를 도출할 수 있도록 합니다.
객체 추적 작동 방식#
최신 추적 시스템은 일반적으로 "탐지 기반 추적" 패러다임을 사용합니다. 이 워크플로는 강력한 탐지 모델과 전문 알고리즘을 결합하여 시간에 따라 탐지 결과를 연관시킵니다. 이 프로세스는 일반적으로 다음 세 가지 주요 단계로 진행됩니다:
-
탐지: 모든 프레임에서 객체 탐지 모델(예: 최첨단 YOLO26)이 이미지를 스캔하여 관심 객체의 위치를 찾습니다. 모델은 각 객체의 공간적 범위를 정의하는 바운딩 박스를 출력합니다.
-
움직임 예측: 칼만 필터와 같은 알고리즘은 객체의 현재 속도와 궤적을 기반으로 미래 위치를 추정합니다. 이 예측은 다음 프레임에서의 검색 공간을 줄여 시스템의 효율성을 높입니다.
-
데이터 연관: 시스템은 헝가리안 알고리즘과 같은 최적화 방법을 사용하여 새로운 탐지 결과를 기존 트랙과 매칭합니다. 이 단계에서는 예측된 박스가 새로운 탐지 결과와 얼마나 겹치는지 측정하기 위해 교집합 대비 합집합(IoU)과 같은 지표를 사용하는 경우가 많습니다. 고급 추적기는 시각적 특징 추출을 사용하여 외관이 유사한 객체를 재식별하기도 합니다.
객체 추적과 객체 탐지 비교#
이 용어들은 밀접하게 관련되어 있지만, 머신 러닝(ML) 파이프라인 내에서 서로 다른 기능을 수행합니다.
- 객체 탐지는 "이 이미지에 무엇이 있으며 어디에 있는가?"라는 질문에 답합니다. 객체 탐지는 상태 비저장 방식이므로 이전 프레임에 대한 기억이 없습니다. 자동차가 동영상 속을 지나갈 때 탐지기는 프레임 1에서 "자동차"를 보고 프레임 2에서도 "자동차"를 보지만, 두 대상이 동일한 차량이라는 사실은 알지 못합니다.
- 객체 추적은 "이 특정 객체는 어디로 이동하고 있는가?"라는 질문에 답합니다. 객체 추적은 상태 저장 방식입니다. 프레임 1의 "자동차"와 프레임 2의 "자동차"를 연결하여 시스템이 "자동차 ID #42가 왼쪽에서 오른쪽으로 이동 중"이라고 기록할 수 있도록 합니다. 이는 예측 모델링 및 카운팅과 같은 작업에 필수적입니다.
실제 적용 사례#
객체의 ID를 유지하는 기능을 통해 다양한 산업 분야에서 복잡한 실시간 추론 애플리케이션을 구현할 수 있습니다.
- 지능형 교통 시스템: 추적은 자율주행 차량이 안전하게 주행하는 데 필수적입니다. 보행자와 다른 차량을 추적하면 자동차가 잠재적인 충돌을 예측할 수 있습니다. 또한 교통 엔지니어는 이러한 시스템을 속도 추정에 활용하여 안전 규정을 시행하고 교통 흐름을 최적화합니다.
- 리테일 분석: 오프라인 매장에서는 고객 행동을 파악하기 위해 리테일 분야의 AI를 사용합니다. 추적을 통해 매장 관리자는 객체 카운팅을 수행하여 유동 인구를 측정하고, 히트맵을 사용하여 진열대 앞 체류 시간을 분석하며, 대기열 관리를 최적화하여 대기 시간을 줄일 수 있습니다.
- 스포츠 분석: 프로 스포츠에서 코치는 추적과 포즈 추정을 결합하여 선수의 생체역학과 팀 포메이션을 분석합니다. 이 데이터는 육안으로는 보이지 않는 패턴을 드러내 경쟁 우위를 제공합니다.
Python을 사용한 추적 구현#
Ultralytics를 사용하면 고성능 추적을 간단하게 구현할 수 있습니다. 라이브러리의 track 모드는 탐지, 움직임 예측 및 ID 할당을 자동으로 처리합니다. 아래 예제에서는 Ultralytics Platform과 호환되는 YOLO26 모델을 사용하여 동영상에서 객체를 추적하는 방법을 보여 줍니다.
from ultralytics import YOLO
# Load the official YOLO26n model (nano version for speed)
model = YOLO("yolo26n.pt")
# Track objects in a video file or webcam (source=0)
# 'show=True' displays the video with bounding boxes and unique IDs
results = model.track(source="https://ultralytics.com/images/bus.jpg", show=True)
# Access the unique tracking IDs from the results
if results[0].boxes.id is not None:
print(f"Detected Track IDs: {results[0].boxes.id.cpu().numpy()}")관련 개념#
추적 생태계를 완전히 이해하려면 단순히 박스를 추적하는 대신 객체의 픽셀 수준 윤곽을 정밀하게 추적하는 인스턴스 세그멘테이션을 살펴보는 것이 도움이 됩니다. 또한 다중 객체 추적(MOT) 과제에서는 알고리즘이 혼잡한 장면과 가림 현상을 얼마나 잘 처리하는지 평가하기 위해 MOTChallenge와 같이 널리 사용되는 벤치마크를 활용하는 경우가 많습니다. 프로덕션 환경에 배포할 때 개발자는 이러한 모델을 효율적인 파이프라인에 통합하기 위해 NVIDIA DeepStream 또는 OpenCV와 같은 도구를 자주 사용합니다.









