[CV] 객체 추적(Object Tracking) - Bytetrack 알아보기

Kwanni·2025년 5월 13일
1

Computer Vision

목록 보기
2/3

들어가며

지난 글에서 객체 탐지 모델인 YOLO에 대해서 살펴보았다. 이번 글에서는 탐지된 객체를 추적하는 Object Tracking 그중에서 ByteTrack에 대해 자세히 알아볼 것이다.

현재 진행 중인 프로젝트에서 축구 경기 영상에 학습된 YOLO 모델을 적용시켜봤다. 예상대로 객체 탐지를 잘 수행하지만 영상이 재생되는 동안 꾸준히 지속적으로 탐지하지는 못하였다. 그 이유와 함께 객체 트래킹에 대해 알아보자.



객체 추적(Object Tracking)이란?

영상/비디오에서 움직이는 객체를 시간에 따라 식별하고 계속 추적하는 기술

그렇다면 YOLO만 사용한다면 특정 객체에 대해 왜 지속적으로 탐지를 못하는 것일까? 사람의 눈으로 영상을 본다면 시간에 따라 객체가 물 흐르듯이 움직이는 것을 볼 수 있다. 하지만 영상은 일련의 정지된 이미지를 빠르게 보여주는 것이다. 이유는 다음과 같다.

1. 객체마다 고유 식별 번호가 없음
YOLO는 현재 프레임을 기준으로만 객체를 인식하기 때문에 객체가 사람이라고 가정했을 때 누가 누구인지 구분을 하지 못한다.

2. 빠르게 움직이는 객체에 취약
모션 블러 현상으로 객체로 인식하지 못한다. 아래의 이미지는 모션블러의 예시이다.

3. 장애물의 변수
사람 객체가 다른 물체에 가려지면 탐지를 하지 못한다. 설령 다시 나타난다 해도 동일 객체로 구분하지 못한다. 아래의 이미지의 초록색 테두리로 표시된 사람 객체는 앞의 선수 때문에 가려지게 되고 객체로 인식하지 못하게 된다.

4. 경로 추적 불가
탐지된 객체가 어디서 왔고 어디로 가는지 전혀 알 수 없다.

이와 같은 이유로 영상에서 동일한 객체를 지속적으로 추적하기 위해 Object Tracking을 사용해야 한다.


Object Tracking의 종류

객체 트래킹은 하나의 객체만 추적하느냐와 여러 개의 객체를 동시에 추적하느냐로 나뉜다.

  • Single Object Tracking (SOT)
    • 하나의 객체만 추적
    • 객체의 초기 위치 정보 필요
    • SiamFC, GOTURN 등이 있음
  • Multiple Object Tracking (MOT)
    • 여러 객체를 동시에 추적
    • 각 객체에 고유 ID를 부여하여 추적
    • ByteTrack, DeepSORT, FairMOT 등이 있음

이번 프로젝트에서는 축구 경기 영상에서 선수들과 공을 탐지하고 트래킹 해야 하기 때문에 MOT를 적용해야 하고 이들 중에서 ByteTrack을 알아보았다.


ByteTrack

기존의 다른 MOT는 confidence가 높은 값의 탐지에만 의존하여 놓치는 객체가 많았다. ByteTrack은 confidence가 낮은 탐지 결과도 트래킹에 사용하여 ID스위칭과 누락을 감소시켰다.

Byte track의 작동 방식을 알아보자.

  1. 영상을 프레임으로 분할하여 각 프레임마다 객체 탐지를 실행한다.
  2. 탐지된 객체의 confidence를 구하여 높고 낮은 결과로 분류한다.
  3. confidence가 높은 객체를 먼저 매칭하여 연결한다.
  4. 높은 confidence 탐지 결과와 매칭되지 못한 남은 객체들은 버리지 않고, confidence가 낮은 탐지 결과와 한 번 더 매칭한다.

ByteTrack 깃허브에서 제공하는 예시로 확인해 보자. 빨간색 바운딩 박스를 주목하면 프레임을 시간순으로 진행시킬 때 객체가 점점 다른 물체에 가려지고 있지만 일부만 보고도 끝까지 추적하는 모습이다.

객체를 추적하는 track은 어떻게 관리될까? 3가지 상태로 관리된다.

  • Tracked
    • 현재 프레임에서 탐지에 성공한 track
    • 객체의 위치와 ID를 정확히 파악
  • Lost(보류)
    • 몇 프레임 동안 탐지에 실패한 track
    • 해당 객체가 다시 탐지될 경우 기존의 ID를 유지하여 Activated 상태로 돌아감
    • Lost의 기간이 너무 짧거나 없다면 기존의 객체가 다시 탐지됐어도 ID가 스위칭되어 동일 객체를 서로 다른 객체로 인식하게 되는 문제가 발생
  • Removed
    • 탐지에 실패한 시간이 너무 오래된 track
    • 너무 오랫동안 보이지 않는 트랙을 계속 유지하는 것은 불필요한 연산 자원 소모

GIF를 통해 Tracked에서 Lost로 Lost에서 다시 Tracked로 상태가 변경되는 순간을 확인해보자.

ID가 9번인 객체는 8번 객체에 가려지게 되는 순간 Lost 상태가 되고 다시 완전한 형체가 보여질 때 원래의 ID인 9번을 가지게 된다. 따라서 Removed 되지 않고 동일 객체로 잘 추적하는 것을 확인할 수 있다.


왜 ByteTrack인가?

ByteTrack이 다른 알고리즘보다 추적 정확도도 높을 뿐만 아니라 속도도 빠르다. 높은 정확도를 달성하려는 알고리즘은 속도가 느릴 수 있지만 이러한 trade-off를 잘 극복하였다. 자율주행, 드론, 스포츠 분석 같은 실시간 활용이 가능한 기술에서 주로 사용된다.



마치며

이번 게시글에서는 YOLO 객체 탐지 모델에 이어서 객체 트래킹, 특히 ByteTrack에 대해서 알아봤다. 프로젝트에서 탐지만 하는 것이 아닌 꾸준히 객체를 추적까지 하여 객체에 대한 데이터를 정확하게 수집하는 것이 목표이다.



참고자료


이미지 출처

profile
Success is not an accident, Success is actually a choice.

0개의 댓글