나의 정리
- 논문이 지적한 문제점
기존의 monocular 3D object detection에서 사용되던 Pseudo-LiDAR 방식은 너무 복잡한 학습 과정이 필요하여 Optimization이 어려워 generalization 성능이 떨어지는 문제점을 가지고 있습니다. 또한 depth estimation 과정에서 생기는 error가 최종적인 3D detection 성능의 하락에 주요한 원인입니다. - 해결 방안
End-to-End 학습 방식의 모델을 제안하여 generalization 성능을 높였습니다. 또한 dense depth pre-training을 하여서 depth estimation error를 줄여서 3D detection 성능을 높이고자 하였습니다.
Motivation
이전에 리뷰하였던 Pseudo-LiDAR based monocular 3D object detection의 경우 학습 과정이 매우 복잡했습니다.
Pseudo-LiDAR의 기본적인 학습 방법은 아래와 같습니다.
먼저 single image를 monocular depth estimation model로 depth map을 얻고 해당 depth map과 intrinsic matrix를 사용하여 Pseudo-LiDAR를 생성합니다. 그다음 single image로 2D object detection model을 사용하여 2D proposal을 생성합니다. 이렇게 생성된 Pseudo-LiDAR와 2D proposal을 이용하여 LiDAR-based 3D object detection model을 사용하여 최종적으로 3D detection을 수행합니다.
이러한 복잡한 학습 과정이 필요하기 때문에 optimization이 어렵고 generalization 성능이 떨어진다고 지적합니다.
또한 monocular depth estimation에서 생기는 error 때문에 monocular 3D object detection의 성능이 떨어지게 된다고 설명합니다.
따라서 복잡한 Pseudo-LiDAR based가 아닌 간단한 학습 과정을 가지는 End-to-End model을 제안합니다.
Method
모델의 구조 자체는 FCOS와 같이 fully convolution 구조를 가지고 있고 multi-scale feature를 사용하는 FPN 구조를 사용합니다.
하나의 backbone network와 3개의 sub-network로 구성이 되어있습니다.
- classification head
- classification logit
- 2D detection head
- 2D box (l, r, t, b), center-ness: bounding box 중심과의 거리를 의미합니다.
- 3D detection head
- q (w, x, y, z): 물체를 quaternion을 사용하여 표현합니다.
- $z_c$ : 3D box의 center depth
- $o$: 3D box center의 offset
- multi-scale을 사용하기 때문에 기존의 image 해상도로 늘리게 되면 box center가 정확하게 원래 위치로 가지 않는 경우가 있어 offset으로 좀 더 정확한 예측을 할 수 있게 도와줍니다.
- $\delta$: 3D object size의 편차
- 각 class 별로 object size의 평균값에서의 현재 3D box의 편차를 구해서 좀 더 정확한 size를 예측할 수 있게 해 줍니다.
- Dense Depth $z_p$
- monocular 3D detection의 경우 depth에 대한 error 때문에 성능이 떨어지는데 depth를 더 정확히 예측하기 위해 dense depth도 예측을 하게 하여 3D detection 성능을 높였습니다.
- 3D confidence $\beta_{3D}$
Loss
loss 식은 간단합니다.
2D loss는 위 식과 같습니다.
regression loss - IOU Loss, classification loss - binary focal loss, cetner-ness loss - binary cross entropy loss
center-ness loss의 경우 0부터 1 사이의 값으로 생성이 되고 그 값을 classification score와 함께 사용하게 됩니다.
3D loss는 8 corner-representation으로 비교를 하여 loss를 구하게 됩니다.
아래는 최종적으로 사용되는 Loss 식입니다.
Training Strategy
backbone을 두 가지를 사용하여서 training 하고 실험을 진행했습니다.
- DLA-34
- V2-99
DLA보다 V2가 lager backbone이라고 합니다.
먼저 COCO로 2D detection pre-trained 된 parameter로 backbone을 initialize 합니다. 그다음 DDAD15M으로 dense prediction pretraining을 진행합니다.
- DDAD15M은 depth estimation을 위한 in-house large dataset입니다.
Experiments
먼저 Table 1을 보면 기존의 mono 3D detector들 보다 훨씬 높은 성능을 내는 것을 볼 수 있습니다.
또한 PL(Pseudo-LiDAR)보다도 높은 test set 성능을 보입니다.
하지만 validation set에서의 성능을 보았을 때는 DD3D보다 PL가 더 높은 성능을 보이는 것을 볼 수 있습니다.
따라서 PL의 경우 validation에선 높은 성능을 내지만 test에선 낮은 성능을 내는, 즉 generalization 성능이 안 좋다고 표현할 수 있습니다.
또한 -DDAD15M이 의미하는 것은 DDAD15M으로 pretraining 하지 않았다는 것을 의미하는데, 이를 통해 dense depth pre-training이 3D detection 성능을 올리는데 도움이 되었다고 설명합니다.
마지막으로 PL의 경우 DDAD15M으로 한번 pre-train 하고 KITTI-Depth dataset으로 in-domain pre-train을 진행하였습니다. 이때 in-domain pre-train을 하지 않으면 많은 성능 하락이 있다고 설명합니다. 즉, 실제로 train 하려는 dataset과 같은 환경의 depth pre-train이 필수적이지만 DD3D 같은 경우엔 in-domain pretrain이 필요 없다고 설명합니다.