[2014] R-CNN

Seong Woong Kim·2023년 4월 25일
0

Paper Review

목록 보기
3/7

논문 제목 : Rich feature hierarchies for accurate object detection and semantic segmentation
저자 : Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik
연도 : 2014




1. Background


1.1 Object Detection

Object Detection은 다수의 사물이 존재하는 상황에서 각 사물의 위치와 클래스를 찾는 작업이다.

Classficiation : Single object에 대해서 object의 클래스를 분류하는 문제이다.

Classification + Localization : Single object에 대해서 object의 위치를 bounding box로 찾고 (Localization) + 클래스를 분류하는 문제이다. (Classification)

Object Detection : Multiple objects에서 각각의 object에 대해 Classification + Localization을 수행하는 것이다.

Segmentation : Object Detection과 유사하지만, 다른점은 object의 위치를 bounding box가 아닌 픽셀 단위로 찾는 것이다.


1-2. Two Object Detection Methods

Object detection에는 1-stage detector, 2-stage detector가 있다.

2 stage detector

위 그림은 2-stage detector의 동작과정이다.

Selective search, Region proposal network와 같은 알고리즘을

및 네트워크를 통해 object가 있을만한 영역을 우선 뽑아낸다.

이 영역을 RoI(Region of Interest)라고 한다.

이런 영역들을 우선 뽑아내고 나면 각 영역들을 convolution network를 통해

classification, box regression(localization)을 수행한다.

물체의 위치를 찾는 문제(localization)과 분류(Classification)문제를 순차적으로 해결하는 방식이다.


1 Stage Detector

1-stage는 2-stage와 다르게 RoI영역을 먼저 추출하지 않고 전체 image에 대해서

convolution network로 classification, box regression(localization)을 수행한다.

당연히 특정 object 하나만 담고있는 RoI에서 classification, localization을 수행하는

것보다 여러 noise 즉, 여러 object가 섞여있는 전체 image에서 이를 수행하는게 더 정확도는 떨어진다.

그러나 간단하고 쉬운만큼 속도가 빠르다는 장점이 있다.

이 방식은 물체의 위치를 찾는 문제(localization)과 분류(classification) 문제를 한 번에 해결하는 방식이다.




2. Introduction


2-1. Region Proposal

Region Proposal은 쉽게 말해서 객체가 있을 만한 영역들의 후보군들을 여러개 추출해주는 것을 의미한다.

대부분 이미지들의 모든 픽셀들이 객체를 설명하고 있진 않다. 즉, 어떤 부분들의 배경 픽셀들이 있고, 어떤 부분은 객체를 나타내는 픽셀들이 있다.

그런데 객체를 탐지하기 위해서 배경의 픽셀들은 사실상 필요가 없다.

따라서 객체들을 나타내는 픽셀들만을 찾고 탐지하기 위해 Region Proposal이 객체가 있을법한 픽셀의 영역들을 대거 추출해 추천해주는 방식이라고 볼 수 있다.

Region Proposal에는 크게 2가지 방법이 있다. Sliding WindowRegion Proposal이다.


Sliding Window

위 gif처럼 특정한 모양의 윈도우(녹색)를 이미지 왼쪽 상단에서 오른쪽 하단으로

점진적으로 이동하면서 객체가 있을 만한 Region들을 Proposal(제안)해주는 것이다.

물론 특정한 모양으로 윈도우만을 이용할 수 있지만 응용하여 **각기 다른 모양의

윈도우를 각각 슬라이딩하거나 아니면 윈도우 크기를 고정하되 탐지할 이미지

크기를 다양하게 스케일링해서 Region Proposal을 수행하기도 한다.


하지만 슬라이딩 윈도우는 치명적인 단점이 있다.

  • 바로 객체가 없는 지역도 슬라이딩을 무조건 하기 때문에 슬라이딩 윈도우를 하는 데 시간이 많이 걸릴 뿐더러 객체를 잘 탐지할 확률도 낮아지게 된다.

슬라이딩 윈도우 기법의 한계점을 극복하기 위해 제안된 방법

일종의 알고리즘으로 이미지 픽셀의 컬러, 무늬, 크기, 형태에 따라 유사한 Region을 계층적 그룹핑 방법으로 계산하는 방식

  • 즉, 객체가 들어있을만한 여러 개의 바운딩 박스를 만들고 반복적으로 Selective Search 알고리즘을 이용해 최적의 바운딩 박스를 선정해 Region Proposal을 해주는 것

가장 왼쪽인 인풋 이미지를 Selective Search를 수행하면 오른쪽 그림처럼 구분이 객체가 있는 구역을 기준으로 잘 분할되는 것을 볼 수 있다.

Selective Search는 초기에 픽셀 개별로 Segmentation된 부분을 유사도에 따라 Segmentation 그룹핑을 계속 반복한다.

  • 따라서, Selective Search는 위 그림에서 'After more iterations'에 해당하는 부분을 Region Proposal 해주게 된다.




3. R-CNN


3-1. Introduction

💡 R-CNN은 'Regions with Convolutional Neuron Networks features'의 약자로, 즉 설정한 Region을 CNN의 feature(입력값)로 활용하여 Object Detection을 수행하는 신경망이라는 의미를 담고 있다. 💡

R-CNN은 Image classification을 수행하는 CNNlocalization을 위한 regional proposal 알고리즘을 연결한 Two Stage 모델이다.


R-CNN은 2014년에 CNN을 Object Detection 분야에 최초로 적용시킨 모델이며

CNN을 이용한 검출 방식이 Classification 뿐만 아닌 Object Detection 분야에도

높은 수준의 성능을 이끌어 낼 수 있다는 것을 보여준 의미 있는 모델이다.


3-2. Network Architecture

💡 R-CNN 모델은 총 3가지의 모듈로 구성돼있다. 💡

1. Region Proposal

  • Object가 있을법한 영역을 찾는 모듈 (기존의 Sliding window방식의 비효율성 극복)
    2. CNN
  • 각각의 영역으로부터 고정된 크기의 Feature Vector를 뽑아낸다.
    • 고정된 크기의 output을 얻기위해 warp 작업을 통해 크기를 찌그러뜨려서 동일 input size로 만들고 CNN에 넣는다.
      3. SVM
  • classification을 위한 선형 지도학습 모델

    왜 Classifier로 Softmax를 쓰지 않고 SVM을 사용했을까?

    • CNN fine-tuning을 위한 학습 데이터가 시기상 많지 않아서 Softmax를 적용시키면 오히려 성능이 낮아져서 SVM을 사용했다.)
      3-1. Bounding Box Regression

3가지 모듈을 활용한 R-CNN 프로세스는 아래와 같다.


Region Proposal

  1. Selective search 알고리즘을 통해 2000개의 region proposal이 생성됨

  2. 이들을 모두 CNN에 넣기 전에 같은 사이즈로 warp시켜야한다.

  • FC Layer의 사이즈가 명시적으로 고정되어서 CNN output 사이즈를 동일하게 만들기 위함이다.
  • CNN이 ImageNet Pretrained AlexNet을 사용 ---> 227x227로 고정
  • 비율은 고려하지 않고 일률적으로 같은 사이즈로 만들기 때문에 이 과정에서 input image가 왜곡되고 정보가 소실되는 현상이 발생

CNN (ImageNet Pretrained AlexNet)

  1. Warp작업을 통해 region proposal 모두 227x227 크기로 되면 CNN 모델에 던짐

  2. 7x7x512 크기의 feature map이 생성됨 (최종 사이즈가 정해져있음)

  3. 최종적으로 CNN을 거쳐 각각의 region proposal로부터 4096-dimentional feature vector를 추출

  4. 이를 통해 고정 길이의 Feature Vector를 만들어낸다.


SVM for 'clasification'

💡 SVM 💡

SVM은 기계학습 분야에서 패턴 인식이나 자료 분석을 위해서 쓰는 지도 학습 모델이고 주로 분류나 회귀 분석을 위해 사용한다.

간략하게 설명하자면, 아래 그림에서 동그라미와 세모가 모두 벡터들인데, 임의의 두 서포트벡터를 연결한 직선과, 그 직선을 그대로 평행이동하였을 때 처음 다른 벡터와 접하는 시점에서의 직선과의 거리가 최대가 될 때의 값들을 구하는 기법이다.

즉, SVM은 CNN으로부터 추출된 각각의 feature vector들의 점수를 class별로 매기고, 객체인지 아닌지,객체라면 어떤 객체인지 등을 판별하는 역할을 하는 Classifier이다.


  1. CNN모델로부터 feature가 추출되면 Linear SVM을 통해 classification을 진행
  • Classifier로 softmax보다 SVM이 더 좋은 성능을 보였기 때문에 SVM을 채택
  • 그냥 CNN Classifier를 쓰는 것이 SVM을 썼을 때보다 mAP 성능이 4% 정도 낮아졌기 때문이라고 함
  1. SVM Classification을 한 후의 2000여개의 bounding box들은 어떤 물체일 확률 값을 갖게 됨.

Bounding Box 'Regression'

Selective Search로 찾은 Bounding Box 위치가 부정확하기에 물체를 정확히 감싸도록 조정해주는 Bounding Box Regression을 시행

  • bounding box 위치 선정을 교정하고 모델의 성능을 높이기 위한 과정

  • Ground Truth, G와 초기 Bounding Box, P의 위치는 중심점 좌표 (x,y)와 box의 크기 (width, height)를 결합하여 표시

P(x,y,w,h)가 input으로 들어왔을 때 이를 이동시켜 G를 잘 예측하는 것이 목표

dx, dy, exp(dw), exp(dh)를 각각 곱하여 예측치 G_hat을 만듦

  • d 함수PG_hat으로 이동시키기 위해서 필요한 이동량을 의미
  • BBR에서 학습시키는 것은 이 d함수입니다.
  • t 함수PG로 이동시키기 위해서 필요한 이동량을 의미하며 d함수와 형태는 동일합니다.

Loss function은 t 함수와 d 함수의 MSE + L2 normalization을 추가한 형태




4. Limit


1. 수행 시간이 '매우' 느림

  • selective search로 2000개의 region proposal을 뽑고 각 영역마다 CNN을 수행하기 때문에 CNN 연산 * 2000 만큼의 시간이 걸려 training / testing 시간이 오래 걸립니다.

2. 이미지의 왜곡과 정보 손실

  • AlexNet을 그대로 사용하기위해 image를 강제로 변형 시켜야 합니다. 그래서 warping 하는 과정에서 input 이미지가 왜곡되고 정보 손실이 발생합니다.

3. end-to-end 훈련이 불가능

  • CNN, SVM, Bounding Box Regression 총 세가지의 모델이 multi-stage pipelines으로 진행돼서 한 번에 학습되지 않습니다.
    • 각 region proposal 에 대해 ConvNet forward pass를 실행할때 연산을 공유하지 않기에 Computation sharing이 일어나지 않습니다.

따라서 SVM, bounding box regression에서 학습한 결과가 CNN을 업데이트 시키지 못합니다

  • Back propagation이 안되므로 CNN은 업데이트 되지 않습니다.

💡 위 1번과 3번, 이 두가지 문제를 RoI pooling으로 해결한 Fast R-CNN이 제안됩니다." 💡




📔 References

  1. https://arxiv.org/abs/1311.2524
  2. https://ganghee-lee.tistory.com/35
  3. https://wikidocs.net/148633
  4. https://velog.io/@whiteamericano/R-CNN-%EC%9D%84-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90#r-cnn%EC%9D%98-%ED%95%9C%EA%B3%84
profile
성장과 연구하는 자세를 추구하는 AI 연구개발자

0개의 댓글