main Paper
1. Introduction
feature이라는 것은 매우 중요하다. 기존의 visual recognition task는 ensemble 시스템을 구축하고 이 방법에 대한 사소한 변형만을 통해 개선시켰기에 성능 향상이 더디었던 상황이었다. 따라 visual recognition에 훨씬 더 유용한 feature를 계산하기 위한 multi-stage process에 대한 초점이 맞춰지게 되었고, 과거에 사용되었던 CNN을 사용하여 성능을 개선하자는 아이디어를 통해 R-CNN을 만들어냈다. single image를 region proposal로 만들어 pre-trained CNN에서 SVM을 통해 classification를 학습하는 과정과 object detected된 region proposal에 대해 IoU와 NMS 개념을 통해서 좌표가 실제 ground truth와 같아질 수 있도록 regression을 학습하는 과정을 진행하여 object detect를 가능하게 한다.
2. Object detection with R-CNN
object detection system consists of three modules
: 이 섹션에서는 각 모듈에 대한 설계 결정을 제시하고, 테스트 시간 사용을 설명하고, 매개 변수를 학습하는 방법을 자세히 설명하며, PASCAL VOC 2010-12 및 ILSVRC 2013에 대한 탐지 결과를 보여준다.
- categorical-independent region proposals를 생성한다.
: 이 proposal은 detector에 사용할 수 있는 set of candidate detection을 정의한다.
- 각 region에서 fixed-length feature vector를 추출하는 대규모 CNN.
- set of class-specific linear SVMs.
2.1. Module design
Region proposals (localization)
: 다양한 최신 논문은 category-independent적인 region proposal을 생성하는 방법을 제공한다. objectness, selective seearch, categoty-independent object proposals와 같은 예시들이 있고, 규칙적인 간격의 정사각형에 CNN을 적용하여 분리된 cell를 탐지한다. R-CNN은 특정 region proposal method에 구애받지 않지만, 과거의 detection work와의 비교를 위해 selective search를 사용한다. selective search로 한 개의 image에서 약 2000개의 이미지를 잘라내고 이 잘려진 이미지를 proposed region이라 부른다. object가 될만한 영역들에 대해서 candidate bounding-box를 선별해 주는 것이다.
Feature extraction (classification)
: 위에서 선별된 candidate bounding box들은 개별적으로 CNN이 수행되는데 이는 object의 feature를 추출하기 위해서이다. 보통은 softmax를 통해 feature에 대해 classification을 진행하는데 R-CNN에서는 CNN으로 feature만 뽑아주고 SVM 방식으로 수행했다.
세부적으로는 AlexNet를 사용하여 각 region proposal에서 4096-dimensional vector를 추출한다. feature는 5개의 convolutional layer와 2개의 fully connected layer를 통해 mean-subtracted된 227*227 RGB input image가 전달되며 계산된다. 이 다음 AlexNet에 proposed region을 넣어서 뽑아낸 feature map을 SVM으로 classification을 진행한다.
warp to resize
: region proposal에 대한 feature를 계산하기 위해서는, 해당 region image data를 CNN과 호환되는 형태로 변환해야 한다(fixed 227*227 pixel size). 우리는 여기서 region proposal들 중에서 크기 또는 가로 세로 비율과 관계없이 선택하고, 모든 pixel를 required size의 tight bounding-box로 warp한다. CNN에서 사용하기 위한 region proposal들을 일정한 size로 전처리하는 과정이라고 보면 된다. Fig 2는 warped training region의 무작위 표본 추출을 보여준다.
summary of Detection
1. input image를 R-CNN model에 입력
2. selective search(region proposal) 방식으로 candidate bounding box 선별
3. 선별된 candidate bounding box를 warping(227*227)
4. warped 227*227 image를 입력하여 AlexNet로부터 featrue 추출
5. AlexNet으로부터 추출된 feature들을 이용해서 SVM을 적용해 classification
2.2. Test-time detection
테스트 시에, image에 대한 selective search를 실행하여 약 2000개의 region을 추출한다. 우리는 feature map를 계산하기 위해 각 proposal를 warp하고 CNN을 통해 forward했다. 그런 다음, 각 class에 대해 pre-trained SVM(Support Vector Machine)를 사용하여 추출된 각 feature vector(map)에 점수를 매긴다. image에서 점수가 매겨진 region에 대해, IoU가 학습된 임계값보다 더 높은 selected region이 중복될 경우에 greedy NMS(각 class에 independently하게)를 적용한다.
Run-time analysis
: 다음 두가지 속성을 통해 detection 효율성을 높일 수 있다고 한다.
첫째, 모든 CNN 매개변수는 모든 categories에 걸쳐 공유된다.
둘째, CNN로부터 계산된 feature vector는 다른 일반적인 접근법과 비교할 때 저차원적이다.
예를 들자면, UVA detection system에서 쓰이는 feature vector는 R-CNN의 vector보다 2배 이상 크다.
이러한 가중치 공유의 결과로 region proposal과 feature에 대한 계산 시간이 모든 class에 걸쳐 감소된다. class 별 계산은 feature, SVM weight, NMS의 스칼리 곱으로 이루어진다. 실제로, 이미지의 모든 스칼라 곱은 단일 행렬곱으로 일괄처리된다. featrue matrix는 일반적으로 2000*4096이고, SVM weight matrix는 4096*N이다. 여기서 N은 class의 수이다.
이 분석은 R-CNN이 approximate와 같은 기술에 의존하는 것이 아니라, 수천개의 object class로 확장할 수 있음을 보여준다. 100k class가 있더라도 현대의 multi-core CPU에서는 matrix 곱이 10초밖에 걸리지 않는다. 이러한 효율성은 단순히 region proposal과 shared feature의 결과가 아니다. R-CNN은 기존의 방식으로는 더 많은 메모리를 필요로 했던 object detection 방식을 수려하게 개선시킨 방식이라는 의미로 말할 수 있을 것 같다. 이 접근 방식을 통해, 10k detector는 CPU에서 약 1분 안에 실행될 수 있으며, mAP는 어떤 approximate도 만들어지지 않기 때문에 59%에 머문다고 한다.
2.3. Training
supervised pre-training
: 초기에 image 수준의 주석만 사용하여 image classification만을 위한 large auxiliary dataset(ILSVRC2012 classification)로 CNN을 개별적으로 pre-train 시켰다. (boundingbox labels are not available for this data). Pre-training은 open source Caffe CNN library를 사용하였다. 결과적으로 해당 CNN은 ILSVRC 2012 분류 검증 세트에서 최저 오류율 2.2% 를 얻었다. 이러한 성능의 이유는 training process의 단순화로 인해 발생한다.
R-CNN에서는 AlexNet 초기 training에서 large auxiliary dataset(Image Net)[image: class]으로 image classification을 pre-train 시켰다. Image Net나 AlexNet 모두 classification하는 목적을 가지고 있기 때문에 Image Net으로 training된 AlexNet을 가지고 object detection에 필요한 small target dataset(PASCAL VOC)[image: class, object ground-truth box]를 조금만 학습 시켜도 된다. 이를 우리는 fine-tuning 했다고 표현한다. 만약 small target dataset으로 학습을 시작하게 되면 dataset 양도 적을 뿐더러 시간이 오래걸린다.
domain-specitic fine-tuning
: CNN을 object detection과 warped proposal window에 적용시키기 위해, 우리는 warped region proposal에 대해 CNN 매개변수들을 SGD train하였다. 이 때 초기값을 방해하지 않고 fine-tuning이 진행될 수 있도록 learning rate를 0.001로 설정하였다.
object category classifiers
: object detection에서 classification을 위한 SVM을 학습시키기 위한 전제조건은 positive example이여야 한다는 것이다. ground-truth와 candidate proposal region과의 IoU overlap thershold 값이 0.5이상일 때의 조건을 활용해 판단한 positive example들에 대하여 해당 class의 proposal region과 ground-truth가 일치하지 않는 경우 두 좌표 정보들을 비교하여 regression 문제로 해결할 수 있다. 이 thershold에 대한 신중한 선택이 중요하며 이 값에 따라 mAP 또한 변동된다. 최적 object category classifiers의 경우, 각 class에 대한 ground-truth와 동일한 boundingbox를 갖게 된다.
2021.04.03 - [Word Definition] - Support Vector Machine(SVM)
2021.04.03 - [Word Definition] - intersection-overunion(IoU)
요약하자면 pretrained-CNN model를 사용하여 single region proposal에 대한 feature map을 추출한다. 그 뒤 ground-truth와 비교하여 IoU가 0.5 이상인, training label를 적용되는 proposal(positive example)에 대해 해당 class에 맞는 linear SVM의 최적화(classification)와 bounding regression(detection)이 진행된다.
(Slow)R-CNN flow
1. selective search algorithm으로 single image에서 약 2000개의 proposed region으로 잘라낸다.
2. 잘라낸 2000개의 image들을 object candidation으로 가정한 상태로 훈련을 진행한다.
: ConvNet에서 나온 feature vector들에 대해서, object detection을 위해 R-CNN은 classification 문제의 경우 일반적인 classification과 같은 방법을 사용하고, object detection 기능인 경우 region proposal algorithm을 사용한다. 따라서, R-CNN은 총 두가지 문제에 대한 학습을 진행하게 된다.
3. 2000개 중 한개의 proposed region으로 예시를 들어보면
갈색 부분: ground truth(input data에 대한 데이터의 실제값인 label과 비슷한 의미)
회색 영역: proposed region들 중 하나
회색 영역을 pre-trained CNN에 넣어 feature map를 뽑아낸 후 이 feature map으로 두가지 모델의 학습을 진행한다.
- SVM으로 classification 학습
- proposed region에 object가 포함되어 있을 경우(=배경이 아닐 경우) proposed region의 좌표가 실제 ground truth와 같아질 수 있도록 regression을 학습
그러면 proposed region이 어떤 object인지 어떻게 판단하고 ground truth와 비슷해질 수 있도록 학습하는건가에 대한 의문점이 생긴다.
what is label about proposed region?
: 제공되는 dataset에는 object에 대한 ground truth만 달려있을 뿐 proposed region에 대한 label은 따로 존재하지 않는다. proposed region을 SVM classifier과 regressor에 넣어 학습시켜야 하는데 학습의 기준이 되는 label이 존재하지 않는 것이다. 이 과정에서 IoU로 proposed region label를 얻는다. R-CNN에서는 ground truth와 proposed region 사이의 IoU 값을 계산해 0.5 이상인 경우 해당 region을 객체로 바라보고 ground truth와 같은 class로 labeling을 한다.
4. 예측 과정에서는 ground truth 없이 오로지 학습된 가중치 값들만을 갖고 예측이 진행된다.
feature map을 SVM에 넣어 classification을 진행해서 배경이 아닌 어떤 object 분류될 경우, 같은 feature map을 regressor에 넣어 proposed region의 좌표가 실제 객체의 위치를 포함할 수 있도록 regression을 한다.
object detection 예측 결과가 겹쳐서 나타났을 때, 겹치는 영역 중에서 정확도가 가장 높은 것 한 개만 남기고 겹친 부분에 대한 NMS 후처리 과정이다. 겹치는 것을 확인하는 과정에서도 IoU가 사용된다.
2021.04.03 - [Word Definition] - Non-maximum suppression(NMS)
2.4. Results on ILSVRC2013 detection
R-CNN은 31.4%의 mAP를 달성하며, 이는 OverFeat라는 이전 알고리즘의 24.3%라는 결과를 크게 앞선다. 대부분의 다른 submission(OverFeat, NEC-MU, UvAEUvision, Toronto A 및 UIUC-IFP)들더 ConvNet을 사용하여 CNN을 object detection에 적용할 수 있다는 방식에 상당한 뉘앙스가 있음을 보여줌이 결과적으로 유도된다.
이 뒤의 논문 내용으로는 3. Visualization, ablation, and modes of error, 4. The ILSVRC2013 detection dataset, 5. Semantic segmentation에 관한 내용인데 현재 Slow R-CNN을 대체하는 Fast R-CNN이 존재하므로 R-CNN의 구조와 성능에 대해서만 짚고 넘어가면 될 것 같아 생략한다.
6. Conclusion
해당 논문 발표 이전 object detection 분야는 성능 향상에 대한 정체기였지만, R-CNN은 이전 최고 결과에 비해 30%의 상대적 향상을 제공하는 간단하고 확장가능한 알고리즘을 제시한다. 두 가지 통찰력을 통해 이 성과를 달성했다.
- 첫 번째는 object를 localize하고 segment하기 위해 bottom-up region proposal에 ConvNet을 적용하는 것이다.
- 두 번째는 label이 지정된 training data가 부족한 경우 large CNN을 train하기 위한 패러다임이다.
네트워크를 abundant data에 대한 예비 task로 supervised pre-training 하는 것(image classification)과 데이터가 부족한 target task에 대해 네트워크를 fine-tuning하는 것(detection)이 매우 효과적이라는 것을 보여준다. 결과적으로 "supervised pre-training / domain-specific fine-tuning" 패러다임이 다양한 데이터 부족 vision 문제에 매우 효과적일 것이라고 추측한다. computer vision과 deep learning(bottom-up region proposal 및 ConvNet)의 고전적 도구를 사용하여 이러한 결과를 달성했다는 것이 유의미하다는 점에 주목함으로써 결론을 내린다.
R-CNN summary
1. R-CNN은 selective search를 통해 region proposal을 먼저 뽑아낸 후 CNN 모델에 들어간다.
2. CNN모델에 들어가 feature vector를 뽑고 각각의 class마다 SVM로 classification을 수행한다.
3. localization error를 줄이기 위해 CNN feature를 이용하여 bounding box regression model을 수정한다.
R-CNN drawbacks
- 여기서 selective search로 2000개의 region proposal을 뽑고 각 영역마다 CNN을 수행
: CNN 연산 * 2000 만큼의 시간이 걸려 수행시간이 매우 느리다.
- CNN, SVM, Bounding Box Regression 총 세가지의 모델이 multi-stage pipelines으로 한 번에 학습되지 않는다.
: 각 region proposal 에 대해 ConvNet forward pass를 실행할때 연산을 공유하지 않기에 end-to-end로 학습할 수 없다. 따라서 SVM, bounding box regression에서 학습한 결과가 CNN을 업데이트 시키지 못한다.
그리고 이 두가지 문제를 RoI pooling으로 해결한 Fast R-CNN이 나오게 된다.
References
jaehyeongan.github.io/2019/10/10/R-CNN/
89douner.tistory.com/88?category=878735
deepbaksuvision.github.io/Modu_ObjectDetection/posts/02_01_PASCAL_VOC.html
'개인 정리 > Dissertation analysis' 카테고리의 다른 글
Fast R-CNN (0) | 2021.04.05 |
---|---|
CNN (0) | 2021.03.30 |
Floor-SP (0) | 2021.03.29 |
댓글