[Yongggg's] Region-based Convolutional Networks for Accurate Object Detection and Segmentation (R-CNN)
안녕하세요! 오늘은 딥러닝을 이용한 Object Detection(OD)와 Segmentation 분야의 가장 근본이 되는 논문을 소개하려고 합니다.
이 내용은 Rich feature hierarchies for accurate object detection and segmentation Tech report (v5), Region-based Convolutonal Networks for Accurate Object Detection and Segmentation 논문을 요약했고 고려대학교 김승룡 교수님의 강의를 참고했습니다.
1. 목적
Object Detection의 개념을 알아보기 전에, Localization을 짚어보자.
1.1. Localization
Localization 이란 물체가 존재하는 곳을 Bounding Box로 나타내는 것으로 우리가 찾고자 하는 물체가 어디에 있는지 표시하는 것이다.
여기서 말하는 Localization은 영상에서 같은 물체가 여러개 있어도 하나의 물체로 인식하는 개념이다.
ex) 강아지 3마리 → 통째로 강아지 무리에 Bounding Box가 그려지지만, 개별 강아지 (강아지 1, 강아지 2, 강아지 3)를 구분하는 Bounding Box가 그려지는 것은 아니다. |
대부분 Single object를 찾는 Task에 많이 사용된다.
1.2. Object Detection
Object Detection (OD)는 위의 Localization 이 구분해 내지 못하는 물체들을 모두 구분해 낼 수 있다.
위의 Localization의 강아지 예시에서 각기 다른 강아지들을 Bounding Box로 찾아낼 수 있다.
Multiple objects가 있는 Task에 많이 사용된다.
위의 설명을 그림으로 나타내면 [그림 1]과 같다.
R-CNN의 목적은 [그림 1]의 우측 그림과 같이 Object detection을 하기 위함이다.
2. 개념
RCNN 모델의 기본 개념은 주어지는 영상(사진, 이미지)를 Input으로 받아 그 이미지 안에 물체(Object)가 어디에 있는지, 어떤 물체인지를 찾는 모델이다.
3. 원리
R-CNN의 영상(사진, 이미지) 처리 과정은 [그림 2]와 같다.
이러한 과정은 Per-Image computation 단계와 Per-region computation 단계로 나눌 수 있다.
3.1. per-image computation
Per-image computation은 Region of Interest (ROI)를 추출하는 과정이다. 논문에서는 ROI를 추출하기 위해 Selective search 알고리즘을 사용했고 약 2000개의 ROI를 추출했다.
(이외에도 Edge Boxes, MCG, ... 방법 등이 있다.)
Selective Search란, Computer Vision 분야의 Super pixel 개념을 사용하여 물체의 Bounding Box를 찾는 알고리즘이다. [그림 3]의 1행은 Super pixel을 나타내고 2행은 그것을 이용하여 Bounding Box를 생성한 것이다.
3.2. per-region computation
per-region computation은 위의 per-image computation과정에서 생성된 ROI에 대하여 4가지 과정을 거친다.
- Crop & Warp.
- Extract a feature vector using ConvNet.
- Linear Classification.
- Box Regression.
이를 풀어서 설명하면, per-image computation에서 나온 Bounding Box들을 하나씩 Crop 한 후, Warping 하여 고정 크기의 영상(사진, 이미지)으로 바꾼다. (이는, CNN에서 추출한 정보가 고정길이가 나와야하기 때문에, 이미지 자체도 고정 크기의 이미지로 바꿔주는 작업이다.)
그 후, Convolution Neural Network를 이용하여 고정길이의 feature vector를 추출한다. 이 Feature vector를 가지고 Linear Classification을 수행한다. 논문에서는 Support Vector Machine (SVM)을 이용하여 분류를 진행하였다.
마지막으로 Box Regression은 단순 Selective Search에서 나온 ROI의 좌표값들과 비교하여 loss가 수정되었기 때문에 Localization의 성능이 좋지 않았다고 한다. 위의 SVM의 classification과는 별도로 진행되었다.
4. 정리
위의 과정을 Training Phase와 Testing Phase로 나뉘어 정리하면,
Training Phase
- Region Proposal (ROI) 추출.
- Ground Truth와 ROI의 Intersection of Union (IoU)를 비교하여 일정 비율 이상인 경우만 per-region computation 과정을 진행.
- Extract a feature vector using CNN.
- Linear Classification.
- Box Regression.
Testing Phase
- Region Proposal (ROI) 추출.
- 모든 ROI에 대하여 Crop & Warping을 진행.
- Extract a feature vector using CNN.
- 각 클래스에 대해 미리 훈련된 SVM을 사용하여 추출된 각 feature vector의 점수를 매김.
- 주어진 이미지 안의 scored regions에 대해, greedy non-maximum suppression(NMS)을 적용함. (같은 물체에 여러개의 바운딩 박스를 합치기도 하고 선택해주기도 하는 알고리즘)
- 각 ROI와 NMS를 적용한 좌표와의 IoU를 구하여 임계값 이상이면, 그 물체를 Detection 및 Classification함.
Training Phase와 Testing Phase에서 언급된 IoU는 다음과 같은 방법으로 구할 수 있습니다.
IoU = $ 교집합 \over 합집합 $으로 이해할 수 있다.
또, Object Detection에서 많은 수의 Box들이 겹치기 때문에 한 물체에 여러개의 Bounding Box가 생기는 문제가 있다. 따라서 NMS는 중복되는 Bounding Box를 제거하기위해 사용된다. 이를 그림으로 표현하면, [그림 5]와 같다. Prediction한 Box 중에서 RoI Score로 정렬한 뒤, 높은 RoI Score를 가진 Box와 overlapping된 다른 Box들을 지워 나가는 방식으로 반복한다. 이 반복을 통해 Box Overlapping이 일어나지 않으면서 RoI가 높은 Box들만 남도록 하는 방식이다. (overlapping의 threshold는 0.6에서 0.9정도를 사용한다.)
이렇게 R-CNN의 단계별 순서까지 살펴보았습니다. 지금 생각해보면, 당연하게 받아들이는 알고리즘을 최초로 생각하고 구현했을 논문 저자분들이 너무 존경스럽습니다ㅠ!
내용의 오류나 수정사항이 있으면 댓글 남겨주시면 감사하겠습니다!^^