https://arxiv.org/abs/2108.10312
이번에 review할 논문은 3D MOT 논문 중 Joint Detection and Tracking method를 사용한 논문이다.
github에 code가 제공된 논문으로, LiDAR 데이터를 대상으로 하여 nuscenes 및 Waymo dataset에서 실험하였다.
기존의 3D MOT는 tracking-by-detection method를 사용하여 association에 heuristic matching step이 필요하다는 점을 짚으며 end-to-end 방식의 SimTrack 모델을 소개한다. 본 논문의 핵심은 snippet(입력으로 사용되는 단위의 frame 묶음)에서 특정 객체의 처음 위치를 예측하여 tracking identity를 얻고, motion estimation에 의해 location을 업데이트 하는 것이다.
Introduction
대부분의 연구는 tracking-by-detection method로 진행되었다. 이러한 방식은 대부분 association을 이분 매칭 문제로 규정하여 motion, appearance를 단서 삼아 affinity matrix를 잘 구현하는 것을 목표로 하였다.
단점은 아래와 같다.
- 매칭이나 life management와 같은 문제를 다루는데 사용한 heuristic한 방법들은 train이 불가능하고, hyper-parameter에 의존하여 새로운 시나리오에 맞추어 변화시키는데에 어려움이 있다.
- 프레임 간 위치 관계만을 고려하고 association에 대한 신뢰도를 모델링하지 않는다.
- occlusion을 방지하기 위해 프레임 수를 수동으로 설정해야한다.
- 새로운 객체를 구분하기 위해 현재 프레임에서 모든 객체에 대한 매칭을 다시 감지해야 한다.
본 논문에서 저자는 heuristic 매칭이 필요없는 모델을 제안한다.
contribution은 아래와 같다.
- backbone model로 pillar나 voxel 모두 사용 가능하다.
- hybrid-time centerness map를 제안하여 추가적인 매칭이 없이 현재 detection과 이전 tracked object를 연결할 수 있다.
- 객체의 처음 위치에서 현재 위치로 업데이트하기 위해 tracked object의 motion을 추정하는 motion update branch를 소개한다.
- hybrid-time centerness map에 기록된 신뢰도 점수에 의해 new-born과 dead track을 결정하여 manual track life management가 필요없다.
Method
3D Object Detection
3D object를 center 기반으로 표현함으로써 tracks은 점들로 이루어진 path로 볼 수 있다.
3D object detection 과정은 아래와 같다.
- raw point cloud를 voxelize한다.
- small PointNet구조로 feature를 추출한다.
- convolution을 거쳐 BEV상에서의 feature를 계산한다.
- detection head에서 object의 center location을 centerness map 위에 나타낸다.
training시, 각 object의 center를 중심으로 2D Gaussian heatmap을 만들어 target center map(gt)으로 사용한다.
Overview
시점 t에서의 point cloud data를 $P^t = {(x,y,z,r)_i}$라고 할 때, model은 point cloud snnipet(sequence)을 입력으로 받는다.
ego motion을 사용하여 과거의 point cloud 정보를 현재 coordinate system으로 변환하여 combine한다.
따라서 point는 다음과 같이 표현된다.
$$P = (x,y,z,r,\Delta t)$$
여기서 $\Delta t$는 현재 시점과 과거 시점의 차이이다. voxelization과 feature extraction이 끝나면 centerness map을 사용하여 객체가 처음 나타난 위치를 감지하고, 입력 snnipet 내에서의 움직임을 추정한다.
inference단계에서는 이전 centerness map에서 tracking identity를 읽고, predicted motion을 사용하여 object의 현재 위치를 업데이트 한다.
Joint Detection and Tracking
Hybrid-Time Centerness Map
model의 입력으로 연속된 t-1, t LiDAR sweep(point cloud)을 입력으로 받는다.
centerness map으로 표현하기 위해 각 object가 input sequence에서 처음 등장하면 object를 center location으로 표현한다.
- t-1, t 시점 모두 존재하는 객체에 대해서 시점 t-1에서 객체의 위치(input sequence 중 객체가 처음 등장한 위치)에 대해 target heatmap을 만든다.
- t-1 에만 등장한 객체(dead)는 negative example로 간주하고 target heatmap을 부여하지 않는다.
- t 에만 등장한 객체(new-born)는 시점 t에서 객체의 위치에 대해 target heatmap을 만든다.
이러한 방식으로 이전 프레임에서 업데이트한 centerness map의 정보를 읽어 동일한 위치의 identity 정보를 통해 tracking을 수행할 수 있다. 즉, t-1 정보를 바탕으로 만든 heatmap 정보와 이전 centerness map 정보가 일치할 것이라는 내용인 듯 하다.(동시에 2 frame을 입력으로 받음으로 가능한 방법)
Dead object에 대해서도 confidence 점수를 통해 간단히 제거할 수 있다.
New-born object 또한 centerness map 상에서 detection을 수행할 수 있다.
결과적으로 hybrid-time centerness map은 association, dead object removal, and new-born object detection 역할을 수행할 수 있다.
또한, 이 hybrid-time centerness map에서 얻을 수 있는 detection confidence score(객체가 현재 timestamp에 존재할 확률)와 association confidence score(객체가 이전 location과 연결될 확률)를 모두 이용하였다.
Motion Updating Branch
online tracking system을 구축하기 위해 현재 객체의 위치를 얻을 필요가 있다.
각 객체마다 처음 frame에서 center location정보를 이용해 객체의 현재 위치 까지의 offset을 regress한다.(두 프레임 간 이동 정도)
$$(\Delta u, \Delta v) = (u_t - u_(t-1), v_t - v_(t-1))$$
여기서 (((u, v)))는 object center coordinate이다. 이 motion 정보를 사용하여 centerness map을 업데이트한다.
Regression Branch
motion 정보 외의 3D object 특성을 regress한다. (height z, size wlh, heading)
최종 tracking output을 도출하기 위함으로 보인다. (2D -> 3D, 크기 및 방향 정보 포함)
Loss Function
hybrid-time centerness map을 학습시킬 때 focal loss를 이용하였다.
$\widetilde{Y}$와 $Y$는 target and predicted hybrid-time centerness map을 의미하고, N은 object의 수를 의미한다.
$\alpha$와 $\beta$는 focal loss의 hyper-parameter.
motion updating branch와 regression branch는 $l_1$ loss를 이용하였다.
최종 loss는 다음과 같다.
Backbone Network
PointPillaras와 VoxelNet 모두 이용 가능하다.
Online Inference
inference시, updated centerness map $Z$가 tracking identity, center location, and confidence score를 기록한다.
이 때 tracking identity는 객체 center location에 위치한다.
맨 처음 frame의 경우, 한 frame만 입력받아 detection을 수행하고 centerness map을 초기화한다.
시점 t일 때,
- 이전 timestamp에서의 updated centerness map $Z_(t-1)$을 ego-motion을 사용하여 현재 coordinate system으로 바꿔준다.
- 변환한 $Z_(t-1)$과 현재 hybrid-time centerness map $Y_t$를 평균낸다.
- $Y_t$에서 각 object center에 대해 $Z_(t-1)$에서 같은 위치에 tracking identity가 존재하면 tracked object로 간주하고 그 정보를 읽어온다.(association)
- $Y_t$에서 나머지 object center에 대해서 new track으로 초기화 한다.
- $Y_t$를 thresholding하여 dead object를 걸러낸다.(confidence score로 dead object 판단)
- tracked object의 현재 위치를 얻기 위해 motion map $M_t$를 사용하여 $Y_t$를 $Z_t$로 업데이트 한다.
Experiments
Ablation study
Occlusion Analysis
occlusion을 대체하는데 주로 사용하는 방식은 dead track을 몇 프레임간 유지하면서 CV model이나 kalman filter로 location을 업데이트 하는 것이다. 이러한 heuristic rule은 IDS(ID Switch)에 상당한 영향을 미치는데, 이를 사용하지 않았을 때 CenterPoint model에서 IDS가 238에서 500으로 나빠진 것을 확인하였다.
본 논문에서는 위와 같은 방식과 달리 아래와 같이 occlusion case를 고려한다.
- 이전 업데이트된 centerness map의 신뢰도 점수를 고려한다. 이전 프레임에서의 객체의 신뢰도 정보가 현재 프레임에서 occlusion 문제를 다루는 데 중요한 역할을 한다.
- 예측된 motion 정보를 사용하여 객체의 현재 위치를 업데이트합니다. 객체의 이전 위치 및 신뢰도 점수와 결합하여 occluded 객체를 추적하고 위치를 추정한다.
즉, 현재 프레임에서 객체가 가려진 경우라도 이전 프레임에서 강한 신호가 있다면 해당 객체를 유지하고 현재 위치를 추측할 수 있다.
$Y_t$와 $Z_(t-1)$을 average하는 과정이 occlusion을 방지하는데 큰 역할을 한다는 의미.
예를 들어 occlusion 문제로 t-1에서만 관측되고 t에서 관측되지 않았을 경우, current heat map에는 반영되지 않는다. 하지만, privious updated centerness map과 average하는 과정을 거쳐 이전 timestamp에서 높은 신뢰도 점수를 얻었다면 $Y_t$를 업데이트 하는 과정에 반영될 것이다.