人脸检测之RetinaFace

 

论文:RetinaFace: Single-stage Dense Face Localisation in the Wild

代码:https://github.com/deepinsight/insightface/tree/master/RetinaFace

https://github.com/biubug6/Pytorch_Retinaface

 

论文基于RetinaNet进行改进,提出了RetinaFace。传统的目标检测框架RetinaNet只进行分类,边框预测。RetinaFace再此基础上,增加了人脸关键点landmark预测,稠密3D人脸预测。

人脸检测之RetinaFace_第1张图片

主要贡献:

  1. 人工在人脸检测数据集WIDER FACE 上标注了人脸的5个关键点,通过增加5个关键点的loss约束,使得在困难样本上的检测效果明星提升。
  2. 增加了基于自监督的网格解码分支,用于预测3D人脸形状。
  3. 在WIDER FACE 的hard 测试集上,取得了91.4%的效果。
  4. 在IJB-C 测试集上,使用RetinaFace做预处理,可以获得更佳的人脸识别精度(TAR=89:59% for FAR=1e-6)
  5. 采用mobileNetv1这样的轻量框架,RetinaFace可以在VGA分辨率下,单核cpu实现实时推理。
  6. 贡献了人脸关键点的额外标注及其代码。

 

人脸的特点:

很小的长宽比,1:1 ---- 1:1.5 ,很大的尺度scale变化。

 

Two-stage v.s. single-stage :

one-stage更高效,具有更高的召回率,缺点是误检率也大,框的定位不够准确。

 

Loss设计:

Lcls表示分类的loss,

Lbox表示人脸框的loss,

Lpts表示人脸关键点的loss,

Lpixel表示稠密3D人脸的2D投影图和原图之间的L1 loss。λ1-λ3 分别为0.25,0.1,0.01

 

Lpixel分支,使用了图卷积,相比传统卷积具有更少的参数量。

人脸检测之RetinaFace_第2张图片

传统卷积的参数量大小为K*K*Cin*Cout,图卷积的参数量大小为K*Cin*Cout。其中K表示连接的线路个数。如上图,K=1表示和红色点直接相连,K=2表示距离红色点路径=2的所有点,K=3表示距离红色点路径=3的所有点。

人脸检测之RetinaFace_第3张图片

稠密回归分支,分别通过图卷积预测形状和纹理参数Pst,维度为128维。相机参数Pcam,包括相机的位置,姿势,焦距,维度为7维。光源参数Pill,包括光源的位置,颜色,环境光颜色,维度为9维。通过这3个预测,生成3D的人脸mesh,然后再将其投影为2D的图片,计算其和输入图片的L1距离。

 

网络结构:

人脸检测之RetinaFace_第4张图片

整体结构为Resnet-152+FPN,或者MobileNetv1+FPN的设计,其中FPN包括,P2,P3,P4,P5,P6共5个分支。

Context Module 模块,采用可变形卷积DCN来替换传统的3*3卷积。

 

Anchor设计:

人脸检测之RetinaFace_第5张图片

 

WIDER FACE 额外标注:

人脸检测之RetinaFace_第6张图片

人脸检测之RetinaFace_第7张图片

作者将WIDER FACE中的人脸数据集分成5个档次,分别为无可置疑的68个关键点,可以标注68个关键点,无可置疑的5个关键点,可以标注5个关键点,可以被纹理区分。

 

实验结果:

人脸检测之RetinaFace_第8张图片

人脸检测之RetinaFace_第9张图片

 

你可能感兴趣的:(人脸检测,人脸关键点检测&对齐)