-
R-CNN 논문 읽기Computer Vision 2023. 3. 14. 15:49
목차0. Abstract
1. Introduction
2. Object detection with R-CNN
0. Abstract
이 논문에서는 R-CNN(Regions with CNN features)이라는 객체 검출 알고리즘을 제안합니다. R-CNN은 PASCAL VOC 2012 데이터셋에서 이전 최고 결과에 비해 mAP(mean average precision)를 30% 이상 개선했습니다.
R-CNN은 다음의 두 가지 핵심적인 방법을 결합했습니다.- CNN과 영역 제안(region proposal)을 결합하여 detection을 수행
- 라벨링된 훈련 데이터가 부족한 경우에 pre-trained CNN을 사용하고, fine-tuning을 진행
R-CNN은 ILSVRC 2013 detection 데이터셋에서 슬라이딩 윈도우 방식의 detector인 OverFeat보다 큰 차이로 좋은 성능을 발휘했습니다.
2023.03.06 - [Computer Vision] - OverFeat 논문 요약
1. Introduction
본 논문은 간단한 HOG와 같은 시스템에 비해 CNN이 굉장히 높은 detection 성능을 보일 수 있다는 것을 최초로 보여주었습니다. 이 결과를 달성하기 위해 저자들은 두 가지 문제에 초점을 맞췄습니다:
- 심층 네트워크를 사용하여 객체를 localize 하는 것
- 라벨링된 detection 데이터 양이 적은 상황에서 high capacity 모델을 학습시키는 것
high capacity CNN 모델은 매개변수의 수가 많은 CNN을 말합니다. 이러한 네트워크는 데이터 내에서 복잡한 관계를 학습하고 모델링할 수 있습니다. 이는 일반적으로 합성곱, 풀링 등의 여러 레이어를 사용하여 달성되며, 이를 통해 네트워크는 입력 데이터에서 고수준의 특징을 추출할 수 있습니다.
Image classification 문제와 달리, object detection 문제는 물체를 localize 하는 과정이 필요합니다. 이를 달성하기 위해 사용할 수 있는 첫번째 방법은 localization을 regression으로 수행하는 것입니다. 그러나 Szegedy 등의 연구진들이 수행한 연구에 따르면 이 방식이 잘 작동하지 않을 수 있다고 말합니다.
두번째 방법으로는 sliding window 방식이 있을 수 있습니다. 그러나 본 논문의 네트워크는 5개의 합성곱 레이어를 가지며 입력 이미지에서 매우 큰 receptive field (195×195)와 stride (32×32)를 갖기 때문에 슬라이딩 윈도우 방식을 사용한 정확한 지역화는 기술적으로 어렵다고 합니다.
따라서 R-CNN의 저자들은 CNN localization 문제를 "recognision using regions" 방식을 사용하여 해결했다고 말합니다.
테스트 시에는 입력 이미지에 대해 약 2000개의 영역 제안(region proposal)을 생성하고, 각 제안에서 CNN을 사용하여 고정 길이의 feature vector를 추출한 다음 클래스별 선형 SVM으로 각 region 대해 classification을 수행합니다. 또한, region proposal의 모양에 관계없이 각 제안에서 고정 크기의 CNN 입력을 계산하기 위해 affine image warping을 사용합니다. region proposal과 CNN을 결합하므로, 이 방법을 R-CNN(Regions with CNN features)이라고 부릅니다.
여기서 말하는 "affine image warping"은 이미지에 어파인 변환을 적용하여 이미지를 크기와 방향을 조정하는 것을 의미합니다. 이 방법을 사용하면, 각 region proposal에 대해 동일한 크기의 고정된 입력 이미지를 얻을 수 있으므로, 모든 이미지가 동일한 크기로 통일됩니다. 이렇게 통일된 이미지는 이후 CNN에서 효과적으로 처리될 수 있습니다.
Object detection 분야에서 겪는 두번째 어려움은 라벨링된 데이터가 적다는 것입니다.
이 문제에 대한 전통적인 해결책은 unsupervised pre-training을 사용한 다음에 supervised fine-tuning을 사용하는 것입니다.
본 논문의 두번째 기여는 ILSVRC 데이터셋을 사용하여 pre-training을 진행한 다음에, PASCAL 데이터셋을 사용하여 fine-tuning을 진행하는 것이 high capacity CNN을 학습할 때 효과적이라는 것을 보여준다는 것입니다.
2. Object detection with R-CNN
R-CNN은 3개 모듈로 구성됩니다. 첫번째 모듈은 region proposal을 생성합니다. 이러한 proposal은 detector에서 사용할 수 있는 후보들을 정의합니다. 두번째 모듈은 Convolution neural network입니다. 세번째 모듈은 class별 선형 SVM입니다.
2.1. Module design
region proposals
Region proposal을 수행하기 위한 방식은 여러개가 있습니다. 본 논문에서는 이전에 진행된 연구와의 비교를 위해 selective search 알고리즘을 사용하여 region proposal을 수행했다고 합니다.
Selective Search는 Object Detection 분야에서 매우 널리 쓰이는 region proposal 알고리즘 중 하나입니다. 이 알고리즘은 입력 이미지에서 가능한 모든 object region을 포함하는 작은 region들의 집합을 생성합니다.
Selective Search 알고리즘은 먼저 입력 이미지에서 유망한 object가 있을 만한 위치를 식별하기 위해 다양한 segmentation 방법을 사용합니다. 예를 들어, 이미지를 여러 스케일로 분할하거나, 이미지를 다양한 색상 공간으로 변환하거나, 각 픽셀 주변의 강도 값을 사용하여 이미지를 segment하는 등의 방법을 사용합니다. 그런 다음 이러한 segmentation 결과를 결합하여 가능한 모든 작은 region들의 집합을 생성합니다.
이후, 이러한 작은 region들을 합치는 과정을 수행하여 Object Detection에서 찾고자 하는 object와 비슷한 크기와 형태를 가지는 region들을 생성합니다. 이 작은 region들은 후속 단계에서 Object Detection 알고리즘에서 처리되어 최종적으로 object를 인식합니다.Feature extraction
이 논문에서는 AlexNet 구조를 사용하여 각 region proposal로부터 4096 차원의 feature vector를 추출합니다.
CNN에서 region proposal의 feature vector를 추출하기 위해서는 이미지 데이터를 CNN에서 처리할 수 있는 고정 크기로 변환해야하므로 이 논문에서는 후보 region을 감싸는 박스를 크기에 맞게 조정하고, 16픽셀 확장한 후 이를 CNN에 입력하여 feature vector를 추출합니다. 이를 통해 후보 영역의 크기나 종횡비와 상관없이 모든 후보 영역에서 feature vector를 추출할 수 있습니다.
2.2. Test-time detection
테스트 시에는 각 이미지에 대해 selective search 알고리즘을 실행하여 약 2000개의 region proposal을 추출합니다. 그 다음에 각각의 proposal에 대해 warping을 수행하고, CNN을 통해 feature를 추출합니다. 그런 다음 각 클래스에 대해 SVM을 사용하여 추출 된 각 feature 벡터에 점수를 매깁니다. 이미지의 모든 region에 대해 점수가 결정된 후에 각 클래스에 대해 greedy non-maximum suppression(NMS)을 적용하여 더 큰 점수를 갖는 region과의 IoU 값이 임계값보다 큰 경우 해당 region을 버립니다.
Non-maximum suppression은 이미지나 비디오에서 객체를 탐지하는 딥러닝 기반 알고리즘에서 일반적으로 사용되는 기술입니다. 이 알고리즘은 겹치는 박스를 줄이고 최종적으로 가장 신뢰할 수 있는 객체를 선택하는 것을 목적으로 합니다.
NMS 알고리즘이 수행되는 단계를 요약하면 다음과 같습니다.
1. 입력 이미지에서 객체를 탐지하고 바운딩 박스를 생성합니다.
2. 생성된 모든 박스 중에서 가장 높은 신뢰도를 가진 박스를 선택하고, 그것을 출력 리스트에 추가합니다.
3. 출력 리스트에 추가된 박스와의 IoU 값이 높은 다른 박스를 모두 제거합니다.
4. 3번이 수행된 후에 남아있는 박스 중에서 가장 높은 신뢰도를 가진 박스를 선택하고, 출력 리스트에 추가합니다.
5. 다시 출력 리스트에 추가된 박스와의 IoU 값이 높은 다른 박스를 모두 제거합니다.
6. 위의 과정을 반복하여, 모든 박스를 검사하고 출력 리스트에 추가할 때까지 반복합니다.2.3. Training
Supervised pre-training
우선, 이미지 어노테이션(바운딩 박스 레이블은 없음)만을 사용하여 ILSVRC 2012 데이터셋으로 CNN을 사전 훈련시킵니다(이 사전 훈련은 오픈소스 Caffe CNN 라이브러리를 사용하여 수행되었습니다). 이렇게 훈련된 CNN은 AlexNet의 결과와 같은 성능을 보이지만 ILSVRC 2012 classification validation set에서 top-1 에러율이 2.2% 더 높게 나타납니다. 저자들은 이 차이가 훈련 과정의 간소화 때문이라고 합니다.
Domain-specific fine-tuning
새로운 작업(detection)과 새로운 도메인(warp된 proposal window)에 맞게 CNN을 적응시키기 위해 warp된 region proposal만 사용하여 CNN 매개변수의 SGD(확률적 경사하강법) 학습을 계속합니다.
CNN의 1000 way 분류 레이어를 무작위로 초기화된 (N+1) way 분류 레이어로 대체하는 것을 제외하고는 아키텍처를 변경하지 않았습니다. 여기서 N은 객체 클래스 수를 나타내며, 백그라운드를 나타내는 1을 더합니다. VOC의 경우 N = 20이고, ILSVRC2013의 경우 N = 200입니다.
Groud-truth(정답값) 상자 와의 IoU가 0.5 이상인 모든 region proposal을 positive로 취급하고 나머지를 negative로 취급합니다.
SGD의 학습률은 0.001(초기 사전 학습 속도의 1/10)에서 시작합니다. 이렇게 하면 초기화를 파괴하지 않으면서 세밀 조정이 가능하다고 합니다.
또한 각 SGD iteration에서 모든 클래스의 32개 positive 윈도우와 96개 background 윈도우를 균등하게 샘플링하여 크기가 128인 미니배치를 구성합니다. positive 윈도우가 배경에 비해 극도로 드물기 때문에 샘플링을 positive 윈도우로 편향시켰다고 합니다.
Object category classifiers
관심 있는 물체와 부분적으로 겹쳐있는 region의 경우 positive로 라벨할 것인지, negative로 라벨할 것인지에 대한 문제가 있습니다. 본 논문에서는 이를 해결하기 위해 IoU 임계값을 설정합니다. 이 임계값 밑의 IoU를 갖는 region의 경우에는 negative로 라벨링됩니다.
이 임계값은 (0, 0.1, ... ,0.5) 중에서 grid search를 사용하여 찾았다고 합니다. 논문의 저자들은 이 값이 굉장히 중요하다는 것을 발견했으며, 이 값을 0.5로 설정하는 경우에 mAP는 5% 하락했으며, 0으로 설정하는 경우에는 4% 하락했다고 합니다.
Feature를 추출하고 훈련 레이블이 적용되면, 클래스당 하나의 선형 SVM을 최적화합니다. 훈련 데이터가 메모리에 맞지 않기 때문에, 본 논문에서는 하드 네거티브 마이닝(hard negative mining) 방법을 채택합니다. 하드 네거티브 마이닝은 빠르게 수렴하며, 실제로 모든 이미지를 한 번만 통과한 후에도 mAP가 더 이상 증가하지 않습니다.
2023.03.08 - [Computer Vision] - OHEM 논문 읽기
2.4. Results on PASCAL VOC 2010-12
R-CNN BB의 경우에는 Bounding box regression을 수행한 경우의 성능이며, R-CNN의 경우에는 bounding box regression을 수행하지 않은 경우입니다.
Bounding box regression의 경우에는 논문의 Appendix C 부분에 설명되어있는데 이를 요약하면 다음과 같습니다.
- Class 별 detection SVM을 통해 모든 proposal에 점수를 매긴 후에, class별 bounding box regressor를 사용하여 새로운 bounding box를 예측합니다.
- 이때의 input값은 N개의 P와 G의 쌍인데, P는 proposal된 bounding box의 중심 좌표값, 너비, 높이값의 네 개의 값을 갖는 벡터이며, G는 ground truth의 중심 좌표값, 너비, 높이값의 네 개의 값을 갖는 벡터입니다.
- 목표는 제안된 박스 P를 ground-truth(정답값) 박스 G와 매핑하는 transformation을 학습하는 것입니다.
- 각각의 x, y, w, h 값에 대해 이 값을 변환하는 함수를 다음과 같이 정의합니다.
- 위의 함수들을 학습한 후에는 이를 이용해서 P를 예측된 ground-truth box G'으로 변환할 수 있습니다.
- 네 개의 d(P) 함수는 다음과 같이 나타낼 수 있습니다. 이때 φ5(P) 함수는 P의 Pool5 feature를 나타낸 것 입니다. d(P) 함수는 이 pool5 feature를 선형 함수로 모델링 한 것이므로 다음과 같이 나타낼 수 있습니다. 이때 W 벡터가 우리가 학습시킬 파라미터입니다.
- 따라서 학습은 다음의 ridge regression 수식을 optimize 함으로써 진행됩니다.
- 이 때, regression target t는 다음과 같이 정의됩니다. 이는 앞서 나온 G에 대한 수식을 d 함수에 대한 수식으로 만든 것에 불과합니다.
2.5. Results on ILSVR2013 detection
'Computer Vision' 카테고리의 다른 글
CoCa: Contrastive Captioner 논문 읽기 (0) 2024.03.08 CLIP: Contrastive Language-Image Pre-training 논문 핵심 요약 (0) 2024.03.04 OHEM 논문 읽기 (0) 2023.03.08 Yolov7 커스텀 데이터셋에 학습시키기 (2) 2023.03.07 OverFeat 논문 요약 (1) 2023.03.06