https://arxiv.org/pdf/1311.2524.pdf
Abstract
simple 하고 scalable한 detection algorithm
1) bottom-up region proposal를 위해 high capacity CNN 을 적용
2) 라벨된 training data가 scarce(부족) 해서, 특정 도메인에 한정된 fine-tuning 에 따라 suprevised pre-training 을 사용
그래서 region proposal을 CNN과 함께 하기에 이름을 RCNN이라고 지었다.
1. Introduction
input image받고 -> 2000 region proposals 뽑기 -- warping --> CNN features 계산 -> 각 region 분류(선형 SVM사용)
1990's CNN 쇠퇴 -> SVM rise -> LeCun의 CNN 이 ILSVRC 우승 -> CNN rise
두 가지 문제
1) Deep Network로 Localizing을 하는 것 -> region proposals with CNN
이미지 분류와 달리 detection은 localizing object가 필요하기에 regression 문제처럼 다루려했으나 성능이 안나와서 대체제로 sliding-window detector를 만들었다. 이것은 큰 receptive fields, stride를 가지게 되어 sliding window 패러다임에 정확한 localization 에 대한 문제가 있어서 대신에 recognition using regions 패러다임을 적용했다.
input image 당 2000 region proposals를 뽑아내고 각 region proposal 당 고정된 길이의 feature vector를 뽑고, 각 region proposal을 SVM으로 분류한다. 여기서 각 region proposal의 CNN input을 통일시키기 위해 warping을 사용한다.
2) 작은 양의 데이터로 높은 용량의 모델을 훈련시키는 것 -> supervised pre-training 사용
전통적인 방법으로는 unsupervised pre-training을 쓰고 supervised fine-tuning을 쓰는 것.
이 paper에서는 큰 보조적인 데이터 셋에서 supervised pre-training을 쓴 다음, 작은 데이터 셋으로 domain-specific 한 fine-tuning 을 하는 방법을 보여줬다.
fine-tuning 후에 mAP이 8퍼센트 정도 올랐다.
시스템은 꽤 efficient한데, 클래스 한정 계산이 reasonably 하게 작은 행렬곱이고 greedy non-maximum suppression 이다.
(greedy non-maximum suppression은 confidence 가 가장 높은 bbox를 선택하고, 이와 iou 가 iou-threshold 를 넘는 bbox를 모두 탈락시키는 방법을 말함)
간단한 regression 방법이 확연하게 mislocalization을 줄인다, segmentation 에서도 잘된다.
2. Object detection with R-CNN
3개의 모듈로 구성되어있다.
1) 첫번째 모듈은 category-independent region proposals를 생성해낸다
2) 두번째 모듈은 각 region 에서 fixed-length feature vector 를 추출하는 큰 CNN 이다.
3) 세번째 모듈은 class-specific 한 linear SVMs 의 집합이다.
2.1. Module design
Region proposals: 특정 region proposal method에 상관없이 사용가능하도록 selective search 사용
Feature extraction: 각 region proposal마다 4096 차원의 feature vector를 뽑아낸다.
227 x 227 input image -> 5 convolutional layers -> 2 fully connected layers
feature를 계산하기 위해 region을 CNN이 받아들일 수 있는 형태로 변환해야 하기에, 비율과 사이즈 상관없이 warping을 함.
2.2 Test-time detection
test 시에는 "fast mode"(모든 experiments에서는 이 모드를 사용)로 selective search를 돌리고, 2000 개의 region proposals를 뽑아냈다. CNN 통과를 위해 각 proposal을 warp 했다. 그래서 각 클래스마다, 각 뽑힌 feature vector를 해당 클래스를 위해 학습된 SVM을 사용하여 score를 매겼다.
Run-time analysis:
1) 모든 CNN 파라미터가 모든 카테고리들에 걸쳐 공유된다.
2) 각 feature vectors는 CNN에 의해 계산되는데 다른 일반적인 접근법들에 비해 낮은 차원이다.
feature matrix는 2000 x 4096이고, SVM weight matrix는 4096 x N(numer of classes).
2.3 Traning
Supervised pre-trainig: 추가적인 이미지 분류 데이터(bounding box가 없는..)를 이용해 pre-trained 시켰다.
Domain-specific fine-tuning: warped 된 region proposals를 사용한 CNN파라미터의 SGD training 을 진행시켰다.(N+1(background))-way classification layer를 랜덤하게 초기화했고, CNN 구조는 변경시키지 않았다.
region proposal > 0.5 IoU ground-truth box 와 overlap 되는 것만 positives 로 남겨두고 나머지는 negatives로 다뤘다.
learning rate 0.001(초기 pre-training 의 1/10)
각 SGD iteration에서 128 mini-batch(32 positive windows + 96 backgorund windows)
Object category classifiers: 겹쳐져 있는 것에 대해서 라벨링은 IoU overlap threshold를 조절해줬다. 이것은 mAP에 영향을 끼친다.
3. Visualization, ablation, and modes or error
3.1 Visualizing learned features
첫번째 레이어는 가장자리와 다른 색깔을 잡는다.
특정 feature에서 나온 하나를 object detector 처럼 non-maximum suppression을 수행해서 top score regions만 보여준다.
averaging은 다른 visual mode들과 unit에 의해 계산된 불변성안에서 insight를 얻기위해 하지 않았다.
pool 5 의 feature map은 6 x 6 x 256 = 9216 차원, 각 unit은 original 227 x 227 에서 195 x 195 의 receptive field를 가지고 있다. 위 이미지의 각 행은 top 16 activations 를 보여준 거고, 네트워크가 학습하는 representative sample을 보여주기 위해 선별된 것이다.
이어지는 fc6 는 위에서 보여지는 shape, texture, color, amterial properties의 distributed representation 들을 합친 큰 set을 담을 수 있는 능력을 가지고 있다.
3.2. Ablation studies
Performance layer-by-layer, without fine-tuning: fc6 는 4096 x 9216 weight matrix 에 bias를 더해야 한다. fc7는 마지막 레이어로 4096 x 4096 weight matrix 로 계산된다.
layer-by-layer로 퍼포먼스를 분석한 결과, fc7이 fc6보다 안좋았고, 놀랍게도 fc7와 fc6를 제거한 게 꽤 좋은 결과를 나타냈다.
Performance layer-by-layer, with fine-tuning: mAP가 8.0% 올랐다.
3.3 Network architectures
13 layers, 3x3 convolution kernels, 사이에 5 max pooling layers, 그 위에 3 fully connected layers.
1 conv-2 max pool-3 conv-4 max pool-5 conv-6 max pool-7 conv-8 max pool-9 conv-10 max pool-11 fc-12 fc-13 fc
이것을 O-Net(OxfordNet, baseline은 T-Net(TorontoNet)) 이라고 부르기로 했다.
R-CNN에서 O-Net 을 사용하기 위해, pre-trained 된 VGG-16 모델을 가져와서 사용했고 T-Net에 사용한 것과 같은 방법으로 fine-tune을 했다.
R-CNN에서 O-Net이 T-Net 보다 나은 것을 보여주지만 T-Net보다 7배 더 긴 시간이 든다.
3.4. Detection error analysis
논문의 Figure 5, 6 참고.
3.5. Boudning-box regression
selective search region proposal을 위해 pool5 features에서 주어지는 새로운 detection window를 예측하기 위해 linear regression model을 train 시켰다. 이러한 간단한 접근방법이 mislocalized detections를 큰 숫자만큼 고쳤다.
3.6. Qualitative results
Figure 8, 9, 10, 11 참고.
4. The ILSVRC2013 detection dataset
4.1. Dataset overview
train(395,918), val(20,121), test(40,152)
train set은 완전히 annotated 되지 않았고, val, test는 확실히 annotated 된 데이터.
positive images 는 class와 관련있는 instance를 가지고 있는 images, negative images는 class 와 관련있는 instance가 없는 images 이며, 여기서는 negative image sets는 사용되지 않았다.
general strategy 는 val1, val2를 나누는 것.
4.2. Region proposals
selective search는 fast mode 에서 실행되었고 val1, val2, test에서 되었다. train 에서는 적용되지 않았다.
selective search는 scale이 불변하지 않기 때문에 생성되는 regions의 개수는 image resolution에 의해 결정되었다. 각 이미지를 500 pixels로 selective search를 실행시키기 전에 resize 시켰다.
4.3 Training data
이 세가지 방법을 위해 training data가 필요했다.
1) CNN find-tuning
val1 + train N 에서 50k SGD iteration 을 돌았다.
2) detector SVM training
val1 + train N으로부터 모든 ground-truth box들이 각 클래스에 해당하는 positive examples로 사용되었다.
negative images는 적용되지 않았고 이는 annotation이 보장되지 않았기 때문.
3) bounding-box regressor training
val1 에서 train 되었다.
4.4. Validation and evaluation
모든 hyperparameters(SVM C hyperparameters, region warping에서 사용된 padding, NMS thresholds, bounding-box regression hyperparameters)은 PASCAL에서 사용된 값들과 똑같이 고정되었다.
첫번째 제출은 bounding-box regression 없이, 두번째 제출은 bounding-box regression을 포함했는데, 이런 제출을 위해 SVM과 bounding-box regressor training sets을 각각 val + train1, val 로 확장시켰다. CNN을 위해서는 val1 + train1K를 사용했는데 이것은 fine-tuning과 feature 계산을 재실행하는 것을 피하기 위해서였다.
5. Semantic segmentation
현재 semantic segmentation system을 이끌고 있는 O2P와 비교를 용이하게 하기 위해 우리는 그들의 오픈 소스 프레임워크를 사용했습니다.
CNN features for segmentation:
1) 첫번째 방법(full)은 region의 shape를 무시하고 warped window에서 CNN features를 직접 계산하는 것입니다. detection에서 우리가 한 것처럼요. 그러나 이런 features는 non-rectangular shape를 무시합니다.
2) 두번째 방법(fg)은 region의 foreground mask 에서만 CNN features를 계산하는 것입니다. mean input으로 background를 교체하고 그래서 background region은 mean subtraction이후에 zero가 됩니다.
3) 세번째 방법(full + fg)는 full 과 fg 방법을 합친 것입니다.
Results on Voc 2011:
6. Conclusion
1) localize 와 segment objecs를 위해 bottom-up region proposal를 동작하게 하는 high-capacity convolution neural networks 를 사용하는 것
2) 라벨링된 트레이닝 데이터가 scarce할 때 큰 CNN을 학습시키는 것에 대한 패러다임, supervised pre-training/domain-specific fine-tuning 패러다임.
'공부 > 논문' 카테고리의 다른 글
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis (0) | 2023.05.24 |
---|---|
VITS (0) | 2023.01.06 |
ResNet: Deep Residual Learning for Image Recognition 리뷰(작성중) (0) | 2022.12.24 |
A Survey on Modern Recommendation System based on Big Data (0) | 2022.11.26 |
Real-time Facial Surface Geometry from Monocular Video on Mobile GPUs (0) | 2022.04.08 |