Object Detection 시리즈 : R-CNN 모델에 대한 정리

R-CNN 개요

  • R-CNN(Regions with Convolutional Neural Networks)은 설정한 Region(지역)을 CNN의 feature(입력값)으로 활용하여 Object Detection을 수행하는 신경망.

  • 객체의 위치를 찾고(Regoin proposals), CNN기반 class를 분류(Classification)를 순차적으로 진행하는 대표적인 2-stage detector 모델로서, CVPR 2014에서 소개되며 초기 딥러닝 기반의 Object Detection 발전에 가장 많은 영향을 미침.

  • R-CNN 논문의 초기 버전은 Overfeat보다 한달 빠른 2013년 11월에 업로드 되어 최초의 CNN기반 Object Detection 모델이라 할 수 있다.

  • OverFeat의 Sliding Window 방법과 달리, R-CNN은 Selective Search를 사용해 이미지에서 제안된 후보 영역(Region Proposals)을 먼저 추출한 뒤, CNN을 활용해 각 영역을 분류하고 바운딩 박스를 조정하는 방법.

  • paper: Rich feature hierarchies for accurate object detection and semantic segmentation

Key-Points

  1. Selective search 알고리즘을 통해 객체가 있을 법한 위치인 후보 영역(region proposal)을 2000개 추출하여, 각각을 227x227 크기로 리사이즈함.
  2. 리사이즈된 모든 region proposal을 Pre-trained Alex Net 에 입력하여 2000x4096 크기의 feature vector를 추출함.
  3. 추출된 feature vector를 linear SVM 모델과 Bounding box regressor 모델에 입력하여 각각 confidence score와 조정된 bounding box 좌표를 얻는다.
  4. 마지막으로 NMS 알고리즘을 적용하여 최적의 bounding box를 출력함.

방법

+full

  • R-CNN 모델은 구체적인 객체의 위치를 추정하기 앞서 Selective search 알고리즘을 통해 객체가 있을법할 위치인 후보 영역(Region proposal) 을 추출.
  • Selective search 알고리즘은 색상, 무늬, 명암 등의 다양한 기준으로 픽셀을 grouping하고, 점차 통합시켜 객체가 있을법한 위치를 bounding box 형태로 추천함.
  • R-CNN 에서는 단일 이미지에서 2000개의 후보 영역을 추출한 뒤, CNN 모델에 입력하기 위해 227x227 크기로 리사이즈(resize) 시킨다.
  • 저자는 후보 영역 주변 16픽셀을 포함하여 가로 세로 비율을 고려하지 않고 resize 시켰다고 함.

Selectivce search paper : Selective search for object recognition. IJCV, 2013

2. Feature extraction by Fine tuned AlexNet

  • 2000개의 후보영역을 Pre-trainingAlexNet 에 입력하여 2000(=후보 영역의 수)x4096(=feature vector의 차원) 크기의 feature vector를 추출한다.
  • Pre-trained AlexNet은 ImageNet 데이터셋을 이용하여 사전훈련된 모델이고, 목표하는 도메인에 맞게 fine tuning하는 방식을 추천함.

Pre-trained AlexNet

+full

  • R-CNN 모델이 추론 시 입력으로 들어온 region proposal은 객체일 수도, 배경일 수도 있다. 따라서 CNN 모델을 fine tuning 할 때 예측하려는 객체의 수가 N개라고 하면, 배경을 추가하여 (N+1)개의 class를 예측하도록 모델을 설계(output=N+1) 해야 하며 객체와 배경을 모두 포함한 학습 데이터를 구성해야함.
  • R-CNN은 PASCAL VOC 데이터셋에 Selective search 알고리즘을 적용하여 후보 영역을 추출하고, 후보 영역과 ground truth box의 IoU 값을 구해 0.5 이상인 경우 positive sample(=객체)로, 0.5 미만인 경우 negative sample(=배경)로 저장함.
  • 이 후, positive sample=32, negative sample=96 으로 mini batch=128를 구성하여 ImageNet으로 사전훈련된 Pre-trained AlexNet에 fine tuning 학습을 진행함.

3. Classification by linear SVM

  • linear SVM 모델은 2000x4096 feature vector를 입력 받아 class를 예측하고 confidence score를 반환함.
  • linear SVM는 특정 클래스에 해당하는지 여부만을 판단하는 이진 분류기(binary classifier) 이기 때문에 N개의 클래스를 예측한다고 할 때, 배경을 포함한 (N+1)개의 독립적인 linear SVM 모델을 학습 시켜야 한다.
  • R-CNN이 Classifier로 Softmax 함수를 쓰지 않고 SVM을 사용한 이유는 VOC2007 데이터셋을 기준으로 Softmax를 사용였을 때 mAP 값이 54.2%에서 50.9%로 하락했다고 함.

Training linear SVM using fine tuned AlexNet

+full

  • 객체와 배경을 모두 학습하기 위해 PASCAL VOC 데이터셋에 Selective search 알고리즘을 적용하여 후보 영역을 추출한다. 이 때, AlexNet을 fine tuning 할 때와 다르게 오직 ground truth box만을 positive sample로, IoU 값이 0.3 미만인 예측 bounding box를 negative sample로 저장한다. (테스트 결과 가장 나았음)
  • 위 그림과 같이 positive sample=32, negative sample=96 이 되도록 minibatch=128을 구성하고 fine tuned AlexNet에 입력하여 feature 해 vector를 추출하고, 이를 SVM에 입력하여 학습시킨다.
  • 하나의 SVM 모델은 특정 class의 유무를 판별하기 때문에 output=2가 되며, 학습이 한 차례 끝난 후 hard negative mining 기법을 적용하여 재학습시킨다.

Hard Negative Mining

[그림]

  • Hard Negative Mining이란 모델이 예측에 실패하는 어려운(hard) sample들을 모으는 기법으로, 이 방법을 통해 수집된 데이터를 활용하여 모델을 보다 강건하게 학습시키는 것이 가능해진다.
  • 모델은 주로 Fasle Positive (객체가 아닌데, 객체라 판단함) 오류를 보이며, 이는 객체 탐지 시 객체의 위치에 해당하는 positive sample 보다 배경에 해당하는 negative sample이 훨씬 많은 클래스 불균형(class imbalance)에 의해 발생함.
  • 이러한 문제를 해결하기 위해 모델이 잘못 판단한 False Positive sample을 학습 과정에 추가하여 재학습함으로써 모델을 보다 강건하게 만든다.
  • 학습된 linear SVM에 2000x4096 크기의 feature vector를 입력하면 class와 confidence score를 반환한다. (학습된 SVM 모델은 클래스 개수 만큼 존재함, Fast R-CNN 부터는 softmax를 사용하여 end-to-end 학습함)

4. Bounding Box Regression

  • Selective search로 찾은 Bounding box는 정확하지 않을 수 있기 때문에 box의 좌표를 변환하여 객체의 위치를 세밀하게 조정해주는 Bounding box regressor 모델을 사용한다.
  • Bounding box regressor 모델은 예측된 box 좌표 와 정답 박스 좌표 의 차이가 최소가 되도록 변환하는 를 학습한다.

  • Selective search에 의해 예측된 box 좌표를 , 정답 box 좌표를 라고 하며, 위 그림에서는 가 회색 박스, 가 빨간색 테두리 박스를 나타낸다.
  • 을 regressor 모델이 예측한 박스, 는 모델이 예측한 변환 벡터, 로 변환하는 벡터를 의미함. 따라서, 의 차이를 줄이는 방향으로 학습 하는 것이 목표.
  • 이 때, 모델은 스케일 불변의 변환(Scale invariant Transformation)을 학습하며, width와 height는 지수함수를 이용해 업데이트된다.
  • AlexNet의 5번째 Conv Layer에 Pooling이 적용된 출력()을 Bounding box regressor 모델에 입력 feature로 사용하여 ridge regression을 진행함.
  • 오버피팅과 모델의 일반화 능력을 향상 시키기 위해 L2 Regulatization 항을 추가함.(, )

Training Bounding Box regressor using fine tuned AlexNet

+full

  • PASCAL 데이터셋에 Selective search 알고리즘을 적용하여 얻은 후보 영역을 학습 데이터로 사용한다.
  • 별도의 negative sample은 정의하지 않고, IoU 값이 0.6 이상인 sample을 fine tuned AlexNet에 입력으로 넣어 5번째 Conv Layer에 Pooling이 적용된 출력(feature vector)를 box regressor에 입력하여 학습을 시켰다.
  • box regressor는 feature vector를 입력 받아 조정된 bounding box 좌표값 4개를 반환한다.

5. NMS (Non Maximum Suppression)

  • 최종적으로 linear SVM을 통해 얻은 confidencebox regressor을 통해 얻은 box 좌표를 이용해서 NMS 후처리를 통해 box를 필터링함.
  • (NMS 알고리즘 참고) R-CNN 에서는 Class-Aware NMS (클래스마다 NMS 적용) 방법을 사용하며, 기본적으로 confidence threshold=0.5, IoU threshold=0.3 를 설정하였다.

정리

+full

  • 최종적으로 R-CNN의 흐름은 위 그림과 같다. Object detection을 수행하기 위해 딥러닝 구조를 처음 사용했다는 점에서 의의가 있다.
  • Selective search를 사용하여 이미지 한 장당 2000개의 후보 영역을 추출하다보니 속도가 느리고 AlexNet, SVM, Box regressor 등 3개의 독립적인 네트워크를 사용하므로 학습이 까다롭고 복잡한 구조를 가진다는 단점이 있다.
  • 이후, R-CNN의 단점을 보완한 end-to-end 학습 방식의 Fast R-CNN, Faster R-CNN이 연구되었다.

참고