나의 정리
- 논문이 지적한 문제점
지금까지 monocular 3D object detection은 하나의 instance를 분리시켜 단일 regression target으로 depth estimation을 하여 문제를 해결했습니다. 하지만 image에는 여러 instance들이 존재하고, instance들끼리는 서로 기하학적인 관계를 가지고 있습니다. 또한 본질적으로 ill-posed problem을 가지고 있기 때문에 단일 regression target으로 depth를 예측하면 성능이 떨어지는 문제를 가집니다. - 해결 방안
한 image 내 instance끼리의 geometric relationship을 이용해서 depth를 propagation하여 분리된 instance가 아닌 서로의 depth가 영향을 끼칠 수 있게 하였습니다. 단일 regression target이 아닌 확률적으로 depth를 예측하여 ill-posed problem으로 겪을 수 있는 uncertainty를 고려합니다.
Abstract
현재 monocular 3D detection은 하나의 instance depth estimation 문제로 단순화되어서 해결되어왔습니다. 하지만, 부정확한 instance depth는 다른 모든 3D 속성의 예측이 전체적인 detection 성능을 개선하지 못하게 막습니다. 이 말은 즉슨 부정확한 instance depth가 bottleneck이 되어서 성능 저하에 큰 원인이 된다는 것을 의미합니다.
최근 방법들은 다른 object끼리의 geometric 관계를 무시하고 분리된 instance 혹은 pixel 단위로 depth를 곧 바로 예측하게 됩니다. 하지만 PGD는 예측된 object 간의 geometric 관계 graph를 구성하고 depth estimation에 graph를 활용합니다. 각각 instance의 사전 depth estimation은 ill-posed setting에선 부정확할 수 있습니다. 따라서 uncertainty를 고려하기 위해 depth를 확률적으로 표현합니다.
KITTI, nuScenes dataset을 사용하여 평가하였습니다.
Introduction
기존의 방식들은 추가적인 depth estimation model을 사용해서 depth 정보를 얻는거나 이를 단순화하여 3D localization task로 한 번에 depth를 예측하는 경우도 있습니다. 이러한 방법들은 모두 regression 방식으로 분리된 instance나 pixel로부터 depth estimation을 진행하였습니다.
하지만 이미지에는 하나의 object만 존재하는 것이 아닙니다. 서로 다른 object들이 이미지내에서 같이 존재하고 서로 기하학적인 관계가 존재하여 이는 좀 더 정확한 예측을 할 수 있는 좋은 constraint입니다.
정리하자면 PGD는 확률적인 depth의 사용으로 uncertainty를 고려하고 정확한 depth estimation을 위해 이미지 내에 존재하는 object끼리의 geometric relationship을 활용합니다.
왼쪽 그림과 같이 depth value를 일정 간격에 담아주고 기댓값으로 depth를 계산합니다.
가운데 그림과 같이 object간의 contextual relationship으로 서로의 depth를 propagation 하여 estimation을 강화시킵니다.
Related Work
depth estimation과 같은 subnetwork를 사용하면 추가적인 data와 pre-trained model이 필요합니다. 이는 학습을 inconvenient 하게 하고 더 복잡하게 만듭니다.
기존에 monocular 3D object detection에서 사용되던 Pseudo-LiDAR의 문제점은 image와 LiDAR 간 sensor의 특성 차이가 주는 domain gap 때문에 새로운 실제 환경에서 일반화시키는 것이 어렵게 만듭니다.
또한 anchor를 사용하지 않는 FCOS3D를 기본 base model로 사용하였는데 anchor free 모델을 사용한 이유에 대해서 아래와 같이 설명합니다.
- 주어진 data에 대한 statistics를 사용하지 않아도 되기 때문입니다. → anchor를 사용하게 되면 anchor size를 정하기 위해서 각 class의 사이즈나 여러 parameter를 정하기 위해서 통계적인 정보를 사용해야 합니다.
- 다른 외부적인 환경이나 다양한 class에 대해서 일반화 시키는 능력이 더 뛰어납니다.
Preliminary and Motivating Study
간단한 3D detector인 FCOS3D를 사용합니다. FCOS3D에 대한 설명은 아래 링크로 대체합니다.
[논문 리뷰] FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection (2021)
[논문 리뷰] FCOS3D: Fully Convolutional One-Stage Monocular 3D Object Detection (2021)
나의 정리 논문이 지적한 문제점: Fully convolution single-stage 구조를 가진 FCOS는 2D object detection을 진행하는데 이를 통하여 더 어려운 문제인 3D object detection을 진행하고자 한다. 해결 방안: 기존 FCOS
talktato.tistory.com
부정확한 depth가 KITTI, nuScenes dataset 모두에서 전체 성능에 가장 큰 악영향을 줍니다. 이를 증명한 표입니다.
표에서 적힌 부분을 GT로 prediction을 대체하였을 때의 mAP입니다. depth를 GT로 대체했을 때 가장 크게 mAP가 오르는 것을 볼 수 있습니다. 따라서 depth가 mAP의 bottleneck 현상을 가져온다고 볼 수 있습니다. 따라서 정확하게 depth를 예측할 수 있다면 mAP 성능을 크게 올릴 수 있다고 주장합니다.
Method
분리된 instance의 depth를 direct regression을 하면 ill-posed problem으로 인해 정확한 depth 예측이 되지 않습니다. 따라서 uncertainty를 고려하기 위해 depth를 확률적으로 표현하여 예측을 진행합니다.
또한 instance를 하나하나 분리시켜 생각하지 않고 각각의 instance의 depth를 geometric relationship을 이용하여 propagation을 진행하여 더 정확한 depth 예측을 합니다.
FCOS3D와 또 다른 점은 2D localization을 진행하여 2D bbox를 얻습니다. 또한 3D bbox도 예측하고 예측한 3D bbox를 2D 상으로 projection 시킵니다. 이렇게 2D bbox와 projected 3D bbox를 consistency loss(GIOU)를 이용해서 3D bbox가 더 성능이 좋은 2D bbox를 따라갈 수 있게 학습을 진행합니다.
$L_{geo} = 1 - GIoU(B_{2D}, B_{proj})$
Uncertainty Modeling with Probabilistic Representation
간단하지만 효율적인 probabilistic representation을 사용하였습니다.
위 그림과 같이 연속적인 depth를 interval을 uniform 하게 quantize 하여 확률적으로 표현합니다. 이를 통해 depth를 distribution으로 표현할 수 있고 이 distribution의 기댓값을 prediction으로 만듭니다.
위 식으로 probabilistic depth($D_P$)를 만듭니다. 식을 설명하면 $D_{PM}$은 probabilistic output map으로 direct regression map과 평행한 branch로 만들어진 것입니다. $w$는 depth를 uniform 한 interval로 나눈 값들의 weight vector입니다.
→ 위 식의 의미는 결국 probabilistic depth로 표현된 $D_{PM}$를 softmax를 취해서 확률 값으로 만들고 w(각 depth 값, C channel)을 곱해주어 기댓값을 구하는 과정입니다.
그리고 depth distribution을 통해 depth confidence score($s^d$)를 얻을 수 있습니다. depth score로 top-2 confidence의 평균을 사용하여 inference시에 center-ness와 classification score와 곱해서 최종 prediction을 구하는 데 사용합니다.
direct depth regression output과 probabilistic depth를 위와 같이 합쳐줍니다. 여기서 생성된 $D_L$은 아직 object 간의 관계가 고려되지 않은 local depth estimation입니다. 따라서 이후에 depth propagation graph를 진행해 object 간의 contextual geometric relationship을 추가합니다.
Depth Propagation from Perspective Geometry
객체 간의 contextual geometric relationship을 구성하기 위해서 전형적인 driving scenario에서 사용되는 가장 일반적인 constraint인 **“모든 object는 지면 위에 존재한다”**를 사용합니다.
진행 순서
- 두 instance 간의 perspective relationship을 구한다.
- 구한 relationship을 바탕으로 graph-based depth propagation scheme로 표현한다.
Perspective Relationship
위의 camera projection matrix P를 간단히 설명하면 $f$는 focal length, $c_u, c_v$는 각각 camera의 vertical, horizon 위치, $b_x, b_y, b_z$는 reference camera의 baseline입니다.
P를 사용해 3D point의 camera coordinate를 2D point의 image coordinate로 projection 시킬 수 있습니다.
간단화시킨 아래의 식과 constraint (모든 object는 지면 위에 존재한다.)로 두 object의 relationship을 구할 수 있습니다.
여기서 v는 horizon line과의 거리입니다. (figure 4 참고)
위의 식으로 $d_{1->2}^P$ 를 정의합니다.
Graph-based Depth Propagation
앞서 구한 relationship을 이용해서 depth를 propagation 하는 과정입니다. relationship을 이용해 dense directed graph로 각각 2개의 object가 연결된 형태의 graph로 표현이 가능합니다.
어떤 edge가 중요한지 나타내는 factor가 3가지 존재합니다.
- depth confidence score $s^d_j$
- 2D distance score $s^{2D}_{ij}$
- classification similarity $s^{cls}_{ij}$
세 가지 factor로 edge score($s^e_{j->i}$)를 위의 공식을 이용해서 구합니다.
$t^{2D}{ij}$는 object i와 j의 projected center 사이의 거리, $t^{2D}{max}$는 2D image의 대각선 길이, $f_i, f_j$는 classficiation score, k는 pruning을 위한 factor입니다.
최종적인 $D^G_i$는 위의 식으로 만들어집니다.
이렇게 만드는 과정은 learnable parameter를 사용하지 않습니다. 사용하지 않는 이유는 다른 component가 개입되어 성능을 오히려 떨어뜨리는 것을 막기 위함입니다.
Probabilistic and Geometric Depth Estimation
최종적으로 $D_L, D_G$를 합치기 위해서 location-aware weight map을 사용해서 두 개를 합쳐줍니다.