SSD 논문 리뷰

Choi재혁
|2024. 7. 9. 14:11
반응형

Introduction

  • SSD는 단일 깊은 신경망을 사용한 탐지 기법
  • 예측 단계에서 SSD는 디폴트 박스 내 객체 카테고리 존재 여부를 점수화하여 디폴트 박스가 객체 모양과 더 일치하도록 조정
    • 디폴트 박스는 YOLO에서의 anchor box와 같은 개념
  • SSD는 다양한 크기의 객체를 탐지하도록 서로 다른 해상도를 갖는 여러 피처 맵의 예측 결과를 활용함
  • SSD는 영역 추정을 필요로 하는 다른 객체 탐지 기법에 비해 상대적으로 간단함
  • → 영역 추정 단계와 반복적인 피처 샘플링을 제거하여 모든 연산을 단일 네트워크로 수행하기 때문에, 이런 과정 때문에 훈련이 잘 됨 또한 다른 객체 탐지 요소와 결합도 쉬움
  • 훈련과 예측을 단일 프레임워크로 처리한다는 장점이 있음
  • Faster R-CNN보다 좋은 성능, 다른 single-stage 모델과 비교해도 SSD는 더 작은 이미지 크기로도 더 높은 정확도를 기록함
  • SSD의 접근법 3가지 (1. 경계 박스 추정, 2. 각 경계 박스마다 피처 재 추출, 3. 성능 좋은 분류기 적용)
    • 위와 같은 파이프라인은 선택적 탐색이 나온 이후로 꾸준히 객체 탐지 모델에 적용해 왔음
  • 정확성이 높다는 장점이 있지만 실시간 객체 탐지 서비스에 적용하기에는 속도가 느림
  • 이 논문이 나왔을 때 기준으로 가장 속도가 빠른 모델은 Faster R-CNN이고 속도가 7 FPS, SSD는 59 FPS, YOLO 45 FPS 속도
    • 속도가 빨라진 이유는 경계 박스 추정과 연이은 피처 재 추출 단계를 없앴고 다양한 개선 사항을 더하면서 기존 시도보다 정확도가 높아짐
  • 객체 클래스와 경계 박스 좌표를 예측하기 위해 작은 합성곱 필터를 사용함
    • 합성곱 필터는 다양한 스케일과 가로세로 비율의 피처 맵을 잘 탐지
    • 다양한 스케일로 예측하기 위해 다중 계층을 사용하는 방법으로 높은 정확도와 빠른 속도를 달성
  • 요약
    • 기존의 SOTA인 YOLO보다 빠르고 정확한 SSD, 1-stage detector 방식임(region proposal 따로 안 함)
    • SSD의 핵심은 작은 합성곱 필터를 피처 맵에 적용해 고정된 경계 박스들을 활용해 클래스 레이블과 경계 박스 좌표를 예측한다는 것이 핵심
    • 정확도를 높이기 위해 다양한 스케일의 피처 맵에서 여러 스케일로 예측, 가로세로 비율에 따라 분리해 예측
    • 위와 같은 내용으로 end-to-end 방식으로 간단히 훈련할 수 있음, 입력 이미지의 해상도가 낮더라도 높은 정확도 보임

SSD(The Single Shot Detector) - model

SSD(The Single Shot Detector) 프레임워크

  • (a) SSD는 훈련 시, 입력 이미지와 각 객체별 ground truth boxes만을 필요로 함, 입력 이미지에 합성곱 연산을 수행해 feature map 계산
  • 이때 앞서 말했든 여러 차례 합성곱 연산을 해서 다양한 크기의 feature map을 생성, 다양한 feature map마다 각 픽셀당 서로 다른 비율을 갖는 default box를 가짐
    • 위 이미지에서 (b), (c)에 점선 이미지를 default box라고 함, default box는 한 픽셀당 네 가지 존재, (b) 8x8 feature map에서는 default box가 총 8x8x4
    • 4x4 feature map에서는 4x4x4개가 존재
  • 각 default box마다 ‘경계 박스 좌표’, ‘그 경계 박스의 객체 신뢰도 점수’ 두 개를 예측함
  • 위 (c) 그림에서 보다시피 객체 신뢰도 점수를로 표현
  • 훈련 단계에서 default box를 먼저 ground truth boxes와 매칭
  • 위 (a) 그림처럼 두 가지 default box가 고양이, 강아지 각각 한 마리씩 매칭되었다고 하면, 이 두 개의 default box를 positive로 간주하고 나머지 default box는 negative로 간주함

Model

  • SSD 모델의 가장 중요한 특징은 여러 가지 크기의 오브젝트를 검출하기 위해 default box를 각각의 feature map에 맞게 사용한다는 것
  • 해상도가 높은 feature map에서 상대적으로 작은 박스를 사용하기 때문에 크기도 작은 오브젝트를 검출할 수 있으며 이런 원리로 다양한 크기의 오브젝트 검출이 가능해짐
  • 고정되어 있는 bounding box들의 확률치를 구하여 이를 이용한 NMS 과정을 거친 뒤 최종 위치를 정함
  • 전통적인 이미지 분류 모델 아키텍처를 SSD 앞부분에 사용, 이를 기본 네트워크
    • SSD에서는 기본 네트워크로 VGG-16 사용, 기본 네트워크 다음에 또 다른 구조를 덧붙임

  • Multi-scale feature maps for detection

    • 기본 네트워크 다음에 여러 합성곱 피처 계층을 덧붙인 상태

    • 이 계층의 크기는 차례로 줄어듦, 다양한 스케일로 객체를 탐지하기 위함

    • 각 피처 계층마다 객체 탐지를 수행하는 것

      • base로 사용한 VGG-16에서도 feature map 추출, 이후 FC 단계의 conv에서도 feature map, 점차 줄여가면서 각 단계마다 feature map 추출함
      • 즉 bounding box를 각 계층마다 뽑음, 300x300 기준 8732개의 bounding box 추출
    • VGG-16의 결과에서는 공간 정보, 나머지 layer를 거치면서 feature의 특징을 뽑아내서 많은 정보를 가지는 bounding box들을 얻을 수 있다는 것이 SSD 장점

      • U-net의 복원 과정에서 이전 layer들의 결과를 사용하는 것과 같은 모습

이 부분에서 Yolo v1과의 차이는 yolo는 최종적으로 마지막 단계에서만 feature map을 뽑고 그 개수가 98개 상대적으로 적은 bounding box를 추출, 상대적으로 적은 정보로 정확도가 떨어짐 (VOC mAP 기준 yolo는 63.4, SSD는 74.3, Fast R-CNN 73.2 )

  • Convolutional predictors for detection
    • m x m 크기에 p 개의 channels을 갖는 feature map이 있을 때, 3x3xp 크기의 convolution을 사용
    • 위의 conv 수행으로 category에 대한 점수, bounding box regression을 수행

yolo는 category score, bbox regression을 fc layer에서 수행함, 실제로 모델 구성을 확인했을 때 1-stage detector라는 공통점을 빼면 SSD와 유사한 점을 찾기 어려움, 오히려 Faster R-CNN과 비슷한 구성

  • Default boxes and aspect ratios
    • bounding box 1개를 얻으면 그 안에 (x,y,w,h) 정보 4개가 들어있음
      • x, y : 객체 중심 좌표
      • w, h : 이미지 너비, 높이
    • 구별해야 하는 class의 수 = c라고 한다면 각 class 개수 + bounding box 위치정보가 들어있어서 (C+4) 개의 location의 feature map이 생성
    • 위의 이미지를 자세하게 확인하면 각 layer 결과가
      • 3x3x(4x(classes + 4)) 또는 3x3x(6x(classes + 4))으로 구성되어 있음
      • 3x3 conv를 수행할 때 4,6은 뽑을 bounding box의 개수를 의미 즉
        • pascal voc 기준으로 설명하면
          • pascal voc는 class가 배경(1) 을 포함한 총 21개의 class로 구성되어 있음
          • 3x3(6x(21+4))는 3x3 conv 수행 시 채널은 21 클래스 + 4개의 위치정보가 담긴 6개의 bounding box를 뽑는 것
          • 6x(21+4) = 150개(output 채널 수), 결과물은 1x150의 벡터로 결과가 나오고
          • 1x150개 중에서 맨 앞의 4개는 1번째 bbox의 위치정보, 뒤에 21개는 bbox의 class 확률, 그다음 4개는 bbox의 2번째 위치정보, 21개 class 확률….
          • 이렇게 yolo의 anchor box와 유사한 형태로 나옴
          • 결과물인 1X150 vector가 모여서 각 layer의 input 크기만큼 생성이 됨
            • 예를 들어 conv 3x3(6x(21+4))의 input으로 19x19x1024 가 들어왔다면
            • 결과물로 19x19x150가 결과로 출력

yolo의 anchor box는 객체의 개수만큼 결과물이 생겨서 vector 자체가 가지고 있는 정보량이 SSD의 vector보다 적음, 또한 각 layer 단계에서 ssd는 feature map 크기가 다양하기 때문에 해상도가 다양해지고 이를 활용해 더욱 효과적인 객체 검출을 수행할 수 있음

Training

  • 훈련을 위해서 ground truth box가 필요함

    • Faster R-CNN, Yolo 도 ground truth box 필요함
    • 이를 통해 end-to-end 훈련에 손실 함수와 역전파 적용할 수 있음
  • Matching strategy

    • model 부분에서 bbox는 300x300 이미지 기준 8732개가 생성됨
    • default box 중 ground truth box와 잘 매칭되는 box를 찾아야 함
      • ground truth box에 매칭되는 default box를 찾는 방식으로 훈련이 진행
      • 판단 기준으로 IoU를 사용, IoU가 큰 box 한 개만 찾는 것이 아닌 0.5 보다 큰 모든 default box를 찾음
  • Training objective

    • SSD의 전체 손실 함수는 Faster R-CNN과 동일

    • : i 번째 default box와 j번째 ground truth box가 매칭되는지 여부

    • : Faster R-CNN과 같음

      • : confidence loss, N : bbox 매칭 했을때 매칭된 box들의 수
      • : localization loss : bbox regression loss
        • : x는 width의 비율로 계산
        • : y는 height의 비율로 계산
        • : width는 log scale 적용
        • : height는 log scale 적용
        • 너비, 높이에 log 취하는 이유는 상대적으로 x, y 좌표보다 너비 높이의 변화율이 커서 log 취함

기존 yolo v1과의 차이점은 yolo v1은 아무것도 없는 상태에서 bbox를 바로 예측하지만 ssd는 bbox regression을 수행해서 위치를 조정해 더 좋은 정확도를 얻음

  • Choosing scales and aspect ratios for default boxes
    • (a) 번 이미지를 보면 객체가 큰 이미지와 객체가 작은 이미지는 서로 다른 conv에서 나온 feature map을 사용하는 걸 확인할 수 있음
      • 각 conv layer에서 출력이 나오는데 가면 갈수록 conv input의 크기가 작아지면서 detection 된 영역이 원본에서는 큰 이미지로 잡히고, 반대로 앞에 있는 layer들은 상대적으로 원본에서 작은 객체가 detection 됨
      • 실제로 (a)의 고양이를 확인했을 때 8x8 conv로 4x4 보다 앞에 존재하는 conv이고 이때 고양이는 IoU ≥ 0.5이지만 강아지는 배경으로 처리됨
      • (a)의 강아지는 8x8 conv 보다 뒤에 있는 4x4 conv이고 강아지 객체는 IoU > =0.5 이지만 고양이는 배경처리가 됨

결과적으로 해상도가 큰 이미지에서 작은 객체가 검출되고, 해상도가 작은 이미지에서는 큰 객체가 검출되는 방식으로 이루어짐

  • 각 단계의 bbox

    • 하나의 이미지에서 동일 객체를 각 conv에서 한 객체를 맞추려고 각각 학습함
    • 이로 인해서 1-stage detector 방식이지만 yolo보다 성능이 높음
  • default box를 위한 scale 공식

    • = 0.2,
      = 0.9
    • 1번 식에 m 대입하면 서로다른 6개의 s값이 출력 (m = feature map의 수, 논문에서는 6)
    • 여기에 aspect ratio = {1,2,3,1/2,1/3} 설정, 설정된 a값에 따라 3번식의 사각형 모양이 변함 (a= 1 일때 3번식에 의해 정사각형, 2면 1:2인 직사각형 이렇게 변함)
  • Hard negative mining

    • background에 대한 bbox가 객체에 비해 더 많은 개수를 가지고 있기 때문에 class 불균형이 발생
    • soft-max를 통한 확률 중 background로 설정되었지만 그 확률이 적은 bbox를 뽑아서 정렬
    • positives : negatives 비율 3:1로 사용함

class 불균형을 해소하기 위한 방법

  • Data Augmentation
    • 전체 이미지 사용
    • 객체가 최소 IoU 0.1,0.3,0.5,0.7,0.9가 되도록 패치 설정
    • 랜덤 샘플링 해서 패치 구함

SSD 리뷰 후기

  • 장점
    • FC layer에 dense 사용하지 않고 conv를 사용 → 가중치 수 감소하고 속도가 증가하는 효과
    • 여러 feature 맵을 사용하고 한 이미지에 대해 각각의 conv에서의 결과를 모두 반영하기 때문에 더욱 정확도가 높은 결과를 얻음
    • 논문 기준 feature map이 6개이기 때문에 다양한 물체를 검출하기 좋음

추가로 1-stage-detector는 SSD가 변형된 형태가 대부분이고 yolo 계열은 독자적으로 다른 방식으로 1-stage-detector가 발전한 형태
SSD는 Yolo와 유사한 점은 딱히 없지만 Yolo와 비교하면서 SSD만의 장점을 더 깊게 배울 수 있었습니다.

반응형

'Study > Paper' 카테고리의 다른 글

Faster R-CNN 논문 리뷰  (0) 2024.07.22
Fast R-CNN 논문 리뷰  (1) 2024.07.09
R-CNN 논문 리뷰  (1) 2024.07.05
HOG, SIFT Object detection 발전과정  (2) 2024.07.03
USAD 논문 리뷰  (0) 2024.07.02