
Two-stage detector
- 물체가 있을 법한 위치의 후보(proposals)들을 뽑아내는 단계 이후, 실제로 물체가 있는지를 Classification과 정확한 바운딩 박스를 구하는 Regression을 수행하는 단계가 분리되어 있음.
- Fast R-CNN , Faster R-CNN
One-stage detector
- 객체의 검출과 분류, 그리고 바운딩 박스 regression을 한 번에 하는 방법
- YOLO , SSD
R-CNN
- 물체가 있을 법한 후보 영역을 뽑아내는 Region proposal 알고리즘과 후보영역을 분류하는 CNN을 사용함.
- Proposal을 만들어내는데에는 Selective search라는 비신경망 알고리즘이 사용됨.
- 후보 이미지 각각에 대해서 컨볼루션 연산을 수행하게 됨.

Fast R-CNN
- 후보 영역의 classification과 바운딩 박스 regression을 위한 특성을 한 번에 추출함.
- 후보 영역을 CNN을 거친 특성 맵에 투영해 특성 맵을 잘라냄.
- RoI (Region of Interest) Pooling 이라는 방법을 적용

Faster R-CNN
- region proposal 과정에서 RPN (Region Proposal Network) 신경망 네트워크를 사용함.
- Region proposal network를 통해 많은 candidate box들을 얻어냄.
- 다양한 candidate box들을 고정된 같은 크기로 만들어줄 때 RoI Pooling을 사용함.

RoI Pooling
- 미리 정해둔 크기가 나올 때까지 pooling연산을 수행함.
- 다양한 크기의 candidate box를 feature map에서 잘라내어 같은 크기로 만들어낼 수 있게 됨.
RetinaNet
- 1-stage detector 모델의 속도는 빠르지만, 성능이 낮은 문제를 해결하기 위함.
- focal loss와 FPN( Feature Pyramid Network )를 적용한 네트워크를 사용함.
- receptive field가 넓은 뒷쪽의 특성 맵을 upsampling하여 앞단의 특성 맵과 더함.
- Classification Subnet과 Box Regression Subnet 2개의 Subnet을 구성함.

Focal Loss
- 기존의 1-stage detection 모델들( YOLO, SSD )이 물체 전경과 배경을 '한 번에 학습함'으로 인해 생기는 클래스 간의 불균형을 해결하고자함.
- 교차 엔트로피의 앞단에 간단히 modulating factor를 붙여줌.
- 너무 많은 배경 class에 압도되지 않도록 modulating factor로 손실을 조절해줌.

FPN ( Feature Pyramid Network )
- 특성을 피라미드처럼 쌓아서 사용하는 방식
- 백본의 여러 레이어를 한꺼번에 쓰겠다라는데에 의의가 있음.

YOLO (You Only Look Once)
- 이미지를 그리드로 나누고, Fully Convolutional Network 연산을 통해 그리드 셀 별로 바운딩 박스를 얻어낸 뒤, 바운딩 박스들에 대해 NMS를 한 방식
- 그리드 셀마다 클래스를 구분하는 방식임.
- 단일한 크기의 특성맵을 사용하여 다양한 크기의 객체를 포착하는 것은 어려움.

SSD (Single-Shot Multibox Detector)
- 다양한 크기의 특성 맵으로부터 classification과 바운딩 박스 regression을 수행함.
- 다양한 크기의 물체에 대응할 수 있음.
- VGG16을 base network로 사용하고, 보조 network(auxiliary network)를 추가한 구조
- conv layer의 feature map들을 추출하여 detection시 사용함.
