Fast-RCNN

 

Fast-RCNN은 SPP-Net을 보완해서 나온 object detection model입니다.

 

SPP-Net의 단점

 1. SVM 학습으로 인한 많은 저장공간 필요

 2. end to end 방식의 학습 방식이 아니다.

 

이를 극복하기 위해 Fast-RCNN은

 1. SVM 대신 softmax를 사용하여 학습

 2. 하나의 loss function을 이용하여 학습. 즉, end-to-end 방식의 학습 가능


Fast R-CNN 의 학습 과정

 

1. Selective Search 알고리즘을 이용하여 RoI를 추려줍니다.

2. 전체 이미지를 CNN Layer를 통과시켜 Feature Map을 얻습니다.

3. 1번에서 추려낸 RoI들을 2번에서 구한 Feature Map에 맞게 Projection 시켜줍니다.

4. RoI에 맞게 Crop된 Feature Map을 RoI Pooling을 통과시켜 고정된 Vector로 변경시켜줍니다.

5. 고정된 크기의 Vector를 softmax에 통과시켜 Object Id 값을 구합니다.

6. 고정된 크기의 Vector를 Bounding Box Regression을 통해 box 좌표값들을 조정해 줍니다.

 

 


RoI Pooling

SPP-Net에서는 크기가 다른 Feature들을 SPP Layer (Spatial Pyramid Pooling Layer)로 통과시켜 줬지만

Fast R-CNN은 RoI Pooling을 사용합니다.

이름만 바뀌었을뿐 SPP Layer에서는 3개의 고정 Vector를 만들었지만

RoI Pooling은 1개의 고정 Vector로 만들어 주는 것입니다. - SPP 방식과는 약간 다릅니다.

SPP Layer

위 그림은 SPP Layer에서의 계산 방식입니다.

 

RoI Pooling

SPP와는 다르게 조금더 심플해진 느낌입니다.

1. 일단 원하는 크기의 H와 W를 정해줍니다.

2. Feature Map에 Projection 시켜준 RoI 부분을 Crop하여 h/H = a, w/W = b를 계산해주고

   RoI부분은 a와 b만큼의 영역으로 나눕니다.

3. 나눈 부분에서 max pooling을 사용해 줍니다.

 

위와 같은 로직을 걸치면 최종적으로 사용자가 원하는 고정된 크기를 얻을 수 있습니다.

 

 


end-to-end

SPP Net은 Selective Search, SVM, bounding box regression 총 3단계의 파이프 라인입니다.

하지만 Fast R-CNN은 무거웠던 SVM을 softmax로 바꾸고

하나의 loss function에 대해 동시에 훈련 가능하게 수정하였습니다.

 

 

Loss Function

여기서 Classification loss는 softmax, Localization loss는 smooth L1을 사용합니다.

※ smooth L1 Loss

더보기

 

위의 사진은 smooth L1 Loss입니다.

식 오른쪽을 보면 L1, L2 loss가 보이는데,

smooth L1 Loss는 L1, L2를 합친것과 같다고 보시면 되겠습니다.

outlier에 민감하지 않고 Loss 값이 충분히 작은 경우 최대한 0값에 수렴하려는 특징이 있습니다.

 

다음에는 Faster R-CNN을 알아보는걸로!

아직 블로그에 올릴 논문이 많다!

 

Faster R-CNN, Mask R-CNN, YOLO 계열, Vit, 그리고 좋은 기회로 알게된 wav2lip...

'Deep Learning > Vision' 카테고리의 다른 글

06. Vision Transform (작성중)  (0) 2022.05.13
05. Yolo 버전별 비교  (0) 2022.05.13
04. Faster RCNN [Vision, Object Detection]  (0) 2022.02.09
02. SPP-Net [Vision, Object Detection]  (0) 2021.11.17
01. R-CNN [Vision, Object Detection]  (0) 2021.11.11

+ Recent posts