CNN(AlexNet)을 사용하여 각각의 region proposal에 대해 4096 dimensional의 feature vector를 추출해낸다.
더 자세하게는 5개의 convoutional layer와 2개의 fully connected layer를 통과하게 하여 feature를 얻어낸다.
이때 CNN의 input size가 227*227이어야 하므로, 각 region proposal의 사이즈를 변경해줘야 한다.
warping을 통해 각각 region의 이미지 사이즈를 227 * 227로 변환해준다.
2.2 Test-time detection
test 과정
selective search의 fast mode로 2000개의 region proposals 추출
각각의 region을 warp한 후 CNN에 입력하여 feature 추출
각각의 feature들을 각각의 class 하나에 대해 학습되어 있는 SVM에 넣어 점수 획득
이때, greedy non-maximum suppression 방법을 적용
이는 모든 region에 대해, 점수가 더 높은 region과의 IoU(겹치는 부분)이 특정 임계보다 클 때 해당 region을 제거하는 방법
Run-time anaysis
R-CNN은 CNN parameter들이 모든 category에 대해서 공유된다.
해야 할 계산이 selective search, 그리고 SVM에서의 간단한 single matrix - matrix product 밖에 없다.
따라서, 기존의 방법과 달리 아주 효율적이며, 대부분의 CPU에서 빠르게 수행될 수 있다.
2.3 Training
Supervised pre-training
대규모의 데이터셋(ILSVRC2012 classification)에 대해 먼저 pre-train을 진행한다.
데이터셋에는 bounding box 에 대한 정보는 포함되어 있지 않고, image-level의 label만 존재
pre-trained된 AlexNet을 사용한다
Domain-specific fine-tuning
각각 region proposals에 대해 detection을 수행하기 위해 CNN의 parameter들을 warped region proposals로 fine-tuning 시켜준다.
CNN의 classification layer를 원래 이미지넷 데이터에 맞춰 학습되어 있는 1000-way가 아니라, (N+1)-way의 layer로 바꾸어준 후 학습을 진행하면 된다.
더 자세히는, lr이 0.001인 SGD를 사용하여 학습을 진행하는데, class가 존재하는 32개의 window, 96개의 class가 존재하지 않는 background window로 이루어진 mini batch를 사용하여 학습을 진행한다고 한다. background가 실제로 훨씬 많기 때문에 비율을 그렇게 구성한다.
Object category classifiers
물체가 부분적으로 들어가 있는 region을 해결하기 위해 IoU overlap threshold를 정하고, 그 임계값을 넘는 region만 positive로 사용한다.
grid search를 이용해 찾은 최적의 IoU 임계값은 0.3이다.
feature 추출과 training label 부여를 마친 후에는 linear SVM을 최적화한다.
이때 hard negative mining method를 사용했다고 한다.
2.4 Results on PASCAL VOC 2010-12
PASCAL VOC : 20개 class에 대해 object detection을 수행하기 위한 데이터셋.
기존 최고 성능인 35.1%에서, mAP가 53.3%까지 상승하는 좋은 성능을 내었다.
같은 region proposal 알고리즘을 사용하는 다른 방법에 비해서도 CNN을 추가한 R-CNN의 성능이 우수하였다.
Bounding box regression을 추가하였을 때, 그렇지 않은 경우보다 성능이 더 높게 나왔다. (추후 appendix C에서 설명됨)
2.5 Results on ILSVRC2013 detection
200개의 class에 대한 detection을 수행
24.3% mAP가 가장 좋은 성능이었으나, R-CNN을 사용했을때에는 31.4%로 좋은 성능을 내었다.
3. Visulaization, ablation, and modes of error
3.1 Visualizing learned features
추출한 feature, 즉 filter를 어떻게 시각화할 수 있을까?
CNN에서 첫번째 층의 필터는 edge나 보색등을 잡아내므로 이해하기도 쉽고, 시각화도 가능하다.
그러나 층이 깊어질수록 filter를 이해하고 시각화하는데에는 어려움이 있다.
따라서 해당 filter가 어떤 특성을 학습한 것인지 확인하기 위해, 특정 filter 하나하나 각각을 object detector로 사용해 region proposal에 대해 activation을 계산한다.
그 후 가장 높은 점수를 보이는 region을 확인한다면, 해당 filter가 어떤 특성을 학습했는지를 시각화한 셈이 된다.
해당 figure는 $pool_5$ layer중 6개 filter를 선택해 각각 높은 activation을 표시한 것이다.
첫번째 필터는 사람의 얼굴, 두번째 필터는 강아지, 세번째 필터는 꽃의 형태를 학습하였을 것임을 예측할 수 있다.
3.2 Ablation studies
모델의 구성 요소를 제거하거나 변경하여 해당 기능이 모델의 전반적인 성능에 어떤 영향을 미치는지 평가하는 실험
Performance layer-by-layer, without fine-tuning
fine tuning 하지 않은 모델을 사용하여 layer별 성능을 평가한 결과, fc layer를 모두 제거하고 사용하였을때 parameter의 수는 6%밖에 되지 않지만, 성능 차이가 크게 나지 않았다.
이를 통해, CNN의 representational power는 convolutional layer에서 온다는 것을 알 수 있었다.
Performance layer-by-layer, with fine-tuning
fine-tuning의 결과 mAP가 8% 상승하는 것을 볼 수 있었다.
이때, CNN layer에서보다 Fully connected layer에서의 성능 향상폭이 더 컸는데, 이를 통해 ImageNet에서 미리 학습된 CNN layer위에, 특정 데이터로 fine tuning 한 classifier를 사용하였을때 효율적으로 큰 성능 향상을 가져온다는 것을 알 수 있다.
Comparison to recent feature learning methods
당시 사용되던 다른 feature learning methods와 비교했을 때 R-CNN이 더 좋은 성능을 낸다.
3.3 Network
AlexNet 대신 VGG16을 CNN model로 사용하였을 때 성능이 8%가량 더 좋게 나왔다.
그러나 연산에 소요되는 시간이 대략 7배 더 길었다고 한다.
3.4 Detection error analysis
이 논문의 범위를 뛰어넘는다고 표현.
3.5 Bounding-box regression
오차 분석의 결과 localization error를 줄이는 것이 필요하였다고 한다.
따라서 bounding-box의 위치를 linear regression을 통해 찾는 방법을 도입하였다.
각 region proposal을 SVM으로 점수를 매긴 후에, bounding box regressor를 통해 bounding box의 위치를 새로이 예측한다.
더 자세히는, 각 region proposal의 중심점 x,y좌표, 너비와 높이 정보를 가진 P와 실제 bounding box의 해당 정보를 라벨링한 G를 통해 regression을 진행한다.
더 자세히는,,,
이렇게 linear한 수식으로 표현 후, 각각의 function d가 CNN feature의 linear function이므로
이렇게 나타낸 후, ridge regression을 통해 linear regression의 weight를 구한다.
4. The ILSVRC2013 detection dataset
해당 데이터셋이 R-CNN을 적용한 결과를 살펴본다.
4.1. Dataset overview
PASCAL VOC dataset에 비해 클래스 개수도 많고, 이미지도 많다.
4.2 Region proposals
앞 데이터셋에서와 마찬가지로 selective search의 fast mode를 사용하였다.
다만 이미지의 크기가 모두 제각각이어서 이미지의 크기를 모두 통일해주는 작업을 처음에 진행하였다.
PASCAL 데이터셋에서는 이러한 방법으로 실제 존재하는 bounding box의 98%를 찾아낼 수 있었으나, 해당 데이터셋에서는 91%가량밖에 찾아내지 못하였다.
⇒ region proposal stage에서의 개선의 여지가 남아있다.
4.3 Training data
CNN fine-tuning
detector SVM training
bounding-box regressor training
4.5. Ablation study
CNN fine-tuning + bbox reg set이 성능이 가장 좋았다.
5. Semantic segmentation
💡 segmentation이란? object detection과 달리, 이미지의 pixel 단위로 객체를 나누어 주는 것을 의미한다.
이미지 출처 : cs231n 강의자료
R-CNN을 semantic segmentation에 사용해 보았다.
fine-tuning 없이 진행했을 때, 기존의 방법과 유사한 정도 혹은 살짝 높은 정도의 정확도를 확인할 수 있었다.
6. Conclusion
R-CNN 모델은 성장이 정체되어있던 object detection 분야에서 단번에 성능을 30% 높여준 알고리즘이다.
R-CNN의 핵심은 object detection을 위해서 CNN을 사용했다는 것, 그리고 pre-trained 된 모델에 fine-tuning을 진행하여 사용하는 전이학습 방식을 사용했다는 것이다.
댓글 영역