물체 탐지
물체 탐지 object detection
- 이미지 분류는 한 이미지에 하나의 레이블이 붙어 있다고 가정
- 이미지 하나에 여러 가지 대상이 찍혀 있는 경우가 있음
- 물체 탐지: 각각의 대상들에 대해서 그 위치와 레이블을 분류
- 이미지의 유형과 함께 경계 상자(bounding box)의 좌표를 함께 출력
- 이미지 분류보다 어렵고 복잡
- 물체 탐지의 손실함수: 두 가지 예측의 손실을 모두 최소화 (multitask loss)
- 경계 상자의 좌표 (연속 변수)
- 물체의 분류 (범주형 변수)
다른 task와 비교
- Image Classification: 이미지의 물체를 정해진 카테고리로 분류 (한 이미지에 한 레이블)
- Semantic Segmentation: 이미지의 픽셀들을 물체의 종류별로 분류(같은 종류는 같은 레이블)
- Object Detection: 이미지의 물체들마다 경계 상자로 구분 (각 경계 상자별로 레이블)
- Instance Segmentation: 이미지의 픽셀들을 개체별로 분류(같은 개체는 같은 레이블)
물체 탐지의 활용
- 자율 주행, 보안 감시, 의료 영상 분석, 스마트 팩토리 등 수많은 실제 문제 해결에 핵심적인 역할
- 자율 주행 차량이 도로 위의 다른 차량, 보행자, 신호등을 인식하여 안전하게 운행하는 데 필요
- 사람 얼굴에 자동으로 초점
- 무인 상점: 고객이 집은 물건을 기록 → 고객이 매장을 빠져나가면 결제
- 자율주행이나 로봇: 사람이나 장애물을 피하려면 위치를 알아야 함
- CCTV: 화재, 범죄, 사고 등을 자동으로 탐지
- 의료에서 영상으로부터 병변의 위치를 탐지
물체 탐지 기법의 발전
- 전통적인 물체 탐지 방법
- Viola-Jones (2001): Haar-like 피처와 AdaBoost를 사용, 얼굴 탐지에 사용됨(아래 그림).
- HOG + SVM (2005): 이미지의 방향성 그레디언트(HOG)를 추출하여 SVM으로 분류, 보행자 탐지에 주로 사용
- 이러한 방법들은 복잡한 특징 엔지니어링과 파이프라인이 필요
- 최근에는 딥러닝 기반 물체 탐지 모델을 사용
- 복잡한 수작업 특징 추출 없이, 데이터로부터 직접 특징을 학습(End-to-End 학습)
- Two-stage detector와 One-stage detector가 있음
Two-stage Detector (2단계 탐지기)
- "후보 영역 제안(Region Proposal)" -> "영역 분류 및 바운딩 박스 회귀"의 두 단계를 거침
- R-CNN (Region-based CNN) 계열이 대표적
- Selective Search Algorithm을 이용해 ROI를 추출
- 후보 영역을 추출 → 영역끼리 유사도를 계산 → 비슷한 후보 영역을 합침
- 유사도를 재계산, 이하 반복
- 추출된 이미지를 CNN에 입력하여 분류
R-CNN의 단점
- 느림
- Selective Search Algorithm이 느리고 불필요한 영역을 제안
- 여러 단계로 나눠진 처리 과정
- CNN을 반복 적용 하므로 계산 비용이 높음
- Fast R-CNN, Faster R-CNN으로 발전되었으나 한계가 있음
One-stage Detector (1단계 탐지기)
- "단일 네트워크에서 한 번에" 객체의 위치와 클래스를 예측
- YOLO (You Only Look Once) 계열과 SSD (Single Shot MultiBox Detector) 가 대표적
- 매우 빠른 추론 속도, 실시간 응용에 적합.
- 초기에는 Two-stage 방식보다 정확도가 약간 낮았으나 최근에는 큰 차이 없음
YOLO You Only Look Once
- 입력 이미지가 CNN을 통과하여 특징 맵을 생성.
- 특징 맵을 특정 크기의 그리드 셀로 분할.
- 예측: 각 그리드 셀은 미리 정의된 수의 바운딩 박스(Anchor Box)를 예측
- 각 박스에 대해 다음을 예측
- 바운딩 박스 좌표: (x, y, width, height) 또는 (center_x, center_y, width, height).
- 객체 신뢰도(Objectness Score): 해당 바운딩 박스 안에 객체가 있을 확률.
- 클래스 확률: 해당 박스 안의 객체가 각 클래스에 속할 확률.
SSD Single Shot Detection
- 영역 제안과 물체 분류를 동시에 처리
- VGG16, ResNet 등의 이미지 분류 모형을 전이 학습
- 중간의 feature map에서 매우 많은 경계 상자를 예측
- 큰 물체일 수록 후반부의 feature map이 예측
- CNN 백본 + 트랜스포머 + 앞먹임 신경망(FFN)로 구성
- 이미지를 CNN에 통과시켜 feature map 추출 → 트랜스포머 인코더에 입력
- N개의 물체가 있다고 가정하고, 질의(query)를 디코더에 입력
- 각 물체에 대한 class와 box를 출력
Non-Maximum Suppression (NMS)
- 물체 탐지에서 동일 물체가 여러 번 탐지될 수 있음
- 가장 높은 확률을 가지는 경계 상자를 선택
- 선택된 상자와 일정 비율 이상 겹치는 경계 상자들을 제거