논문 읽기/Object Detection

[논문 리뷰] R-CNN (2013) 리뷰

AI 꿈나무 2021. 1. 4. 19:06
반응형

 안녕하세요! 2021년이 시작함과 동시에 Object detection 논문을 읽게 되었습니다.

 

 첫 번째로 읽어볼 논문은 R-CNN 'Rich feature hierarchies for accurate object detection and semantic segmentation' 입니다. R-CNN은 region proposals와 CNN이 결합된 Regions with CNN의 약자입니다.

 

 R-CNN이 등장하기 전 HOG와 SHIFT를 활용한 Object detection 성능은 몇년 동안 정체되어 있었습니다.

 

 R-CNN은 이전까지 최고의 성능을 나타낸 기법의 mAP보다 30% 높은 53.3%를 달성하여 detection 분야에 새로운 방향을 제시하게 됩니다. (object detection의 성능 평가 지표는 mAP(mean average precision)입니다.)

 

 mAP에 대한 내용은 여기에서 확인하실 수 있습니다.

 

[Object Detection] mAP(mean Average Precision)을 이해하고 파이토치로 구현하기

 안녕하세요 mAP(mean Average Precision)는 Faster R-CNN, SSD와 같은 object detector의 정확도를 측정하는 유명한 평가지표 입니다.  이번 포스팅에서는 mAP가 무엇인지 알아보고 파이토치로 구현해보도록 하.

deep-learning-study.tistory.com

 

 R-CNN은 두 가지 중요한 아이디어를 결합했습니다.

 

(1) region proposals로 object 위치를 알아내고, 이를 CNN에 입력하여 class를 분류합니다.

(2) Larger data set으로 학습된 pre-trained CNN을 fine-tunning 합니다.

 

1. R-CNN 등장 배경

 2012년 image classification challenge에서 AlexNet이 큰 성공을 보이자 object detection에서도 CNN을 활용한 연구가 진행됩니다. 바로 그 결과물이 R-CNN이며, object detection 분야에 적용하기 위해 region proposals와 CNN을 결합한 모델입니다.

 

 R-CNN 이전에 sliding window detection에 CNN을 적용한 OverFeat model이 존재합니다.

 관심 있는 분은 논문을 읽어보시는 것을 추천드립니다. OverFeat model은 bounding box가 정확하지 않고, 모든 sliding windows에 CNN을 적용하기 때문에 연산량이 많다는 문제점을 갖고 있어 현재 사용하지 않습니다.

 

2. R-CNN 알고리즘 단계

 

 R-CNN이 어떠한 과정으로 object를 탐지하는지 알아보도록 하겠습니다.

 

1. 입력 이미지에 Selective Search 알고리즘을 적용하여 bounding box(region proposal) 2000개를 추출합니다.

2. 추출된 bounding box를 warp(resize)하여 CNN에 입력합니다.

3. fine tunning 되어 있는 pre-trained CNN을 사용하여 bounding box의 4096차원의 특징 벡터를 추출합니다.

4. 추출된 특징 벡터를 SVM을 이용하여 class를 분류합니다.

5. bounding box regression을 적용하여 bounding box의 위치를 조정합니다.

 

 아래 그림은 R-CNN의 흐름이 보기 좋게 나와있는 그림입니다.

 

 

 R-CNN이 위 알고리즘을 수행하기 위해 어떻게 구성되어 있는지 알아보도록 하겠습니다. 

3. R-CNN의 구성

 R-CNN은 3개의 module(region proposal, CNN, SVM classifier)로 이루어져 있습니다.

 각각의 module이 어떤 역할을 수행하는지 살펴보겠습니다.

 

(1) region proposal

 selective search 기법을 사용해서 이미지에서 object의 위치를 추출합니다.

 

 selective search는 다음과 같은 프로세스로 이루어집니다.

 

 1. 이미지의 초기 세그먼트를 정하여, 수많은 region 영역을 생성

 2. greedy 알고리즘을 이용하여 각 region을 기준으로 주변의 유사한 영역을 결합

 3. 결합되어 커진 region을 최종 region proposal로 제안

 

 이미지에 selective search를 적용하면 2000개의 region proposal이 생성되는데, 이들을 CNN의 입력 사이즈(227x227)로 warp(resize) 하여 CNN에 입력합니다. 논문에서는 warp 과정에서 object 주변 16 픽셀도 포함하여 성능을 높였다고 합니다. 

 

(2) CNN

 CNN은 5개의 convulutional layer와 2개의 FC layer를 가진 AlexNet 형태를 사용했습니다. R-CNN은 soft-max layer 대신에 SVM을 사용하기 때문에 2개의 FC layer가 존재합니다.

 

 ILSVRC 2012 데이터 셋으로 미리 학습된 pre-trained CNN 모델을 사용했으며, Object detection을 적용할 dataset으로 fine-tunning 했습니다.

 

 아래는 fine-tunning을 적용한 후와 적용하지 않았을 때의 성능입니다.

 1~3 행은 fine-tunning을 적용하지 않았고, 4~6행은 fine-tunning을 적용한 것입니다.

 성능이 높아진 것을 확인할 수 있습니다.

 

 

(3) SVM classifier

 CNN으로 추출한 4096 차원의 특징 벡터를 SVM으로 분류합니다.

 

 - bounding box regression 

 R-CNN에서는 SVM으로 분류된 bounding box에 bounding box regression을 적용해 주었습니다.

 아래 표는 bounding box regression이 적용된 것과 적용되지 않은 것의 성능차이를 나타낸 표 입니다.

 

 

 성능이 좋아진 것을 확인할 수 있습니다.

 

 bounding box regression이 무엇인지 살펴보겠습니다.

 

 bounding box regression는 SVM을 통해 분류된 bounding box를 ground-truth box와 비슷하게 조정해주는 역할을 합니다. 또한, selective search로 검출된 2000개의 bounding box에 모두 적용하는 것이 아니라, ground-truth box와 IoU(Intersection over Union)가 가장 높은 bounding box를 선택하여 bounding box regression을 적용합니다.

 

4. 문제점

 R-CNN은 비효율성을 지니고 있습니다.

 

 하나의 이미지에 2000개의 region이 존재할 때, R-CNN은 각각의 region마다 이미지를 cropping 한 뒤 CNN 연산을 수행하여 2000번의 CNN 연산을 진행하게 됩니다. 따라서 연산량이 많아지고 detection 속도가 느리다는 단점이 있습니다.

 

추후에 이 단점이 개선된 Fast R-CNN, Faster R-CNN이 등장하는데 나중에 포스팅해보도록 하겠습니다. 읽어주셔서 감사합니다.

 


참고자료

[1] https://arxiv.org/abs/1311.2524

[2] jaehyeongan.github.io/2019/10/10/R-CNN/

[3] yeomko.tistory.com/13

반응형