앞서 포스팅한 2 stage detector의 경우 높은 정확도를 갖지만 이미지 처리 속도가 매우 느리다는 단점이 있다. 이러한 한계를 갖는 모델을 real world(실상황)에 사용하기란 문제가 있다. 따라서 real world에서 응용 가능한 object detector가 필요해 1 stage detection방식의 모델이 제안 되었다.
Yolo는 처음으로 1-stage-detection방식으로 고안되어. 실시간 객체 탐지를 가능하게한 모델이다.
Yolo v1모델의 전체적인 구조는
4. 앞서 구한 class score를 thresh hold이하는 제거하고 내림차순 정렬하여 NMS알고리즘 진행
Yolo v1모델의 loss function은 아래와 같다
앞서 설명한 Yolo는 2stage에 비해 매우 빠른 이미지 처리 속도를 보이고 있다. 하지만 그리드 영역 보다 작은 크기의 물체는 검출 불가능하고 신경망을 통과하여 마지막 feature만 사용하기 때문에 정확도가 하락한다는 한계점이 존재한다. SSD는 이러한 한계점을 극복하고자 시작한다.
SSD는 먼저 300x300 크기의 이미지를 입력받아서 이미지 넷으로 pretrained된 VGG의 Conv5_3층까지 통과하며 피쳐를 추출한다. 그 다음 이렇게 추출된 피쳐맵을 컨볼루션을 거쳐 그 다음 층에 넘겨주는 동시에 Object Detection을 수행한다. 이전 Fully Convolution Networ에서 컨볼루션을 거치면서 디테일한 정보들이 사라지는 문제점을 앞단의 피쳐맵들을 끌어오는 방식으로 해결했다.
SSD는 여기서 착안하여 각 단계별 피쳐맵에서 모두 Object Detection을 수행하는 방식을 적용한 것이다. 이를 더 자세한 그림으로 표현하면 아래와 같다.
만약 default box의 개수가 3개라면 각각 pretrained된 convolution layer에서의 출력 값에 3x3 conv 연산을 진행해 물체의 localization과 confidence score를 출력하는 것을 볼 수 있다.
localization: 4(4개의 좌표)x3(3개의 default box)
confidence: 21(21개의 객체) x 3 (3개의 Default box)
SSD의 특징을 보면 아래와 같다.