Fast R-CNN

kowoonho·2022년 8월 1일
1
post-thumbnail

기존 R-CNN은 Region Proposal을 통해 추출된 Region의 size와 shape을 통일시키기 위해, image crop과 warp과정이 필요했다.
하지만, 이 과정은 image에서 추출된 Region에 대해 모두 수행되어야 하기 때문에, 시간 소요가 너무 심했다.
따라서, Fast R-CNN은 ROI pooling layer를 통해 이를 해결하였다.

ROI Pooling

=> Selective Search로 형성된 Object Region을 하나의 vector size로 통일시키기 위해 수행하는 알고리즘

다음과 같이, max pooling을 통해 고정된 크기의 Pooling 영역으로 매핑한다.
일반적으로, 7x7로 Pool 크기를 지정하는데, 예를 들어, 14x7의 ROI를 7x7 Pool에 mapping 하기 위해서는 2x1마다 Max Pooling을 수행해, 7x7 Pool에 Mapping한다.
하지만, 8x4 ROI의 경우 자연수로 나누어 지지 않는데, 이때는 resize 알고리즘을 통해 8x4를 7x7로 resize한 후에 mapping 하도록 한다.

Fast R-CNN의 구조

원본이미지 => Feature Extractor(VGG) => Feature Map => ROI Pooling =>
FC Layer => softmax & bounding box regression

R-CNN과 달리 이미지에 Feature Extractor를 바로 적용해, Feature Map을 뽑아낸 후에, 그 Feature Map에 ROI pooling을 적용한다.
그렇게 할 수 있는 이유는 Feature Extractor를 통과하더라도, Object의 위치와 형태는 반영되어 Feature Map이 생성되기 때문이다.
또한, Classifier로 SVM을 사용했던, R-CNN과 달리, Fast R-CNN에서는 softmax를 사용한다.

R-CNN과 달리 Deep learning network안에서 softmax와 regressor를 수행할 수 있으므로, Classification Loss와 Regression Loss를 함께 반영해서 Loss를 계산할 수 있음.
Loss function은 다음과 같다.

0개의 댓글