아이공의 AI 공부 도전기

R-CNN 논문 Full Summary

arxiv : https://arxiv.org/abs/1311.2524

Rich feature hierarchies for accurate object detection and semantic segmentation - Ross GirshickJeff DonahueTrevor DarrellJitendra Malik

https://github.com/hoya012/deep_learning_object_detection
https://github.com/hoya012/deep_learning_object_detection

 

Summary를 원한다면 아래 2 영상을 

Full Reading을 원한다면 3번째 영상을 확인해 주세요

 

 

 

Object Detection 부분에서 Neural Network 특히 CNN을 이용하여 처음으로 큰 두각을 나타낸 논문인 R-CNN에 대해 살펴보고자 합니다.

 기본적인 서술은 논문의 흐름을 바탕으로 Summary 형태를 띄며 큰 그림부터 세세한 부분까지 다룰 수 있으면 다뤄보고자 합니다.

참조할만한 블로그는 아래 링크를 걸어놓도록 하겠습니다.

 

 다만 지금 기술하고자 하는 이 글은 초짜가 쓰는 글이기 때문에 정확한 기술에 대한 설명이나 영어 해석이 미흡할 수도 있고 혹은 심지어 틀릴 수도 있음을 미리 알려드립니다.

 

모든 참조 블로그나 사이트, 영상은 아래 참조란에 남겨두도록 하겠습니다.

 

당연하지만 모든 저작권은 논문 저자에게 있다는 사실을 알려드립니다.

Abstract

Object Detection 성능을 평가하는 고전적 Dataset인 VOC 2012에서 지금까지 있어왔던 성능을 무려 30% 향상시키는 간단한 알고리즘을 소개하고자 합니다.

- mean Average Precision(mAP)라고 불리는 Object Detection 성능 평가 기준 숫자로 53.3%를 달성했습니다.

 

이에 대한 두 가지 통찰력을 기술 하자면

(1) bottom-up Region Proposals를 수행하기 위한 CNN의 적용

(2) 데이터가 부족함에 따른 supervised pre-training와 fine-tuning으로 성능 향상

이 두 가지가 좋은 성능을 나오게한 이유입니다.

 

CNN과 더불어 Region Proposal을 사용했기에 우리는 이 방법을 R-CNN이라 칭하기로 했습니다.

이것은 OverFeat이라는 sliding-window detector 방식으로 CNN 유사 구조보다 더 좋은 성능을 거두었을 뿐 아니라 imagenet 통칭 ILSVRC2013 detection dataset에서 역시도 충분한 결과를 거두었습니다.

 

=> Abstract 추가 기술

실제로 논문 전체적으로 2가지 통찰력에 대한 기술에 대부분이며 이를 활용한 ILSVRC나 Segmentation으로 활용할 수 있는 가능성에 대해 언급을 합니다.

주로 자료 비교는 고전적인 Dataset인 PASCAL VOC라는 것을 이용하고 비교 대상은 OverFeat이라는 논문과 table 형태로 비교를 많이 진행합니다.

물론 초기 version에서는 OverFeat 논문이 나오지 않았지만 5 차례에 걸친 version upgrade를 통해 2014.10월까지 지속적인 내용 추가 기입을 하면서 나온 OverFeat과의 비교를 진행한 듯 합니다.

물론 여기서는 후에 나온 OverFeat보다 좋은 성능을 냈다고 적시하고 있습니다.

당연히 비교는 표준 방식인 mAP를 활용합니다.

또 다른 중요한 SVM을 통한 classify, Selective Search는 이 부분에서 다루지 않았습니다.

뒤에 있는 내용을 참조하시길 바랍니다. 

그러나 대략적인 큰 그림은 Abstract에서 다뤘으며 약간 더 필요하다면 1. Introduction까지를 통해 알 수 있으며 추가로 더 필요한 부분은 논문 전반을 참조하시면 좋을 것 같습니다.

 

PASCAL Visual Object Classes(VOC)에 대해 궁금하다면 논문 Reference 15번을 참조하세요.

[15] M. Everingham, L. Van Gool, C. K. I.Williams, J.Winn, and A. Zisserman. 

The PASCAL Visual Object Classes (VOC) Challenge. IJCV, 2010.

1. Introduction 

Neural Network에 대한 연구는 1980년대부터 지속되어왔고 Backpropagation 과 같은 CNN 성능 향상은 알아왔지만 1990년대 어려운 사용 방식과 SVM (Support Vector Machine)이 떠오름에 따라 사장되어왔습니다.

그러나 ReLU와 Dropout Regularization 덕분에 Imagenet 2012년 LeCun 교수의 CNN을 변형시킨 모델의 성능에서 큰 가치를 발견하고 이를 Object Detection에 적용하는 것은 어떨까 생각했습니다.

 

[25] A. Krizhevsky, I. Sutskever, and G. Hinton. 

ImageNet classification with deep convolutional neural networks. In NIPS, 2012.

 

(이 논문에서 실제로 이렇게 말함.) 이 논문은 PASCAL VOC에서 CNN을 활용한 Object Detection 성능을 극적으로 향상시킨 최초의 논문입니다.

 

우리는 이 성능 향상을 위해 2가지 문제에 집중하였습니다.

(1) Deep Network를 활용한 Localizing Object

(2) 매우 적은 양의 주석이 달린 Detection data로 높은 수용량을 가지는 model을 training 훈련시켜야하는 문제

 

(1)의 해결책에 대해 3가지 방식을 사용했는데 regression으로 대응하는 법, sliding-window detector 방식, recognition using region 방식 중 마지막 방식을 채택하였습니다. 

 

recognition using region 방식은 이 논문의 공동 저자인 Jitendra Malik가 쓴 논문으로 Reference 21을 참조

[21] C. Gu, J. J. Lim, P. Arbel´aez, and J. Malik. Recognition using regions. In CVPR, 2009.

 

Figure 1
Figure 1

 

마지막 방식인 Recognition using Region은 Region Proposal이라는 말로 후에 다뤄지는데 큰 틀에서 보면 위 그림과 같습니다.

우선 Input Image에서 Region Proposal을 생성, 추출합니다. 모두 independent하기 때문에 중복되기도 합니다. 후에 warp를 통해 맞게 사이즈가 변형됩니다. 그 다음 CNN에 넣고 돌린 후 linear SVM을 통해 classify 분류작업을 진행하게 됩니다.

이 방법을 통해 진행했기에 dub 별명으로 method R-CNN이라고 작명했다고 합니다. Regions with CNN features라는 의미

 

(2)에 대한 해결책

우선 detection에 필요한 데이터의 양이 매우 적어 훈련시키기에 매우 어려움이 많다고 합니다.

 

이에 대한 해결책으로 원문을 그대로 옮기면 다음과 같습니다.

solution is to use unsupervised pre-training, followed by supervised fine-tuning

=> 비지도학습의 pre-training와 후속으로 지도학습의 fine-tuning을 사용하는 것입니다.

 

이에 대한 방법으로 큰 수치의 mAP 향상을 이뤄냈다고 적고 있습니다.

 

이와 관련한 논문으로 Reference 35 참조

[35]P. Sermanet, K. Kavukcuoglu, S. Chintala, and Y. LeCun.

Pedestrian detection with unsupervised multi-stage feature learning. In CVPR, 2013.

 

마지막으로 region 기반으로 작동하기 때문에 Semantic Segmentation에서도 수행할 수 있습니다. 이를 VOC 2011 test set에 돌렸을 때 47.9%의 정확도가 있었음을 알려드립니다.

 

=> 1. Introduction - Summary 추가 기술

CNN을 사용한 동기, 어떤 문제에 초점을 두었는지에 대해 다뤘고 이에 대한 저자분들의 해결책을 간략하게 살펴볼 수 있었습니다.

2. Object Detection with R-CNN 

R-CNN system은 3 modules로 구성되어 있습니다.

1. 카테고리 독립적 Region proposals를 생성한다.

2. 각 Region에서 고정된 길이의 feature vector를 추출하는 CNN 사용한다.

3. 분류로 linear SVMs를 사용한다.

 

2.1 Module design

Region Proposals

이와 관련해서는 많은 논문들의 방식이 존재하는데 R-CNN에서는 selective search 방식을 통해 이전 detection 작업과 제어된 비교 가능한 방식으로 사용하는 것을 이야기합니다.

 

selective search와 관련된 논문 Reference 39과 Reference 41

[39] J. Uijlings, K. van de Sande, T. Gevers, and A. Smeulders.

Selective search for object recognition. IJCV, 2013.

[41] X.Wang, M. Yang, S. Zhu, and Y. Lin. 

Regionlets for generic object detection. In ICCV, 2013.

 

Feature Extraction

Caffe를 통해 A. Krizhevsky의 2012 논문 AlexNet CNN 모델을 각 region proposal에서 4096(2의 12승) 차원 feature vector를 추출했습니다. Feature들은 227×227 RGB의 input image에서 평균을 뺀 값으로 계산되어 있습니다.

 

Region proposal을 수행하기 위해 우리는 각 region에 대해 CNN에 사용, 호환이 가능하도록 간단한 방법인 warp(규격에 맞추게 하기 위해 휘게 만드는 과정)을 사용합니다. 물론 규격에 맞는 이미지에 bounding box가 들어가면 안되므로 dilate(image를 약간 키움을)를 통해 warp를 수행하며 이 때 p=16 padding 사용 자세한 내용은 Appendix A 참조

 

=> 첨언 : 즉 다시 이야기하면 우리가 어떤 region을 생성했다고 가정합시다.

예로 350×270의 image가 있고 이 테두리에 bounding box가 있다고 했을 때 227×227 규격에 맞추기 위해 warp를 한다는 것은 350을 227로 270을 227로 변환하는 과정을 거치는 것을 의미합니다.

Reference 25 A. Krizhevsky의 2012 논문 CNN 모델의 input image 규격을 227×227에 맞추기 위한 과정이라고 생각해주세요.

Appendix A : Object Proposal Transformation 

 

CNN에 넣는다는 것은 고정된 사이즈 input을 넣어야한다는 것을 의미합니다.

때문에 직사각형이든 더 크거나 작은 사이즈를 고정된 input size에 맞추는 transformation 변형을 제시합니다.

1. tightest square with context (Figure 7. (B)열)

2. tightest square without context (Figure 7. (C)열)

3. Warp (Figure 7. (D)열)

 

padding : p=16일 때가 3~5mAP 더 성능이 좋았다.

(Figure 7. (1, 3) 행) padding = p = 0

(Figure 7. (2, 4) 행) padding = p = 16

 

규격 input size에서 warp한 image가 맞지 않을 때 빈 data 공간은 mean으로 대체한다.

 

2.2 Test-time detection

selective search's fast mode방식으로 test image 2000개 가량의 region proposal을 추출 + warp + CNN + SVM으로 점수를 매깁니다.

이 후 greedy non-maximum suppression을 적용합니다.

 

cf) NMS에 대해 참고하면 좋은 블로그 및 사이트 - 맨 하단 4,5번

 

Run-time analysis

 

2가지 특성에서 효율적임을 보여줍니다.

1. 모든 CNN parameter들은 모든 카테고리를 공유합니다.

2. CNN을 활용한 feature vector들은 low-dimension 저차원입니다.

13s/image - GPU

53s/image - CPU

 

features,SVM weights, non-maximum suppression 사이의 dot product가 유일한 computation이므로 hashing을 이용한 방식에 의존하지 않은 저차원 feature 계산이 가능했습니다.

 

2.3 Training

Supervised pre-training

ILSVRC 2012 classification dataset을 pre-train에 사용했습니다.

 

Domain-specific fine-tuning

SGD를 이용한 warp된 region proposals만을 사용했고 AlexNet 마지막 1000 classification을 N+1(N개의 클래스, 1개의 background) classification으로만 수정했고 나머지는 동일합니다.

VOC : N=20

ILSVRC2013 : N=200

 

ground-truth box와 0.5이상의 IoU overlap이 있으면 positive로 나머지는 negative로써 분류했고 SGD의 learning rate = 0.001

 

Object category classifiers

IoU overlap threshold를 통해 negative를 잘 설정하는 것이 중요합니다.

0.3이 임계값으로 선택되었는데 만약 임계값이 0.5면 5 mAP가 0이면 4 mAP가 감소하는 것을 확인할 수 있었습니다.

standard hard negative mining method를 통해 빠르게 수렴하는 방식을 채택하였고 이에 대한 자세한 내용은 Appendix B를 확인하시길 바랍니다.

Appendix B. Positive vs. negative examples and softmax

2가지 초점에 대한 설명

1. fine-tunning을 할 때와 training SVM을 할 때의 positive, negative examples을 다르게 설정하는 이유는 무엇인가?

 

=> fine-tuning에서는 IoU가 0.5 이상이면 positive이고 그 외 negative로 놓는 반면 SVM으로 훈련시킬 때는 0.3 IoU이상이면 positive이고 그 외 negative로 놓음으로써 더 성능이 잘 나왔기 때문에 이렇게 설정했습니다.

 

2. 왜 fine-tuning 이후에 SVM으로 훈련을 하는가?

softmax 방식의 regression classifier는 VOC 2007 기준 mAP 50.9%로 성능을 떨어트렸기 때문에 SVM으로 훈련 classifier를 선택했습니다.

 

2.4 Results on PASCAL VOC 2010-12

기존의 방식과 비교하여 35.1%에서 53.7% mAP를 달성하였고

VOC 2011/12 test에서는 53.3% mAP를 달성하였습니다.

 

2.5 Results on ILSVRC2013 detection

VOC에서 활용한 R-CNN을 그대로 200 class ILSVRC2013 detection dataset에 적용했을 때 24.3%인 2위 OverFeat보다 더 큰 차이를 보인 31.4%를 달성했습니다.

3. Visualization, abalation, and modes of error 

3.1 Visualizing learned features

region proposals에 대한 unit activation 계산 -> activation 내림차순으로 정렬 -> non-maximum suppression 수행 -> 고득점 region 표시

위 일련의 과정을 통해 각 layer마다의 unit들에 대해 어떻게 학습하는지 볼 수 있다.

이를 통해 네트워크는 모양, 질감, 색, 물성의 분산 표현들을 결합하여 표현을 배우는 것으로 나타난다. (저는 이 부분을 작은 특징들로부터 큰 특징을 배우는 표현법을 스스로 배운다고 해석했습니다.)

Appendix D, Figure 12는 Skip

 

3.2 Abalation studies

Performance layer-by-layer, without fine-tuning

detection 성능에 중요한 layer를 이해하기 위해 fine-tuning 없이 수행했을 때 fc6, fc7 없이도 비교적 잘 수행됨을 알 수 있었습니다.

이를 통해 우리는 중요한 부분은 Convolutional layer에 있다는 사실을 알게되었고 그리고 이것은 DPM에서 pool5 features 위에서 sliding-window detector를 수행할 수 있게 만들었습니다.

 

<r-cnn table 2 p6>

</r-cnn>

 

Performance layer-by-layer, with fine-tuning

8% 향상된 54.2%를 Table 2를 통해 확인할 수 있습니다.

Table 2. 1~3 행보다 4~6 행의 mAP가 확실히 더 높다는 것을 확인할 수 있습니다.

 

Comparison to recent feature learning methods

HOG-based DPM과의 비교를 수행하는 부분으로 R-CNN이 더 좋다는 성능 지표를 나타냅니다. Table 2. 8~10행을 참조하세요.

DPM v5 : HOG만 사용

DPM ST : Sketch Token 히스토그램 특성을 사용한 증식 augment

DPM HSC : HOG 대신 histogram of sparse code(HSC)을 사용

 

3.3 Network arxchitectures

Reference 43에 제시된 K. Simonyan and A. Zisserman의 ILSVRC 2014 top performance를 선보인 통칭 VGG를 활용하여 새로운 실험을 할 것입니다.

기존의 방식 모델을 T-Net, 이분들의 모델을 O-Net으로 통칭하여 같은 방식을 적용, 성능을 측정했을 때 O-Net이 훨씬 좋았습니다.

mAP 58.5% -> 66.0%

그러나 단점으로는 7배 정도 더 시간이 걸린다는 단점이 있었습니다.

 

Reference 43 K. Simonyan and A. Zisserman. 

Very Deep Convolutional Networks for Large-Scale Image Recognition. arXiv 

preprint, arXiv:1409.1556, 2014.

 

3.4 Detection error analysis

3.5 Bounding-box regression

localization error를 줄일 수 있는 방식으로 DPM에서 사용한 bounding box regression 방식을 도입했습니다. 자세한 내용은 Appendix C 참조.

 

Appendix C - Bounding-box regression

localizational performance를 향상시키기 위해 Bounding-box regression을 사용하고자 했고 이는 selective search proposal scoring 후에 새 bounding box를 예측하고자 할 때 사용했습니다.

로써 중앙 값을 x,y로 설정 width 폭으로 w, height 높이로 h로 명시하였습니다. 또한 각 Gounding-truth bounding box를 G로 명시 같은 방식으로 적용할 수 있습니다.

이를 통한 우리의 목표는 제안된 box P를 G에 대응할 수 있도록 변형시키는 것이 목적입니다.

이를 위해 4개의 function으로 P에 대한 x,y,w,h의 함수 d를 사용하여 

변형, 예측된 ground-truth box를 

으로 설정 식을 표현하면 아래 그림과 같습니다.

 

는 proposal P의 pool5 feature들에 대한 선형 함수로 

로 표현이 가능합니다.

이를 통해 

를 최적화를 찾는 ridge regression을 사용할 것입니다.

t : regression target

 

이 때 2가지 issues

1. regularization은 중요하다.

2. P를 아무거나 선택할 수 없기 때문에 Ground Truth box G의 IoU overlap을 최대화하는 것을 P로 선택한다. 우리는 0.6 임곗값을 선택했습니다.

 

bounding box regression은 여러번 수행해도 결과에 향상이 없었기에 한 번만 사용했습니다.

 

3.6 Qualitative results

4. The ILSVRC2013 detection dataset

ILSVRC 2013 detection dataset은 PASVAL VOC와 달리 어떻게 선택할지에 대한 어려운 부분이 있기에 Section으로 나눠 설명하고자 합니다.

 

4.1 Dataset overview

train : 395,918

val : 20,121

test 40,152

 

val과 test는 완전히 주석처리가 되어 있지만 train dataset의 경우 negative image들을 포함한 완전하지 않은 주석처리의 상태이기 때문에 hard negative mining이 불가능합니다. 때문에 이를 위한 전략으로 val과 train dataset 중 positive images들을 사용하여 val1, val2로 나누고 class마다의 숫자 불균형을 맞추기 위한 a randomized local search를 사용했습니다.

 

4.2 Region proposal

PASCAL과 같이 Selective Search의 fast mode를 사용하여 val1, val2, test에 적용했지만 selective search는 크기에 불변함으로 ILSVRC의 각 이미지의 폭을 500pixel로 미리 맞췄습니다.

 

4.3 Training data

(많은 내용이 있었지만 핵심은) Negative example을 전혀 사용하지 않은 상태로 RCNN의 3가지 절차인 CNN fine-tuning, SVM training, bounding-box regressor training을 수행했습니다.

 

4.4 Validation on evaluation

최대한 tuning 없이 R-CNN의 결과를 보기 위한 2가지 파일을 제출했습니다.

bounding-box regression과 함께 혹은 함께이지 않은 상태의 파일

 

4.5 Ablation study

Ablation study란 모델이나 알고리즘의 feature들을 제거하면서 성능을 연구하는 것으로 Table 4와 함께 관찰이 가능합니다.

highlight된 부분은 이전 것과의 차이를 보이는 것으로써 자세히 살펴보면 train의 개수를 늘릴 수록 fine-tuning을 할 수록 bounding box regression을 수행할수록 더 좋아지는 mAP를 확인할 수 있습니다.

 

4.6 Relationship to OverFeat

확언할 수 있는 것은 OverFeat은 이미지당 2초로 R-CNN보다 상당한 속도에서 주목할만 했습니다.

OverFeat는 warp를 하지않고 전 네트워크가 overlapping window를 공유함에 따라 computation이 적어 성능적 향상을 보입니다.

5. Semantic segmentation

당시 leading semantic segmentation system은 CPMC, SVR과 second-order pooling을 사용하는 

 입니다.

이외에도 multi-scale per-pixel classifier로 CNN을 사용한 아래 논문 또한 주목할만 합니다.

 

Reference 16 - C. Farabet, C. Couprie, L. Najman, and Y. LeCun. 

Learning hierarchical features for scene labeling. TPAMI, 2013.

 

이곳에서 우리는 3가지 전략을 사용했고 이와 관련된 

와의 비교를 Table 5를 참조하시길 바랍니다.

 

 

full R-CNN : 사각형 모양을 무시하고 warped windows에 CNN feature들을 바로 계산하는 방법입니다.

fg R-CNN : full에서 feature들이 사각형 모양이 아니면 무시하기에 region's foreground mask가 덧씌워진 부분들만 CNN에 넣습니다.

그 외의 부분은 배경의 평균값을 넣음으로써 후에 빼는 것으로 0이 되도록 합니다.

full+fg R-CNN : 말 그대로 fg와 full을 모두 사용하는 방법이라고 적혀있습니다. 하단 Results on VOC 2011에 따르면 Context가 있는 mask가 더 좋은 성능을 냈다는 것으로 추론해봤을 때 fg는 background를 평균값으로 대체했지만 여기서는 그냥 배경 그대로를 넣었다는 설명인 것 같습니다.

 

결과는 대성공 더 좋은 값을 얻어낼 수 있었습니다. 

 

 

이 표는 VOC 2011 test에서 다른 Segmentation 방법들과 자신들의 방법을 비교해놓은 성능표인데 약간의 차이는 있지만 대체로 full+fg R - CNN 방법이 더 좋았던 것을 확인할 수 있었습니다.

6. Conclusion - Summary

근래(2013~2014년)의 침체된 object detection 성능은 침체되어 있었으나 간단하고 확장성 있는 알고리즘

즉,

1. CNN의 적용

2. supervised pre-training/domain-specific fine tuning 적용

이 두 가지 방법을 통해 높은 성능 향상을 이뤄냈다.

 

=> Abstract 내용의 반복

 

읽어주셔서 감사합니다.

참조하면 좋은 사이트

1.

https://jhui.github.io/2017/03/15/Fast-R-CNN-and-Faster-R-CNN/

2.

https://docs.google.com/presentation/d/1aeRvtKG21KHdD5lg6Hgyhx5rPq_ZOsGjG5rJ1HP7BbA/pub?start=false&loop=false&delayms=3000&slide=id.p

3. 

https://www.koen.me/research/pub/uijlings-ijcv2013-draft.pdf

4. 

https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c

5. 

http://cvlab.postech.ac.kr/~bhhan/class/cse703r_2016s/csed703r_lecture6.pdf

6. 

https://towardsdatascience.com/non-maximum-suppression-nms-93ce178e177c

7. 

https://blog.athelas.com/a-brief-history-of-cnns-in-image-segmentation-from-r-cnn-to-mask-r-cnn-34ea83205de4

8. 

http://incredible.ai/deep-learning/2018/03/17/Faster-R-CNN/

9. 

https://hoya012.github.io/blog/Tutorials-of-Object-Detection-Using-Deep-Learning-what-is-object-detection/

 

기타 제가 적지못한 수 많은 블로그들이 있으니 직접 검색하시는 것들 또한 추천드립니다.

 

공유하기

facebook twitter kakaoTalk kakaostory naver band
loading