( 참고 : Fastcampus 강의 )
[ R-CNN (2013) ]
Region-Based Convolutional Neural Network
- 2014년 CVPR에서 등장한 모델
1. 구조
-
(Step 1) Bounding Box (Region Proposals) 생성
-
(Step 2) warping 시킴 ( input image를 일정 크기로 만들어줌 )
-
(Step 3) CNN 모델에 집어넣음
-
(Step 4) Classification ( with SVM )
Region Proposal을 한 뒤, Classification을 하는 2-stage detector이다
2. (Step 1,2) Region Proposal
“물체의 영역/위치를 찾아내는 Module” ( 물체의 class와는 무관 )
Region Proposal : 위 그림에서 처럼, 관심 있는 영역 (Region of Interest)를 proposal하게 된다. ( with Selective Search..2000개 )
(1) Selective Search
-
객체의 주변과 색감/질감 차이/에워싸임 여부 등을 파악
\(\rightarrow\) 이를 통해 물체의 위치를 파악!
-
처음에는 여러 개의 Bounding Box를 생성
-
이들을 조금씩 합쳐나가서 거대한 소수의 Bounding Box로 만듬
(2) Warping Images
-
bounding box의 크기들은 모두 다르다
-
그래도, CNN의 input으로 넣기 위해, 위의 크기와 무관하게 CNN의 input size로 일치시켜서 왜곡해서 집어넣는다.
( 비율, 위치 등의 문제가 왜곡될 수 밖에 없다 )
3. (Step 3) CNN
Alex Net의 structure를 사용하여 feature를 뽑아냈다.
4. (Step 4) Classification
overfitting 방지를 위해, NN 대신 고전적인 SVM을 사용하였다
문제점 : CNN과 SVM 학습이 별도로 이루어지게 된다
5. Bounding Box Regression
key : 물체의 위치를 찾아내는 것을 Regression 문제로써 푼다!
( 물체의 위치(중앙점), 높이, 너비를 예측하는 문제로써 푼다 )
-
위에서 언급한 Selective Search Bounding Box는 너무 rough하다.
-
따라서, 물체의 위치를 보다 정확하게 파악하기 위해, Bounding Box Regression을 사용한다.
Notation :
- \(x,y\) (위치)
- \(w\) (너비)
- \(h\) (높이)
- \(P\)(선택된 bounding box)
- \(G\) (실제 bounding box)
\(\left\{\left(P^{i}, G^{i}\right)\right\}_{i=1, \ldots, N}\), where \(P^{i}=\left(P_{x}^{i}, P_{y}^{i}, P_{w}^{i}, P_{h}^{i}\right)\).
예측 값들
-
\(\hat{G}_{x} =P_{w} d_{x}(P)+P_{x}\).
-
\(\hat{G}_{y} =P_{h} d_{y}(P)+P_{y}\).
-
\(\hat{G}_{w} =P_{w} \exp \left(d_{w}(P)\right)\).
-
\(\hat{G}_{h} =P_{h} \exp \left(d_{h}(P)\right)\).
위 예측 값들을 \(t\) 로 변환한 뒤,
- \(t_{x} =\left(G_{x}-P_{x}\right) / P_{w}\).
- \(t_{y} =\left(G_{y}-P_{y}\right) / P_{h}\).
- \(t_{w} =\log \left(G_{w} / P_{w}\right)\).
- \(t_{h} =\log \left(G_{h} / P_{h}\right)\).
아래의 loss function을 minimize하는 방향으로 최적의 parameter를 찾아낸다.
- \(\mathbf{w}_{\star}=\underset{\hat{\mathbf{w}}_{\star}}{\operatorname{argmin}} \sum_{i}^{N}\left(t_{\star}^{i}-\hat{\mathbf{w}}_{\star}^{\mathrm{T}} \boldsymbol{\phi}_{5}\left(P^{i}\right)\right)^{2}+\lambda\left\|\hat{\mathbf{w}}_{\star}\right\|^{2}\).
6. Disadvantages
-
1) 오랜 학습 시간
-
selective search로 2000개의 bounding box를 찾아냄
( + 이에 대해 모두 CNN 돌림 )
-
-
2) 복잡한 알고리즘
- Multi-stage Training
- CNN, SVM, Bounding Box Regression, 3가지 모델 모두 사용
-
3) Back-prop 불가
- SVM, Bounding Box regression 때문에 한번에 back-prop 불가!