Fast RCNN
Fast RCNN 주요 특징(From SPP-Net)
SPP Layer를 ROI Pooling Layer은
End-to-End Network Learning (ROI Proposal은 제외)
- SVM을 Softmax로 변환
- Multi-task loss 함수로 Classification과 Regression을 함께 최적화
ROI Pooling
- Feature Map 상의 임의의 ROI를 고정 크기의 Pooling 영역으로 매핑
- 매핑 시 일반적으로 Max pooling 적용
Fast RCNN - ROI Pooling
ROI Pooling을 적용한 Fast RCNN 구조
Fast RCNN 구조
Multi-task loss
Faster RCNN 개요
\[Faster\_RCNN = RPN + Fast\_RCNN\]Faster RCNN 구조
Region Proposal Network 구현 이슈
Selective Search를 대체하기 위한 Region Proposal Network 구현 이슈
데이터로 주어질 피처는 pixel 값, Target은 Ground Truth Bounding Box인데 이를 이용해 어떻게 Selective Search 수준의 Region Proposal을 할 수 있을까?
→ (Reference) Anchor Box Object가 있는지 없는지의 후보 Box
Anchor Box 구성
총 9개의 Anchor Box, 3개의 서로 다른 크기, 3개의 서로 다른 ratio로 구성
Ratio가 1:1 이면 정사각형, 1:2면 가로가 긴 직사각형, 2:1면 세로가 긴 직사각형으로 생각하면 된다.
Anchor Box 특징
겹쳐있는 포인트를 기반으로 해서 다른 형태와 다른 스케일을 가진 Anchor Box를 촘촘하게 가지게 되면 이것을 기반으로 우리가 학습을 하면서 Selective Search에서 했던 것과 유사한 방식으로 rpn을 구성할 수 있음.
이미지와 Feature Map에서 Anchor Box 매핑
가로에는 60개의 포인트, 세로에는 40개의 포인트가 있고 512 채널이 있다.
원본 이미지가 1/16 크기의 Feature Map으로 Down Sampling 될 때(ex) VGG Net을 통과해서~)
Width: 800 / 16 = 50, Height: 600/16 = 38
17,100개에서 RPM을 학습을 해서 있을만한 위치에 있는 것을 뽑아낸다.
RPN
RPN 개요
원본 이미지 → VGG Net → Featur Map이 추출됨 → RPN → 영역 추천
RPN Network 구성
코드를 보면 x_class는 1x1 Conv와 sigmoid 함수를 적용한 것을 확인할 수 있고, x_regr는 1x1 Conv와 linear 함수를 적용한 것을 확인할 수 있다 (regression)
RPN Bounding Box Regression
RCNN Bounding Box Regression과 비슷한 사진임. RCNN Bounding Box Regression은 Anchor box를 Reference로 이용하여, Ground truth와 예측 Box의 중심 좌표 x, y 그리고 w, h의 차이가 Anchor box와 Ground Truth 간의 중심 좌표 x,y,w,h의 차이와 최대한 동일하게 예측 될 수 있어야함.
Positive Anchor Box, Negative Anchor Box
Ground Truth BB 겹치는 IOU 값에 따라 Anchor Box를 Positive Anchor Box, Negative Anchor Box로 분류
- IOU가 가장 높은 Anchor는 Positive
- IOU가 0.7 이상이면 Positive
- IOU가 0.3보다 낮으면 Negative
만약 IOU가 0.3이상 0.7미만이라면? → 학습에 포함되지 않음.
Anchor box를 Reference로 한 Bounding Box Regression
예측 bounding box와 Positive anchor box와의 좌표 차이는 Ground Truth와 Positive anchor box와의 좌표 차이와 최대한 동일하게 될 수 있도록 regression 학습
Anchor box에 따른 RPN Output
- k: Anchor의 갯수
- 2k : classification
- 4k : regression
RPN Loss 함수
RPN 학습
Mini Batch를 이용하여 128개의 positive, 128개의 negative를 뽑아 미니 배치 샘플링을 해 학습을 시킴.
Faster RCNN Training
- RPN을 먼저 학습
- Fast RCNN Classification/Regression 학습 Alternating training
- RPN을 Fine Tuning
- Fast RCNN Fine Tuning
Faster RCNN Detection 성능 비교
수행 시간 비교
Summary
출처 : 컴퓨터 비전 완벽 가이드