JSP's Deep learning

[Paper Review - Object Detection] 3. Faster R-CNN 본문

Paper Review/Object Detection

[Paper Review - Object Detection] 3. Faster R-CNN

_JSP_ 2023. 1. 21. 16:01

 

1. Faster R-CNN 요약

 

1) Architecture

Faster R-CNN 구조

 

2) Faster R-CNN의 특징

  • Region Proposal Network(RPN)을 이용한 Region Proposals
  • RPN과 Fast R-CNN detector가 하나의 convolution feature map을 공유하도록 합친 단일 네트워크(Single Network)
  • End-to-End 방식의 학습
  • GPU 상에서 5 fps의 속도을 가진다.

 

3) Multiple scales와 sizes을 처리하기 위한 Faster R-CNN의 체계

다양한 Multi scales & sizes 처리 프로세스

  • (a) : 이미지 피라미드(Pyramids of images)에서 다양한 scales와 sizes을 가진 이미지마다 feature map을 만들어 처리하는 방법
  • (b) : 필터 피라미드(Pyramids of filters)로 다양한 scales와 sizes을 가진 filters을 이용해서 원본 이미지의 feature map상에서 동작시키는 방법
  • (c) : 참조 박스 피라미드(Pyramids of reference boxes)로 다양한 scales와 sizes을 가진 reference box을 이용하여 원본 이미지의 feature map 상에서 동작하는 방법.
  • Faster R-CNN은 '(c)'의 방법을 사용하여 Multi scales와 sizes에 대해서 처리할 수 있도록 모델을 학습한다.

 

2.  Faster R-CNN의 주요 용어 정리

 

1) Attention Mechanisms

Faster R-CNN의 어텐션 메커니즘

  • Faster R-CNN은 RPN을 사용하여 Feature map 상에서 집중해야할 부분을 지정한다.
    (Transformer의 Attention 구조와는 다른 개념으로 단순히 집중해야할 부분을 알려준다는 의미를 가진다)

 

2) Fully convolution network

Fully Convolution Network - Jonathan Long , Evan Shelhamer , Trevor Darrell . Fully Convolutional Networks for Semantic Segmentation . IN CSCV, 2015.

  • Sematic Segmentation 모델을 위해서 Image classification에서 우수한 성능을 보인 CNN기반 모델(AlexNet, VGG16m GoogleNet 등)을 변형시킨 구조.
  • 기존 CNN의 최 후단인 fully-connected layer 대신 Convolution layer을 사용하는 것.
  • 기존 Fully connected layer을 사용하는 방식보다 이미지의 정보를 더 잘 보존할 수 있다는 장점이 있다.

 

3) End-to-End

End-to-End 구조 - https:// velog.io /@jeewoo1025/What-is-end-to-end-deep-learning

  • Deep learning에서 End-to-End입력에서 출력까지 별도의 파이프라인 네트워크 없이 하나의 신경망으로 한 번에 처리하는 구조
  • 예시) 
    • Non End-to-End : 얼굴 인식 시스템에서 얼굴을 인식하는 Model과 얼굴을 대조하는 Model을 따로 학습시키고 연결시켜서 사용하는 시스템은 End-to-End가 아니다.
    • End-to-End : 얼굴 인식 시스템을 하나의 모델을 사용하여 결과를 출력한다면 그것은 End-to-End 구조이다.
  • 여기서, 파이프라인 네트워크란 전체 네트워크를 이루는 부분 네트워크를 말한다.

 

4) Pyramids of image

이미지 피라미드

  • 입력 이미지의 크기를 단계적으로 변화(여러 scalesaspect ratio)시켜가면서 생성된 일련의 이미지 집합(Image pyramid or Pyramids of image)

 

5) Anchor box & Anchor & Objectness score

 

(1) Anchor box

  • Faster R-CNN에서 다양한 Scalesizeregion proposals을 예측하기 위해 하나의 이미지의 feature map에서 다양한 scalesaspect ratiosreference boxes 이용
  • 여기서, reference box을 Anchor box라고 명명한다.

 

(2) Anchor

  • Region Proposal Network에서 anchor boxes 통해 생성한 region proposals

 

(3) Objectness score

  • 객체 vs. 배경(a set of object classes vs. background)에 대해 측정한 값
  • 생성된 Anchor마다 이 값을 가져서 배경인지 아닌지 구분하는 기준으로 사용된다.

 

6) Translation invariant

  • 물체의 분류에서 물체의 위치에 대해서 Robustness을 가지는 특성
  • CNN에서 translation invariant, input의 위치가 달라져도 output이 동일한 값을 갖는 것
    (convolution filter 연산을 할 때, 특정 feature의 위치가 바뀌면 해당 feature에 대한 연산 결과도 달라지게 된다)
  • Translation invarient을 수행하는 3가지 방법
    1. Max pooling
    2. Weight sharing & learn local features
    3. Softmax

(자세한 수행 방법은 https://ganghee-lee.tistory.com/43 참고)

 

7) "Image-centric" sampling

  • RPNs Training에서 mini-batchpositive : Negative sample의 비율을 1:1로 맞추는 것
    • mini-batch는 하나의 이미지로부터 추출된 positive & negative example anchors 사용하여 구성
    • 하나의 이미지에서 256개의 무작위 anchors 추출하고 mini-batch 구성
    • 이 방법을 사용하는 이유는 Negative sample에 편향되는 것을 방지하기 위함
    • 만약, Positive sample이 부족하면 negative samplepadding

 

3. Faster R-CNN 본문 분석

 

1) Faster R-CNN 전체 Process

Faster R-CNN 전체 Process

 

2) Faster R-CNN 세부 Process

 

(1) 한 이미지에 대한 Convolution Feature map 생성

 

(2) RPN(Region Proposal Network)를 통한 Anchors 생성

 

(3) RPN에서 생성된 Anchors를 사용한 ROI Pooling

  • RPN에서 사용된 전체 이미지에 대한 Conv feature map을 사용하여 ROI pooling을 진행한다.
  • Anchors는 원본 이미지의 비율이 아닌 Conv feature map과 동일한 비율을 가지기 때문에 별도의 Projection 과정이 필요 없다.

 

(4) ROI feature vector를 이용한 Classification 및 Bounding box regression 수행

 

(5) Non-maximum suppresssion을 통한 최종 Predicted bounding box 추론

 

3) Faster R-CNN의 Training

 

(1) Faster R-CNN의 Training process

 

(2) RPN의 Loss function

  • RPN Loss function

  • RPN Loss function의 각 요소별 설명

  • RPN Loss function 설명Negative sample(background)에 대해서는 regression을 수행하지 않는다.
    • normalization을 수행
    • λ와 normalization에 의해 clsreg는 대략적으로 비슷하게 weighted 된다.

 

(3) Bounding box regression

  • BBox Loss function

  • BBox coordinate 수식 정의

  • x, y는 Box의 중심점, w, h는 각각 너비와 높이
  • 각 요소 표시방법에 대한 설명

  • 수식 해석
    • RPNBounding box regressionanchorground-truth boxapproximate 하기위한 function이다.
    • , positive anchor에 대해 예측한 bounding boxground-truth box간의 오차를 구한 것

 

(4) RPN Training의 세부사항

  • SGD optimizer를 사용하여 end-to-end로 학습이 진행
  • 학습 데이터의 형태는 image-centric sampling을 사용
  • 모든 새로운 Layer(RPN, Fast R-CNN)의 가중치는 0.01의 표준편차를 가지는 zero-mean Gaussian distribution에 따라 랜덤하게 초기화
  • 모든 다른 layers(shared convolution layers )ImageNetPre-training Model로 초기화
  • 60k mini-batches에 대해서는 0.001learning rate, 20k mini-batches에 대해서는 0.0001learning rate를 사용
  • momentum0.9, weight decay0.0005로 설정
  • Caffe library를 사용

 

(5) RPN과 Fast R-CNN Detector 부분의 feature sharing을 위한 학습방법 

본 논문에서 제시한 학습방법은 3가지이며 본문에서는 '1'번의 Alternating training 방법을 사용하였다.

 

  1. Alternating training
    • RPN을 먼저 학습
    • RPN에서 생성한 proposals으로 Fast R-CNN fine-tuning
    • Trained Fast R-CNN으로 RPN fine-tuning
    • 위의 과정을 반복한다.
    • 해당 방법은 본문에서 Faster R-CNN을 학습할 때 사용된 방법이다.
  2. Approximate joint training
    • RPNFast R-CNNMerge
    • 구현은 간단하지만, proposals의 좌표를 무시해서 근사한 결과만 도출된다.
    • 학습시간은 Alternating training에 비해 25~50% 빠르다.
  3. Non-approximate joint training
    • RPNFast R-CNNMerge
    • Bounding box의 좌표를 포함하여 학습
    • 구현이 어려운 방법으로, 본문에서는 상세하게 다루지 않는다.

 

(6) 4-step Alternating Training

  1. ConvNetImageNet(VGG-16 or ZFNet)으로 Pre-trainRPN에 대한 fine-tuning을 진행(end-to-end로 전체 Network에 대한 학습이 진행된다)
  2. RPN에서 생성한 proposalsFast R-CNN fine-tuning
  3. Fine-tuned Fast R-CNN을 사용하여 RPNConv layer에 대해서만 fine-tuning
  4. Fast R-CNNConv layer에 대해서만 fine-tuning
    • 해당 과정을 통해서 전체 이미지에 대한 Conv layer는 고정하기 때문에 RPNFast R-CNN은 해당 Conv layer을 완전히 공유한다.
    • 본 과정은 여러 번 수행되어도 상관없지만, 본문에서는 4번으로 충분하다고 함.

 

4) R-CNN vs. Fast R-CNN vs. Faster R-CNN

 

4. 실험

 

1) Region proposal의 방법에 따른 성능 비교

  • RPN + ZF(mini-network의 구성 시 ZFNet 구조 사용) shared convolution feature map의 방법을 traintest에 동시에 적용했을 때, 가장 성능이 좋았다.

 

2) Region proposal 방법 및 사용하는 학습 데이터에 따른 성능 비교

  • PASCAL VOC 2012 test set에 대해서도 VOC 2007 test set과 마찬가지로 RPN+VGG, shared에서 COCO+07+12데이터 셋을 사용한 것이 가장 성능이 좋았다.

 

3) RPN의 CNN architecture와 Region proposal method에 따른 Object Detection의 속도 비교

  • ZFNetRPN의 구조로 사용하고, Region proposal method RPN으로 사용하였을 때, 속도가 가장 빨랐다.

 

4) Anchor box의 scales 및 aspect ratios에 따른 성능 비교

  • 3 scales, 3 ratios일 때, 성능이 가장 좋았다.
  • Aspect ratios보다는 Scales가 성능에 더 영향을 끼쳤다.

 

5) λ값에 따른 성능 비교

  • λ의 값을 10으로 설정했을 때, 가장 성능이 좋지만 λ 값에 대한 변화가 성능에 큰 영향을 끼치지는 않는다.

 

6) Region proposal method와 proposal의 수에 따른 Recall 및 IOU 값 비교

  • RPN을 통한 Region proposal methodproposals의 수에 Recall이 거의 영향을 받지 않는다.
  • 300개의 Proposals로도 좋은 성능을 낸다.

 

7) One-stage Detecion과 Two-stage Detection의 성능 비교

  • Faster R-CNN에서 RPN을 통해 생성되는 Region proposals는 후에 classificationlocalization의 과정이 따로 수행된다.
  • 반면에, 구조에서는 Region proposals와 동시에 classificatOverfeation localization이 수행된다.
  • One-Stage Detection빠르지만 mAP는 낮고, Two-Stage는 상대적으로 느리지만 mAP는 높다.

 

8) MS COCO dataset에서의 성능비교

  • Faster R-CNNMS COCO dataset에 대해서 Fast R-CNN보다 좋은 성능을 냈다.
  • 또한 COCO dataset으로 Faster R-CNN을 학습시킨 경우에도 더 좋은 성능을 냈다.

 

* 부록

 

A. Region Proposal Network(RPN)

 

1) 개요

  • Input : 하나의 이미지(사이즈는 관계없음)
  • Output : object proposals의 집합과 각 proposals에 대한 objectness score
  • RPN은 하나의 fully convolution network
  • Region proposals(Anchors) 생성하기 위해서 small network convolution feature map과 겹쳐서 slide하는 방식으로 진행한다.
    (small networkn x n spatial window (본문에서 n = 3)을 입력으로 받아 저차원 feature(low-dimensional feature, conv netZFNet인 경우 256-dim, VGG-16인 경우 512-dim)을 생성한다)

 

2) Region Proposal Network의 Region Proposal 생성

  • Anchor Box 참조

  • Window Sliding 및 Region proposal 생성

  • RPN - Detail (n=3, k=9)

 

3) RPN 세부 기법

 

(1) Translation-Invariant을 가지는 Anchors 방법

  • Anchors 이용한 방법은 conv feature map에서 각 window location마다 다양한 scalesaspect ratiosAnchor boxes 사용한 sliding-window 기법을 적용
  • 이 방법을 통해서 전체 feature mapRegion proposals을 찾아내기 때문에 Translation-Invariant한 특성을 가진다.
  • , 이미지 상에서 Object가 이동하더라도 같은 Region proposals 추출할 수 있다.

 

(2) 모델의 크기를 감소시키는 Anchors 기법

  • Multibox model
    • Multibox modelk-means 알고리즘을 사용하여 800개의 anchors 생성,, (4(box coordinates) + 1(object probability)) x 800fully connected output layer을 가진다.
    • , Multibox modeloutput layer(4 + 1) x 800 x 1536(GoogleNet) = 6.1 × 10^6Parameters 가진다
    • feature projection layer을 고려하면, 7 x 7 x (64 + 96 + 64 + 64) x 1536 + 5 x 1536 x 800 = 27 × 10^6Parameters 가진다.
  • Region Proposal Network
    • k(anchor box의 수) = 9(본문에서 지정)이라고 했을 때, (4(box coordinates) + 2(object probability, non-object probability)) x 9convolution output layer을 가진다.
    • , RPNoutput layer512(VGG-16 기반에서 수행될 때, low-dimensional feature) x (4 + 2) x 9 = 2.8 × 10^4Parameters 가진다.
    • cls layer, reg layer에 대한 3 x 3 conv layer, 1 x 1 conv layer(feature projection layer)을 고려하면, (3 x 3 x 512) x (1 x 1 x 512) + (4 + 2) x 9 x 512 = 2.4 × 10^6Parameters 가진다.

=> 결론적으로, Anchors 기법은 모델의 사이즈를 줄이는 역할도 수행한다.

 

(3) Regression references 관점의 Multi-scales Anchors

  • Pyramids of anchors 방법을 사용
  • 전체적으로 하나의 Input 이미지와 하나의 size 가진 filter만이 필요
  • 따라서 single image에 대한 convolution features 연산과 Fast R-CNN detector에 관한 연산을 간단하게 수행할 수 있다
  • , Scale 처리를 위한 추가 비용이 없이 features 공유하는 중요한 기능적 요소이다.

 

B. Objectness Scores

 

1) 개요

  • Faster R-CNN에서 Objectness scoresgenerated region proposal(anchor)ground-truth boxIoU이다.
  • Object가 있는지, 없는지 즉, Positive인지 Negative인지에 대한 판단을 내릴 때 사용되는 값이다.
  • Faster R-CNN에서는 다음의 기준으로 PositiveNegative 판단한다.
    • Positive
      1. IoU >= 0.7이면, Positive
      2. 만약 '1'의 조건을 만족하는 anchor가 없다면, IoU >= 0.3anchor IoU가 가장 높은 anchor만을 사용하면 특이 cases가 존재하게 되어서 '1'도 병행하여 사용한다.
    • Negative
      1. IOU < 0.3이면, Negative
    • , PositiveNegative도 아닌 anchor에 대해서는 고려하지 않는다.
  • Positive 판단하는 과정에서 1)의 조건을 통해 한 Ground-truth box에 대해 여러 개의 positive anchor가 존재할 수 있기 때문에, Object Detection시에 non-maximum suppression을 수행한다.

 

2) 예시

 


* Reference

[1] Shaoqing Ren, Kaiming He, Ross Girshick, and Jian Sun . Faster R-CNN. IN CSCV, 2016.

[2] J. Long, E. Shelhamer, and T. Darrell, “Fully convolutional networks for semantic segmentation,” in IEEE Conference on Computer Vision and Pattern Recognition (CVPR), 2015.

[3] YouTube - 나동빈. https://www.youtube.com/watch?v=46SjJbUcO-c&t=136s 

[YouTube 나동빈]

[4] Blog - Ankur Mohan. https://www.telesens.co/2018/03/11/object-detection-and-classification-using-r-cnns/

 

 

Comments