[Paper Review] BoT-SORT: Robust associations multi-pedestrian tracking
[Background]
객체 추적이란?
객체 추적이란 연속된 비디오 프레임에서 객체(사람, 차량 또는 동물 등)의 위치를 추적하고 해당 객체에 ID를 부여하여 지속적으로 추적하는 기술을 말한다. 같은 객체가 시간이 지나도 ID를 유지하면서 따라가도록 하는 것이 목적이다. 초기의 객체 추적 알고리즘은 최초로 한 번 객체의 위치를 파악한 후 그 이후에는 이미지의 움직임을 이용하여 객체를 추적하는 구조이다. 하지만 이런 방식의 객체 추적은 물체가 변형되거나 조명, 크기, 방향이 변하면 추적이 실패된다. 또한 객체가 잠깐 가려지거나 사라지면 복구 불가능하며 새로운 객체가 나타나거나 사라져도 객체로 인지하지 못한다는 단점이 있다. 이러한 단점을 개선하기 위해 객체 탐지 결과를 기반으로 객체를 추적하는 알고리즘이 개발되었다.
객체 탐지 기반의 객체 추적 알고리즘은 객체의 ID를 유지하는 알고리즘에 따라 두 가지 방법으로 나뉜다. 첫 번째는 IoU(Intersection-over-Union)이다. 이는 예측된 객체의 bounding box와 감지된 box의 교차 결합을 중심으로 객체의 위치를 파악하는 방법이다. IoU 방법을 사용하는 알고리즘으로는 SORT와 ByteTrack이다. 두 번째는 ReID(Re-Identification)이다. 이는 객체의 외형 특징 벡터를 기반으로 ID를 추적하는 방법이다. 단순히 bounding box의 위치만 비교하여 ID를 부여하지 않고 객체의 외형을 임베딩 벡터로 변환하여 유사도를 기반으로 ID를 추적한다. ReID만으로 객체 추적을 수행하지 않고 일반적으로 IoU 결과값과 함께 고려하여 사용한다. 대표적인 알고리즘으로는 DeepSORT, BoTSORT, FairMOT가 있다.
칼만-필터
객체 추적 알고리즘에 사용되는 핵심 기술로 과거와 현재의 관측값을 사용하여 미래를 예측하는 알고리즘이다. 객체 추적 알고리즘에서는 탐지된 객체의 이후 움직임을 예측할 때 사용한다.
칼만-필터 알고리즘은 예측 단계와 보정 단계로 구분된다. 객체 추적 알고리즘에서는 객체의 위치를 상태 벡터로 나타내고 상태 벡터의 불확실성을 업데이트하며 객체의 위치를 예측한다.
- 예측 단계
이전 시간 단계의 상태값과 공분산을 기반으로 현재 시간 단계의 상태와 공분산을 예측한다. - 보정 단계
새로운 관측값을 사용하여 예측된 공분산을 보정한다.
칼만-필터 알고리즘은 각 Task에 따라 변형된 방법이 많이 존재하며 해당 BoT-SORT에서는 변형된 칼만-필터 알고리즘을 제안한다.
[Summary]
- BoTSORT 구조
BoT-SORT 논문에서 강조하는 부분은 다음과 같다.
- 변형된 칼만-필터 알고리즘
- Camera Motion Compensation(CMC)
- IoU-ReID Fusion
1. 변형된 칼만-필터 알고리즘
SORT에서 사용하는 칼만-필터 알고리즘의 상태벡터 수식은 다음과 같다.
대괄호 안의 x,y는 좌표계의 위치, s는 넓이, a는 bounding box의 종횡비를 의미한다. Dot이 있는 변수들은 각각의 변화량을 의미한다. BoTSORT는 아래와 같은 상태 벡터를 사용한다.
넓이와 종횡비를 제공하는 것 대신에 너비와 높이 값을 명시적으로 나타내도록 설정하였다. 본 논문의 저자들도 이 방법이 왜 Bounding box를 더 효과적으로 나타내는지 설명하지 못하지만 객체의 Bounding box의 너비와 높이를 명시적으로 주는 것이 기존 방법보다 더 정확하게 객체의 Bounding box를 잡아냈다고 설명한다.
2. Camera Motion Compensation (CMC)
Camera Motion Compensation(CMC)는 영상을 찍는 카메라의 움직임으로 인해 객체의 위치를 제대로 특정하지 못하는 경우를 방지하기 위해 사용하는 알고리즘이다. 영상 속 객체가 움직일 때, 카메라의 움직임인지 객체의 움직임인지 구분하기 위해 사용한다.
BoTSORT에서는 RANSAC을 이용하여 아핀 변환 점을 추정한다.
M은 카메라의 회전, 확대 등 상태 벡터 모두에 영향을 미치는 변환에 대한 부분이고 T는 카메라의 평행 이동에 대한 부분이다.
상태 벡터와 공분산에 카메라의 움직임에 대한 보정을 수행하여 예측한다.
마찬가지로 칼만-필터의 보정 단계에도 해당 결과값을 적용하여 업데이트한다.
3. IoU - ReID Fusion
IoU 결과값과 ReID 결과값을 고려하여 객체를 추적하는 방법은 BoTSORT가 먼저 고안해낸 방법은 아니다. 2017년에 발표한 DeepSORT 논문에서는 IoU 방식과 ReID 방식을 고려하여 ID matching을 수행하였다. 해당 논문에서 제시한 방법은 먼저 IoU로 후보를 필터링하고 필터링된 후보 객체들의 ReID 값을 고려하여 가장 유사한 후보를 최종적으로 선정하는 방법이다. 하지만 만약 IoU로 적절한 후보를 골랐다고 하더라도 추출한 후보들의 ReID 값이 적절하지 않다면 동일한 객체로 판단하기 어렵다.
따라서 BoTSORT에서는 다음과 같이 IoU와 ReID를 사용한다.
cos는 ReID 결과인 외형 임베딩 벡터를 의미하고 iou는 IoU 결과값을 의미한다. 이 방법은 만약 IoU결과와 ReID 결과가 일정 임계치를 모두 만족한다면 외형 임베딩 벡터에 더 가중치를 두어 ID값을 유지하도록 한다.
[Experiments]
실험 설정
- 데이터셋 : MOT17(일반적인 밀집의 군중 데이터셋), MOT20(극도로 밀집된 군중 데이터셋 + 배경이 움직이는 데이터셋)
- 평가지표 : MOTA, IDF1, HOTA, FP, FN, ID Switch, FPS
실험 결과
논문에서 제시하는 기능에 따른 성능 비교 결과이다. ReID를 적용한 모델이 가장 좋은 성능을 보여주었다.
또한 CMC를 적용했을 때 객체의 Bounding box를 더 잘 예측하는 것을 보여준다.
- MOT17 데이터셋에 대한 Baseline 모델들과 결과 비교
- MOT20 데이터셋에 대한 Baseline 모델들과 결과 비교
[Results]
오늘은 객체 추적 알고리즘에서 우수한 성능을 보여주는 BoTSORT 논문에 대해 알아보았다. 객체 추적이라는 Task를 어떻게 수행하는지 궁금했는데 이번 기회에 확실히 알게 되었다. 객체 탐지 기반의 객체 추적 알고리즘은 객체 탐지 결과가 필요하다는 단점이 존재하지만 그만큼 더 정확한 객체 추적 결과를 보여준다. IoU와 ReID를 고려하는 방법에서 BoTSORT가 보여준 방법이 가장 적합한 방법이라고 생각한다. 다만 임계치 설정과 ID 선정 기준에 대한 실험이 좀 더 있었으면 하는 바람이 있다. 일정 임계치를 넘었을 때 외형 벡터를 기준으로 설정하기 위해 0.5를 곱하는데 0.5에 대한 근거가 있었으면 했다. BoTSORT는 논문이 발표된 당시 2022년에 SOTA에 해당한다. 현재는 BoostTrack 알고리즘의 변형된 방법이 SOTA로 평가받고 있다. 다음에는 BoostTrack에 대해서도 읽어보도록 하겠다.