R-CNN의 논문 이름은 Rich feature hierarchies for accurate object detection and semantic segmentation이다. 저자는 Ross Girshick, Jeff Donahue, Trevor Darrell, Jitendra Malik다.
R-CNN은 object detection 데이터 셋인 PASCAL VOC dataset에 대해 성공적인 결과를 달성한 모델이다. Object detection 딥러닝 분야에서 가장 먼저 공부하는 모델이기도 하다.
PASCAL VOC는 Pattern Analysis, Statistical Modeling and Computational Learning Visual Object Classes의 약자로 옥스포드 대학교에서 제공하는 데이터다. 2012년 VOC 2012 챌린지를 열었으며 classification과 (object) detection, Segmentation, Action Classification을 평가하기 위한 데이터 총 두가지로 구성되어 있다.
총 20개의 classes가 있으며 classification/detection 측면에서의 annotated data 크기는 train이 img의 개수는 5717, img에 포함된 (개별 이미지에 여러개의 object가 있을 수 있다) object의 개수는 13609개다. Validation의 경우 img의 수는 5823, obejct의 수는 13841다.
Object detection의 경우 train의 img 수는 1464, object 수는 3507, validation은 img 수가 1449, object 수는 3422다.
여태까지 배운바에 따르면 train이 val 보다 데이터가 많았는데 해당 데이터는 train과 validation의 숫자가 비슷하다.
보다 자세한 내용은 아래의 첫번째 레퍼런스에 있는 PASCAL VOC 페이지에 있는,
Development Kit 항목의 PDF documentation과 guidelines들어가면 알 수 있다.
Abstract
PASCAL VOC 데이터에 행해진 object detection은 최근 몇년간 정체기였다. 기존의 가장 좋은 성능의 모델들의 대부분은 multiple low-level image features과 high-level context를 섞는 복잡한 앙상블 모델이 많았다. 본 논문에서는 간단하면서도 scalable한 detection algorithm을 제안한다. 해당 모델은 mAP (mean Average Precision)이 PASCAL VOC 2012에 대해 기존의 best model보다 30% 향상되었으며, 달성한 mAP 값은 53.3%다. 두 가지 핵심적인 통찰은 다음과 같다. 첫 번째는 high-capacity를 가진 CNN 구조를 확률하여 bottom-up region proposals를 활용하여 localize와 segment object를 수행했다. 두 번째로는 labeled data나 희귀하므로 supervised pre-training for auxailary task를 수행했다. 이는 Domain-specific fine-tuning으로 상당한 성능 향상에 기여했다. 해당 논문의 모델인 R-CNN을 OverFeat라는 sliding-window detector 기반의 비슷한 CNN과도 비교했다. 실험 결과 200-class의 ILSVRC2012 detection dataset에 대해서 R-CNN이 OverFeat보다 더 나은 성능을 보였음을 확인했다.
위의 Figure 1을 보면 R-CNN 모델의 대략적인 흐름과 object detection이 무엇인지에 대해서 알 수 있다.
주어진 이미지에 존재하는 대상인 object를 bounding box라고 하는 노란색 네모로 찾아내는 작업이다.
1. Introduction
Features는 중요하다. 지난 세월 visual recognition은 주로 SIFT와 HOG에 기반한 진보가 많았다. 하지만 PASCAL VOC object detection에 대해서는 눈에 띄는 성과가 있지는 않았따. SIFT와 HOG는 blockwise orientation histograms로 처음의 피상적인 피쳐를 보게 된다. 하지만 hierarchical, multi-stage process를 통해 더 정보량이 많은 피쳐를 볼 수도 있다.
CNN은 1990년대에 많이 사용되었지만 SVM (Support Vector Machine) 이후 몰락했다. 하지만 AlexNet이 ILSVRC에서 성공을 거둔 후 CNN은 다시 관심을 불러일으켰다.
Image classification과 object detection은 다르기 때문에 이 간격을 메우기 위해서 발생한 두 가지 문제점을 논하고자 한다. 첫 번째는 deep network를 이용한 localizing objects이고 두 번째는 적은 양의 annotated detection data로 모델을 학습하는 내용이다.
이미지 분류와는 다르게 object detection에는 localizing object 작업이 필요한데 기존에는 regression으로 localizing을 풀었다. 하지만 해당 논문에서는 sliding-window를 사용했다. CNN localization 문제는 보통 recognition using regions 패러다임으로 푸는데 이는 detection과 semantic segmentation 양쪽에서 그리 성공적이지 못했다. 따라서 R-CNN은 test time에서 약 2000 category-independent region proposals를 input image에 대해서 수행한 다음 fixed-length feature vector를 각각의 proposal에서 뽑아낸다. 그 다음 각각의 영역을 category-specific linear SVMs로 분류한다. Affine image warping이라는 간단한 테크닉으로 각각의 region proposal에서 유래한 fixed-size CNN input을 계산하는 문제를 해결했다. Updated version의 논문에서는 R-CNN을 ILSVRC 2013 detection에도 적용했고 OverFeat이란 방법보다 성능이 개선되었음을 추가했다.
두 번째 문제인 scarse data의 경우 기존 방식은 unsupervised pre-training followed by supervised fine-tuning을 사용하는 것이었다. 해당 논문에서는 supervised pre-training on a large auxilary dataset (ILSVRC)를 이용하여 domain-specific fine-tuning을 PASCAL에 적용하는 방법을 제시한다. 이를 통해 mAP에서 8%의 성능 향상을 달성했다.
2. Object detection with R-CNN
R-CNN은 총 세 가지 모듈로 구성된다. 첫째 모듈은 category-independent region proposals를 생성한다. 해당 regions는 candidate detections를 제시한다.
둘째 모듈은 large CNN으로 fixed-length features vector를 각각의 region에서 뽑아내기 위해 존재한다.
셋째 모듈은 class specific linear SVMs다.
2.1. Module design
Region proposals
기존에는 objectness, seletive search, category-independent object proposals, constrained parametric min-cuts(CPMC), multi-scale combinatiorial grouping 등 다양한 region proposals 방법이 사용되었다. 본 논문에서는 CNN을 regularly-spaced square crops라는 speciase case of region proposals에 적용하여 mitotic cells를 찾는다. 통제된 비교를 위해서
selective search도 사용했다.
Feature extraction
4096-dim의 feature vector를 each region proposal에서 추출했다. Caffee를 이용하여 implementation을 수행했고 그 구조는 AlexNet이다. Features는 5개의 convoultional layers와 2개의 FC layers를 거친 forawrd propagating a mean-subtracted 227 x 227 RGB images이미지의 결과를 사용했다.
Region proposal을 위해서 required size에 맞도록 tight bounding box의 주변의 모든 픽셀을 warp (원래 뜻은 싸다, 묶다지만 검색해본 결과 crop 혹은 resize다)했다.
Warp를 적용하기 전에 tight bounding box를 확장시켜서 warped size가 정확하게 p pixels(p=16)만큼 되도록한다. 이는 wapred image가 정확하게 context original box를 감싸기 위함이다. 아래 Figure 2에 나와있다.
2.2. Test-time detection
테스트 과정에서 selective search를 적용하여 테스트 이미지에서 2000개 내외의 region proposals를 만들어낸다. 개별 proposal을 모두 warp한 다음 CNN에 forward시켜서 features를 계산한다. 그 다음 개별 class에 대해서 학습된 SVM을 적용시켜서 class를 찾아낸다. 각 scored regions에 대해서 greedy non-maximum supperssion (for each class independetly)해서 higher scoring selected region과의 intersection-over-union (IoU) overlap이 threshold보다 크다면 해당 리젼을 기각(reject)한다.
Run-time analysis
모든 카테고리에 대해서 CNN 파라미터를 공유한다. CNN을 통해 도출된 features vectors는 상대적으로 low dimension이다. 내용이 길지만 요약하자면 생각보다 굉장히 효율적인 알고리즘임을 보이고 있다.
2.3. Training
Supervised pre-training
Large auxiliary dataset인 ILSVRC2012-classification에 대해서 pre-training을 적용했고 object detection 측면에서의 bounding box를 학습하지는 않았다.
Domain-specific fine-tuning
Pre-trained model을 새로운 태스크 (detection)이자 새로운 도메인 (warped proposal window)에 적용하기 위해서 SGD를 이용하여 CNN의 파라미터를 학습했다. 모든 region proposals에 대해서 0.5 $\geq $IoU overlap으로 지정했고 ground-truth box를 positives로, 나머지 box의 클래스들은 모두 negatives로 지정했다. Learning rate는 initial pre-training rate의 1/10인 0.001로 지정했다. 매 SGD iteration 마다 uniformly sample로 32개의 positive windows (over all classes) 그리고 96개의 background windows를 이용하여 size 128의 mini-batch를 구성했다.
Object category classifiers
예를 들어 자동차를 분류한다고 했을 때 자동차와 관련이 없는 부분은 단순한 background에 불과하다. 이는 자동차와 아무 관련이 없으며 negative example이다. 이를 위해서 IoU overlap threshold를 사용하며 validation data을 이용해 {0, 0.1, ..., 0.5}의 다양한 값들에 대해서 grid search해서 찾은 결과 이상적인 threshold는 0.3이다. SVM을 이용해서 분류하는데, 트레이닝 데이터가 커서 메모리가 많이 필요하므로 standard hard negative mining method를 적용했다.
2.4. Reults on PASCAL VOC 2010-12
Sampled SIFT, Extended OpponentSIFT, RGB-SIFT 등과 비교했을 때 더 좋은 성능을 거두어서 53.3% mAP를 달성했다.
2.5. Reults on ILSVRC2013 detection
200-class에 대한 detection인데 R-CNN의 mAP는 31.4%로 두 번째로 좋은 성능인 OverFeat의 24.3%보다 굉장한 향상을 이루었다.
VOC 2007 test 셋에 대한 detection 결과는 아래 Table 2에 나와있다.
ILSVRC 2013에 대한 detection 결과는 아래 Table 3와 같다.
이 뒤의 albation study나 다른 실험과 논리전개는 모델과 실험의 타당성을 논하는데 있어서 매우 중요하지만 오래된 모델이고 중요한 contributions는 위에서 모두 설명했다고 생각하여 과감히 제외하고 appendix에 있는 object detection 결과 이미지 하나를 더 첨부하고 마무리하고자 한다.
Appendix
아래의 Figure 8는 실제 validation set에 대해서 수행한 object detection의 결과 이미지들이다.
References:
http://host.robots.ox.ac.uk/pascal/VOC/voc2012/
https://velog.io/@kyungmin1029/CV-OpenCV
https://bo-10000.tistory.com/38
https://intelligentcm.tistory.com/81
'Computer Vision' 카테고리의 다른 글
SPPNet (2014) 논문 리뷰 (0) | 2024.04.09 |
---|---|
R-CNN (2014) PyTorch Implementation (0) | 2024.04.08 |
GoogLeNet = Inception v1 (2014) PyTorch Implementation (0) | 2024.04.03 |
GoogLeNet = Inception v1 (2014) 논문 리뷰 (0) | 2024.04.03 |
VGGNet PyTorch Code Implementation (0) | 2024.04.02 |