728x90
반응형
나의 정리
- 논문이 지적한 문제점: Anchor를 사용하는 one-stage 방식이 비효율 적이고 학습에 방해가 되는 요소들이 있다.
해결 방안: Anchor가 아닌 Corner를 이용하여 object detection을 수행하였다. - anchor의 문제점 두 가지
- 많은 양의 anchor box가 필요하고 그에 따라 많은 양의 negative box가 생성되어서 positive와 불균형을 이루게 된다.
class imbalance 문제가 발생하게 된다. - 많은 hyper-parameter를 사용해야 하고 design을 해야 한다.
를 Corner point detection을 이용하여 해결함
- CNN을 통해서 top-left, bottom-right corner를 위한 각각의 (1) heat map을 예측하고 grouping을 위한 (2) Embedding Vector와 작은 해상도의 heat map에서 원본 이미지로 복원하는 과정에서 위치가 부정확해지는 것을 막기 위한 (3) offset, 총 세가지를 예측해 내서 bbox를 예측하게 된다.
- Anchor free 방식 중에 신기한 방식으로 detection을 하는 논문, CenterNet을 읽기 위해서 먼저 읽은 논문
Abstract
- 하나의 CNN으로 top-left, bottom-rigth 두 쌍의 keypoint를 찾아 bbox를 찾는다.
- single-stage detector에 주로 사용되는 Anchor를 사용하지 않는다.
또한 corner를 localize 하기 위해 corner pooling을 사용한다. - MS COCO에서 높은 성능을 보였다.
Introduction
- 기존 One-stage detector는 많은 Anchor box들로 candidate를 구했는데 이 Anchor box의 문제점이 두 가지 있다.
- 학습을 위해 많은 양의 Anchor Box가 필요하고 또한 positive box와 negative box간의 imbalance 문제가 발생한다.
- 많은 hyper-parameter와 design을 선택해야 한다.
- CornerNet은 하나의 CNN을 통과시켜 같은 category, 같은 instance에 대한 top-left, bottom-right의 heat map을 얻고 embedding vector를 얻는다.
이때 embedding은 같은 object에 대한 Corner를 쌍으로 묶어주는 역할을 한다.
→같은 object에 대한 top-left, bottom-right의 grouping이 embedding의 역할
- BBox의 Corner는 주로 object 밖에 위치해 local feature를 가지고 있지 않는 경우가 있다.
따라서 top-left corner를 판단할땐 수직, 수평에 물체의 외곽이 있나 살펴본다.
→ Corner pooling의 motivation - Object detection에서 Anchor를 사용하지 않고 Corner를 사용하는 장점 두가지
- Corner를 사용하면 두 면의 위치만 알면 돼서 더 쉽다.
(기존에는 네 면을 모두 알아야 bbox가 나온다. corner의 사전 지식을 이용한 corner pooling 이용) - Box를 표현하는데 더 효율적인 방법이다.
2개로만 표현이 가능하기 때문에 기존 O(w^2h^2) → O(wh)
- Corner를 사용하면 두 면의 위치만 알면 돼서 더 쉽다.
Related Work
생략
CornerNet
Overview
- 더 tight 한 predict를 위해서 offset을 같이 예측한다. 자세한 이유는 뒤에 설명.
- 예측 결과를 post-processing을 통해 box로 예측하게 된다.
(CornerNet의 예측 결과로는 1. Heat map, 2. Embedding Vector, 3. offset 값이 나오게 된다.)
Detecting Corners
- 각 heat map의 채널은 C가 되고 C는 category의 개수이다.
- GT positive 위치가 한 개 있고 나머지는 모두 negative location이 된다.
positive location의 일정 범위 내에 존재하는 negative location에 대해서는 penalty(Loss)를 줄여준다.
이는 어느 정도 근접한 예측을 한 것이기 때문이다. →어느 정도 근접한 예측을 해서 그에 대한 보상을 해주는 것 같다. - 한 쌍의 Corner로 예측된 BBox의 크기로 Radius가 결정된다.
- 가우시안 분포를 생성하여 positive location과의 거리 차이를 이용해서 loss penalty를 부여하게 된다.
Corner location Loss
- Notation
- Pcij: class c의 location (i, j)에 대한 score
- Ycij: ground-truth
- focal loss로 설계되어 있다. (Positive와 Negative의 imbalance를 해결하기 위해서)
- (1-Ycij) 이 부분이 GT location과의 거리 차이로 penalty를 줄여주는 term이다.
Offset Loss
- heat map의 해상도에서 image 해상도로 복원되는 과정에서 조금 부정확해지는 부분을 offset term을 이용해서 해결하였다.
Grouping Corners
- 검출된 여러 Corner들 중 쌍이 맞는 top-left, bottom-right을 embedding을 통해 묶어준다.
- Corner를 기반으로 같은 bbox를 만드는 corner 쌍이면 embedding의 차가 많이 나지 않는 것을 이용하여 grouping을 해준다.
이때 embedding vector의 값은 중요치 않고 얼마나 차이가 나는지가 중요하다.
- 같은 group의 corner에는 pull loss, 다른 group에는 push loss를 사용한다.
Corner Pooling
- Corner가 위치한 곳에는 실제로 local feature가 없는 경우가 많다.
따라서 수직, 수평 방향으로 물체의 외곽이 있는지 봐야 해서 사용한다.
- Vertical, Horizontal 두 방향에 대해서 max pooling을 진행한다.
위는 top-left에 적용되는 corner pooling 방식이고 bottom-right의 경우에도 비슷한 방식으로 적용한다.
(0, j)와 (i, j) 사이의 값을 pooling 해주고, (i, 0)와 (i, j) 사이의 값을 pooling 해준다.
Hourglass Network
- Pose estimation에서 사용되는 모듈, scale down 하며 feature를 추출하고 이후 up-sampling을 하며 feature를 합쳐준다.
- 예측 전에 hourglass network로 얻은 feature를 pooling 하는 module을 거친다.
Experiments
Training Details
- Augmentations
- random horizontal flipping
- random scaling
- random cropping
- random color jittering (brightness, saturation, contrast)
- PCA, Adam
- Learning rate: 2.5 x 10^(-4), batch size: 49
- 최종 Loss
Ablation Study
Conclusion
- Object detection task에서 Anchor가 아닌 한 쌍의 Corner를 이용한 새로운 방식을 제시하였다.
- MS COCO에서 경쟁력 있는 성능을 도출함
728x90
반응형