• Faster R-CNN의 RPN과 SSD의 multi-scale mechanism에 영향을 받음
  • Three Contributions
    • RDCL(Rapidly Digested Convolutional Layers)
    • MSCL(Multiple Scale Convolutional Layers)
    • Anchor Densification Strategy

RDCL(Rapidly Digested Convolutional Layers)

  • Shrinking the spatial size of input
    • input에 들어오는 spatial size를 줄이기 위해 convolution layer와 pooling layer에 큰 값의 stride size 사용
    • Conv1, Pool1, Conv2, Pool2 = 4, 2, 2, 2
    • RDCL에서 총 32의 stride 사이즈 사용
      • spatial size가 32배 빠르게 축소됨
  • Choosing suitable kernel size
    • 초반 레이어들의 kernel size는 스피드를 위해 빨라야 하고, 공간 크기 감소로 인한 정보 손실을 완화하기에 충분히 커야 함
    • Conv1, Conv2, all Pool = 7x7, 5x5, 3x3
  • Reducing the number of output channels
    • C.ReLU activation function을 활용하여 output channels의 수를 줄인다.
      • C.ReLU는 output channel을 doubling하는 기능은 있지만, 채널 수 감소에 대한 내용은 없음.
      • C.ReLU은 추가적인 정보 제공을 통해 모델 parameter 수를 잠재적으로 줄일 수 있음.(같은 성능을 위해선 더 많은 파라미터 수가 필요하기 때문)
      • 채널 수를 줄인다는 내용에 대해선 추가적인 확인 필요[Link]

MSCL(Multiple Scale Convolutional Layers)

RPN 기반의 method

RPN은 단일 클래스(ex. 얼굴)에서는 자연스러운 검출기 역할을 하나, 독립적인 얼굴 검출기로서는 성능이 좋지 않음. 이에 대한 두 가지 요소로는

  • RPN의 anchor는 마지막 convolution layer 와만 연관되어 있음
    • 마지막 레이어의 feature과 해상도는 다양한 크기의 얼굴을 처리하기 약함
  • anchor에 관련된 레이어는 하나의 receptive field만을 가지며, 다른 크기의 얼굴과 일치할 수 없음

위 두 가지 문제를 해결하기 위해 두 가지 차원에 따라 설계

  • Multi-scale design along the dimension of network depth
    • default anchor들은 Inception3, Conv3_2, Conv4_2와 같은 multi-scale feature map과 연관
    • 위 레이어들은 네트워크 깊이의 차원에 따른 다중 스케일로 설계
    • 다양한 크기의 면을 자연스럽게 처리하기 위해 서로 다른 해상도로 여러 레이어에 걸쳐 앵커를 이산화
  • Multi-scale design along the dimension of network width
    • anchor와 관련 레이어의 출력 특성이 다양한 크기의 수용 필드에 해당해야 함(다양한 크기의 얼굴을 학습하기 위함)
      • 네트워크 폭 차원을 따라 multi-scale design된 Inception 모듈을 통해 충족
Inception Module

 

Anchor Densification Strategy

  • image에서 tiling interval of anchor(Ainterval)는 anchor와 연관된 레이어의 stride size와 같음
  • scale of the anchor(Ascale)은 face box가 거의 정사각형에 가깝기 때문에 1:1의 비율을 가짐
  • Ainterval 와 Ascale 을 통해 tiling density of anchor(Adensity)를 계산
  • Ascale : 32, 64, 128, 256, 512
  • Ainterval : 32, 32, 32, 64, 128
  • Adensity : 1, 2, 4, 4, 4
    • scale이 큰 anchor와 비교해서 작은 anchor에서 작은 얼굴에 대한 recall rate가 현저히 낮음
    • 이 imbalance를 해결하기 위해 Anchor Densification Strategy 제안

 
  • 한 가지 유형의 anchor를 n번 고밀도화 하기 위해, 하나의 receptive field의 중심에 한번만 tiling 하는 대신 하나의 receptive field 중심 주위에 Anumber = n2 개의 anchor를 균일하게 tiling

Training

  • Training Dataset : WIDER FACE(12880 image)
  • Data Augmentation
    • Color distortion
    • Random Cropping
    • Scale Transformation
    • Horizontal Flipping
    • Face-box filter
  • Matching Strategy
    • 어떤 anchor를 face bounding box에 대응시킬 지 결정
      1. 각 얼굴을 best jaccard overlap을 가지는 anchor와 매칭
      2. threshold(0.35)보다 높은 jaccard overlap을 가지는 anchor에 매칭

  • Loss Function
    • Faster R-CNN 에 있는 RPN과 같은 loss funtion 사용
    • 2 class softmax loss for clasification, smooth L1 loss for regression
  • Hard negative mining
    • anchor 매칭을 진행한 후, 대부분의 anchor는 negative(significant imbalance)
    • 빠른 최적화와 안정적인 학습을 위해, loss값으로 정렬 후 top one을 고름
      • negative : positive = 3:1
  • Other implementation details
    • 모든 파라미터들은 xavier 방식으로 랜덤하게 초기화됨
    • 결과 모델을 파인튜닝
      • SGD with 0.9 momentum
      • 0.0005 weight decay
      • batch size 32
      • maximun iterations 120k
        • 10-3 lr for first 80k iters
        • 10-4, 10-5 for 20k iters

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

VieWorks 카메라 셋팅  (0) 2023.07.17
PIP-Net 논문 정리  (0) 2023.02.16
06. Vision Transform (작성중)  (0) 2022.05.13
05. Yolo 버전별 비교  (0) 2022.05.13
04. Faster RCNN [Vision, Object Detection]  (0) 2022.02.09

+ Recent posts