본문 바로가기
Development/etc

[Face Detection]Sample and Computation Redistribution for Efficient Face Detection

by shuka 2021. 8. 31.
728x90
728x90

Face Detection는 성능은 좋아지면서 모델을 가볍게 하여 디바이스에서도 사용할 수 있도록 하는 논문들이 매년 나오고 있다. 'Sample and Computation Redistribution for Efficient Face Detection'은 21년 논문으로 Sample Reallocation(SR)과 Computation Redistribution(CR)을 하여 성능과 속도가 향상된 결과를 보여준다.


paper: https://arxiv.org/pdf/2105.04714.pdf

github: https://github.com/deepinsight/insightface/tree/master/detection/scrfd

 

GitHub - deepinsight/insightface: State-of-the-art 2D and 3D Face Analysis Project

State-of-the-art 2D and 3D Face Analysis Project. Contribute to deepinsight/insightface development by creating an account on GitHub.

github.com

 

Abstract

본 논문에서 Face Detection에 있어서 효율적이고 정확하게 얼굴을 찾는데에 대한 열쇠는 훈련 데이터 샘플링(training data sampling)계산 분포 방법(computation distribution strategies)에 있다고 얘기를 하면서 두 가지의 간단하지만 효과적인 방법을 소개한다.

  1. Sample Redistribution(SR): benchmark datasets의 통계를 기반으로 가장 필요한 stage의 training sample을 보강한다.
  2. Computation Redistribution(CR): 모델의 backbone, neck 그리고 head 간의 계산을 재할당 한다.

이러한 방법은 TinaFace보다 뛰어난 성능을 보여주며 VGA 해상도의 input image에 대해서 빠른 속도를 보여준다.

 

1. Introduction

본 논문에서는 WIDER FACE에서 large scale의 test datset을 사용하는 대신 VGA resolution으로 효율적인 Face Detection을 분석한다. VGA resolution으로 하였을 때 WIDER FACE의 대부분의 얼굴(78.93%)은 32 x 32 픽셀보다 작기 때문에 대부분의 얼굴은 shallow stage에서 예측이 된다. 이런 shallow stage에서 더 많은 training sample을 얻기 위해 Sample Redistribution (SR)을 제안한다. 그리고, Face Detector의 구조가 계산 분포를 결정하고 정확도와 효율성을 결정하는 핵심이기 때문에, 다른 flop regimes에서 계산 분포의 원리를 분석한다.

 

  • VGA resolution에서 face detection의 효율성을 탐색하고, shallow stage에서 더 많은 training sample을 얻는 데 도움이 되는 Sample Redistribution(SR) 방법을 제안한다.
  • face detector의 구조에서 backbone, neck, 그리고 head간의 계산 재분배 를 위한 단순화된 search space를 설계한다.

 

 그림 1은 WIDER FACE에 대한 실험으로 정확도와 효율성이 크게 개선되었다는 것을 보여준다.

 

2. TinaFace Revisited

TinaFace는 RetinaNet을 기반으로 resnet50을 backbone으로 사용하고 neck으로 FPN(Feature Pyramid Network)를 사용하여 구성되어 있다. head는 설계하기 위해 먼저 각 feature pyramid에서 feature enhancement module을 사용하여 inception block의 서로 다른 receptive field를 통해 주변 context를 학습한다. 그리고, 연속으로 4개의 3 × 3 convolutional layer가 각 feature pyramid에 추가한다.

Loss 함수는 3가지를 사용하였는데 classification branch에는 Focal loss를 사용하였고, box regression branch에는 DIoU loss를 사용하였고, IoU prediction branch는 cross-entropy loss를 사용한다.

작은 얼굴에 대해 검출하기 위해 TinaFace는 FPN의 각 level에 대해 세 가지의 다른 scale의 anchor를 타일링한다.
(예를 들어, P2부터 P7까지 {2 4/3 , 2 5/3 , 2 6/3}× {4, 8, 16, 32, 64, 128})

train은 [0.3, 0.45, 0.6, 0.8, 1.0]에서 임의로 샘플링된 scaling factor에 이미지의 짧은 edge의 길이를 곱하여 원래 이미지에서 crop하고 640 × 640으로 크기를 조정하고, test는 이미지의 짧은 edge와 긴 edge가 [1100, 1650]을 초과하지 않는 single scale로 test 한다.

 

figure 2(a)와 table 1을 보면 여러 test scale에서 TinaFace의 성능을 비교하고 있고, fugure 2(b)는 test image의 scale이 640일 때 backbone, neck, 그리고 head의 component에 대한 TinaFace의 계산 분포를 보여준다. figure 2(b)를 보면 feature map의 resolution이 상당히 큰 stride 4에서 대부분의 computational cost(약 68%)가 발생하고, backbone이나 neck보다 head에서 대부분의 computational cost가 발생한다.

 

 

3. Methology

본 논문에서 Face Detction 설계에 대한 효율성 개선을 위해 다양한 scale의 feature map에 걸쳐 positive training sample의 redistribution을 조사하고(4.1절), 서로 다른 backbone, neck, 그리고 head뿐만 아니라 다양한 scale의 feature map을 통한 계산 분포(4.2절)를 살펴본다.

 

3.1 Sample Reallocation

VGA resolution일 경우, testing scale이 작기 때문에 대부분의 얼굴은 stride 8에서 예측된다. 그림 3은 stride 8에 대한 feature map이 중요하다는 것을 보여준다.

training dataset augmentation에서 square path는 원본 이미지의 short edge set [0.3, 1.0]에서 임의의 size로 원본 이미지에서 crop하는데, 대부분의 얼굴이 stride 8에서 예측되기 때문에 stride 8에 대해 더 많은 sample을 얻기 위해 원본 이미지의 short edge set을 [0.3, 1.0]에서 [0.3, 2.0]으로 확대(large cropping strategy)하고, 만약 crop box가 원본 이미지를 넘어갈 경우 이미지의 평균 RGB 값으로 누락된 픽셀을 채운다.

그림 4(a)을 보면 더 많은 sample을 얻을 수 있는 large cropping strategy를 사용한 후 32의 scale보다 더 작은 얼굴을 얻는 것을 볼 수 있다. 비록 large cropping strategy를 사용하면 더 작은 얼굴들을 얻을 수 있지만(예를 들어 4x4보다 작은 얼굴), anchor matching의 실패로 인해 이러한 얼굴은 학습중에 무시된다. 그림 4(b)를 보면, scale이 16과 32일 때 많은 positive anchor를 얻을 수 있는 것을 보여준다. 더 많은 훈련용 샘플이 작은 scale로 재분산되면서, 너무 작지도 않고 적당히 작은 얼굴에 대한 학습을 보다 적절하게 할 수 있다.

 

3.2 Computation Redistribution

본 논문에서는 광범위한 flop regime에서 backbone, neck 그리고 head에 computation을 재할당 하기 위해 RetinaNet에 backbone으로 resnet, neck으로 PAFPN(Path Aggregation Feature Pyramid Network), head에 3x3 convolution layer를 사용하여 network structure search를 한다. 우선, neck과 head를 고정하고 backbone 부분에서의 computation의 재할당을 살펴보고, backbone의 최적화된 computation distibution을 바탕으로 backbone, neck, head 전체에 걸쳐 computation의 재할당을 진행한다.

 

Computation search space reduction

본 논문에서는 face detector의 구조는 다음을 포함한다.
(1) w0  output channel의 3 × 3 컨볼루션 레이어가 3개인 backbone stem.
(2) 각 stage가 동일한 block이 연속으로 구석되어 있고, resolution이 점진적으로 줄어드는 4개의 stage로 되어 있는 backbone body
(3)하향 경로 및 상향 경로에 의한 multi-scale feature aggregation module인 neck.
(4) face score를 예측하고 face box를 regression하는 head.


Backbone search space는 4개의 stage가 있고 각 i번째 stage는 2개의 parameter인 block의 갯수 di와 block의 width인 wi를 가지므로 자유도 8을 가진다. RegNet를 따라 di ≤ 24, wi ≤ 512의 균일한 sampling을 수행하고, 새로 나오고 있는 backbone의 width가 증가함에 따라, wi ≤ wi + 1의 원리로 제한된 search space를 축소한다. 이러한 단순화하는 방법으로 검색 공간이 더욱 간단해진다.

 

밑의 링크를 보면 RegNet에 대해 자세히 설명되어 있어서 이해하기 쉽다.

https://2-chae.github.io/category/2.papers/31

 

Designing Network Design Spaces (RegNet) · 2-Chae

Designing Network Design Spaces (RegNet) 19 Dec 2020 | Architecture Facebook Ilija Radosavovic, Raj Prateek Kosaraju, Ross Girshick, Kaiming He, Piotr Dollár [Facebook AI Research (FAIR)] [Submitted on 30 Mar 2020] arXiv:2003.13678 올해 3월에 나온

2-chae.github.io


마지막으로, search space의 complexity를 더 줄이기 위해 network structure search를 다음과 같은 two-step으로 나눴다.
SCRFD1: neck과 head를 default 구성으로 고정하면서 backbone에 대한 computational distribution만 검색한다.
SCRFD2: 최적화된 SCRFD1에 따라 백본 내의 computational distribution을 사용하여 전체 face detector 구조 전체의 computational distribution을 search한다.

two-step의 searching strategy를 설명하기 위해  예로 2.5Gflops로 제한된 SCRFD를 사용한다.

 

Computation redistribution on backbone

먼저 네트워크의 계산 비용과 정확성을 결정하는 데 중심인 백본의 구조에 초점을 둔다. SCRFD1-2.5GF에서 neck과 head를 고정하는하는데, neck의 output channel을 32로 고정하고 96 output channel에 2개의 3 × 3 convolution을 사용한다.

 

그림 5에서 우리는 모델의 mAP(WIDER FACE hard validation set)의 분포와 backbone의 각 구성 요소(stem, C2, C3, C4, C5)에 대한 computation ratio를 보여준다.

 

그림 6에서는 backbone의 shallow stage(stem, C2, C3)와 deep stage(C4와 C5) 사이의 계산 비율을 보여준다.

이러한 search result에서 관찰한 결과를 바탕으로 computation의 약 80%가 shallow stage에 재할당된다는 것을 보여준다.


Computation redistribution on backbone, neck and head

 2.5 Gflops의 특정 computation constarint 하에서 backbone 내에서 최적화된 computation distribution을 찾은 후, backbone, neck, 그리고 head 전체에 걸쳐 최적의 computation distribution를 찾는다. 이 단계에서는 backbone setting이 그림 5와 같이 SCRFD1의 computation distribution을 따르는 무작위로 생성된 network configurations만 유지한다.

 

본 논문에서는 target complexity regime에서 qualifying model(2.5 Gflops)을 얻을 때까지 search space에서 random sampling을 반복한다. 그림 9에서는 대부분의 computation은 backbone에 할당되며, 그 다음은 head, 가장 낮은 계산 비율은 neck인 것을  보여준다. 그림 9(d)는 2.5 Gflops의 제약 하에 model architecture를 비교한 것이고, tabel 2는 baseline의 network configuration(ResNet-2.5GF)을 설명한다.

 

Higher compute regimes and mobile regimes

2.5 Gflops의 complexity comstraint 외에도, higher compute regime(예를 들어, 10 Gflops 및 34 Gflops)과 low comput regimes(예를 들어. 0.5 Gflops)에 대한 network structure 최적화를 탐색하기 위해 동일한 two-step computation redistribution method를 사용한다.

그림 7과 그림 8에서는 서로 다른 computation constraint 하에서 computation redistribution과 최적화된 network structure를 보여준다.

 

본 논문에서 얘기하는 최종 architecture는 baseline network와 거의 동일한 flops를 가지고 있다. 이렇게 redistribution에 대한 결과는 다음과 같은 결과를 도출한다.

  1. 더 많은 computation이 backbone으로 할당되고 neck과 head의 연산은 압축된다.
  2. WIDER FACE의 특정 scale distribution으로 인해 2.5Gflops, 10Gflops 및 34Gflops regime을 위해 shallow stage에서 더 많은 capacity가 재할당 된다.
  3. 34Gflops와 같은 high compute regime의 경우, 탐색된 structure은 bottleneck residual block을 활용하고, shallow stage에서 width scaling은 parameter가 크게 증가하기 때문에 over-fitting될 위험이 있어 width scaling 대신 depth scaling을 사용한다.
  4. mobile regime(0.5Gflops)의 경우, discriminative feature에 대해 deep stage에 limited capacity를 할당하면 top-down neck pathway에 의한 small face detection에 도움이 될 수 있다.

 

 

5. Experiments

다음 표와 그림은 실험의 성능을 보여준다.

 

 

 

728x90
반응형

댓글