기존의 R-CNN은
1. 학습이 end-to-end로 이뤄지지 않으며
2. 학습 및 테스트 시간이 오래 걸린다
는 단점이 있었다.
Fast R-CNN은 이를 개선하기 위해 몇 가지 변형을 진행하였다.
<Fast R-CNN 구조>
디테일하게 프로세스를 살펴보자
[1단계]
Input 전체 이미지가 ConvNet의 input으로 입력이 된다.
[2단계]
RoI Pooling layer를 통해 feature를 추출
ROI Pooling
Object의 크기가 어떤 건 작고, 또 어떤 건 크기 때문에 feature map에 mapping된 후 개체의 ROI 크기도 달라진다.
따라서 classification을 위해 fully connected layer에 입력하려면, 동일한 수의 nueron이 있어야 한다.
(fc 때문에 input size가 고정되어야 하기 때문에)
Input 이미지에 대하여 입력 받은 이미지를 CNN을 통해 feature map을 추출하고,
이 추출된 feature map을 미리 정의된 크기(H x W))에 맞게 그리드를 설정한다.
그리고 각각의 칸 별로 max pooling을 실시하면 결과값은 미리 정의된 크기(아래 예시 2 x2)에 맞게 되고,
이를 feature vector화 한다.
여기서 미리 정의된 사이즈 즉 2 x 2 (H x W)는 hyperparameter이며, 각 RoI는 (r, c, h, w)의 튜플 형태로 정의가 된다.
여기서
(r, c)는 top left corner를 의미하고
(h, w)는 height width를 의미한다.
위 방법을 사용하면 input feature map 사이즈가 다르더라도
참고
https://www.programmersought.com/article/68963530296/
https://woosikyang.github.io/fast-rcnn.html
'딥러닝관련 > Detection' 카테고리의 다른 글
MMdetection(1) 설치 및 Demo 실행 - (1) (2) | 2021.10.19 |
---|---|
Detectron2 (1) 환경 세팅 및 데모 (0) | 2021.09.29 |
Bounding box regression (0) | 2021.06.28 |
Non-maximum Suppression (0) | 2021.06.24 |
Detection metrics 정리 (IOU, Precision, Recall, mAP...) (0) | 2021.06.18 |