아롱이 탐험대

R-CNN: Rich feature hierarchies for accurate object detection and semantic segmentation 본문

study/paper reviews

R-CNN: Rich feature hierarchies for accurate object detection and semantic segmentation

ys_cs17 2020. 3. 12. 16:36
반응형

Rich feature hierarchies for accurate object detection and semantic segmentation

-Ross Girshick, Jeff Donahue, Trevor Darrell Jitendra Malik-

 

1. Introduction

이전 분석했던 Alex net, Le net-5는 모두 classification problem를 해결하고자 만들어진 네트워크다. Computer vision에서의 problem 분야는 크게 4가지로 정의할 수 있다. 우선 첫번째로 지금까지 살펴본 classification 즉 이미지를 보고 어떤 물체인지 인지하는 문제, 두번째는 Classification + Localization이다. 이는 해당 물체를 인지할 뿐만 아니라 boundary box를 통해 해당하는 위치 좌표까지 반환한다. 이 두개의 문제들은 여러 개의 물체를 한번에 찾지 못한다는 단점이 존재한다. 하지만 세번째인 object detection는 앞서 설명한 Classification + Localization에서 발전해 다중 물체를 인식할 수 있다. 그리고 마지막인 Instance Segmentation은 object detection에서 더욱 발전해 각 객체를 구별할 수 있게 만드는 문제이다.

Computer vision problems

오늘 분석할 논문인 R-CNN은 처음으로 CNN을 활용하여 Object Detection 문제를 해결한 네트워크라고 할 수 있다. 2014년 전까지 Object Detection은 주로 SIFT와 DOG를 사용하여 해결하였는데 성능이 매우 좋지 않고, 걸리는 시간도 매우 길다. 하지만 R-CNN은 이 기술들보다 mAP가 30%더 높고, 속도 측면에서도 나중에 다뤄볼 faster RCNN이 훨씬 빠르게 작동한다.

 

2. Model & Network

R-CNN model

R-CNN의 네트워크와 모델 구성은 전체적인 측면에서 크게 4가지로 분류할 수 있다.

간략하게 설명하자면

 

1. 이미지를 input으로 집어넣는다.

2. 약 2000개의 영역을 Selective search라는 알고리즘을 통하여 잘라낸다. 그후 분할된 이미지들을 227*227 size로 Waring한다.

3. 2000개의 warped image를 각각 CNN의 input으로 집어넣는다.

4. 각각 Classification을 통해 결과값을 확률적으로 도출한다.

 

R-CNN은 전체적으로 2 단계를 통해 진행되는 2-stage Detector이다. 따라서 첫번째 단계에서는 Region Proposal, 두번째 단계에서는 Region classification을 진행한다.

이 논문에서는 크게 3가지의 module을 통해 2단계를 진행하였다.

 

1) Region proposals

이 module은 위에서 언급한 selective search라는 알고리즘을 통해 물체가 존재할 것 같은 약 2000개의 region을 분할한다.

Selective search algorithm을 적용시킨 image

여기서 selective search algorithm이란 서로 비슷한 물체들을 bounding box화하여 물체들을 탐색하는 알고리즘이다. 이때 쓰이는 algorithm 방식은 hierarchical grouping algorithm을 사용한다고 한다.

hierarchical grouping algorithm's pseudocode

해당 알고리즘을 더욱 자세히 알고 싶으면 https://donghwa-kim.github.io/SelectiveSearch.html 에서 확인가능하다.

 

2) CNN

Region proposals의 결과값으로 나온 2000개의 224*224 size로 warping된 image들을 각각 CNN의 input으로 넣어 준다. 여기서 사용되는 CNN network는 Alex net과 유사한 network를 사용한다고 한다. 하지만 해당 train data set의 class수가 달라 마지막 부분을 바꾸고, Object Detection 전용 dataset을 넣어 fine-tuning을 진행한다.  

 

3) SVM – Classification

CNN을 통해 추출된 feature들을 통해 Linear SVM을 이용하여 classification을 진행한다. 보통 classification problem에서는 마지막에 softmax가 쓰이기 마련이지만 해당 논문에서는 SVM이 softmax보다 약 4% 성능이 더 좋아 Linear SVM을 썼다고 한다. 그리고 논문을 보게되면 Bbox (Bounding Box)라는 module이 나오는데 이는 selective search의 단점을 보완하고자 쓰였다고 한다.

위 식을 설명하자면 우선 x,y는 해당 좌표, w,h는 너비와 높이를 뜻한다., 그리고 P는 선택된 bouding box이고, G는 실제 정답인 bounding box이다. 여기서 P를 최대한 G에 가깝게 학습하는 게 이 알고리즘의 목표이다.

해당 식에서 G hat은 G와 최대한 가까워질 변수이고, 왼쪽에 있는 G hat들을 G로 치환하여 나타낸 것이 오른쪽에 있는 식들이다. 그리고 맨 아래에 있는 식은 Loss function임으로 최대한 줄이는게 우리의 목표다. 논문에서는 이 식의 lamda에 해당하는 값이 가장 중요하다고 한다. 논문에서는 lamda를 1000으로 설정하였다.

 

3. result

R-CNN's results (from VOC 2010 test set)

결과를 확인해보자면 최종적인 mAP는 bbox를 적용시킨 R-CNN BB를 사용한 net이 53.7로 가장 높았다. R-CNN이 좋은 performance를 가진 것은 확실하지만 이에 준하는 단점들도 존재한다. 우선 앞에서 설명한 첫번째 module에서 생성된 2000개의 image들을 CNN에 모두 넣는 것부터 속도 측면에서는 매우 느리다. Test 시 GPU K40을 기준으로 frame당 13초가 걸린다고 한다. 또한 R-CNN은 전체적으로 봤을 때 3개의 module이 복합적으로 사용된 복잡한 구조이다. 따라서 각 module의 결과값들을 backpropagation하기에는 힘든 구조라 loss를 줄이기에 쉽지가 않다. 하지만 R-CNN은 현재 Object detection분야에서 CNN을 처음 도입하였고, 2-stage structure를 사용했다는 점에서는 엄청난 파급효과를 지닌 논문이다.

다음은 R-CNN의 단점을 cover했던 후속 논문들에 대해 분석해보겠다.

 

4. reference

https://bskyvision.com/694?category=635506

https://j911.me/2019/03/analysis-of-rcnn-paper.html

https://nuggy875.tistory.com/21

https://donghwa-kim.github.io/SelectiveSearch.html

Rich feature hierarchies for accurate object detection and semantic segmentation (paper)

반응형
Comments