본문 바로가기
인공지능 개발하기/기술 & 논문 리뷰

[논문 리뷰] R-CNN(Rich feature hierarchies for accurate object detection and semanti

by 선의공 2024. 5. 9.

 
 

논문:
https://arxiv.org/pdf/1311.2524
 
 
이번 포스팅에서는 Object Detection의 기초가 되는 논문인
R-CNN 
(Rich feature hierarchies for accurate object detection and semantic segmentation)에 대한 
논문을 리뷰하겠습니다.
 
 
해당글과 
https://medium.com/ml-research-lab/what-is-object-detection-51f9d872ece7

What is Object Detection?

Computer Vision Object detection Series…!!!

medium.com

위키독스를 참조했습니다.
https://wikidocs.net/148633

1) R-CNN

![](https://wikidocs.net/images/page/136494/RCNN2.png) ![](https://wikidocs.net/images/pag…

wikidocs.net


 

Classification(객체 분류) 과 Localization(객체 위치식별)

Object Detection은 보통 Classification과 Localization의 작업으로 진행됩니다.
Classification은 객체가 어떤건지 찾아내는 작업,
Localization은 객체가 어디에 있는지 찾아내는 작업입니다.
 

위 사진에서 객체가 고양이라는 것을 찾아내는 것이 Classification, 
객체가 어디 위치하는지 찾아 바운딩박스를 생성하는게 Localization 입니다.


1- Stage Detector 와 2-Stage Detector

 

출처: https://medium.com/@kattarajesh2001/object-detection-part-2-two-stage-detectors-r-cnn-fast-r-cnn-faster-r-cnn-026e5fac5dd0

 
Object Detector에는 1-Stage Detector, 2-Stage Detector  모델이 존재합니다.
1-Stage Detector는 위에서 말한 Classification과 Localization을 동시에 진행합니다.
앞서 리뷰한 Yolo가 1-Stage Detector에 해당됩니다.
 
R-CNN은 Classification과 Localization을 순차적으로 진행하는
2-Stage Detector에 해당하는 모델입니다.
 


 

R-CNN 

 

 
R-CNN의 아키텍처입니다.
Input image가 입력되면 Region Proposal을 거치게 됩니다.
이후 warping을 거쳐 동일한 사이즈의 이미지로 만들고
CNN을 이용해서 고정된 벡터를 추출합니다.
이때 특징적인 값을 추출되며 이 값은 SVM Classification 을 거쳐 classification됩니다.
그리고 Localization 문제 해결을 위해 bounding box Regressor을 거치게 되는 구조입니다.
 


 

1.  Region Proposal(영역 추정)

 
obejct Detection에서
물체가 있을 것 같다고 추론하며 위치를 찾아주는 방식입니다.
 
기존에는 아래와 같은 Sliding window 방식으로 물체의 위치를 찾아주는 방식을 사용해왔습니다.
슬라이딩 윈도우는 다양한 윈도우를 구성하며, 이미지에서 이동시켜가면서 객체가 있을 법한 위치 참조하는 방식입니다.
하지만 이 방식은 시간이 오래 걸린다는 단점이 있었습니다.
그래서 객체가 있을 만한 후보 영역을 미리 찾아주는 Region Proposal 방식이 제안되었습니다.
 

출처: https://developer-lionhong.tistory.com/35

 
 
 

1-1. Selective search

 
R-CNN에서는 Region Proposal에 Selective search 방식을 사용합니다.
물체가 있을법한 2000개의 바운딩 박스를 추출해서 잘라내고 Region의 유사도를 구합니다.

 

Regions Proposal는 color(색상), texture(질감), size(크기), fill(서로 다른 박스 간의 차이) 특징을 이용해서
non-object-based segmentation을 진행합니다. 
이후 Botton-up방식을 통해 small segmented areas에 대한 유사도를 구하면서
이후 유사도가 높은 것부터 차례대로 merge 해서 
2000개의 Bounding box 영역을 만들어 잘라내
ROI(Regions Of Interest)을 얻어냅니다.

 


 

2. Warp

 
CNN에 넣기 전에 ROI들을 고정된 사이즈로 바꿔줍니다.
사이즈는 Conv Layer Network인 AlexNet의 입력 사이즈인 227x227입니다.
이때 R-CNN의 단점이 나오는데 원본 이미지의 비율이나 고려하지않아
이미지 정보가 왜곡됩니다.
 


 

3. CNN

 
논문에서는 ImageNet데이터셋으로 pre-trained된 CNN 구조를 통해 
pascal voc 데이터셋을 사용해서 fine-tuning을 진행했다고 합니다.
fine-tuning은 pascal voc 클래스의 개수인 20개에 오브젝트가 없는 배경 클래스 1개를 추가해서
총 21개의 클래스로 훈련을 진행합니다.
해당 모델은 4096 차원의 feature vector를 추출해냅니다.
 


 

4. SVM Classification
 

3.에서 뽑아낸 feature vector를 SVM Classification의 입력으로 넣어줍니다.
저자는 논문에서는 클래스 분류시 softmax를 사용하지 않았는데 
그 이유는 pascal voc 데이터셋을 기준으로 성능이 좋지 않아서라고 합니다.
대신에 class별로 나눈 데이터를 SVM Classification에 넣어서 분류를 진행합니다.
 


 

5. Bounding box Regressor

 
이후 Bounding Box Regressor를 통해 Localization에 이용합니다. 

Selective search로 만들어낸 bounding box는 정확하지 않아
Object 부분을 정확히 감싸도록 보완이 필요합니다.
 
Regressor에 넣기 전에 NMS(Non Maximun Supression)를 거쳐
겹치는 바운딩박스의 제거를 해준다고 합니다.
 
Regressor의 작동 방식을 설명하겠습니다.
Regressor의 Input값은 n개의 (x,y,w,h) element 입니다.

 
P는 선택된 바운딩 박스이며
G는 Grounding truth를 나타냅니다.
Regressor는 P를 G에 최대한 맞추도록 학습합니다.
 

왼쪽 함수(1,2,3,4) 먼저 살펴보겠습니다.
G와 최대한 가까워질 변수인 hat G를 생성해줍니다.
dx, dy, dw, dh는 학습 파라미터를 나타냅니다.
 
hat G를 G로, d를 t로 치환해서 t에 대한 값으로 나타내면 우측(6,7,8,9)의 함수가 됩니다.
5번은 해당 값들을 이용해 t와 d의 loss를 줄여가나며 학습합니다.
 


 

6. RCNN 의 단점

RCNN은 아래의 단점이 있습니다.
 
1. wrap 과정 시에 image 정보가 손실됩니다.
 
2. 학습이 3단계 (conv fine tuning, SVM classification, bounding box regressor)이므로 
시간이 오래걸립니다. 또한 메모리가 많이 사용됩니다.
 
3. end to end 방식으로 학습할 수 없어 최적의 성능을 얻기가 힘듭니다.
RCNN의 각 단계는 별도로 학습됩니다.
feature map을 뽑아내는 모델은 CNN이지만
SVM은 NN이 아니므로 end-to-end 방식으로 학습할 수 없는 모델입니다.
(역전파 알고리즘을 사용할 수 없어 네트워크 전체를 한 번에 학습할 수 없습니다.)