JSP's Deep learning

[Paper Review - Object Detection] 2. Fast R-CNN 본문

Paper Review/Object Detection

[Paper Review - Object Detection] 2. Fast R-CNN

_JSP_ 2023. 1. 15. 10:42

1. Fast R-CNN 요약

 

1) Fast R-CNN의 Architecture

Fast R-CNN Architecture

 

2) Fast R-CNN의 주요 특징

  • Multi-Task Loss
  • Shared feature map computation
  • ROI pooling layer

 

2. Fast R-CNN의 주요 용어

 

1) ROI (Region Of Interest)

Region of Interest

  • Feature map에서 주의 깊게 봐야 할 영역
  • Selective Search로 추출된 Region proposals을 convolution feature map에 ROI projection을 하여 convolution feature map 상에서 관심영역을 지정한다.

 

2) Max Pooling

Max Pooling

  • 사용자가 설정한 크기와 간격만큼 window을 이동시키면서 해당 window 영역의 픽셀 중 최댓값만 고르는 pooling 방법의 일종 

 

3) Spatial Pyramid Pooling

Spatial Pyramid Pooling - Kaiming He, Xiangyu Zhang, Shaoqing Ren, and Jian Sun . Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition . IN CVPR, 2015.

  • 입력 이미지에 대해서 계층별 Max Pooling을 진행하고 이를 Flatten하여 이어 붙이는 방법으로 동작하는 pooling layer
  • 예시
    • spatial bins = 50은 [6x6, 3x3, 2x2, 1x1]의 크기를 가지는 window을 통해서 output의 크기를 맞출 수 있다.
    • spatial bins = 30은 [4x4, 3x3, 2x2, 1x1]의 크기를 가지는 window을 통해서 output의 크기를 맞출 수 있다.
  • SPP을 이용하면 이미지의 feature map의 크기에 관계없이 Fully connected layer의 입력크기로 조정할 수 있다.

 

4) Single-Stage Pipeline과 Multi-Stage Pipeline

 

(1) Single-Stage Pipeline

Single-Stage Pipeline

  • 하나의 Stage로 이루어진 pipeline
  • 하나의 Stage을 통해서 classification과 box regression을 수행하는 방법으로 즉, Multi-tasking으로 볼 수 있다.

 

(2) Multi-Stage Pipeline

Multi-Stage Pipeline

  • 여러 개의 Stage로 이루어진 pipeline
  • Classification과 box regression이 각 Stage을 거치면서 순차적으로 수행된다. 즉, Sequentially tasking으로 볼 수 있다.

 

3. Fast R-CNN 분석

 

1) Fast R-CNN 전체 Process

Fast R-CNN의 전체 프로세스

 

2) Faster R-CNN의 세부 프로세스

 

(1) Convolution feature map 생성

  • 입력 이미지에 대해서 Convolution Network을 거쳐 Convolution feature map을 구성한다.

 

(2) Selective Search을 통한 Region proposals 추출

  • R-CNN의 방법과 같이 Selective Search 기법을 이용하여 Region proposals을 수행한다.

 

(3) ROI projection 수행

  • 추출된 Region proposals을 Convolution feature map에 projection 한다.
  • 이 과정을 통해서 같은 이미지로부터 추출된 모든 Region proposals은 하나의 Convolution feature map을 거치기 때문에 feature computation을 공유한다.
  • Fast R-CNN에서 ROI projection을 수행할 때, Selective Search의 결과를 이미지가 아닌 좌표와 크기 정보만을 (r, c, h, w)와 같은 형태로 메모리에 저장하고, 이를 Convolution feature map의 비율에 맞게 조정한다.

 

(4) 고정된 크기의 ROI feature vector 추출

  • Convolution feature map을 통해 얻어진 features을 ROI pooling을 통해서 ROI feature vector을 추출한다.
  • ROI pooling을 진행하는 이유는 고정된 크기의 feature vector을 얻기 위함이다.
    • 본문에서 ROI feature vector은 6x6의 크기로 설정되었다.

 

(5) Classification과 Box regression 수행

  • ROI feature vector을 각각 classification(softmax)와 bounding box regression을 수행하는 Fully connected layer을 거쳐서 Classification과 Bounding box regression을 수행한다.
  • Fast R-CNN에서는 두 개의 Sibling output layers에 대해서 Multi-Task Loss function을 구성하여 Single-Stage pipeline을 구성하였다.

 

3) Fast R-CNN Training

 

(1) Pre-trained network 초기설정

  1. Max pooling layer -> ROI pooling layer로 대체
  2. 마지막 Layer -> 두 개의 Fully connected layer로 대체
    • Classification(Softmax) Layer와 Bounding box regression Layer
  3. 학습 데이터는 이미지 리스트와 각 이미지에 대한 ROI의 리스트로 구성된다.

 

(2) Fine-Tuning

  1. Mini-Batch의 계층적 Sampling을 통해서 데이터 구성
    • 여기서 같은 이미지로부터 추출된 ROI는 feature computation과 memory를 공유하기 때문에 빠른 속도를 가진다.
    • 예시)
      • N(이미지의 수) = 2, R(Region proposals의 수) = 128
        • 학습 속도 : 128/2 = 64
      • N = 128, R = 2
        • 학습 속도 : 2/128 = 1/64
    • 즉, 같은 이미지로 추출된 ROI로 학습하면 학습시간이 매우 빠르다. 
    • 이 방법을 통해서 Fast R-CNN은 R-CNN과 SPPNet보다 더 빠른 속도를 가진다. 
  2. Classification과 Bounding box regression을 수행하는 부분을 Fine-Tuning 한다.

 

4) Fast R-CNN과 R-CNN 비교

 

4. 실험

 

1) VOC dataset(2007 ~ 2012)에 대한 Detection model 간 성능 비교

  • Fast R-CNN이 모든 Object에 대해서 성능이 뛰어난 것은 아니지만, 대다수 Object에 대해서 좋은 성능을 보인다.
  • 하지만, 작은 Object에 대한 Detection 성능은 조금 떨어진다.

 

2) 각 Layer 별 Fine-tuning 성능 비교

  • Fine-tuning을 진행하면 성능이 향상되지만, 모든 Layer을 fine-tuning 하는 것이 성능 향상으로 이어지는 것은 아니다.

 

3) Multi-task training 여부에 따른 성능 비교

  • Multi-Training 및 Bounding box regressor을 사용하는 것이 더 좋은 성능을 보여준다.

 

4) SVMs와 Softmax의 성능 비교

  • Fast R-CNN 구조에서는 softmax을 사용하는 것이 성능이 약간 우세하나, 별 차이가 없다.

 

5) Region Proposal 개수에 따른 성능 비교

  • Region Proposals의 수를 늘리는 것이 반드시 mAP의 향상으로 이어지는 것은 아니며, 오히려 너무 많았지만 mAP가 하락한다.

 

5. 부록

 

1) ROI pooling layer

  • 목적
    • ROI feature map(h x w)을 고정된 크기의 feature map(H x W)으로 변환하는 것이 목적이다.
  • Feature map에서 ROI 정의
    • ROI = (r, c, h, w)
      • r, c : 왼쪽 상단의 좌표
      • h, w : 높이와 너비
  • 동작 순서
    1. ROI (h x w)을 (H x W)의 grid of sub windows(h/H x w/W)로 나눈다.
      • sub window을 구성할 때, h/H와 w/W의 값이 소수점이 되는 경우에는 반올림을 한 경우와 하지 않은 경우로 나누어서 sub window을 구성한다.
    2. 각 sub window에 대한 max pooling을 진행하여 sub window을 구성한다.
  • 예시) h = 7, w = 9인 ROI에 대해서 H = 2, W = 2의 ROI Pooling 수행

ROI Pooling

  • h/H = 3.5, w/W = 4.5이므로, {(4x4), (4x5), (3x4), (3x5)}의 sub window을 구성하여 max pooling을 진행한다.

 

2) Multi-task loss function

  • classification과 Bounding box regression을 수행하는 Fully connected layer의 loss을 하나의 loss function으로 계산
  • First output layer(Classification) 정의

  • K + 1 Categories에 대한 이산 확률 분포 - softmax을 통해서 연산된다.

 

  • Second output layer(Bounding box regression) 정의

  • bounding box의 중점좌표(x, y) 및 크기(w, h)를 예측한다.

 

  • Multi-task loss function

  • u : ground-truth class
  • v=(v_x, v_y, v_w, v_h) : ground-truth box coordinate
  • Entropy function

Entropy 연산

  • Indicator function (조건을 만족하면 1, 아니면 0)

Indicator function

  • location function

  • 해석
    • Classification과 Bounding box regression에 대한 loss을 λ만큼의 비율로 함께 계산
    • u = 0 일 때, [u >= 1] = 0이므로 즉, Background에 대해서는 Bounding box regression loss을 계산하기 않는다.

 

3) ROI pooling layer에 대한 오차역전파

  • ROI pooling layer에 대한 오차역전파는 pooling 전의 일치하는 cell에 대해서만 오차역전파를 진행한다.

https://www.youtube.com/watch?v=mZT7gQynQ94

 


< Reference >

[1] Ross Girshick. Fast R-CNN. IN CVPR, 2015.

Comments