bounding box를 제안하는 방법이다.
요약
R-CNN에서 Region proposal을 별도의 알고리즘으로 구현하고 CNN부분도 Pre-trained였다. 마지막 부분에 간단한 classifier를 통해서 fine-tuning을 했다.
Fast R-CNN에서 미분가능한 Rol pooling을 통해 하나의 feature로부터 여러 물체를 탐지가능하도록 만들어서 CNN부분을 학습가능하게 만들었다.
Faster R-CNN에서 Region proposal마저도 RPN이라는 네트워크 구조를 만들게 되면서 전체 process가 학습가능하도록 진화했다. 그래서 regression과 classification 부분의 loss를 잰 joint loss가 backpropagation을 통해 RPN과 feature 모두 학습이 되어 target task에 oriented된 feature를 잘 학습할 수 있다.
SSD는 multi-scale object를 더 잘 처리하기 위해 중간 feature map을 각 해상도에 적절한 bounding box들을 출력할 수 있도록 multi-scale 구조를 만들었다.
이때 나온 8732는 각 Feature map마다 몇 개의 anchor box가 각 위치만다 존재하는지 계산해서 각 layer마다 그 결과를 다 더한 값이다.
Single Stage 방법들은 Rol Pooling이 없어서 모든 영역에서의 loss가 계산되고 일정 gradient가 발생한다. 일반적인 사진에서보면 배경에 해당하는 negative example들과 사물에 해당하는 positive example들간의 불균형 문제가 발생한다. 그런 불균형 문제를 해결하기 위해 Focal loss라는 개념이 등장한다.
Focal Loss는 Cross Entropy Loss의 확장으로 에 따라서 function의 shape를 정해준다. 그래서 잘 맞춘애들은 더 낮은 loss를 주고 더 못맞춘 애들은 더 sharp한 loss값을 준다.
Feature Pyramid Network를 제안한다. low level과 high level의 특징을 잘 활용하면서 각 scale별로 물체를 잘 찾기 위한 multi-scale의 구조를 갖기위해서 설계되었다. 중간중간 feature를 넘겨주고 더하는 operation이 행해지게 된다. class head와 box head가 따로 구성이 되어서 classification과 box regression을 dense하게 각 위치마다 수행하게 된다.
Transformer를 Object detection에 적용한 사례이다. CNN의 Feature와 각 위치의 multi-dimension으로 표현한 encoding을 쌓아서 입력 token을 만들어준다. 그리고 그 token들은 transformer encoder를 통해 encoding 되게 된다. 그렇게 추출된 정의들을 decoder로 넣어준다. decoder에서는 object query를 넣어주면서 특정 위치에 해당하는 object가 무엇인지 물어보게되고 그 위치에 어떤 물체가있는지 parsing되서 나오는 형태로 decoder가 돌아간다.