论文地址:RetinaFace:Single-stage Dense Face Localisation in the Wildhttps://arxiv.org/pdf/1905.00641.pdf代码地址:
Pytorch_RetinaFacehttps://github.com/biubug6/Pytorch_Retinaface
目录
1、Abstact
2、Background&Related Works
3、RetinaFace
3.1、Multi-task Loss
3.2、Dense Regression Branch
4、Experiments
4.1、dataset
4.2、Implementation details
4.3、Ablation Study
4.4、Face box Accuracy
4.5、Five Facial Landmark Accuracy
4.6、Dense Facial Landmark Accuracy
4.7、Face Recognition Accuracy
4.8、Inference Efficiency
5、Conclusions
1、Abstact
本文提出了一种单级人脸检测器,利用联合额外监督和自监督多任务学习,对不同尺度的人脸进行像素级人脸定位。
主要以下几点贡献:
(1)在WIDER FACE数据集上手动标注了五个人脸标记,在这个额外监督信号的帮助下人脸检测得到显著提升;
(2)添加了一个自监督网格解码器分支,用于预测与现有监督分支并行的像素级3D形状人脸信息;
(3)在WIDER FACE的hard测试集上,RetinaFace的AP比最先进的AP提升了1.1%;
(4)在IJB-C测试集上,RetinaFace支持最先进的方法(ArcFace)以改进其面部验证结果(对于FAR=1e-6,TAR=89.59%);
(5)采用轻量级骨干网络(mobilenet),RetinaFace可以在单个CPU内核上实时运行VGA分辨率的图像;
2、Background&Related Works人脸检测的改进受到目标检测的启发取得了显著的提升,人脸检测具有更小的比率变化(1:1到1:1.5),并且更大的尺度变化(从几个像素到数千像素);
单阶段设计方法在特征金字塔上广泛采集面部位置和比例,和两阶段设计方法相比性能和速度都显著提升。
本文是一种单阶段人脸检测框架,并通过强监督和自监督信号的多任务损失,提出了一种先进的稠密人脸定位方法。具体框架如图1所示:
如图1所示,总共有三个分支:Existing branch(1)、Extra-supervision(2)和self-supervision(3),这三者都是并行的,对于每个阳性的锚框,在(1)中会输出面部的得分和面部的边界框,在(2)中会得到五个面部标记信息(眼睛、鼻子和嘴角),在(3)中得到每个人脸像素的三维位置和对应关系。
人脸检测有点类似于目标检测,训练过程包括分类(二分类)和回归损失(主要是优化对应的anchor坐标)。
特征金字塔:生成不同尺寸的图片,每张图片生成不同的特征,分别进行预测,最后统计所有尺寸的预测结果。
详细介绍可以到这里查看:
什么是FPN?https://zhuanlan.zhihu.com/p/397293649
单阶段和两阶段:
和目标检测中一样,两阶段方法采用“proposal和refinement”,具有较高的定位精度,但是比较费时;单阶段方法对人脸的位置和尺度进行密集采样,在训练过程中会出现正负样本不均衡的情况,一般会采用抽样和重新加权的方法处理这种不平衡。单阶段的效率更高,召回率更高;
Context Modelling:上下文建模
主要是为了增强模型捕捉微小人脸的上下文推理能力。在两阶段检测器中,通常通过扩大候选方案周围的窗口来合并上下文。SSH通过简单的卷积层来模拟这种策略,SSH具体流程如下图所示:
对于SSH中的Detection Module:可以看作是3×3、5×5、7×7的卷积过程,然后再concat在一起Detection Module的输出通道数(即Figure 4中的“X”)对于M1设置为128,对于模块M2和M3设置为256。
Multi-task Learning:
结合人脸检测和人脸对齐被广泛使用,因为对齐的人脸形状可以为人脸检测提供更好的特征。
3、RetinaFace 3.1、Multi-task Loss对于每个输入的训练锚框i,其中分类损失,表示阳性标签(人脸),表示阴性标签;分别用1和0表示;
边界框回归损失,其中和表示阳性标签和真实边界框的坐标,表示中心点的坐标(x,y)和对应的宽和高;然后采用smooth-L1进行损失函数优化;
表示面部标志回归损失,其中和表示预测的五个面部标志信息和于阳性锚框的groudtruth;
表示密集回归损失,而表示权重因子,分别设置为0.25、0.1和0.01。主要增加模型的训练侧重点。
3.2、Dense Regression Branchmesh Decoder:(网状卷积和网状上采样),一种基于快速局部化频谱滤波的图卷积方法。
4、Experiments 4.1、dataset采用WIDER FACE数据集,包括32203张图像和393703个人脸边界框组成,在尺度、姿势、表情、遮挡和光照方面具有很高的可变性:通过从61个场景类别中随机抽样,将数据集分为40%的train、10%的val和50%的test。并且基于EdgeBox的检测率定义了三个难度级别(简单、中等和困难)。
这个数据集在官方的github代码中有提供下载链接;推荐使用下面这个:
RetinaFace_Pytorchhttps://github.com/biubug6/Pytorch_Retinaface额外的标注信息:定义了人脸图像的质量五个级别:(眼睛中心,鼻尖和嘴角)
4.2、Implementation details特征金字塔:
RetinaFace采用P2到P6的特征金字塔级别,其中P2到P5通过使用自上而下和横向连接从相应的ResNet残差阶段(C2到C5)的输出结果。其中P6通过3×3卷积计算,C5中的步长为2。C1到C5是ImageNet-11k数据集上预先训练的ResNet-152分类网络,而P6使用“Xavier”方法随机初始化。
Context Module:
受到SSH和PyramidBox的启发,在五个特征金字塔级别上应用独立的上下文模块,以增加感受野区域和增强刚性上下文建模能力。同时采用可变形卷积网络(DCN)替换横向连接和上下文模块内的所有3×3卷积层,进一步增强了非刚性上下文建模能力。
Loss head:
对于阴性锚框,只采用分类损失。对于阳性锚框,采用多任务损失。
对于不同的特征图采用一个共享的损失头(1×1的卷积)。
而对于mesh decoder而言,采用预先训练的模型,主要是节省训练开销。
Anchor Settings:
在从P2到P6的特征金字塔级别上使用特定比例的锚框。在P2中通过平铺小锚框来捕获微小的人脸,但是需要更多的计算时间;
比例设置为:,纵横比设置为:1:1。当输入图像大小为640×640时,锚框可以覆盖特征金字塔级别上16×16到406×406比例。总共有102300个锚框,其中75%来自P。详细信息如下表所示:
在训练过程中,当IOU大于0.5时,锚框和真实边框匹配,当IOU小于0.3时,锚框和背景匹配。由于大多数(99%)的锚框在匹配步骤中为负,因此采用OHEM来缓解正和负训练样本之间的显著不平衡。主要就是根据损失值对负锚框进行排序,然后选择top ones的锚框,以便负样本和正样本之间的比例为(3:1,在Faster RCNN中也是如此)
Data augmentation:
在WIDER FACE的数据集中大概有20%的小的人脸,文中的处理方式是从原始图像中随机裁剪方形的块,并将这些块调整为640×640,以生成较大的训练人脸。其中裁剪的随机大小在原始图像短边的[0.3,1]之间。
如果人脸框的中心位于裁剪区域内,则保持人脸框的重复部分。
然后通过概率为0.5的随机水平翻转和光测量颜色失真(photo-metric color distortion)来增加训练数据;
Training Details:
使用SGD Optimizer(动量为0.9,权重衰减为0.0005,batchsize为8×4)在四个NVIDIA Tesla P40(24GB)GPU上训练RetinaFace。学习率从10−3开始,5个epochs后上升到10−2,然后在55和68个epochs时除以10。整个训练在第80个epoch结束。
Testing Details:
采用翻转和多尺度(图像的短边位于[500,800,1100,1400,1700])。Box voting使用0.4的IoU阈值应用于预测人脸边框的集合。
和24种最先进的人脸检测算法进行比较;
下图为RetinaFace的测试结果,1151张人脸中检测出900张(IOU=0.5);
除了精确的边界框外,RetinaFace预测的五个人脸标志点在姿态、遮挡和分辨率的变化下也具有很强的鲁棒性。尽管在重度遮挡下存在一些密集人脸定位失败的情况,但在一些清晰和大型人脸上的密集回归结果是良好的,甚至显示出表情变化。
4.5、Five Facial Landmark Accuracy 4.6、Dense Facial Landmark Accuracy 4.7、Face Recognition Accuracy上表表示人脸检测和对齐对深度人脸识别的影响。
上图表明人脸识别和对齐显著提升人脸识别的表现,并且RetinaFace表现更好。
4.8、Inference Efficiency采用轻量级别模型MobileNet来加速推理;
对于轻量级模型,通过在输入图像上使用7×7卷积(步幅=4),在P3、P4和P5上平铺密集锚定,快速减小数据大小,并移除可变形层(deformable layers);
此外前两个卷积层的参数是采用ImageNet上预先训练好的权重参数并且实现了更高的准确率;
5、Conclusions本文研究了图像中任意尺度人脸的同时密集定位和人脸对齐这一具有挑战性的问题,并且提出了一个单阶段解决方法;并且本文的方法性能优于最先进的方法。当RetinaFace与最先进的人脸识别实践相结合时,可以明显提升准确率。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)