R-CNN(Regions with Convolutional Neuron Networks)

딥러닝 기반 Object Detection의 근간이 되는 논문

1. Background

Object Detection의 전설적인 논문

Rapid Object Detection using a Boosted Cascade of Simple Features:

  • Haar-like features: Integral image로 수많은 Haar-like feature를 window size에 관계 없이 O(1)로 계산

  • Adaboost: 여러 개의 Haar-like feature들 중 분별력이 높은 feature를 약분류기로 지정 후 이들을 조합하여 강분류기 생성(상대적으로 간단한 강분류기와 복잡한 강분류기들로 나누어짐)

  • Cascade: 강분류기들을 sliding 시키면서 Object일 것 같은 영역에는 더 복잡한 강분류기를 통과시키고 Object가 아닐 확률이 높은 영역에는 skip

SIFT(Scale-Invariant Feature Transform)

Scale invariance

  • DoG(Difference of Gaussian: Pyramid 이미지(i.e., Scale space)를 생성 후 각 scale에 DoG을 계산

  • Keypoint localization: 현재 scale 기준 DoG에서 전/후 scale DoG를 참조해 극소값/극대값으로 초기 keypoint 계산 후 gradient가 일정 값보다 작은 keypoint 제거

Rotation invariance

  • Orientation Assignment: 각 keypoint에 방향 할당

  • Keypoint Descriptor: keypoint 주변의 변화에 대한 경향을 파악하기 위해 keypoint 주변의 영상 패리를 4x4 block으로 분할 후, 16x16 sub-block(i.e., cell) 내 픽셀들의 gradient의 방향(orientation)과 크기(magnitude)에 대한 히스토그램을 계산 후 이를 128차원 벡터로 변환

HOG(Histogram of Oriented Gradient)

  • 64x128 윈도우를 슬라이딩하면서 입력 영상을 block과 cell로 분할

  • 각 cell내 픽셀들의 gradient 방향(orientation)을 계산 후, 이를 기반으로 Local 히스토그램(x축: 0~180도 degree) 생성

  • 히스토그램을 이어붙여 최종 HOG Feature 생성

Overview

  • Felzenszwalb가 제안한 Graph-based Image segmentation으로 작은 크기의 초기 영역들을 설정하고, Hierarchical Grouping Algorithm으로 작은 영역을 큰 영역으로 병합

Graph-Based Image Segmentation

  • 두 영역 C1과 C2가 있을 때, 영역 병합 여부를 아래와 같이 판단

  • 입력 영상에 대해 초기 segmentation 수행 후 인접하는 모든 영역들 간의 유사도 계산

  • Greedy 알고리즘으로 비슷한 영역을 반복적으로 후보 영역들 통합

    • 가장 높은 유사도를 갖는 2개의 영역 병합

    • 병합된 영역에 대해 다시 유사도를 구하고 새롭게 구해진 영역은 리스트에 추가 (color, texture, size, fill 등 4가지 척도로 유사도 계산)

Hierarchical Grouping Algorithm

  • 모든 영역에 대해 유사도를 계산하여 유사도 셋 S(similarity set) 생성

  • S가 공집합이 아닐 때까지 아래 과정들을 반복

    • S에서 가장 큰 유사도 값을 가진 영역 ri, rj 병합

    • ri, rj의 유사도 값은 S로부터 제거

    • 통합된 새로운 영역(rt)과 인접한 영역들에 대해 유사도(St) 계산

    • S와 R에 유사도(St)와 통합된 새로운 영역(rt) 추가

3. Algorithm

Overview

  • Sliding window 방식의 비효율성을 개선하기 위해서, 입력 영상에서 ‘물체가 있을 법한’ 영역을 빠른 속도로 찾아내는 기법

  • Region proposal을 활용하면, sliding window 방식에 비해 search space가 확연하게 줄어들기 때문에 훨씬 빠른 속도로 object detection 수행 가능

    • 1. 입력 이미지로부터 Selective Search를 활용하여 약 2000개 가량의 region proposal을 추출함 (i.e. Bounding Box)

    • 2. 각 region proposal 영역을 이미지로부터 잘라내고(cropping) 동일한 크기로 만든 후(warping), CNN을 활용해 feature 추출

    • 3. 각 region proposal feature에 대한 classification을 SVM(Support Vector Machine)으로 수행

      • SVM은 이후 softmax로 대체됨

    • 4. 사전에 준비한 정답 Bounding Box의 IoU(Intersection over Union) 계산

    • 5. IoU가 특정 값 이상(≥0.5)이 되도록 Bounding Box 크기 조정

      • CNN은 positional invariance로 인해 어느 정도 box가 어긋나도 높은 classification score를 산출하므로, object의 정확한 위치를 잡아내려면 이를 미세 조정(fine-tuning)해 주어야 함

Disadvantages

  • R-CNN은 이미지 1장 당 region proposal의 개수만큼 CNN 연산 필요 (2천개의 CNN를 모두 돌림 → real-time 불가)

    • PASCAL VOC07 학습 데이터 5천장에 Tesla K40으로 약 84시간 소요, 모델 크기도 수백 기가에 달함

    • Prediction 시는 1장의 영상에 수십 초 소요

  • 3개의 모델을 학습하므로 pipeline이 복잡함 (Selective Search, CNN 2천여번, SVM, Regression)

References

Last updated