본문 바로가기

논문리뷰

SSD: Single Shot MultiBox Detector 논문리뷰

이번에 읽어볼 논문은 Single Shot Multibox Detector 이라는 이름의 SSD논문입니다

해당 논문은 이전 yolo와 동일하게 1 stage model이며 

1stage model이지만 기존 2stage model이던 Faster RCNN보다 높은 정확도를 자랑하며

이전 yolo보다 더 빠른 속도를 보여줍니다

정확도를 높이기 위해서는 yolo의 경우 마지막 단의 feature map만 추론에 사용하지만

SSD같은 경우는 논문의 경우 총 6개의 layer에서 feature map을 생성하여 추론에 사용하며

여러 크기와 비율의 default boxes들을 사용하여 정확도를 높였습니다

속도같은 경우 yolo와 동일하게 region proposal 단을 제거하고 각 layer마다 

grid cell별 default box들을 생성하여 추론에 사용하여 속도를 증가시켰으며

yolo의 경우 마지막 FC layer에서 많은 연산과 시간이 소요되지만 

SSD같은 경우 FC layer가 존재하지 않기 때문에 속도 측면에서도 이점을 가집니다

결과적으로  input image의 해상도를 300*300 으로 입력받더라도 더 좋은 해상도의 input을 받는 타 모델보다

더 나은 정확도와 속도를 보여줍니다 ( 59 FPS , 74.3 %)

 

SSD의 입력으로는 300*300*(R,G,B)값과 ground truth boxes의 값을 가지며

Base model은 VGG16이며 feature 를 뽑기 전까지의 과정은 VGG16의 모델을 그대로 사용하였습니다

VGG16모델의 출력으로는 38*38*512가 나오게 되며 해당 layer부터 feature 를 뽑아냅니다

총 38*38/19*19/10*10/5*5/3*3/1*1 에서 feature를 뽑아내며

입력 비례 default box의 크기는 거의 일정하기 때문에

큰 size의 feature map 에서는 작은 객체 위주로 찾아내며

반대로 작은 size의 feature map에서는 큰 객체 위주로 찾아내게 됩니다

 

해당 사진을 확인하면 yolo와 SSD의 전체적인 네트워크의 확인이 가능합니다

FC layer가 없어진 것을 확인 할 수 있으며 

총 6개의 feature map을 받아 추론에 사용하며 NMS를 사용해서 중복 default box들을 삭제합니다

 

feature를 뽑아내는 부분에서는 3*3 convolution이 사용됩니다

뽑아낸 feature의 size는 기존 layer와 동일하며 

만일 38*38*512 layer에서 뽑아냇다 가정하면 출력은 38*38*(k*(c+4))가 됩니다

c는 분류할 클래스의 개수이며 PASCAL VOC기준 20개의 class와 background 까지 포함한 21개를 분류합니다

(c+4)부분은 뽑은 default box의 위치 좌표이며 (중앙의 x값 y값 가로 세로 )로 구성됩니다

k는 한개의 grid cell당 뽑아낼 default box의 개수로 해당 논문에서 총 8732개의 default box를 뽑는데

각 layer의 grid cell마다 4개와 6개의 default box를 뽑아냅니다

 

 뽑아내는 default box의 총 개수는 앞서 말한 것 처럼 총 8732개의 default box를 뽑아내지만 

입력으로 받은 ground truth box와의 jaccard overlap(IOU)값이 0.5 이상인 객체들만을 사용하여 NMS를 진행합니다

해당 모델의 Loss 함수는 다음과 같으며 

N은 매칭된 default box의 개수이며 만일 0일 경우 해당 loss는 0으로 취급합니다

또한 localizaion에는 L1 loss를 사용합니다

 

default box의 가로와 세로의 크기를 결정하는 식은 다음과 같습니다

Smin값은 0.2 Smax 값은 0.9 이며 m은 feature 추출에 사용되는 총 feature map의 개수이다

ar 은 {1,2,3,1/2,1/3} 입니다

k=6이 되는 시점에는 ar = 1 에 sk대신 s'k를 넣어 진행하며

k=4가 되는 시점에는 ar = 3 , ar = 1/3 대신 ar = 1에 s'k를 넣어 진행합니다

 

뽑은 default box의 대부분이 background 일 것이기 때문에 추출된 default box들 중

신뢰도가 높은 순으로 sorting을 진행하고

해당 순으로 Positive와 Negative의 비율을 1:3으로하여 Positive를 학습에 사용합니다

Data augmentation같은 경우는 

Original image

Image crop를 진행하며 minimum jaccard overlap이 원본과 0.1/0.3/0.5/0.7/0.9인 경우

Random crop을 진행하며 총 size는 원본과 (0.1~1)사이 가로 세로비는 (1/2~2)각각을 채택한뒤 0.5 확률로 flip을 진행합니다

 

해당 모델의 결과로는

해당 결과로 Training data가 늘어날수록 , input의 해상도를 높일수록 정확도는 늘어나며

Faster RCNN보다 높은 정확도를 보임을 볼 수 있었고

 

해당 결과로는 data augmentation이 정확도에 큰 영향을 주며 

default box를 많이 생성할수록 성능은 늘어났습니다

atrous convolution 이란 

해당 방법과 같은 convolution 이며 atrous convolution을 진행 할 경우

정확도 보다 속도측면에서 큰 영향을 줍니다

해당 결과를 보면 작은 크기의 객체에서의 정확도가 떨어진다는 SSD의 단점이 들어납니다

이를 해결하기 위해서 추가적인 data augmentation 기법을 사용하였으며

기존 image의 16배 되는 빈 image를 만들고 원본을 넣은 뒤 원본 image의 R,G,B평균값으로 빈 부분을 채우고

다시 원본 크기로 resize하여 기존보다 훨씬 작은 객체를 생성하며

해당 방법으로 정확도를 높인 부분이 위의 그래프에서 아래 부분입니다

또한 위의 결과표에  * 이 있는 부분이 해당 data augmentation을 적용한 결과이며

실제로 정확도에 영향을 주는 것이 확인 되었습니다

 

해당 결과를 보면 layer를 많이 사용할수록 정확도가 높아지는 것을 확인 할 수 있으며 옆의 Boxes의 개수가 

전부 다른 점은 layer을 줄임으로써 default box의 개수가 감소하여 각 layer에서 grid cell당  뽑는 default box의 개수를

조정하여 최대한 8732와 유사한 개수의 default box를 뽑아낸다 서술되어 있습니다

 

타 모델과의 속도 및 정확도를 비교한 표입니다

기존보다 더 좋은 정확도, 더 빠른 속도를 가지며

같은 input 해당도를 가질 경우 batch 기법을 사용하면 속도를 증가시킬수 있으며 속도 향상에 따른 정확도 감소는

없어 보입니다

 

마지막으로 해당 논문을 읽으며 설명을 잘 해둔 ppt가 있어 참조합니다

https://docs.google.com/presentation/d/1rtfeV_VmdGdZD5ObVVpPDPIODSDxKnFSU0bsN_rgZXc/pub?start=false&loop=false&delayms=3000&slide=id.g179f601b72_0_51

'논문리뷰' 카테고리의 다른 글

DSSD:Deconvolutional Single Shot Detector  (0) 2022.03.17
Mobilenet 논문리뷰  (0) 2022.01.12
GoogLeNet (inceptionet) 논문리뷰  (0) 2021.12.08
You Only Look Once(YOLO) v1 논문 리뷰  (0) 2021.12.01
Resnet 논문리뷰  (0) 2021.11.23