안녕하세요. 후니대디입니다.
이번 포스팅에서는 Object Detection의 발전과정 및 개요에 대해 키워드 중심으로 전체적인 맥락을 살펴보도록 하겠습니다.
Definition
우선 정의 부터 살펴보자면, Classification/ Localization/ Detection/ Segmentation으로 구분하여 비교해보겠습니다.
- Classification : 뜻 그대로 이 사진이 개인지, 고양인지 분류하는 것을 뜻합니다. 정확하게 Object가 사진에서 어디에 있는지는 중요하지 않습니다.
- Localizaion : 단 하나의 Object의 위치를 Bounding Box로 지정하여 찾는 것을 뜻합니다.
- Object Detection : 여러개의 Object들에 대해 위치를 BBox로 지정하여 찾습니다.
- Segmentation : Pixel-wised 단위로 detction을 수행합니다.
그림으로 나타내보면 아래와 같이 나타낼수 있을 것 같습니다.
Object Detection의 전체적인 architecture는 아래와 같습니다. BackBone단계에서 ResNet이나 AlexNet과 같은 CNN model을 통해 feature를 추출합니다. 그 다음 Neck부분에서는 FPN을 통해 작은 object도 detection할 수 있도록 합니다. 마지막으로 Head부분에서는 실질적인 classification, bbox regression을 진행합니다.
overview
Object Detection in 20 Years라는 제목의 논문으로 부터 스크래치한 사진입니다. AlexNet을 기점으로 Learning Base의 붐이 생겼다고해도 과언이 아닙니다. 이 후 RCNN계열의 Two-Stage, 유명한 Yolo의 One-Stage 계열로 나뉘게 됩니다.
Deep Learning을 이용한 Object Detection은 크게 1-stage Detector와 2-stage Detector로 나눌 수 있습니다.
1-stage는 localization문제와 classification문제를 동시에 해결하는 방법이고 대표적으로 R-CNN계열이 있습니다.
2-stage는 localization문제와 classification문제를 따로 해결하는 방법이고 대표적으로 Yolo계열이 있습니다.
가운데 수평 화살표를 기준으로 아래쪽 논문들이 2-stage Detector 논문들이고,
위쪽 논문들이 1-stage Detector 논문들입니다.
Localization
Object Localization은 생각보다 매우 어렵습니다. 그래서 convention한 방법중 템플릿매칭이라는 방법이 있는데, 이 매칭방법은 Sliding Window방식으로 Localization을 수행합니다.
sliding window방식은 여러 문제점이 있는데, 우선 수행 시간이 오래 걸리고 Scale문제에 자유로울수 없습니다.
이 후 나온것이 Region Proposal인데요 Object가 있는 만한 곳을 제안해주는 모듈입니다.
참고로 Region Proposal의 방법도 시간이 지나면서 발전하게 되었는데요. RCNN에서는 selective search의 방법을 사용합니다. 유사도가 비슷한 segment들을 grouping하는 방법인데요. 자세한 건 아래의 논문을 참고하세요.
IoU
다음으로 살펴볼 Basic concept은 IoU입니다. Intersection over Union의 줄임말로 Ground Truth와 예측한 BBox가 얼마나 겹치느냐를 나타내는 지표입니다. 즉 클수록 정확하다고 볼 수 있습니다.
NMS
Non Max Suppression의 줄임말 입니다.
NMS를 하는 이유는 Object가 있는 부변에 많은 BBox가 형성이 됩니다. NMS를 통해 이 중 가장 적합한 BBox를 선택하게 됩니다.
Metric
성능 평가 방법은 매우 중요하기도 하고 다양합니다. 기본적인 것들 먼저 알아보자면,
Precision(정밀도) 과 Recall(재현율) 개념이 있습니다.
- 정밀도는 예측을 Positive로 한 대상중 실제로 Positive한 데이터의 비율입니다.
- 재현율은 실제값이 Positive인 대상 중에 실제 값이 Positive인 데이터의 비율입니다.
식으로 나타내면
정밀도 = TP / (FP+TP)
재현율 = TP / (FN+TP)
Precision과 Recall은 서로 반대대는 성격을 가집니다. 예컨데 Threshold를 크게 하면 높은 score를 얻은 BBox만 필터링되어서 정밀도는 높아지지만 재현율은 낮아집니다. Threshold를 낮게하면 반대로 재현율이 높아지고 정밀도가 낮아지겠죠. 이러한 특성 때문에 본인의 도메인에 맞게 어느 metric을 중요시 할 건지 판단하고 Threshold를 잡는 것이 중요합니다.
AP는 이러한 정밀도와 재현율을 confidence(Threshold)의 변화마다 그래프화하여 아래의 면적을 계산한 값입니다. mAP는 여러 Object의 AP를 평균한 값이구요. 자세한 metric방법들은 추후에 한번 다루도록 하겠습니다.
이상으로 기본적인 개념을 살펴보았습니다. 이어진 포스팅에 구체적인 모델에 대해 살펴보겠습니다.