논문 읽기/Object Detection

[논문 읽기] CenterNet(2019), Keypoint Triplets for Object Detection

AI 꿈나무 2021. 5. 9. 13:16
반응형

 안녕하세요! 오늘 읽은 논문은 CenterNet, Keypoint Triplets for Object Detection 입니다.

 

 CenterNet은 두 쌍의 특징점으로 바운딩 박스를 예측하는 CornerNet의 단점을 개선하기 위해 세 쌍의 특징점을 활용합니다. 좌측 상단, 우측 하단, 중앙점 정보를 활용하여 바운딩 박스를 예측하며, 이를 위해 Center pooling과 Cascade corner pooling을 제안합니다.

 

 

[논문 읽기] CornerNet(2018), Detecting Objects as Paired Keypoints

 안녕하세요! 오늘 읽은 논문은 CornerNet, Detecting Objects as Paired Keypoints 입니다.  CornerNet은 두 쌍의 특징점(keypoints)를 사용하여 객체의 바운딩 박스를 예측하는 모델입니다. 두 쌍의 특징점은..

deep-learning-study.tistory.com

 

 CornerNet에는 어떤 단점이 있었을까요?

 

CornerNet 단점

 CornerNet은 두 쌍의 특징점으로 바운딩 박스를 예측하기 때문에, 앵커 박스를 설계할 필요가 없었습니다. 또한 CornerNet은 정확도도 뛰어나 one-stage detector 중에서 SOTA를 달성했었습니다. 하지만 CornerNet에는 단점이 존재합니다.

 

CornerNet, 파랑색: ground-truth, 빨강색: predicted box

 

 (1) 두 쌍의 특징점만을 활용하기 때문에 객체의 전체 정보를 활용하는데에는 상대적으로 제한이 되어있습니다. 또한 (2) 바운딩 박스의 경계를 예측하는 데에만 집중이 되어있고, 어느 특징점이 연결되어야 하는지에 대한 정보가 부족할 수 있습니다. 이러한 결과로 위 그림 처럼 CornerNet은 많은 수의 incorrect 바운딩 박스를 생성합니다.

 

 이러한 문제를 해결하기 위해 CenterNet은 두 쌍의 특징점이 생성한 region에서 중심점 정보를 활용합니다. 만약 예측된 바운딩 박스가 ground-truth box와 높은 iou를 지닌다면, 예측된 박스의 중앙 구역에 존재하는 중심점은 ground-truth와 동일한 class를 가질 확률이 높을 것입니다.

 

 이것을 활용하여 두 쌍의 특징점으로 예측한 바운딩 박스의 중심 구역에 존재하는 중심점이 실제로 ground-truth와 동일한 class를 지니는지 확인합니다.

 

CornerNet과 CenterNet의 FD 비교

 

 중심점 정보를 활용하는 방법으로 CenterNet은 CornerNet이 생성하는 incorrect 바운딩 박스 비율을 감소시킵니다.

 

CenterNet

CenterNet의 전체 구조입니다. Backbone이 생성한 feture map에 Cascade Corner pooling으로 좌측 상단, 우측 하단의 특징점을 찾아내고, Center pooling은 중심점을 찾습니다.

 

(1) Baseline

 CenterNet은 CornerNet을 baseline으로 사용합니다.

 

 CornerNet은 두 개의 특징점에 대한 두개의 heatmap을 생성합니다. heatmap은 각 범주의 특징점의 위치 정보와 confidence score를 갖고 있습니다. heatmap 이외에도 embedding과 offset을 예측합니다. embedding은 두 특징점이 동일한 객체의 것인지 확인하고, offset은 특징점을 원래 이미지 크기로 복원할 때 발생하는 정보 손실을 최소화 하기 위해 사용합니다.

 

(2) Object Detection as Keypoint Triplets

 CenterNet은 좌측 상단, 우측 하단, 중심점 세 쌍의 특징점을 활용합니다. 중심점을 예측하기 위해 CornerNet에서 중심점에 대한 heatmap와 offset을 예측합니다.

 

 CenterNet의 동작 원리는 다음과 같습니다.

 

(a) score가 높은k개의 중심점을 선택합니다.

(b) 중심점을 입력 이미지에 mapping 하기 위해 offset을 사용합니다.

(c) 두 쌍의 특징점으로 생성한 바운딩 박스의 중심 구역을 지정합니다.

(d) 지정된 중심 구역에 중심점이 존재하는지 확인합니다. 

(e) 만약, 중심점이 ground-truth와 class가 동일하고 중심 구역에 존재한다면 해당 바운딩 박스를 보존합니다. 중심 구역에 중심점에 존재하지 않거나, class가 동일하지 않다면 해당 바운딩 박스는 삭제합니다.

(f) 바운딩 박스의 score은 세 특징점의 score의 평균으로 대체됩니다.

 

 그렇다면 중심 구역은 어떻게 정의할까요?

 

 중심 구역을 작게 설정하면, 작은 객체에 대한 recall이 낮아질 것입니다. 반대로 중심 구역을 크게 설정한다면 큰 객체에 대한 recall이 낮아집니다. 이를 해결하기 위해 CenterNet은 scale-aware central region 방법을 제안합니다. scale-aware central region은 큰 객체에 대해 작은 중심 구역을 지정하고, 작은 객체에 대해서는 큰 중심 구역을 지정합니다.

 

중심 구역

 

 

 tl_x, tl_y: 좌측 상단 특징점의 x,y 좌표

 br_x, br_y: 우측 하단 특징점의 x,y 좌표

 ctl_x, ctl_y: 중심 구역의 좌측 상단 특징점 x,y 좌표

 cbr_x, cbr_y: 중심 구역의 우측 하단 특징점 x,y 좌표

 n: 중심 구역의 크기를 결정하는 수. 논문에서는 3과 5를 사용합니다.

 

(3) Enriching Center and Corner Information

 여기에서는 Center pooling과 Cascade corner pooling을 설명합니다.

 

 

Center pooling

 

 Center pooling은 더 풍부한 visual pattern을 활용하여 중심점을 예측하기 위해 사용합니다. backbone이 생성한 feature map에 존재하는 중심점을 찾기 위해 수평, 수직 방향의 max 값을 탐색해서 다 더합니다. 

 

Cascade corner pooling

(b) CornerNet, (c) CenterNet

 Cascade corner pooling은 좌측 상단, 우측 하단 특징점을 찾는 방법이며, CornerNet에서 사용하는 corner pooling을 개선했습니다. 기존에는 객체의 경계에 존재하는 pixel의 max 값만을 활용했다면, Cascade corner pooling은 객체 경계 안쪽 정보까지 활용합니다.

 

 객체 경계의 max 값과, 경계 안쪽의 max 값을 다 더하여 특징점을 찾습니다.

 

Performance


참고 자료

[1] arxiv.org/pdf/1904.08189.pdf

반응형