(정리) RoarNet: A Robust 3D Object Detection based on RegiOn Approximation Refinement

https://arxiv.org/abs/1811.03818

최근 KITTI 데이터셋에서 3D detection과 Bird’s Eye View detection의 관심이 뜨겁다. 하루가 멀다하고 기업이나 스타트업에서 제출한 신기록들이 SOTA성능을 갱신하고 있는 상황이며 기업에서 제출한 모델중 우버를 제외하면 논문도 공개하지 않았다. 그와중에 논문 초안을 아카이브에 공개한 한국인 저자들이 있어서 정리해보았다.

KITTI 데이터셋 3D부분에서 현재(18.11.20) 10위를 기록하고 있는 모델이며 논문이 공개된 모델중에 두번째로 정확도가 높다. Input으로는 Front View Image와 Lidar데이터를 사용한다. UC버클리의 Masayoshi Tomizuka교수님 랩의 Kiwoo Shin와 자율주행 벤처기업 Phantom AI Inc 소속의 Youngwook Paul Kwon 두 한국인이 쓴 논문이다.

Introduction

Frustum-pointNet[1]과 [2]를 기반으로 모델을 적절히 섞어서 만든 모델이다.

F-pointNet[1]은 Front View에서 Faster RCNN기반의 2D detector로 검출한 영역을 밑면으로하는 사각뿔 모양의 3D영역의 Lidar point를 뽑아낸 후 그 포인트를 변형된pointNet에 넣어 3D detection을 하겠다는 아이디어를 가진 모델이다. 3D segmentation task에서 보여준 pointNet[3]의 뛰어난 성능과 개량된 2d detector의 조합으로 처음 나왔을 때 3D object detection task에서 SOTA의 자리를 차지했었다. 이 논문과 비교했을 때 2D detection기반으로 pointNet을 사용했다는 부분이 동일하다.

[2]는 Single Front View 이미지에서 2D detector로 검출한 영역에서 orientation을 알면 실제로 가능한 3D box는 한정되어있으니 gemeotric한 정보들을 이용해 3D box를 예측하겠다는 논문이다. 이 논문에서는 geometric한 constraint를 이용해 3D RPN에 들어가기 전에 한번 필터링을 해서 연산량을 줄이겠다는 점에서 [2]에서 아이디어를 가져왔다.

개인적으로는 CVPR 2018에서 봤었던 PointFusion[4](Faster-RCNN으로 2D를 뽑아 이후 point들을 pointNet에 넣어 결과를 냄)이 가장 흡사한 논문이 아닌가 싶다.

Designing a RoarNet Detector

2D detector을 통해 원통형 proposal을 만들어내는 RoarNet_2D network, 원통형 proposal안에 있는 point로부터 변형된 pointNet을 이용해 location과 objectness(confidence)를 계산하는 RoarNet_3D(RPN)과 그 refine된 location을 바탕으로 최종 결과를 뽑아내는 pointNet[3]기반의 RoarNet_3D(BRN)으로 구성되어 있다.

A. RoarNet_2D

3d box의 파라미터를 {X, Y, Z, W, H, L, theta}라고 했을 때 [2]에서 알 수 있는 점은 (1)네트워크에서 {W, H, L, theta}를 regression시킬 수 있고, (2)2D box에 fitting 시킬 수 있는 3d box의 개수는 유한하며 (3){W, H, L, thata} 로부터 {X, Y, Z}를 계산해낼 수 있다는 점이다. 이 점을 이용해 RoarNet_3D(RPN)에 들어갈 후보들을 선정한다.

2D box와 {W, H, L, theta}를 알았을 때 가장 fit하게 맞는 {X, Y, Z} 하나만 결과로 내면 recall이 너무 떨어지므로 왼쪽 (b)그림과 같이 그 orientation에 있는 s개의 점을 추가로 RoarNet_3D에 넘겨준다.
 넘겨준 값들은 원통형태가 되어 RoarNet_3D(RPN)에 들어가게 된다. 본 논문에 network detail에 관한 내용은 따로 없는데 [2]를 참고한 것으로 보인다.

B. RoarNet_3D

RoarNet_3D는 RoarNet_2D에서 온 proposal들을 더욱 fit하게 만드는 RPN(Reason Proposal Network)와 BRN(Box Regression Network) 2-stage로 이루어져 있다. 두 네트워크 둘다 PointNet[3]을 기반으로 구현되어있다.

RPN에서는 RoarNet_2D에서 넘어온 원통형 proposal을 받아 원통 내에 있는 point들을 입력으로 넣고 output으로 objectness와 proposal내에서 object의 정확한 위치를 encoding된 식을 통해 찾는다. RPN이 잘 작동될 시에는 원통의 중간에 object가 있는 proposal이 나오게 된다. 
 BRN에는 정확한 proposal들을 받아 실제 (cx, cy, cz, theta, w, h, l)을 찾는다. theta를 구할 때 [0, pi)를 N_R등분해서 각각의 confidence와 추가 theta값을 regression한다. 따라서 [cls, reg]형태가 된다. size도 같은 방식을 통해 [cls, reg(x,y,z)] 형태로 구한다. size의 binning은 k-means clustering을 통해 구했다.

C. training

위 식에서 regression term은 huber loss(L1 loss에 비해 작은 값에서 less sensitive)를 사용하였고 classification term은 cross-entropy loss를 사용하였다.
 Input 부분에서 point cloud를 0.1m 단위로 down-sampling하였다. RPN에서 임의의 point 256개를 training에 사용하였으며 BRN에서 512개를 사용하였다.
 batch 512로 500k iter을 트레이닝하였고 learning rate: 5e-3 for 100k, 5e-4 for last 400k. Titan X에서 이틀걸림. 
 NMS는 BEV에서 0.05의 threshold로 적용하였다.

Experiments

A. Comparison of the 3D object detection performance

다른 공개된 논문들과 비교했을 때의 성능이다. 여담으로 AVOD는 나온지 얼마나 됐는데 아직도 2등을 유지하는것도 놀랍고 공개된 코드의 질이나 정확도나 대단한거같다. 또 오랜만에 AVOD의 성능을 넘는 네트워크가 나왔고 기존과는 다른 방식으로 접근한 네트워크라 또 의의가 있지않나 싶다.
 Lidar 데이터와 이미지 데이터에 딜레이를 준 경우에는 다른 네트워크와 비교했을 때 RoarNet이 가장 좋았다고 한다. 자율주행회사에 다니는 사람이 낸 논문이라 application 부분에도 실험을 많이한 느낌이 든다.

B. Network design analysis

일반적인 object detection의 형태인 (a)와, localization을 두번 반복하는 (b), 그리고 RoarNet의 네트워크 형태인 (c)가 있다. 
 (a)에서 recall of 67.5% and mAP of 54.3%. (b) 에서 mAP 59.9%. (c)에서 recall is 82.5% and mAP is 74.02%이 나왔다. 사실 2D RPN의 출력이 많이 정제되지 않은 상황이어서 (a)와 비교하는 것은 의미가 크지 않은 것 같고 (b)와 (c)가 이렇게 큰 차이가 난다는것은 stage별로 specific한 목표를 주는게 정확도 상승의 주요 요소인 것을 뜻하는것 같다.

[1] C. R. Qi, W. Liu, C. Wu, H. Su, and L. J. Guibas, “Frustum PointNets for 3D Object Detection from RGB-D Data,” in Proceedings of the IEEE conference on Computer Vision and Pattern Recognition, 2018
[2] A. Mousavian, D. Anguelov, J. Flynn, and J. Kosecka, “3D Bounding Box Estimation Using Deep Learning and Geometry,” in Proceedings of the IEEE conference on Computer Vision and Pattern Recognition, 2017
[3] C. R. Qi, H. Su, K. Mo, and L. J. Guibas, “PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation,” in Proceedings of the IEEE conference on Computer Vision and Pattern Recognition, 2017.
[4] Xu, D., Anguelov, D., Jain, A., “PointFusion: Deep sensor fusion for 3D bounding box estimation.” in Proceedings of the IEEE conference on Computer Vision and Pattern Recognition, 2018