안녕하세요. 이번에는 CenterPoint라는 논문 리뷰 진행하겠습니다.
시작에 앞서 우선 CenterNet(objects as points)이라는 2D base의 논문을 먼저 skim하겠습니다.
CenterNet
위의 그림은 일반적인 SSD, Yolo 등의 anchor box의 예시입니다. 수 많은 anchor box를 proposal하고 GT와 IoU를 계산하여 학습을 진행합니다. 수 많은 anchor box를 사용하기에 training속도는 늦을 수 밖에 없습니다.
이에 CornerNet등에서는 keypoint estimation을 사용하여 단 하나의 anchor box를 사용하는 방법을 제안하였습니다.
위 그림을 보면 keypoints로 왼쪽 위, 오른쪽 아래 두 개의 모서리를 detect하여 bbox를 얻습니다.
ExtremeNet의 경우 위의 그림처럼 top-most,left-most,bottom-most,right-most,center를 detect하여 bbox를 구합니다.
CenterNet의 경우는 위의 그림처럼 center point를 keypoint로 estimation하여 bbox를 구합니다. 이로 인해 grouping과정이나 NMS등이 필요없게 되어 computing상에서 이득을 볼 수 있습니다. 이 keypoint estimation은 사람의 pose estimation에서 자주 쓰이는 알고리즘 입니다. CenterNet은 keypoint heatmap을 통해 중점위치를 추정합니다.
CenterPoint
centernet을 3D로 확장하여 centerpoint 논문을 살펴보겠습니다. centerpoint는 기존의 orientation을 생성하고 rotation의 align을 맞추는데 어려움이 있던 부분을 많은 부분 해소시켜줍니다. 1-stage에서 keypoint detector를 사용하여 center point를 찾고 2-stage에서 refine을 수행합니다. 2-stage는 pointRCNN에서 제안하였던 내용입니다.
3D 백본으로는 voxelnet or pilloarpoint가 사용됩니다.
Center heatmap head
3D 백본을 통해 feature map을 extraction하고 나면 heatmap head를 이용하여 center point를 추정합니다. loss로는 focal loss를 사용합니다. 2D CenterNet의 head를 참고하지만 image에 비해 sparse한 특성을 반영하기 위해 gaussian peak를 넓혀서 heatmap을 추정합니다. 아래는 gaussian radius의 eq입니다.
Regression / Tracking head
regression head를 통해서 orientation, bbox size를 추정합니다. 또한 인접한 frame간의 object position을 비교하여 2차원의 velocity vector를 estimation합니다. 모두 loss로는 L1 loss를 사용합니다.
이 과정을 거친후의 bbox는 완벽하지 않습니다. 센서들은 종종 물체의 한 부분만을 측정하기 때문입니다. 그래서 아래의 2-stage를 통해 refinement작업을 거칩니다.
2-stage
2-stage에서는 백본 output으로부터 추가적인 feature를 추출합니다. 여기서는 top view, bottom viewd에서 중심은 bbox의 중심을 projection하면 모두 위치가 같다는 것을 활용합니다. 백본에서 추출된 feature를 4개의 view로 projection하여 bi-interpolation을 이용하여 feature을 뽑아 concat한 이후 MLP에 태웁니다. 이 후 아래의 loss function을 통해 학습을 진행합니다.
이상으로 centerpoint리뷰를 마치겠습니다.