2021. 1. 8. 22:08ㆍComputer vision ღ'ᴗ'ღ
※ 본 글은 <딥러닝 컴퓨터비전 완벽가이드> 강의 및 여러 자료를 참고하여 쓰여진 글입니다. ※
github: github.com/chaeyeongyoon/ComputerVision_Study
SSD는 기본적으로 anchor box기반으로, 각 feature map에서 anchor box가 classification 과 detection을 동시에 수행합니다.
SSD의 주요 구성 요소는
1. Multi Scale Feature Layer
2. Default Anchor Box ★★★★★
두가지 입니다.
● Multi Scale Feature layer
Multi scale feature map은 image pyramid와 비슷한 원리입니다.
sliding window 기법을 사용할 때 다음 그림과 같이 이미지의 크기에 따라 detect되는 객체가 달랐습니다.
이와 비슷하게 서로 다른 크기의 feature map을 기반으로 object detection을 수행합니다.
conv layer을 지나며 feature map의 크기는 점점 작아지고, feature map이 작아질수록 큰 object를 detect하게 됩니다.
Faster RCNN에서의 RPN과 boundary box regression을 하나로 합쳐 Network로 만들었다고 할 수 있습니다.
● (Default) Anchor Box
label과 bounding box(Ground Truth)가 주어진 이미지를 넣어주고 conv layer을 통과한 다양한 size의 feature map에 각 point마다 anchor box를 할당합니다(보통 각 9개).
개별 anchor box가 anchor box와 겹치는 feature map 영역의 object class 분류(softmax값)와 GT box 예측할 수 있게 수정된 좌표의 정보를 가질 수 있도록 학습합니다.
다시한번 이 이미지를 살펴보면
classifier 1: 3x3x(4x(classes+4)) 에서 classes + 4는 각 anchor box가 채워야하는 정보입니다(softmax값과 수정좌표값) 거기에 곱해준 4는 anchor box의 개수입니다.(PASCAL VOC dataset을 이용했다면 classes=20 + 1(BG) 겠죠?)
다른 classifier도 anchor box개수만 다를뿐 동일합니다.
이 정보들을 다 합치면 class 당 8732개를 detection하게됩니다. 이후에 Non-Maximum Suppression으로 각 object별 가장 높은 것만 남겨줍니다.
위의 고양이 강아지 그림에서 빨간 박스와 같이 matching된 anchor box들이 저런 형태의 feature map이 들어오면 개다/고양이다 이렇게 classification할 수 있게 학습됩니다. loc의 값이 최소가 되도록 계속 bounding box regression을 수행합니다.
※ SSD Training
<matching 전략: GT Bounding box와 겹치는 IOU가 0.5이상인 default anchor box들의 classification과 bounding box regression을 최적화 학습을 수행합니다.>
SSD에서의 loss값은 다음과 같습니다 (loss에 대한 자세한 설명은 생략하겠습니다.)
그러나 One stage 방법은 작은 object를 잘 detection하지 못하는 단점이 있습니다.
이를 개선하기 위해 Feature pyramid기법을 쓴 것이지만 특히 SSD가 작은 object를 잘 detection하지 못합니다.
(Retina Net이 이 단점을 많이 개선하였습니다. 추후 소개하겠습니다.)
그래서 SSD는 augmentation을 중요시하고 이를 통해 개선을 노력하였습니다.
매우 특이한 방법으로 augmentation을 수행하였는데, 다음과 같습니다.
- GT이미지와 IOU가 0.1, 0.3, 0.5, 0.7, 0.9가 되도록 특정 object의 image를 잘라냄
- 잘라낸 이미지를 randomly sampling
- 잘라낸 sample이미지를 0.1~1사이 크기로, aspect ratio는 0.5~2사이로 크기를 맞춘다.
- 개별 sample image를 다시 300x300으로 고정하고 그 중 50%는 horizontal flip해준다.
다음 표는 augmentation의한 object detetion 성능 변화를 나타낸 것 입니다.
'Computer vision ღ'ᴗ'ღ' 카테고리의 다른 글
keras-yolo3 opensource package (0) | 2021.01.22 |
---|---|
YOLO (0) | 2021.01.09 |
Fast R-CNN, Faster R-CNN (0) | 2021.01.03 |
SPPNet (0) | 2021.01.03 |
R-CNN(Regions with CNN) (0) | 2021.01.03 |