이번 포스팅을 시작으로 컴퓨터 비전 분야의 핵심 기술 중 하나인 Object Detection(객체 탐지)에 대해 시리즈로 다루어보려고 한다.
딥러닝을 활용한 이미지 인식 기술은 하루가 다르게 발전하고 있다. 앞으로 이 시리즈를 통해 딥러닝 기반 Object Detection의 역사와 핵심 모델들을 하나씩 파헤쳐 볼 예정이다.
간단히 설명하자면, Object Detection은 이미지나 영상 속에서 "어떤 객체가 어디에 있는지"를 찾아내는 기술이다.
비슷한 개념인 Image classification, localization, obect detection을 비교해보자.

즉, Object Detection은 Classification과 Localization이 결합된 형태이며, 보통 한 이미지 내의 '다수의 객체'와 '위치 정보'를 찾아내는 복합적인 작업이다.
Object Detection 논문이나 자료를 읽기 위해 꼭 알아두어야 할 기본 개념들이 있다. 다음 포스팅에서 다룰 R-CNN 모델들과 YOLO를 이해하기 위한 필수 용어들이다.

Confidence Score (신뢰도 점수) : Bounding Box 안에 객체가 있을 확률을 의미한다. 아래 이미지에서는 Cat Box에는 고양이가 있을 확률이 98%, Fluffball Box에는 Fluffball가 있을 확률이 65%로 나타난다.

Conditional Class Probability (조건부 클래스 확률) : 이미지 안에서 어떤 객체가 특정 클래스에 속할 확률을 의미한다.
예) 객체가 있다고 할 때:
NMS (Non-Maximum Suppression) : 하나의 객체에 여러 개의 Bounding Box가 겹쳐서 예측되는 현상을 방지하기 위한 기법이다. 여러 박스 중 가장 Confidence Score가 높은 박스 하나만 남기고, 나머지 겹치는 박스들은 제거(Suppression)하여 최종 결과를 깔끔하게 만들어준다. 
IoU (Intersection over Union) : 모델이 예측한 값과 실제 값(Ground Truth)이 얼마나 일치하는지를 평가하는 지표이다. IoU 값이 1에 가까울수록 예측을 잘 했다고 판단할 수 있다.

Region Proposal : 객체가 있을 것 같은 영역을 미리 찾아내어 그 영역 내에서만 객체를 찾는 방식
이 알고리즘은 기존의 Sliding window방식의 비효율성을 극복하기 위한 것으로, 초기 R-CNN에서는 Selective Search 알고리즘을 사용하였다.
Sliding window : 이미지에서 물체를 찾기 위해 다양한 크기와 비율의 window를 이동시키며 전체 영역을 탐색하는 방식
Selective search : 이미지를 비슷한 영역끼리 합쳐가면서 객체가 있을만한 영역을 찾는 알고리즘
RoI (Region of Interest) : R-CNN에서 region proposal 알고리즘을 통해 생성된 후보 영역들을 RoI(Region of Interest)라고 하며, 모델이 실제로 처리하는 입력 영역을 의미한다.
Ground truth : 지도학습에서 input 데이터와 정답인 label을 이용하여 학습하는데, 이때 신경망 모델이 예측한 값이 아닌 실제 정답 label을 ground truth 라고 한다.
Object Detection 알고리즘은 작동 방식에 따라 1-Stage Detector와 2-Stage Detector로 나뉜다.
동작 방식: 객체가 있을 만한 위치를 먼저 찾고(Region Proposal), 그 영역에 대해 객체의 종류를 분류(Classification)하는 두 단계를 거친다.
특징: 정확도는 매우 높지만, 두 단계를 거쳐야 하므로 속도가 상대적으로 느리다.
대표 모델: R-CNN, Fast R-CNN, Faster R-CNN
동작 방식: 위치를 찾는 작업과 객체를 분류하는 작업을 동시에 한 번에 처리한다.
특징: 매우 빠른 처리 속도를 자랑하여 실시간(Real-time) 탐지에 적합하다. 초기에는 2-Stage에 비해 정확도가 낮았으나, 발전을 거듭하며 그 격차를 거의 좁혔다.
대표 모델: YOLO, SSD
이번 포스팅에서는 Object Detection의 기본 개념과 평가 지표, 그리고 크게 두 갈래로 나뉘는 모델의 흐름을 가볍게 살펴보았다.
이러한 배경지식을 바탕으로, 다음 포스팅에서는 본격적으로 딥러닝 기반 Object Detection의 물꼬를 튼 기념비적인 모델, R-CNN에 대해 자세히 알아보겠습니다.
어떻게 무식하지만 확실한 방법으로 객체를 찾아냈는지, 다음 글에서 확인해 보세요!