CornerNet은 keypoint-based one-staged object detector이다. 왼쪽위, 오른쪽 아래 두 지점을 예측해서 경계박스를 만든다. MS-COCO 데이터셋에서 무려 42.2% AP라는 성능을 보여준다.
Hourglass backbone을 써서 top-left, bottom-right 히트맵을 결과물로 뱉어낸다.
Embedding은 left-top, right-bottom 코너들의 pair를 계산해서 경계 박스를 구성할때 쓰여진다.
다른 network도 backbone으로 사용해보았으나 hourglass가 가장 성능이 우수하여 선택했다고 한다.
각 코너들의 히트맵을 예측할때 object의 가장자리에 있는 코너들은 local evidence나 pattern이 대부분 부족하다. CornerNet은 Corner Pooling이라는 컴포넌트를 이용하여, 더 코너를 잘 예측하겠끔 도와준다.
- Local evidence가 부족한 예
다 갈색이여서 어디가 어딘지 모를 수 있다...
Hourglass에서 나온 feature map을 가로,세로로 이동하면서, max값을 채워버린다.
위 사진 처럼 feature map 가로, 세로 max pooling 한것을 더해서 output을 만든다.(그런데 여러 object가 많거나 겹칠경우 오류가 많을듯...)
- 전체적인 Overview
Heatmap으로 corner와 class를 찾고, embedding으로 pair를 찾는다.
성능은 확실히 타 SOTA one-stage detector들 보다는 좋지만, 얘가 속도가 그렇게 빠른편이 아니다. 속도가 two-stage보다 더 느리다는 평이 있다.