CVAD
[논문 리뷰] R-CNN : Rich feature hierarchies for accurate object detectction... 본문
[논문 리뷰] R-CNN : Rich feature hierarchies for accurate object detectction...
_DK_Kim 2024. 1. 24. 18:28
논문 원본 링크 : https://arxiv.org/abs/1311.2524
R-CNN은 object detection의 대표적인 모델이다. 2013년 (개정 전) 당시에는 recognition 분야는 HOG나 SIFT를 이용한 방법이 많이 사용되었는데 detection task에서는 그닥 좋은 성능을 보이지 못했다. 이때, R-CNN은 CNN을 기반으로 한 모델을 사용하여 detection task에서 SOTA의 성능을 보여준 모델이다. 개인적으로, 이 당시 거의 최초로 CNN 기반의 완벽한
모델을 보여준 논문이 아닌가 생각이 든다.
0. 논문 간략 소개
- 저자 : Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik
- 논문 제목 : Rich feature hierarchies for accurate object detection and semantic segmentation
- 게제 정보 : Girshick, Ross, et al. "Rich feature hierarchies for accurate object detection and semantic segmentation." Proceedings of the IEEE conference on computer vision and pattern recognition. 2014.
- Main Contribution :
- CNN based Model : Pretrain 된 AlexNet을 활용하여 feature vector를 추출하는 구조를 통해 기존의 모델보다 더
높은 성능을 보여주었음. 논문에서 언급하길 기존의 SOTA 모델보다 mAP 기준으로 30%이상의 향상됨. - 2-Stage Model : R-CNN은 2-stage model로서 1) Region Proposal과 2) Object classification 단계로 구성됨.
이러한 구조를 통해 더 높은 정확도와 효율성을 가져갈 수 있었음.
- CNN based Model : Pretrain 된 AlexNet을 활용하여 feature vector를 추출하는 구조를 통해 기존의 모델보다 더
1. Introduction
R-CNN 논문은 당시 object detection task를 수행하는 대표적인 방법들을 언급하며 시작한다. 당시에는 SIFT와 HOG라는 방식을 사용하여 recognition task를 수행하는 방법이 대중적인 방법이었는데, PASCAL VOC dataset에서는 이 방법들이 그닥 좋은 성능을 보이지 못했다.
저자들은 SIFT와 HOG가 blockwise orientation histogram 기반의 방식이므로 시각적인 정보가 V1 cell에서 종합되어지기 때문에, 인지(recognition)를 더 정확하게 수행하기 위해서는 더 많은 stage가 필요하다는 것을 말한다.
즉, 저자들은 SIFT나 HOG를 일종의 단일 stage 모델로 보았고 인지를 더 정확하게 수행하기 위해서 조금 더 복잡하게 구조화(hierachical) 되었으며, multi-stage로 구성된 모델을 사용해야한다고 말한다.
실제로, neocognitron이나 LeCun 교수의 CNN기반의 모델의 경우 hierarchical model을 통해 recognition에서 좋은 성능을 보여줬다.
그리고 저자들에게 연구에 큰 영감을 준 것은 바로 AlexNet이다. 2012년 ImageNet dataset에서 AlexNet은 가장 좋은 recognition 성능을 보여주었다. 1990년대까지만 해도 CNN은 많이 사용되었지만, Support Vector Machine(SVM)이 등장으로 CNN의 사용은 점점 줄어가고 있었는데, AlexNet은 SOTA의 성능을 보이며 CNN 기반 모델의 가능성을 보여주었다.
많은 의견들이 오고가는 가운데, "ImageNet에서 보여준 성능을 detection이라는 task에는 어떻게 적용해볼 수 있을까"라는 논의가 이루어졌다. 저자들은 이 논의에 대한 답으로 Image classfication과 detection과의 격차를 좁힘으로써 해결할 수 있다고 제시하였다.
저자들의 방법은 classfication task로 pretrain된 모델의 파라미터를 사용하여 detection task로 바꾸는 방법인데,
자세한 내용은 뒤에 설명하겠다.
저자들은 이를 실현하기 위해 해결해야할 문제로서 크게 2가지를 언급한다.
- Localizing object with a deep network : CNN 기반의 model로 localizing을 수행.
- Training a high-capacity model with few annotated data : annotation 된 dataset이 부족한 환경에서 학습해야함.
2.1 Localizing problem
Image classification과 달리, detection은 이미지에 있는 많은 object에 대해 localizing이 필요하다. 저자들은 이를 수행하기 위한 방법으로 3개의 approach를 소개한다.
- To frame localization as a regression problem :
Szegedy의 연구에 따르면 이 방법은 효용성이 떨어져 사용하지 않음 - Sliding-window-Detector :
지난 20년간 CNN 모델들이 많이 사용한 방법으로, 저자들도 이 방법을 응용해보고자 하였다. 하지만, R-CNN은 Conv
layer가 5개라서, 이 방법을 적용하려면 큰 윈도우($195 \times 195$)와 Stride 값(32)를 가져야 하는데 이러면 제대로 localizing이 되기 어렵다는 문제가 있음. 따라서 사용하지 않았음. - Recognition using regions :
"Region proposal" 이라는 방법을 통해 localizing을 수행. 이 방법은 object detection과 semantic segmentation에서도 유효한 결과를 보였으며, 결과적으로 R-CNN에서 localizing problem 해결하는 방법으로서 사용됨.
위 그림은 R-CNN이 동작하는 과정을 시각화한 그림이다. 2번째 단계에서 노란색 boundng box가 바로 region proposal이 적용된 결과다. 간단히 설명하면, object가 있는 영역의 후보들을 검출해내는 기능을 수행한다고 생각하면 된다.
2.2 Dataset problem
저자들이 언급한 또 다른 문제점은 dataset이다. 그 당시 object detection을 학습하기 위해서 label된 dataset이 상당히 드물었고, 존재하는 dataset 또한 대규모 CNN 모델을 학습하기 어려운 소규모였다고 한다.
이 문제에 대해 당시 많이 사용하는 방법은 unsupervised pre-training과 supervised fine-tuning을 사용하는 것이다.
논문에서 제안하는 방식은 대규모 보조 dataset(논문에서는 ILSVRC 사용)을 supvervised pre-training 시키고,
소규모 dataset(PASCAL)을 사용하여 fine-tuning을 진행하는 것이다. 이 방식을 통해 저자들은 mAP가 8% 향상되는
결과를 얻었다고한다.
2. Object detection with R-CNN
R-CNN은 크게 3가지 모듈로 구성되어 있다.
- Category-independent region proposal
- CNN architecture for extracting fixed length-feature
- Set of class specific linear SVMs
논문에서는 region proposal과 cnn 구조에 대한 설명, 테스트 단계 절차 그리고 PASCAL VOC 2010~12 & ILSVRC 2013을 사용한 성능 결과 검증에 대한 내용을 다루고 있다.
2.1 Module design
- Region Proposal :
저자들은 당시 발표된 category-indepdent region proposal 알고리즘들 중 "Selective Search"를 선택했다.
Selective search는 입력 이미지의 비슷한 부류의 영역을 합쳐나가면서 object region candidate(후보 영역)를
생성하는 방식으로 작동한다. 아래의 그림은 그 과정을 보여주는 그림이다.
- Feature extraction :
저자들이 사용한 대규모 CNN 모델은 AlexNet이다. Region proposal을 통해 선택된 후보 영역(region candidate)를 feature vector화 시켜야하는데 문제는 AlexNet의 FC layer 때문에 입력의 크기가 고정되어야한다는 점이다.
(이러한 크기 고정의 문제는 추후 발표되는 FCN 논문에서도 언급된다)
위 그림에서만 보아도 최종 검출되는 후보 영역들의 크기가 다 제 각각인데, 이를 하나의 고정된 크기로 바꿔야하다는 것이다. 저자들은 이를 해결하기 위해 모든 후보 영역의 크기를 $277 \times 277$로 변환하였다.논문에서는 이러한
변환 과정을 "Warping"이라고 언급한다.
저자들은 이 변환을 수행할 때, 의도적으로 후보 영역 주변의 배경을 일부 포함해서 변경시켰다. 논문에서는 따로 어떤 목적으로 포함시킨지는 안 적혀있지만, 아마 contextual information을 살리기 위함이 아닌가 추측된다.
다양한 실험 끝에, 저자들은 16 pixel만큼 후보 영역의 주변 배경을 포함해서 warping 하는 것이 가장 좋은 성능을 얻을 수 있었다고 언급한다. 이러한 변환을 거쳐, 저자들은 각각의 region propsal에 대해 4096 차원의 feature vector를
추출하였다. 아래의 그림은 Warping에 예시를 보여준다.
2.2 Test-time detection
저자들이 수행한 test의 수행과정은 다음과 같다. 먼저, Test image set에 대해 region proposal을 통해 2000개의 후보 영역을 추출한다. 그후, CNN 모듈을 거쳐 반환된 feature vector들을 SVM을 사용하여 각 class별 점수를 구한다.
이렇게 구한 점수들을 기준삼아, 다시 각 class별로 Non-Maximum Supperssion(NMS)를 수행하여 후보군을 제거하고, 마지막으로 점수가 높은 후보 영역의 bounding box를 기준으로 IoU가 설정된 threshold 값을 넘는 나머지 bounding
box를 제거하여, 최종적인 결과를 반환한다.
논문에서는 Run-time analysis를 통해 R-CNN이 obeject detection의 높은 효율성을 보이는 이유를 서술하였다.
- All CNN parameters are shared : R-CNN은 모든 class가 파라미터를 공유한다. 즉, 어떤 class든 같은 파라미터를
가진 CNN module을 사용한다는 것이다. - Low dimensional feature vector : CNN에서 반환하는 feature vector의 차원(4096)이 낮기 때문에, computational cost가 적다는 것이다. 저자들은 object detection을 수행하는데 한 이미지당 GPU로는 13초, CPU로는 53초가 걸린다고 한다.
저자들은 이러한 특성 때문만은 아니지만, 결과적으로 R-CNN이 hashing과 같은 방법을 사용하지 않고도 높은 확장성을 갖는다라고 한다.
2.3 Training
R-CNN은 대규모 dataset 에서 supervised pre-training을 수행한 뒤, 소규모 dataset에서 domain에 집중한 fine-tunning을 통해 모델을 학습한다. 저자들은 대규모 dataset으로 ILSVRC 2012를 사용하였고, 소규모 dataset은 PASCAL VOC를 사용하였다.
- Supervised pre-training :
ILSVRC 2012의 dataset(ImageNet-1K)은 bounding box에 대한 학습 정보를 포함하지 않기 때문에 image label만을 사용하여 classification model로서 학습을 진행하였다. 저자들은 AlexNet에서 보여준 성능의 거의 근사한 정도로 모델을 학습시킬 수 있었다고 한다. 저자들은 이 과정을 Caffe CNN framework를 사용하여 진행하였다. - Domain-specific fine-tuning :
pre-training된 모델을 object detection task을 수행할 수 있도록 저자들은 fine-tuning을 진행하였다.
이전 처럼, 이미지 전체를 입력값으로 주어 모델을 학습시키는 것이 아니라, region proposal candidate만 사용하여 fine-tunining을 진행하였다. 이때, 저자들은 SGD를 사용하여 모델을 업데이트시켰다.
또한, ImageNet의 클래스 수가 1000개 이므로, 배경값을 포함하여 총 1001(N+1, 여기서 N=1000)개의 dimension을 갖도록 출력층을 수정하였다.
여기서 저자들은 학습된 region proposal을 2개의 그룹으로 나누었는데, 실제 bounding box와의 IoU가 0.5 이상인
candidate sample들을 positive, 나머지를 negative로 정의하였다. 즉, positive 해당하는 경우는 bounding box가
object를 잘 표시하는 경우를 뜻하고 negative는 배경을 의미하는 bounding box로 간주하겠다는 것이다.
저자들은 두 그룹에 대한 학습을 위해 각 iteration마다 32개의 positive와 96개의 negative를 random sampling
하여 128개의 mini batch로 학습을 진행했다. - Object category classifiers :
앞선 내용과 혼동이 있을 수 있어서 먼저 언급하자면, 지금부터는 SVM을 학습할 때 해당하는 내용이다. 바로 앞의 내용은 CNN model을 학습할때 정의된 positive&negative이다. 즉, 밑의 postivie&negative는 또 다른 threshold를 가진 별개의 기준이라고 생각하면 된다.
대상이 자동차인지 아닌지를 분류하는 이진 분류 모델을 학습하는 상황을 생각해보자. 저자들의 정의에 따르면,
자동차를 꼭 맞게 둘러싼 bounding box는 positive 일 것이고, 반대로 자동차가 전혀 없는 경우는 negative일 것이다.
하지만 만약, bounding box가 애매하게 자동차에 걸쳐져 있다면 어떨까? 저자들은 IoU의 threshold를 이용하여 이 문제를 해결했다.가장 좋은 threshold를 찾기 위해 저자들은 $\{ 0, 0.1, 0.2, 0.3, 0.4, 0.5 \}$로 값을 변경하며 실험해본 결과, 0.3일때의 결과가 훨씬 좋았다고 한다.
다시 모델의 학습으로 돌아가서, 추출된 vector들은 SVM에 입력되어 classifcation을 진행하게된다. 이때, 훈련 데이터가 너무 커서 메모리 용량이 가득 차는 문제가 발생하였고, 저자들은 이를 hard negative mining이라는 기법을 사용하여 해결하였다.
이 방법은 positive와 negative의 case를 균일하게 만드는 방법인데, confidence score를 사용하여 negative data를
선정하여 두 그룹의 개수를 균일하게 만드는 방법이다.
추가적으로, 논문의 Apendix B를 보면, CNN을 학습할 때와 SVM을 학습할 때 IoU의 threshold 값을 서로 다르게 정한 이유에 대해 정리해놓았다.
2.4 Results on PASCAL VOC 2010-12 & ILSVRC 2013
- PASCAL VOC dataset
먼저, PASCAL VOC 2010 dataset으로 학습된 모델의 성능을 평가해본 결과, 다른 모델들에 비해 높은 성능을 보여주었다. 당시의 가장 좋은 성능은 SegDPM 이었는데, 같은 dataset에서 mAP 40.4%의 성능을 보여주었다.
하지만 bounding box regression을 사용하지 않은 R-CNN은 50.2%, 사용한 경우는 53.7%로 더 높은 성능을 보였다.
PASCAL VOC 2011과12 dataset에서도 제안된 모델은 53.3%라는 정확도를 보여주었다. 아래의 표는 voc 2010의 결과를 나타내는 표다.
- ILSVRC2013 dataset
ILSVRC2013은 200개의 class를 갖는 dataset으로, 아래의 그림과 같이 Bounding box regression(BB)를 사용한 R-CNN모델이 가장 좋은 성능을 보여준다. 아래의 그림에서 알 수 있듯 2번째로 좋은 성능을 보인 Overfeat과도 큰 격차를 보인다.
3. Visualization, ablation, and modes for error
이제부터는 R-CNN에 대해 저자들이 심층적으로 분석한 내용을 다룰 것이다. 우선, 저자들은 CNN 모델에서 각 layer가
과연 어느정도로 task에 기여하는 가에 대한 분석을 시행하였다. 정량적인 분석에 앞서, 저자들은 각 layer들이 어떤 부분에 서 어떤 동작이 수행되었을지 간략히 예견해보고, 이를 ablation study를 통해 수치적으로 분석하였다.
그리고, 기존에 사용된 AlexNet이 아닌 다른 CNN 모델을 사용했을 때의 성능을 비교해보 이를 분석하였다.
3.1 Visualizing learned features
저자들에 의하면 CNN에서 첫 번째 layer의 역할은 경계(edge)와 보색(opponent color)를 찾아준다. 두 번째 layer부터는 region proposal candidate 마다의 점수를 계산하고, 높은 순으로 이 영역을 나열한 뒤 NMS를 통해 일부 영역을 필터링 한다. 아래의 사진은 5번째 convolution / Max pooling layer에서의 region proposal candidate와 그 score를 나타낸 것이다.
3.2 Ablation studies
앞서 언급한 것처럼 저자들은 각 layer의 task 기여도를 분석하기 위해 계층별 정확도를 분석하였다.
이 분석은 총 2개의 그룹을 대상을 진행하였는데 fine-tuning을 진행한 그룹과 그렇지 않은 그룹으로 나뉜다.
또한, 각 수치는 모델의 마지막 pooling layer 1개와 2개의 FC layer의 결과를 추출하여 진행하였다.
학습은 PASCAL VOC 2007 사용하였다. 아래의 표는 그 결과를 보여준다.
제일 위쪽 3개의 layer가 fine-tuning 없이 학습한 모델이고 바로 밑 3개의 layer가 진행한 모델의 결과이다.
결과적으로 fine-tuning을 한 경우가 각 layer들의 성능이 더 높은 것을 확인할 수 있다.
제일 밑의 3개의 모델은 R-CNN이 아닌 그 PASCAL VOC dataset에 대해 detection을 수행한 모델들의 성능을 보여준 것이다. fine-tuning 안한 모델의 수치와 비교해보아도 압도적인 차이가 있음을 알 수 있다.
3.3 Network architectures
논문에서 R-CNN은 AlexNet을 기반으로 구성되었다. 저자들은 VGG16 모델을 사용했을 때의 결과를 비교하였다.
T-Net은 AlexNet을 발표한 Toronto 대학의 T를 따와 AlexNet을 대신 표현한 것이다. 마찬가지로, O-Net은 VGG16을 발표한 Oxford 대학의 O를 따와서 명명한것이다. VGG16 모델이 더 좋은 성능을 보였고, 이에 대해 Bounding box regression을
적용한 case들이 더 좋은 성능을 보여주었다.
다만, VGG16을 적용한 모델은 기존 모델에 비해 연산 시간이 7배나 더 걸렸다는 점이 있다. 이는, VGG16이 더 큰 규모의 모델이기 때문에 더 높은 성능을 보여줄 수 있음과 동시에 연산량이 더 많아서 생기는 문제인 것 같다.
* 3-4~3.6은 논문에서 잘 설명되지 않았거나 Appendix 부문에 내용이 다수 포함되어 포스팅을 고려했을 때 따로 추가하지 않았다. 다만, Bounding-box regression에 대해서는 따로 포스팅 할 예정이다.
4. The ILSVRC2013 detection dataset
지금까지의 성능 분석은 PASCAL VOC를 기준으로 다루었지만, 저자들은 ILSVRC 2013 dataset으로도 R-CNN의 성능을 검증하였다.
4.1 Dataset overview
ILSVRC 2013 datset은 train(395918개), validation(20121개)그리고 test(40152개) dataset으로 구성되어있다.
다만, validation과 test dataset은 이미지 분포가 서로 비슷하고, 완벽하게 annotation 되어있는 반면 훈련 dataset은 불완전하게 annotation 되어있다. (보통은 반대의 경우가 있을 순 있어도, 이건 왜 이런걸까)
따라서, train dataset에 hard negative mining을 적용하기 어렵기 때문에 저자들은 validation datset의 일부를 train dataset으로 활용하는 방법을 사용하였다. class가 균일하도록 $\text{val}_1$과 $\text{val}_2$로 나눈뒤
$\text{val}_1$와 일부 train dataset으로 구성된 새로운 train dataset으로 사용하였고, $\text{val}_2$는 validation을 위해 사용하였다고 한다.
4.2 Region Proposals
PASCAL VOC와 동일한 방법으로 진행하되, 몇 가지 다른점이 있다.
먼저, 모든 data가 아니라 val1, val2, test dataset에만 selective search를 진행하였다. 이는 기존 train dataset에 대한 불완정성을 고려한 선택인 것 같다. 그리고 selective search 방법이 이미지의 크기에 따라 region proposal candidate의 개수가 달라지기 때문에 모든 이미지의 크기를 500픽셀로 맞춘 뒤 진행했다.(ILSVRC는 이미지의 크기가 다양하다)
그 결과 한 이미지당 평균적으로 2403개의 후보 영역을 추정했다.
4.3 Training data
train dataset에서 뽑은 N개의 bounding box와 val 1을 결합하여 훈련 데이터로 사용하였고, N값을 0, 500, 1000으로
다양하게 조절하여 ablation study를 수행하였다. 전체적인 훈련 과정은 3챕터 내용과 동일하다. 하지만, 4.2처럼 기존 training data에 대해서는 negative sample이 뽑히지 않도록 설정했다.
4.4 Validation and evaluation
저자들은 $\text{val}_2$로 자신들이 새롭게 정의한 dataset의 효용성, fine-tuning 방법 그리고 bounding-box regression의 성능을 시험해보았다고 한다. 하이퍼 파라미터는 PASCAL 에서 시험한 것과 동일하게 설정했는데, 이 값이 ILSVRC에서 최적의 파라미터는 아니겠지만 아마 자신들의 접근 방향성 자체에 대한 점검을 원해서 그런 것 같다.
아무튼, 이 검증에서 가장 좋은 성능을 보인 모델을 최종 테스트 데이터로 평가해보았고, 그 결과를 Ablation study에서
분석하였다.
4.5 Ablation study
위 표는 train dataset, fine-tuning, bounding box regression 그리고 fc layer의 개수에 대한 성능을 분석한 결과다. $\text{val}_2$와 test dataset를 통해 각각 검증하였다.
위 표를 통해 훈련하는 data가 많을 수록, fine-tuning을 위한 data가 많을 수록, bounding box regression을 사용할수록 그리고 CNN의 fc layer를 늘릴수록 mAP 기준으로 더 좋은 성능을 보여주었다.
4.6 Realationship to OverFeat
저자들은 R-CNN과 비슷한 성능을 보이는 모델로 OverFeat을 자주 언급한다. OverFeat은 R-CNN과 달리 multi-scale pyramid라는 방식을 통해 region proposal을 수행하는데 성능은 조금 떨어지지만 속도 측면에서는 9배 이상의 차이를 보여준다. 이러한 차이는 warping을 하지 않기 때문에 더 빠른 계산이 가능하기 때문이라고 한다.
5. Semantic Segmentation
R-CNN은 main task인 object detection 뿐만 아니라, semantic segmentation에도 사용될 수 있다. 저자들은 R-CNN 모델을 사용하여 PASCAL VOC segmentation dataset을 학습시켰고, 당시의 segmentation model인 second order pooling ($O_{2}P$)를 baseline으로 하여 성능을 비교하였다.
저자들은 Waping 과정에 총 3가지의 전략을 사용하여 각각의 방식이 어떤 결과를 보여주는지도 함께 비교하였다.
- $full$ : region의 모양에 상관없이 warping된 모든 영역에 대해 feature를 추출하는 방식. 이 경우 직사각형 형태가 아닌 영역에 대해서는 무시하게되는 문제가 발생.
- $fg(foreground)$ : 이미지상에서 가장 원근감이 가까운(전경) 대상의 region만 feature를 추출하고, background는 mean값으로 바꿔주는 변환을 진행.
- $full+fg$ : 두 전략에서의 feature를 합쳐서 학습을 진행
성능의 비교는 VOC 2011 Validation set을 사용하였다.
R-CNN 모델들은 ILSVRC 2012에서 pre-train된 파라미터를 사용하여 진행하였고, 대체로 $O_{2}P$에 비해 성능이 떨어 지지만, $full+fg$로 strategy를 사용하고 fc layer를 그대로 두었을 때 baseline보다 더 좋은 성능을 보였다.
저자들은 이 실험에서의 best model인 $full + fg, fc_6$ 모델을 가지고 class별 정확도 분석을 추가적으로 진행하였다. 이때는 baseline model로 Region& Parts (R&P)를 추가하여 분석하였다. 각각의 모델들은 VOC 2011 test dataset을 사용하였다.
앞선 결과와 달리, R-CNN 이 평균적으로 가장 좋은 segmentation 성능을 보여주었다.
6. Conclusion
개인적으로 R-CNN은 당시 성능적으로 개선에 어려움을 겪고있던 object detectiont task에서 좋은 성능을 보여주었을 뿐만 아니라, CNN이 다시 주목받을 수 있는 계기가 될 수 있었던 연구라고 생각한다.
하지만, End-to-end 형태의 CNN 모델은 아니였다는 점과 모델이 다소 복잡하다는 점은 단점이라고 생각이 든다. 그리고 논문에서 언급하였듯, 모델이 다소 느린 동작시간을 갖는다는 단점도 존재하지만 이는 추후 나오는 Fast R-CNN, Faster R-CNN을 통해서 개선해나갔으니 여러 의미에서 당시의 혁신적인 아이디어였던 것 같다.
'Paper review' 카테고리의 다른 글
[논문리뷰] Fully Convolutional Networks for Semantic Segmentation (0) | 2024.01.09 |
---|---|
[논문리뷰] U-Net : Convolutional Networks for Biomedical Image Segmentation (3) | 2023.12.18 |