- 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]
- C.ReLU activation function을 활용하여 output channels의 수를 줄인다.
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 모듈을 통해 충족
- anchor와 관련 레이어의 출력 특성이 다양한 크기의 수용 필드에 해당해야 함(다양한 크기의 얼굴을 학습하기 위함)
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에 대응시킬 지 결정
- 각 얼굴을 best jaccard overlap을 가지는 anchor와 매칭
- threshold(0.35)보다 높은 jaccard overlap을 가지는 anchor에 매칭
- 어떤 anchor를 face bounding box에 대응시킬 지 결정
- 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 |