논문 읽기/Object Detection

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

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

 안녕하세요! 오늘 읽은 논문은 CornerNet, Detecting Objects as Paired Keypoints 입니다.

 

 CornerNet은 두 쌍의 특징점(keypoints)를 사용하여 객체의 바운딩 박스를 예측하는 모델입니다. 두 쌍의 특징점은 좌촉 상단 모서리, 우측 하단 모서리를 의미합니다. 특징점을 기반으로 바운딩 박스를 생성하기 때문에 앵커 박스를 사용할 필요가 없습니다. 앵커 박스가 없는 detection 모델이라니..!! 신기하네요. ㅎㅎ CornerNet은 앵커박스를 사용하지 않고도 다른 모델을 뛰어넘는 성능을 보여줍니다.

 

 특징점을 검출하기 위해 pose estimation에서 사용하는 hourglass를 backbone으로 사용합니다. hourglass의 출력값에 좌측 상단 특징점과 우측 하단 특징점을 검출하는 두 개의 모듈을 적용합니다. 각 모듈은 corner pooling 과정을 거쳐 heatmap, embedding, offset을 예측합니다. 즉, CornerNet은 hourglass와 두 개의 모듈로 구성되어 있다고 생각할 수 있습니다.

 

CornerNet

 앵커 박스를 사용하는 것에는 두 가지 단점이 존재합니다.

 

(1) 엄청나게 많은 수의 앵커박스를 생성해야 합니다. 여러 피쳐맵의 모든 셀에 여러 앵커 박스를 생성해야 합니다. 그 중 ground truth box와 일정 iou 이상인 앵커 박스만 positive를 할당합니다. 이 과정에서 positive, negative 불균형 문제도 발생합니다. 많은 수의 앵커 박스에 소수의 앵커박스만 positive가 되는 것입니다.

 

(2) 앵커 박스를 설계하는 과정은 하이퍼파라미터를 고려해야 합니다. 앵커박스 크기, 종횡비, scale 등등 고려 사항이 많습니다.

 

 CornerNet은 위처럼 번거로운 앵커 박스를 제거하고, 특징점을 기반으로 바운딩 박스를 예측합니다.

 

 

 CornerNet의 전체 구조입니다. 각 구조가 어떤 역할을 수행하는지 살펴보겠습니다.

 

1. Detecting Corners

 corner을 어떻게 검출하는지에 대해 설명합니다.

 

 corner을 검출하기 위해 heatmap와 offset을 활용합니다. heatmap과 offset은 추후에 설명할 corner pooling에 의해 예측됩니다.

 

(1). heatmap

 heatmap은 특징점 유무를 식별하는 용도로 사용합니다. 즉, 앵커 박스에 객체가 존재하는지 존재하지 않는지를 식별하는 역할을 한다고 생각해볼 수 있습니다. 좌측 상단, 우측 하단에 대한 두 개의 heatmap이 존재합니다. heatmap은 C개의 채널을 갖으며, C는 categories 수를 의미합니다. 배경 채널은 존재하지 않습니다. 또한 각 채널은 0과 1로 corner의 위치만을 표시하는 binary mask 입니다.

 

 

 positive(ground-truth) 특징점에 radius를 설정하여, radius 범위 안에 존재하는 negative 특징점에 loss panalty를 감소합니다. 어느 정도 정답에 근서한 특징점을 예측했다고 가정하여 loss panalty를 감소시키는 것입니다. radius는 객체의 크기에 따라 결정하며, radius 주변에 가우시안 분포를 생성하여 거리에 따라 loss panalty를 감소시킵니다.

 

 

 x,y 는 positive 특징점의 위치를 의미하며 시그마는 radius/3 입니다.

 

 손실 함수는 focal loss를 수정하여 사용합니다.

 

 

 정답과 근접한 예측값에는 낮은 loss를 부여하고, negative에는 큰 loss를 부여합니다.

 

(2) offset

heatmap은 여러 conv layer를 거쳐 down sampling되어있습니다. heatmap에서 검출한 특징점 위치를 원래 이미치 크기로 복원하는 과정에서 내림 연산에 의해 소수점이 손실됩니다. 따라서 정확한 특징점 위치를 예측할 수 없게 됩니다. 이 문제를 해결하기 위해 offset을 계산합니다.

 

 

 예측 offset과 정답 offset 사이의 손실 함수는 faster r-cnn에서 제안된 SmoothL1Loss를 사용합니다.

 

 

2. Grouping Corners

 corner pooling의 예측값인 embedding은 검출한 두 쌍의 특징점을 하나로 묶기 위해 사용합니다. 두 특징점에 대한 embedding이 생성되고, 동일한 class에 속하는 특징점 embedding 사이의 거리를 측정합니다. 가장 거리가 짧은 두 특징점이 하나로 묶입니다.

 

 두 특징점을 embedding하는 방법은 'Associative Embedding: End-to-End Learning for Joint Detection and Grouping' 에서 제안한 방법과 동일하게 적용합니다.

 

 동일한 그룹에 속하는 특징점에 대해 pull loss, 다른 그룹에 속하는 특징점은 push loss를 사용합니다.

 

 

 e_tk, e_bk는 예측값, e_k는 평균값을 의미합니다.

 

3. Corner Pooling

 heatmap embedding, offset을 예측하는 corner pooling 입니다.

 

 

 corner pooling은 어느 pixel이 특징점인지 식별하기 위해 사용하는데, max pooling 연산을 기반으로 합니다. 아래 그림을 보면 corner pooling의 작동 원리에 대해 이해할 수 있습니다.

 

 

 위 과정으로 생성된 피쳐맵에 conv layer를 거쳐서 heatmap, offset, embbeding을 예측합니다.

 

 corner pooling 사용 유무에 대한 성능 비교입니다.

 

Performance


참고자료

[1] arxiv.org/abs/1808.01244

반응형