MOT (Multiple Object Tracking)
다중 객체 추적(MOT)의 목표는 비디오에서 객체를 감지하고 식별한 다음 높은 정확도로 궤적을 유지하여 객체 주위에 경계 상자를 그리는 것입니다.
SORT(Simple Online and Realtime Tracking)
칼만필터로 예측값과 실제 IoU(intersection over union 교집합)의 결과를 비교해서 특정 임계값 이상을 같은ID라고 판단, IoU가 낮은 ID는 제거 합니다.
score가 클수록 더 사각형이 일치합니다. 이 점수들을 IoUMatrix에 모아 둡니다.
(a)는 이전 Kalman filter에서 나온 결과이고 (b)의 초록색은 현재 Detector에서 나온 박스 입니다. 이 둘을 IoU시킨 후 Hungarian에서 짝을 찾아 주어 (c)처럼 ID가 할당이 됩니다. 새로운 박스가 있으면 4번 처럼생기기도 합니다.
ID 매칭이 끝나면 최종 정보인 Box를 그려줘야 합니다. ID매칭을 한 이유는 ID를 알아내서 이전 Box정보로 현재 Noise가 없는 새로운 Box를 생성하도록 하기 위함 입니다. 칼만필터를 쓴 이유는 이동방향이 선형적으로 있는데 Detector의 결과가 위쪽으로 치우쳐지게 나오면 Box가 떨리게 됩니다. 이는 불안정해 보이게 되고 이를 해결하기 위해 이전데이터를 사용하여 새로운 위치를 예측하는 칼만필터가 적용되었으며 이로 인해 빨간색의 결과값이 나오게 됩니다.
실제 이미지로 설명을 해보겠습니다.
Step. 1
먼저 tracking을 시작하기전에 초기에 어떤 대상들을 tracking할 것인지에 대한 Initialization 단계가 요구됩니다.
t1 시각 프레임부터 tracking을 시작하겠다고 가정합니다. 먼저 해당 프레임을 Detection Model에 넣고 객체를 검출합니다.
Step. 2
검출된 객체 중 Confidence Score(이미지 상에서 노란 박스위에 있는 숫자)가 낮은 객체를 필터링합니다. 여기서는 Confidence Score가 0.5 보다 낮은 바운딩 박스들은 Background로 간주합니다. 쉽게 얘기하면 Confidence Score를 해당 객체가 사람일 확률로 생각할 수 있습니다.
Step. 3
Box들에 ID를 부여합니다.
Step. 4
바운딩 박스에 ID 를 부여했습니다. 그리고, 이 ID와 각 ID에 맞는 바운딩박스를 배열로 저장해놓습니다.
Step. 5
t2 시각에 새 프레임이 들어왔습니다. 왼쪽에서 두번째 사람이 첫번째 사람에 의해 Occlusion 이 발생하면서 Visual Information 들이 소실됨에 따라 모델이 이게 사람인지 맞는지 헷갈려하면서 Confidence Score를 굉장히 낮게 나왔습니다. 이러한 박스들은 Confidence Score가 0.5보다 낮으므로 해당 박스는 필터링 됩니다.
Step. 6
t1 시각 tracking을 시작했던 3개의 ID0, ID1, ID2 박스와 t2 시각 프레임에서 검출된 2개의 바운딩 박스들을 매칭시켜야합니다. 매칭은 ID0, ID1, ID2 박스와 t2 시각에 취득된 프레임에서 검출된 바운딩 박스들간의 IoU를 모두 측정(3x2 행렬이 나옵니다)하고 IoU가 가장 높은 Box들 끼리 매칭 시킵니다. 이는 이전 프레임에서 검출된 객체가 현재 프레임에서도 트래킹 해온 위치 근처에 있을것이라는 가정하에 이렇게 매칭시키는 것입니다.
Step. 7
매칭 과정이 끝나면 트래킹 결과를 업데이트 합니다.
ID 0,2번 사람만 tracking된 결과를 볼 수 있습니다.
ByteTrack : Multi-Object Tracking by Associating Every Detection Box
MOT 알고리즘은 대부분 Tracking-by-Detection(dectection을 잘하면 Tracking점수가 높게 나옵니다)인데, detection boxes의 TP/FP trade-off를 위해 낮은 신뢰도의 detection boxes는 모두 제거하는 방식을 이용해왔습니다.
BYTE 논문에서는 낮은 신뢰도의 Detection Box를 제거하는 방식이 합리적이지 않다고 주장합니다. 낮은 신뢰도의 Detection boxes도 실제로는 객체를 담고 있을 수도 있기 때문입니다(e.g. 무언가에 가려진 물체).
Data association은 MOT의 또다른 핵심입니다. Tracklets(객체 추적 경로에 관한 정보)과 detection boxes 간의 유사도를 기반으로 연결시켜주는 방법이 됩니다. 이때, 유사한 데이터를 매칭 시키는 기준은 크게 2가지가 있습니다. 하나는 appearance, 다른 하나는 motion model입니다.
Appearance는 말 그대로 외형을 보고 추적하는 것입니다. 사람의 예로는 우리가 모기를 잡으려고 할 때 모기가 있는 곳에 손을 뻗으면 거기에 없는 경우가 허다하지만 다시 한참을 찾다가 다른 위치에서 모기를 발견하는 경우가 있습니다. 이처럼 모기의 외형 appearance similarity를 이용하는 경우는 주로 우리 시야에서 물체가 굉장히 빨리 움직이거나 우리가 물체를 다시 발견한 시점 사이의 공백이 긴 경우(e.g. long-term occlusion)등에 효과적입니다. BYTE에선 detector에 의해 detection boxes를 검출해 활용하는 것이 appearance를 이용한다고 볼 수 있습니다(detector가 결국 객체의 appearance를 이용해 detection을 진행하기 때문이다).
Motion model을 이용한 매칭 기법은 Kalman Filter가 대표적입니다. 마치 우리가 야구공이 날아가는 것을 눈으로 추적하다가 잠깐 눈이 부셔 공을 놓치더라도 우린 저절로 포물선을 떠올리면서 곧바로 야구공의 경로를 예측해 시야에 잡아낼 수 있습니다. 이런 식으로 우린 추적하고자 하는 객체가 다음 step에는 어디에 위치할지 예측할 수 있는 Kalman Filter와 같은 motion model이 머릿속에 있는 것입니다. BYTE에선 Kalman Filter를 통해 이미 추적하고 있던 물체의 추적 경로 정보인 tracklet을 이용해 다음 step에 위치할 prediction boxes를 예측해서 활용하는 것이 motion model를 이용한다고 볼 수 있습니다.
BYTE는 프레임 단위로 detector에서 제안된 detection boxes를 association하는 것이 주된 흐름입니다. 아래는 BYTE알고리즘 수도 코드입니다.
Video sequence에서 프레임 단위로 진행합니다.
1. Det에 의해 제안된 detection boxes를 모두 저장합니다
2. T(high)보다 높은 detection boxes는 D(high)에 저장하고, T(low)보다 높고 T(high)보다 낮은 detection boxes는 D(low)에 저장합니다.
3. 이전 프레임까지의 Tracklet과 KF를 이용해 현재프레임에서의 prediction boxes를 생성해 t에 저장합니다.
4. Tracklet과 D(high)를 IoU distance를 이용해 associate해줍니다.(First Association)
5. Step 4에서 매칭되지 못한 Detection Boxes는 D(remain)에 Tracklet은 T(remain)에 남겨줍니다.
6. T(remain)과 D(low)를 IoU Distance기반으로 associate를 해줍니다.(Second Association)
7. Step 6에서 매칭되지 못한 Tracklet은 제거해줍니다.
8. Step 6에서 매칭되지 못한 Detection Boxes중 e보다 신뢰도가 높으면 새로운 Tracklet을 추가해줍니다.
(False Positive boxes(맞다고는 했는데 참값이 아닌경우 e.g. 노이즈, 배경)는 기존 tracklet에 없는 정보일 확률이 높고, 가려진 객체(추적되던 객체)는 기존 tracklet에 있는 정보일 확률이 높습니다.)
Tracklet의 유사도가 low score detetction boxes여도 object랑 background를 구분할 수 있는 강력한 단서가 된다고 합니다.
아래 사진과 같이 빨간색 box의 경우 score가 낮더라도, 프레임과 tracklet의 유사도가 높으면 tracking이 가능하다고 보는 것 같습니다.
ByteTrack은 SORT의 Step. 5까지 진행하고 아래의 Step부터 달라집니다.
ByteTrack은 기존에 Tracking 되어 온 박스들 중 매칭이 안되었던 박스들(위 그림에서 Frame t1에서 ID 1번 박스)과 Frame t2에서 추론된 Confidence Score가 낮은 박스들(세모 표시된 박스들)에게 한번더 기회를 주고 이 박스들끼리(ID1번 박스와 Frame t2에서 검출된 세모 표시된 박스)만 매칭을 한 번 더 수행합니다.
최종적으로 Occlusion이 발생한 왼쪽에서 두번째 사람 또한 매칭이 되었습니다. 가장 우측에 Background 를 검출한 박스(Confidence Score가 0.1인 박스)는 Tracking 되어 온 박스들간의 IoU값에 의해 제거되었습니다.
'영상처리 > Object Tracking' 카테고리의 다른 글
BoT-SORT (117) | 2023.05.17 |
---|---|
object tracking 객체 추적 (11) | 2023.01.04 |