[Paper Review] DSFD: dual shot face detector

3 minute read

DSFD: dual shot face detector

Li, Jian, et al. “DSFD: dual shot face detector.” Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019.

Abstract

  • 새로운 face detection network 제안

1) Better feature learning

2) Progressive loss design

3) Anchor assign based data augmentation

  • Feature Enhance Module(FEM) 제안 : single shot detector를 dual shot detector로 확장시키기 위해 original feature maps을 향상시키는 모듈

  • Progressive Anchor Loss(PAL) 적용 : 효율적으로 features를 이용하기 위해 두 개의 다른 anchor 집합에 대하여 loss가 계산됨

  • Improved Anchor Matching(IAM) 사용 : regressor에 좋은 initialization을 제공하기 위해 새로운 anchor assign 전략을 data augmentation으로 통합시킴

Introduction

  • CNN based face detectors는 많은 발전이 있었지만, 아직 scale, pose, occlusion, expression, appearance, illumination 등에 대한 변화가 높은 faces를 detection 하는 것에는 어려움이 있음

  • face detection의 2가지 category

1) Region Proposal Network(RPN), Two stage detection : Faster RCNN

2) One-stage methods (RPN 제거) : 직접적으로 bounding boxes와 confidence 예측

높은 효율성과 straightforward system으로 최근 one-stage face detection framework가 주목을 받고 있음


  • 많은 방식들이 좋은 성과를 냈지만, 아직 몇가지 문제가 남아있음

1) Feature learning

최근 Feature 추출을 위해 사용되는 FPN(Feature Pyramid Network)은 high-level과 low-level 사이의 계층적인 feature maps을 합침

현재 layer의 정보를 고려하지 않고, anchors들 사이의 context 관계를 무시함

2) Loss design

기존의 loss들은 다른 levels과 shots에서 feature maps의 progressive learning ability를 고려하지 않음

3) Anchor matching

기존의 positive anchors를 증가시키기 위해 reasonable anchor scales과 anchor compensation strategy에 대한 분석들이 있었음

이런 방식들은 data augmentation에서의 random sampling을 무시하여 여전히 imbalance(positive:negative) 문제 발생


위의 문제들을 해결하기 위해 새로운 3가지 기법 제안함

  • Feature Enhance Module(FEM) : features의 discriminability와 robustness를 향상시키기 위한 모듈

PyramidBox에서의 FPN와 RFBNet에서의 Receptive Field Block의 장점을 결합

  • Progressive Anchor Loss(PAL) : 다른 levels에서 뿐만 아니라 다른 shots에서도 progressive anchor size 사용

hierarchical loss와 PyramidBox에서의 pyramid anchor에서 영감을 얻음

첫번째 shot에서는 작은 anchor sizes 지정, 두번째 shot에서는 더 큰 size의 anchor 사용

  • Improved Anchor Matching(IAM) : positive anchors를 더 잘 찾기 위해 anchor partition strategy와 anchor-based data augmentation을 통합시킴

regressor에 좋은 initialization 제공

이렇게 3가지 방식은 상호보완적이기 때문에 함께 사용하였을 때 더욱 성능이 향상됨

이런 기술들은 two-stream design과 연관이 있기 때문에, Dual Shot Face Detector(DSFD)라고 이름을 붙임

memoryblock


  • main contributions
  1. 다른 level 정보를 활용하기 위한 Feature Enhance Module (discriminability and robustness features)

  2. feature를 효율적으로 이용할 수 있도록 smaller anchors의 집합을 통한 Auxiliary supervisions (초기 layers에 도입)

  3. anchors와 ground truth faces를 최대한 일치시키는 Improved anchor matching strategy (regressor에게 더 좋은 initialization 제공)

  4. DSFD의 우수함을 증명하기 위해 종합적인 실험을 수행 (FDDB, WIDER FACE)


Dual Shot Face Detector


  • 3.1 Pipeline of DSFD

memoryblock

extended VGG16 backbone 사용 (PyramidBox, S3FD와 동일)

the first shot detection layers : conv3_3, conv4_3, conv5_3, conv_fc7, conv6_2, conv7_2

FEM이 첫번째 shot layers에서 나온 feature maps을 6개의 enhanced feature maps으로 만들어줌 (original feature map과 사이즈 동일)

6개의 feature maps은 두번째 shot layers를 구성하기 위해 SSD-style head로 들어감

image size : 640 x 640 (feature map size : 160 - 5)

S3FD와 PyramidBox와 다르게, FEM에서 receptive field를 크게하고 새로운 anchor design strategy를 이용하고 나면 동일한 비율 간격 원칙을 만족시키기 위해 3가지 크기의 stride, anchor, receptive field가 불필요함 (more flexible and robustness)

the original and enhanced shots은 각각 다른 loss를 가짐 (First Shot progressive anchor Loss, Second Shot progressive anchor Loss)

  • 3.2 Feature Enhanced Module

memoryblock

feature를 더 discrimination하고 강력하도록 original features를 향상시킴

위의 layer의 original neuron cell과 현재 layer의 non-local neuron cells을 포함하는 다른 dimension 정보를 활용

memoryblock

FPN과 RFB에서 영감을 얻음

1) feature maps을 normalization 하기 위해 1x1 convolutional kernel을 이용

2) 위의 layer의 feature maps을 up-sampling하여 현재의 feature maps과 element-wise production을 수행

3) feature maps을 3 부분으로 나누고, 다른 수의 dilation convolutional layers를 포함하는 3개의 sub-networks로 들어감

  • 3.3 Progressive Anchor Loss

일반적인 detection loss와 다르게, 다른 levels뿐만 아니라 다른 shots에서 progressive anchor sizes를 고안

low-level feature가 작은 faces에 적합하기 때문에, 첫번째 shot에 작은 anchor sizes를 지정하고 두번째 shot에 더 큰 sizes의 anchor를 지정함


The Second Shot anchor-based multi-task Loss function

memoryblock

classification loss : softmax / bounding box regression loss : smooth L1


original feature map(low-feature) : classification을 위한 sematic 정보가 적지만, detection을 위한 high resolution location 정보가 많음

작은 얼굴을 detection하고 classification하기 좋음

The first Shot multi-task Loss with a set of smaller anchors

memoryblock

second shot에서의 anchor size의 0.5배 size


The total loss

memoryblock

  • 3.4 Improved Anchor Matching

이산적인 anchor scales과 연속적인 face scales 사이의 모순을 해결함

faces를 40% 확률로 augmentation 시킴 (positive anchors 증가, 학습과정 안정, 성능 향상)

40%는 data-anchor-sampling 적용 (in PyramidBox)

S_input * S_face / S_anchor

60%는 SSD와 비슷한 augmentatin 적용

memoryblock

Leave a comment