1. Abstract
R-CNN을 개선한 논문으로 속도와 정확도 모두를 높이려는 시도
2. Introduction
- image detection은 image의 위치를 찾고 bounding box까지 찾아내야하므로 단순한 image classification보다 어렵다.
- R-CNN은 image detection 분야에 CNN을 도입한 모델이다.
2.1 R-CNN and SPPnet
2.1.1 R-CNN
- R-CNN의 학습과정이 multi-stage pipeline이므로 복잡하다.
- SVM과 Bounding-Box Regeressor를 학습시키기 위해서는 CNN의 결과가 모두 disk에 저장되어야 하므로 시간 및 용량이 많이 요구된다.
- R-CNN은 모든 proposal에 대하여 각각 CNN연산 및 SVM, Selective Search를 해줘야하므로 Object detection 속도가 느리다.
2.1.2 SPPnet
- 반면에 SPPnet은 CNN computation을 공유하는 방식으로 R-CNN보다 속도가 빠르다.
- R-CNN의 학습과정이 multi-stage pipeline이므로 복잡하다.
- feature들이 모두 disk에 저장되어야 하므로 시간 및 용량이 많이 요구된다.
- convolution layer가 update되지 않기 때문에 성능의 한계가 존재한다.
2.2 Contributions
- 성능향상
- single-stage pipeline with multi-task loss
- updating convolution layer by fine tuning
- disk를 사용하지 않음
3. Fast R-CNN architecture and training
- 전체 image에 CNN과 Pooling을 적용해 feature를 추출
- 모든 region이 공통적으로 사용
- conv feature 위에 projection된 각각의 proposal에 RoI(region of interest) pooling을 적용해 고정된 feature를 추출
- fully connected layer 통과
- 각각의 RoI에 대해 적용되며, parameter만 공유
- softmax를 통한 label 예측과 bounding box regression을 동시에 진행
- fc layer를 통과한 각각의 RoI에 대하여 적용
3.1 The RoI pooling layer
- proposal들을 처리하기 위해서는 일정한 크기로 만들어줘야하는데, R-CNN의 wraping은 정보의 손실이 발생하는 문제가 존재
- BoW(Bag of Words)를 적용하게 된다면 다양한 크기로부터 일정한 크기의 feature를 뽑아낼 수 있지만, 위치정보를 모두 잃는다는 단점 존재
- 따라서, proposal 영역을 여러 구간으로 나눈 후에 각 구간마다 BoW를 적용시켜준다면 지역정보를 유지하는 것이 가능함
- SPPnet의 Spacial Pyramid Pooling의 special case로, SPPnet에서는 각 구간을 다시 여러 구간으로 나누는 방식으로 여러 개의 pooling을 적용한 후 concatenate하여 사용
3.2 Initializing from pre-trained networks
- pre-trained된 CNN을 사용
3.3 Fine-tuning for detection
- SPPnet에서 학습이 잘 안되는 가장 큰 이유는 각 mini-batch에서 RoI 들이 각각 다른 image에서 올 때 발생
- 따라서, Fast R-CNN은 hierarchical sampling 방식 사용
- mini-batch의 서로 다른 image 개 중에서 RoI를 무작위로 sampling하는 것이 아니라, 각각의 image에서 개를 sampling 하여 학습에 사용
- mini-batch끼리 학습을 공유할 수 있기 때문에 더 빠르게 학습 가능
- 논문에서는 =2, =128이 가장 성능이 좋았다고 함
3.3.1 Multi-task loss
- =
- =
- =
- = = probability for each class including background
- = ground truth class
- = = predicted bounding box
- = ground truth bounding box
3.3.2 Mini-batch sampling
- 학습을 시킬 때는 ground truth bounding box와 IoU가 0.5 이상인 RoI들만 사용
- IoU가 0.1~0.5 사이인 RoI는 background image로 labeling하여 사용
3.3.3 Back-propagation through RoI pooling layer
- =
- = = layer’s -th output from the -th
- = -th activation input into RoI pooling layer
- =
- 즉, RoI 의 pooling layer output 에 대하여 가 max pooling에 의해 argmax selected 될 때 가 back-propagated됨
3.3.4 SGD hyper-parameters
- decaying learning rate
- momentum = 0.9
3.4 Scale invariance
- scale invariant object detection하는 방식으로 2개의 방식을 실험
- brute force : proposal image에 대한 scale을 고정해두고, 해당 데이터에 대해서만 학습
- image pyramids : proposal image를 정규화한 후, 임의로 여러 scale을 추출하여 학습
4. Fast R-CNN detection
- RoI pooling을 해준 이후, 각각의 proposal 마다 확률 = 을 계산
- 계산된 를 기반으로 NMS를 수행
4.1 Truncated SVD for faster detection
truncated SVD를 통한 행렬연산을 수행하여 fc layer의 연산속도를 높임
로 factorizing
- 개의 parameter를 개로 줄일 수 있음
- fully connected layer 를 fully connected layer , 로 분해하여 사용
- fc layer 를 적용한 후, fc layer 를 적용하는 방식
5. Main results
5.1 Experimental setup
- CNN Architecture로 3가지 모델 실험
- AlexNet
- VGG_CNN_M_1024
- VGG16
5.2 VOC 2010 and 2012 results
5.3 VOC 2007 results
5.4 Training and testing time
5.4.1 Truncated SVD
5.5 Which layers to fine-tune?
- SPPnet에서는 conv layer는 고정시키고 fc layer에 대해서만 fine tuning 했지만 좋은 성능을 보여줌.
- R-CNN과 같이 깊은 CNN Architecture에서는 conv layer도 많이 tuning되므로 fc layer만 fine tuning하는 것은 성능에 좋지 않음
- 하지만 모든 conv layer가 tuning이 필요한 것은 아님을 실험을 통해 알 수 있었음
6. Design evaluation
6.1 Does multi-task training help?
- multi-task training한 것이 더 좋은 성능을 보여줌
- 각 task의 학습이 공유된 representation에 대해서 학습도 공유하는 효과
6.2 Scale invariance: to brute force or finesse?
- single scale을 하는 것보다 multi scale하는 것이 더 좋은 성능을 보여줬지만, 속도와 성능 trade-off에서 single scale이 더 좋다고 판단하여 모델에서는 single scale 사용
6.3 Do we need more training data?
- dataset의 크기를 늘릴수록 성능이 좋아짐
6.4 Do SVMs outperform softmax?
- softmax가 SVM보다 다소 좋은 성능을 보임
6.5 Are more proposals always better?
- proposal이 많아질수록 성능이 떨어지는 경향을 모여줌
6.6 Preliminary MS COCO results
- MS COCO dataset에 대해서도 Fast R-CNN 모델을 실험해봄
7. Conclusion
Fast R-CNN은 기존의 R-CNN과 SPPnet보다 속도가 훨씬 빠르고, 성능도 좋다.