설정한 Region을 CNN의 Feature(입력값)으로 활용하여 Object Detection을 수행하는 신경망
Region Proposal
이미지를 Input으로 입력
~2000개 영역(Bounding Box)을 Selective Search 알고리즘을 통해 추출 (Sliding Window 방식의 비효율성을 극복)
Sliding Window 방식이란?
이미지에서 물체를 찾기 위해 Window의 크기,비율을 임의로 마구 바꿔가면서 모든 영역에 대해서 탐색
→ 임의의 크기,비율로 모든 영역을 탐색하는 것 너무 느림!
Selective Search 알고리즘이란?
Segmentation 분야에 많이 쓰이는 알고리즘
객체와 주변간의 색감(Color), 질감(Texture) 차이, 다른 물체에 애워 쌓여 있는지(Enclosed) 여부 등을 파악해서 인접한 유사한 픽셀끼리 묶어 물체의 위치를 파악할 수 있도록 하는 알고리즘
목표
절차
초기 Sub-Segmentation을 수행
작은 영역을 반복적으로 큰 영역으로 통합 → Greedy 알고리즘을 사용
통합된 영역들을 바탕으로 후보 영역을 생성
추출된 영역을 CNN에 넣기 위해 같은 사이즈 (224 x 224)로 찌그러뜨려 통일 (Warping)
CNN(Convolution Neural Network)
AlexNet(ImageNet)구조 재사용 (Object Detection 용으로 마지막 부분만 조금 수정)
→ AlexNet Network 마지막 부분을 Detection을 위한 Class의 수로 수정
CNN을 거쳐 각각의 Region Proposal로부터 4096-dimensional feature vector를 뽑아내고 고정길이의 Feature Vector를 만들어낸다.
SVM(Support Vector Machine)
추출된 Feature에 대해 Linear SVM을 통해 Classification 진행
→ 왜 Classifier로 SVM을? : CNN fine-tuning을 위한 학습 데이터가 시기상 많지 않아서 Softmax를 적용하면 오히려 성능이 낮아졌음
추출된 Feature Vector들의 점수를 Class별로 매기고, 객체인지 아닌지, 객체라면 어떤 객체인지 판별
Bounding Box Regression
- CNN을 통과해서 나온 Bounding Box와 처음에 y로 줬던 레이블 간 차이를 줄이도록 조정하는 선형회귀 모델 절차
- Bounding Box Regression을 통해서 나온 값을 CNN 단계 전으로 다시 전달 → Region Proposal이 더 잘되도록 해줌
- P를 G에 맞추도록 Transform하는 것을 학습하는 것이 Bounding Box Regression의 목표
- P : 처음에 Region Proposal을 통해 제안된 Bounding Box
- G : Ground Truth Bounding Box (정답 박스)
시간이 너무 오래 걸림
→ R-CNN 수행시간 : Training Time = 84시간, Testing Time = 프레임 당 13초 (GPU K40 사용 기준)
모델이 너무 복잡함
Back Propagation이 불가능