Faster R-CNN 이해하기
Faster R-CNN이란?
R-CNN의 연산량 한계를 극복시킨 Fast R-CNN에서 Region Proposal부분에 Nerual Network 구조를 적용 시켜 더 빠른 속도를 자랑하는 모델입니다.
Fast R-CNN + RPN(Region Proposal Network)
2-Stage Detection Model의 메커니즘 (Faster R-CNN)
- 1) Region Proposal Network
- 2) Anchor Box
- 3) Region Proposal Network Loss Function
[1] Region Proposal Network
우리는 1개의 이미지를 FPN(Feature Pytamid Network / CNN Model)에 입력해주면, Feature map을 얻게 될 것입니다. 여기서 Fast R-CNN는 기존 이미지에서 2000개의 Region Proposal 영역을 Crop후 ROI Pooling 과정을 거쳐왔습니다.
반면 Faster R-CNN은 RPN(Region Proposal Network)라는 부분에서 Region Proposal 영역을 얻고 Crop후 ROI Pooling 과정을 거칩니다.
즉, 따로 2000개의 영역을 알고리즘으로 추천 받지 않고 Deep Learning 기술을 통해 추천 받기에 시간적으로 큰 개선을 줍니다.
HOW?
[2-1] Anchor Box
여기서 영역을 추천 받을 수 있는 혁신적인 방법인 “Anchor Box”를 이용하는 매커니즘이 등장합니다.
먼저 Anchor Box를 이해하기 위해, FPN에서 나온 Featrue map의 Shape을 [512, 5, 5] (Channel, width, height) 라 가정 합시다.
Anchor Box는 이 Featrue map의 1칸 마다 9개의 임의의 상자(사진 속 상자)를 갖습니다. 즉, [512, 5, 5]] Shape를 갖는다면, 한 Channel 당 5x5= 25(25개의 칸) x 9(9개의 상자) = 225개의 Anchor Box를 갖는 것이죠.
사진 속 이미지의 Feature map의 Size는 13x13입니다.
이 225개의 Anchor Box들은 원본 이미지(FPN에 입력되기전 순수한 이미지)에 적절한 알고리즘으로 투영되며, 학습시 Target값에 해당하는 Bounding Box와 가장 인접한 Anchor Box와 Loss값으로 가중치가 업데이트 됩니다.
[2-2] RPN의 학습
Faster R-CNN의 RPN은 Anchor Box를 통해 (1)Image Pos/Neg Classification, (2)Bounding Box Regression 두가지를 예측합니다.
- [1] Image Pos/Neg Classification
- 원본 이미지의 Target값과 IOU가 0.7이상인 Anchor Box는 Positive
- IOU가 가장 높은 Anchor Box는 Positive
- IOU가 0.3보다 낮은 Anchor Box는 Negative
- [2] Bounding Box Regression
- Positive인 Anchor Box와의 좌표값 차이를 최소화하는 Regression
Prediect(RPN에서 Proposal)한 Bounding Box의 값 : p=(px,py,pw,ph) Ground Truth의 값 g=(gx,gy,gw,gh)
- Positive인 Anchor Box와의 좌표값 차이를 최소화하는 Regression
먼저 Bounding Box의 값인 P(X,Y,W,H)를 G에 가깝게 만들어주기위해 dx, dy, dw, dw라는 함수에 P값을 넣어줍니다. 즉, 우리는 d함수들이 G에 가깝게 이동시킬 수 있게 학습시키는 것입니다.
이때 X,Y는 점이기 때문에 위치만 이동시켜주고, W,H는 이미지의 크기에 맞게 조정해야하기 때문에 그에 맞는 계산을 추가해줍니다.
이제 P를 변환시킨 G로 이동시키기 위한 이동량인 tx, ty, tw, th를 정의해줍니다.
정의해준 t 값과, 위의 연산으로 Bounding Box Regression을 진행 해주며, 이 Regression는 RPN의 학습시 사용 됩니다.
[3] Region Proposal Network Loss Function
RPN은 위와 같은 Loss Function을 통해 학습을 진행하게 됩니다.
Image Pos/Neg Classification부분은 흔히 사용 되는 Cross Entropy 함수가 사용 되며, Bounding Box Regression부분은 위에서 정리한대로 사용 됩니다.
λ 기호는 Balancing Value이며, 값을 적당히 조절해주는 파라미터입니다. 논문에선 λ 을 10으로 정의했습니다.
R-CNN계열 Detect Model은 여기까지 이해하는 것으로 마치며, 이후 1-Stage Detection Model에 대해 정리하겠습니다.
Reference
- https://lilianweng.github.io/lil-log/2017/12/31/object-recognition-for-dummies-part-3.html