비즈니스 문제를 해결하고 예측하는 데이터 사이언티스트가 되고 싶다면?
#인공지능 

단일 샷 탐지기 (Single Shot Detector)

단일 샷 탐지기 (Single Shot Detector)는 컴퓨터 비전 분야의 객체 탐지 알고리즘입니다. SSD는 이미지나 비디오 프레임 내 객체를 신속하고 정확하게 탐지하고 위치를 찾는 능력으로 주목받고 있습니다. SSD의 특별한 점은 딥 뉴럴 네트워크를 한 번만 통과하여 이 작업을 수행할 수 있어 매우 효율적이며 실시간 애플리케이션에 이상적입니다.

2024-08-28 | 김성진

(이 글은 What do we learn from single shot object detectors 블로그 내용을 바탕으로 작성되었습니다. 출처가 따로 표기되어 있지 않은 이미지들의 출처는 원 저자의 블로그입니다.)

단일 샷 탐지기 (Single Shot Detector)는 컴퓨터 비전 분야의 객체 탐지 알고리즘입니다. SSD는 이미지나 비디오 프레임 내 객체를 신속하고 정확하게 탐지하고 위치를 찾는 능력으로 주목받고 있습니다. SSD의 특별한 점은 딥 뉴럴 네트워크를 한 번만 통과하여 이 작업을 수행할 수 있어 매우 효율적이며 실시간 애플리케이션에 이상적입니다.

SSD는 다양한 위치의 특징 맵에 여러 비율의 앵커 박스를 사용하여 객체를 효과적으로 처리합니다. 또한, SSD는 다중 스케일 특징 맵을 사용하여 다양한 크기의 객체를 탐지하여 이미지 내 작은 객체와 큰 객체 모두를 정확하게 식별합니다. 여러 객체 클래스를 동시에 탐지하는 능력을 갖춘 SSD는 한 이미지에서 여러 객체 카테고리를 다루는 작업에 유용합니다. SSD는 속도와 정확성의 균형을 이루어 자율 주행, 감시, 로봇 공학 등의 분야에서 보행자 및 차량 탐지와 같은 애플리케이션에서 인기를 끌고 있습니다.

SSD는 실시간 객체 탐지 능력으로 널리 채택되었으며, 자율 주행, 감시, 증강 현실 등의 다양한 애플리케이션에서 사용되고 있습니다.

단일 샷 탐지기 – 주요 특징

1. 단일 샷: 전통적인 객체 탐지 모델이 두 단계 접근법(관심 영역 제안 후 해당 영역 분류)을 사용하는 것과 달리, SSD는 네트워크를 한 번만 통과하여 객체의 존재와 경계 상자 좌표를 예측하여 더 빠르고 효율적입니다.
2. 멀티박스: 다양한 크기와 비율의 기본 경계 상자를 사용하여 객체의 위치를 정확하게 찾아냅니다.
3. 다중 스케일 탐지: 여러 해상도의 특징 맵에서 작동하여 다양한 크기의 객체를 탐지합니다.
4. 클래스 점수: 각 기본 상자에 객체가 특정 카테고리에 속할 가능성을 나타내는 클래스 점수를 할당합니다.
5. 하드 네거티브 마이닝: 학습 중 어려운 예제에 집중하여 모델의 정확성을 향상시킵니다.

하드 예제 마이닝 (Hard example mining)

SSD와 YOLO 같은 대부분의 탐지기에서는 존재하는 객체 수보다 훨씬 더 많은 예측을 합니다. 따라서 긍정적인 매치보다 부정적인 매치가 훨씬 많습니다. 이는 클래스 불균형을 초래하여 훈련에 부정적인 영향을 미칩니다. 모델이 객체를 탐지하기보다는 배경 공간을 학습하게 됩니다. 그러나 나쁜 예측을 학습하기 위해서는 부정적인 샘플링이 필요합니다. 예를 들어 SSD에서는 계산된 신뢰도 손실에 따라 훈련 예제를 정렬하고 상위 예제를 선택하여 부정적 예제와 긍정적 예제의 비율이 최대 3:1이 되도록 합니다. 이는 더 빠르고 안정적인 훈련을 이끕니다.

비최대 억제(NMS, Non-maximal suppression) 적용

탐지기들은 동일한 객체에 대해 중복된 탐지를 할 수 있습니다. 이를 해결하기 위해, 신뢰도가 낮은 중복 예측을 제거하는 비최대 억제를 적용합니다. 신뢰도 점수에 따라 예측을 정렬하고 목록을 하나씩 내려가면서 동일한 클래스와 0.5 이상의 IoU를 가진 이전 예측이 있으면 해당 예측을 목록에서 제거합니다.

포컬 로스 (Focal Loss) – RetinaNet

클래스 불균형은 성능에 부정적인 영향을 줍니다. SSD는 훈련 중 객체 클래스와 배경 클래스의 비율을 조정하여 이미지 배경에 의해 압도되지 않도록 합니다. 포컬 로스는 잘 훈련된 클래스에 대한 손실을 줄여서 이 문제를 해결합니다. 모델이 배경을 잘 감지하면 손실을 줄이고 객체 클래스에 대한 훈련을 재강조합니다. 우리는 교차 엔트로피 손실(CE)에서 시작하여 높은 신뢰도 클래스에 대한 CE를 경감시키는 가중치를 추가합니다.

    $$ \begin{align*} & CE(p_t) = -\log(p_t) \\ & FL(p_t) = -(1 - p_t)^\gamma \log(p_t) \\ \\ & \text{where } \\ \\ & p_t \text{ is the predicted class probability for ground truth.} \\ & \gamma > 0 \end{align*} $$

예를 들어, $\gamma = 0.5$ 일 때, 분류가 잘 된 예제의 포컬 로스는 0에 가깝게 됩니다.

Focal Loss - 출처: Focal Loss for Dense Object Detection 논문

RetinaNet 은 Focal Loss 를 사용한 FPN 과 ResNet 위에 만들어졌습니다.

RetinaNet 아키텍처 - 출처: Focal Loss for Dense Object Detection 논문

단일 샷 탐지기 – 작업 방식

Faster R-CNN 은 영역 제안 네트워크 (RPN, Region Proposal Network) 와 그 뒤를 잇는 분류기를 가지고 있습니다.

Faster R-CNN 작업흐름

영역 기반 탐지기는 정확하지만 비용이 따릅니다. Faster R-CNN은 PASCAL VOC 2007 테스트 세트에서 약 7 FPS(초당 프레임)를 처리합니다. R-FCN 처럼 연구자들은 각 ROI(Region of Interest)에 대한 작업량을 줄임으로써 프로세스를 간소화하고 있습니다.

슬라이드 윈도우 (slide window)

객체를 탐지하기 위해 피처 맵 위에 슬라이딩 윈도우를 사용할 수 있습니다. 다양한 객체 유형에 대해 다른 윈도우 모양을 사용합니다. 이전의 슬라이딩 윈도우의 치명적인 오류는 윈도우를 최종 경계 상자로 사용한 것입니다. 이를 위해 대부분의 객체를 커버하기 위해 너무 많은 모양이 필요합니다. 더 효과적인 해결책은 윈도우를 초기 추정값으로 취급하는 것입니다. 그런 다음 현재 슬라이딩 윈도우에서 클래스와 경계 상자를 동시에 예측하는 탐지기를 사용합니다.

이 개념은 Faster R-CNN의 앵커와 매우 유사합니다. 그러나 단일 샷 탐지기는 경계 상자와 클래스를 동시에 예측합니다.

예를 들어, 8 × 8 피처 맵이 있고 각 위치에서 k개의 예측을 합니다. 즉, 8 × 8 × k 개의 예측입니다.

각 위치에서 우리는 k 개의 앵커를 갖고 있습니다(앵커는 단지 고정된 초기 경계 상자 추측입니다), 하나의 특정 예측을 위한 하나의 앵커입니다. 우리는 앵커를 신중하게 선택하고 모든 위치에서 동일한 앵커 모양을 사용합니다.

위치 당 4개 앵커를 사용하여 4개의 예측 생성

여기에 각 앵커에 대응하는 4개의 앵커 (초록색) 와 4 개의 예측 (파란색) 이 있습니다.

각 앵커에 대응하는 4개의 예측

Faster R-CNN에서는 하나의 컨볼루션 필터를 사용하여 5개의 매개변수를 예측합니다: 앵커에 대한 예측 상자의 4개 매개변수와 1개의 객체 신뢰도 점수입니다. 따라서 3× 3× D × 5 컨볼루션 필터는 피처 맵을 8 × 8 × D에서 8 × 8 × 5로 변환합니다.

3x3 합성곱 필터를 사용하여 예측 연산

단일 샷 탐지기에서는 컨볼루션 필터가 분류를 위한 C 클래스 확률도 예측합니다(각 클래스당 하나). 따라서 3× 3× D × 25 컨볼루션 필터를 적용하여 피처 맵을 8 × 8 × D에서 8 × 8 × 25로 변환합니다(C=20일 때).

각 위치는 k-예측을 생성. 각 예측마다 25개의 파라미터를 가짐.

단일 샷 탐지기는 종종 실시간 처리 속도와 정확성을 맞바꾸며, 너무 가까이 있거나 작은 물체를 탐지하는 데 어려움을 겪는 경향이 있습니다.

단일 샷 탐지기 모델

SSD (Single Shot MultiBox Detector)

SSD는 VGG16 네트워크를 피처 추출기로 사용하는 단일 샷 탐지기로, 이후 맞춤형 컨볼루션 레이어(파란색)를 추가하고 컨볼루션 필터(녹색)를 사용하여 예측을 만듭니다.

그러나 컨볼루션 레이어는 공간 차원과 해상도를 줄이므로, 위 모델은 큰 물체만 탐지할 수 있습니다. 이를 해결하기 위해 여러 피처 맵에서 독립적으로 객체를 탐지합니다.

여기 피처 맵의 차원을 보여주는 다이어그램이 있습니다.

SSD 피처맵 - 출처: SSD 논문

SSD는 이미 컨볼루션 네트워크 깊숙이 들어가 있는 레이어를 사용하여 객체를 탐지합니다. 다이어그램을 비율에 맞게 다시 그리면, 공간 해상도가 상당히 떨어졌으며, 저해상도에서 탐지하기 어려운 작은 객체를 찾는 기회를 이미 놓쳤을 수 있음을 알 수 있습니다. 이러한 문제가 존재한다면, 입력 이미지의 해상도를 높여야 합니다.

YOLO

YOLO는 또 다른 단일 샷 탐지기입니다.

YOLO는 다크넷을 사용하여 특징을 탐지하고, 그 후 컨볼루션 레이어를 적용합니다.

피처 탐지를 위한 다크넷 DarkNet 사용

그러나 다중 스케일 특징 맵을 사용하여 독립적인 탐지를 수행하지 않습니다. 대신, 특징 맵의 일부를 평탄화하고 낮은 해상도의 맵과 연결합니다. 예를 들어, YOLO는 28 × 28 × 512 레이어를 14 × 14 × 2048로 재구성한 다음 14 × 14 × 1024 특징 맵과 연결합니다. 그 후, YOLO는 새로운 14 × 14 × 3072 레이어에 컨볼루션 필터를 적용하여 예측을 만듭니다.

YOLO (v2)는 구현상의 많은 개선을 통해 첫 출시에서 mAP를 63.4에서 78.6으로 끌어올렸습니다. YOLO9000은 9000개의 다양한 객체 카테고리를 탐지할 수 있습니다.

YOLOv2 모델의 개선된 mAP - 출처: YOLO 논문

다음은 YOLO 논문에서 보고된 다양한 탐지기들의 mAP와 FPS 비교입니다. YOLOv2는 다양한 입력 이미지 해상도를 사용할 수 있습니다. 낮은 해상도의 입력 이미지는 더 높은 FPS를 달성하지만 mAP는 낮아집니다.

Mean Average Precision 과 Frames Per Second 비교 - 출처: YOLO 논문

YOLOv3

YOLOv3는 더 복잡한 백본을 특징 추출을 위해 사용합니다. Darknet-53은 ResNet의 잔여 네트워크처럼 3×3 및 1×1 필터와 스킵 연결로 주로 구성됩니다. Darknet-53은 ResNet-152보다 적은 BFLOP(십억 부동 소수점 연산)를 사용하면서도 동일한 분류 정확도를 2배 더 빠르게 달성합니다.

다크넷-53 - 출처: YOLOv3 논문

또한 YOLOv3는 작은 물체를 더 잘 탐지하기 위해 피쳐 피라미드를 추가합니다. 다음은 다양한 탐지기의 정확도와 속도 절충을 나타낸 것입니다.

속도와 정확도의 트레이드오프 - 출처: YOLOv3 논문

FPN (Feature Pyramid Networks)

다양한 규모의 객체를 탐지하는 것은 특히 작은 객체의 경우 어려운 과제입니다. 피처 피라미드 네트워크(FPN)는 정확도와 속도를 개선하기 위해 피라미드 개념을 도입한 피처 추출기입니다. Faster R-CNN과 같은 탐지기의 피처 추출기를 대체하여 더 높은 품질의 피처 맵 피라미드를 생성합니다.

FPN 피라미드 구조 - 출처: FPN 논문

FPN은 상향(bottom-up) 경로와 하향(top-down) 경로로 구성됩니다. 상향 경로는 피처 추출을 위한 일반적인 합성곱 신경망입니다. 위로 갈수록 공간 해상도가 감소하고, 더 많은 고수준 구조가 감지되면서 각 층의 의미적 가치가 증가합니다.

SSD는 여러 피처 맵에서 탐지를 수행합니다. 그러나 하위 층은 객체 탐지에 선택되지 않습니다. 하위 층은 해상도가 높지만 의미적 가치가 충분하지 않기 때문에 속도 저하가 심각합니다. 따라서 SSD는 상위 층만을 탐지에 사용하며, 작은 객체에 대해 성능이 떨어집니다.

FPN은 의미가 풍부한 층에서 높은 해상도 층을 구성하는 하향 경로를 제공합니다.

FPN top-down 아키텍처 - 출처: FPN 논문

재구성된 층들은 의미적으로 강하지만, 다운샘플링과 업샘플링 과정을 거치면서 객체 위치가 정확하지 않을 수 있습니다. 따라서 재구성된 층과 해당 피처 맵 사이에 측면 연결(lateral connections)을 추가하여 탐지기가 위치를 더 잘 예측하도록 돕습니다.

다음은 상향(bottom-up) 경로와 하향(top-down) 경로에 대한 상세 다이어그램입니다. P2, P3, P4, P5는 객체 탐지를 위한 피처 맵 피라미드입니다.

FPN + RPN (Region Proposal Network)

FPN 자체는 객체 탐지기가 아닙니다. 객체 탐지기와 함께 작동하는 피처 탐지기입니다. 각 피처 맵(P2에서 P5)을 독립적으로 입력받아 객체 탐지를 수행합니다.

FPN + Fast R-CNN 혹은 R-CNN

FPN에서는 피처 맵의 피라미드를 생성합니다. RPN(앞서 설명한 대로)을 적용하여 ROI를 생성합니다. ROI의 크기에 따라 가장 적절한 스케일의 피처 맵 층을 선택하여 피처 패치를 추출합니다.