이번 주는 yolo v1이후에 나온 one-stage object detection 모델인 SSD에 대해 리뷰하려 한다.
Abstract
- yolo와 같이 single network를 사용한 object detection 모델
1. Introduction
yolo의 introduction과 같이 기존 object detection 모델들의 단점을 얘기하며 논문이 시작됩니다.
연산량도 과도하게 많고, 가장 빠른 faster rcnn이 7fps로 실시간으로 쓰기엔 무척 느립니다.
저번 시간 리뷰했던 YOLO 또한 무척 빠르긴 하지만 map가 60%대 밖에 머물지 못했었습니다.
논문에서는 SSD의 contribution에 대해서 친절하게 요약해줍니다. 🤣🤣
- SSD는 그 당시 sota였던 YOLO보다 훨씬 빠르면서, faster rcnn과 같은 two stage detection모델만큼 정확합니다.
- SSD는 feature map에 적용되는 small convolutional filters를 사용해서 고정된 default box 집합들의 위치와 category score (클래스 점수)를 예측합니다.
- SSD는 서로 다른 scale의 feature map에서 서로 다른 sclae + aspect ratio를 통해 예측함으로써 더 높은 정확도를 얻었습니다.
- end-to-end training이며, 저해상도의 사진에서도 높은 정확도를 가집니다. 게다가 정확도와 속도 모두 좋습니다.
- VOC2007 데이터에 대하여 Faster rcnn은 7 FPS + mAP 73.2% , YOLO는 45 FPS + mAP 63.4%인데 비해
SSD는 59 FPS + mAP 74.3%로 속도와 정확도 모두 다른 모델과 비교하였을 때, 더 좋습니다.
" 서로 다른 scale의 feature map에서 서로 다른 scale + aspect ratio를 가지는 default box에 대한 정보를 conv filter를 통해 예측(계산)합니다. "
2.1.1 Multi-Scale feature maps for detection
기본 backbone 모델로는 vgg16을 사용했고, 덧붙여 convolutional layers를 추가해줬습니다.
input size가 224였던 vgg와는 달리 SSD에서는 input size를 300 x 300으로 고정했습니다.
vgg16에서는 conv5 이후 fc6 + fc7로 두 개의 fc layer를 거쳤지만
SSD에서는 fully connected layer 대신 kernel size가 3x3인 convolutional layer로 이를 대체했습니다.
이후 추가적으로 feautre layers를 4개 더 붙여주었습니다.
사진에서 각 feature map에서부터 output까지 화살표로 이어져있는데, 이건 preiction한 결과물을 얘기합니다.
다른 feature size를 가진 feature map들로부터 bounding box에 대한 좌표, score를 예측합니다.
1 ) 38 x 38 에 대해 prediction 진행
2 ) 19 x 19 에 대해 prediction 진행
3 ) 19 x 19 에 대해 prediction 진행
4 ) 10 x 10 에 대해 prediction 진행
5 ) 5 x 5 에 대해 prediction 진행
6 ) 3 x 3 대해 prediction 진행
이렇게 총 서로 다른 5개의 scale을 가지는 6개의 feature map에서 객체를 탐지합니다.
이로써 introduction에서 얘기했던 multi-scale에 대해서 object detection이 가능해지는 것입니다.
single sclae이 아닌 multi-scale을 사용했을 때의 장점은 무엇일까요?
시간은 좀 더 오래걸리더라도 다양한 크기의 object를 탐지할 수 있다는 점입니다.
2.1.1 Convolutional predictions for detection
2.1.3 Default boxes and aspect ratios
Faster rcnn + yolo의 느낌이 많이 나는 부분이었다.
yolo에서 그리드 각각 마다 담당하던 bouning box 가 있던 거처럼, SSD 또한 각 feature map 에서 각 픽셀마다 아래와 같이 default box가 k개씩 고정되어있습니다. 아래 그림은 k = 4 일 때입니다.
Faster rcnn의 anchor 개념과 같이 bounding box는 default box로부터 시작해 객체를 탐지하고 학습을 통해 box의 위치를 refine 합니다.
각각의 box는 클래스에 대한 c score 와 box offset(대응되는 default box로부터의 변화량)을 계산합니다.
각 픽셀에 대해 k개의 box가 존재하고, box 하나 당 c개의 class score 와 box offset 4개를 학습해야합니다.
그래서 각 픽셀마다 k(c+4)개의 filter가 적용됩니다.
각 픽셀에 대해 k(c+4)를 계산하고, 전체 feature map의 사이즈가 m x n 이라면 mnk(c+4)짜리 output이 나오게 됩니다.
현재 SSD에서는 6개의 feature map에 대해 위와 같은 과정을 거치고 있으니, 각기 다른 m,n에 대해 mnk(c+4) 짜리 output이 6개가 나오게 될 겁니다!
'영어논문 스터디' 카테고리의 다른 글
RefineNet 논문 리뷰 (0) | 2021.03.03 |
---|---|
MASK RCNN 논문 리뷰 (3) | 2021.02.21 |
YOLO v1 리뷰 (0) | 2021.01.26 |
Faster RCNN 논문 리뷰 (0) | 2021.01.15 |
Fast RCNN 논문 리뷰 (0) | 2021.01.09 |