이전까지 학습한 모델들은 필수적으로 RP, Region proposal 역할을 하는 요소를 지니고 있었다. 대표적인 것으로 Selective Search(SS)나, RPN(Region proposal network) 라고 하는 것들이 있었으며, 이것들은 모두 Object Detection 을 위해 다음 네트워크에 어떤 영역이 오브젝트가 있을만한지 추천해주는 기능을 했다. 이를 Two-stage detector 라고 하며, 영역을 추천해주는 것 따로, 추천된 영역에서 바운딩박스를 확정하는 것 따로 이루어진 모델들을 뜻한다.
그러나 Two-stage 의 경우 Detection 의 시간이 오래걸린다는 단점이 있다. 그 중에서도 빠른 Faster RCNN 도 7fps 니.. 문제가 있었다. 따라서 시간을 줄이기 위해 2가지 스테이지를 하나로 합치는 One-stage detector 가 등장한다.
지금 알아볼 것은 SSD라는, Faster RCNN 다음에 등장하고 속도가 빠르며, 성능(mAP) 또한 더 높은 모델이다. (One-stage 의 경우 YOLO가 가장 성행하고 있으나 아이디어들이 SSD에서 나왔다!) (더 뒤에 나올 Retina-Net 은 속도는 조금 떨어지지만 정밀도는 더 높인 모델이다.)
따라서 SSD에서 중요한 것은 1. Multi Scale Feature Layer 2. Default Anchor Box 이다.
CNN연산을 통해 피처맵 사이즈가 작아지며 이미지의 추상적인 정보로 변하게 된다
4 X 4 는 핵심 중에 핵심 정보.
개별 Feature Map 에 대해 모두 Object Detection 을 수행한다.
따라서 같은 윈도우를 가지고도 피처맵 사이즈에 맞게 작은 Object, 큰 Object 를 모두 잡아낼 수 있게된다.
Feature Map 의 크기가 작을수록, 더 큰 이미지를 찾을 수 있다.
정리하자면, 개별 anchor 박스가 두가지 정보를 가질 수 있도록 학습한다.
1. anchor box 와 겹치는 feature 맵 영역의 오브젝트 클래스 분류
2. GT box 예측할 수 있도록 수정된 좌표
따라서 새로운 test 데이터가 들어오면 개별 anchor 박스는 피처맵을 보고, anchor 박스마다 오브젝트 클래스를 알 뿐만 아니라(Softmax) 수정좌표도 예측할 수 있도록 한다. 아래의 경우는 5X5 피처맵의 예시.
SSD 네트웍과 YOLO v1 네트웍의 구성을 보자.
SSD
원본이미지: 인풋으로 들어가는 이미지이다.
Backbone: 피처맵을 만드는 CNN모델, 논문에선 VGG-16을 사용했지만 ResNet, Inception 등 다양하다. 피처맵에서는 서로 다른 크기의 피처맵, 다른 위치의 앵커박스 각각에서 Object Detect 를 할 수 있는 앵커박스(Default box) 정보를 만들어 다음 네트워크로 전달한다.
각 앵커박스는 어떻게 학습시킬까?
1. 각 피처맵 별로 Conv 연산을 한다. (3X3(4X(Classes + 4)) -> 3by3으로, 하나의 위치에서 4개의 앵커박스가 존재하며, 개별 anchor 박스는 클래스 명과 좌표값 정보를 전달한다. (주의: 38X38 피처맵에서 3X3 연산을 수행한다는 것.)
모든 피처맵 별로, 앵커박스 별로 Conv 연산한 값을 보내면 8732 개가 모이게 된다.
많은 박스를 추려내기 위해 개별 오브젝트별로 Detect 된 것 중 가장 높은 것 하나만 추린다. (Non-Maximum supression, NMS)
2에서는 어떻게 box 의 수가 3732개일까?
Conv 연산의 크기는 3X3 고정이라 할 때, 각 피처맵 사이즈가 38, 19, 10, 5, 3, 1이라고 하면
38X38X4 + 19X19X6 + 10X10X6 + 5X5X6 + 3X3X4 + 1X1X4 = 8732 이다. 뒤에 붙는 4, 6 숫자는 각 point 에서 앵커박스의 수이다.
38X38X4 개의 박스에서의 연산을 내부적으로 보자.
✅ Multi Scale Feature Map과 anchor box 효과
🤔 anchor box 가 기억하는 좌표는 자신 좌표가 아닌 자신 박스와 매칭되었을 때 GT와의 offset 을 최적으로 맞춰나가기 위한 좌표이다. 따라서 이동좌표가 필요.
matching 전략
SSD는 앵커박스가 분류도, 회귀도 모두 수행한다고 했다. bounding box 와 겹치는 IOU가 0.5 이상인 Default Anchor box 의 분류, 회귀의 최적화 하급을 수행한다.
Loss fuction
Data Aug.
one-stage 의 경우 작은 object 를 Detect 하기 어려운 문제가 있다. 이러한 문제는 Data augmentation 으로 해결할 수 있다.