【人脸检测】RetinaFace:one-stage人脸检测算法

论文题目:《RetinaFace: Single-stage Dense Face Localisation in the Wild》
论文地址:https://arxiv.org/pdf/1905.00641.pdf
代码地址:https://github.com/deepinsight/insightface/tree/master

1.前言

       尽管在不受控制的人脸检测方面取得了巨大的进步,但在野外进行准确和有效的人脸定位仍然是一个公开的挑战。本文提出了一种鲁棒的single-stage人脸检测器,名为RetinaFace,它利用联合额外监督和自我监督的多任务学习,在不同尺度的人脸上执行逐像素人脸定位。具体而言,我们在以下五个方面做出了贡献:

在这里插入图片描述

在这里插入图片描述
图1所示。提出的单阶段像素级人脸定位方法,在现有的box分类和回归分支的基础上,采用了额外监督和自监督的多任务学习。每个正anchor输出(1)一个人脸评分,(2)一个人脸框,(3)五个人脸Landmarks,(4)投影在图像平面上的密集三维人脸顶点。

2.RetinaFace

2.1.多任务损失

在这里插入图片描述
1)Lcls为人脸分类损失;
2)Lbox为人脸框回归损失;
3)Lpts为人脸5个关键点(landmarks)回归损失,与人脸框中心回归相似,五个人脸Landmark回归也采用了基于anchor中心的目标归一化。
4)Lpixel 为Dense回归损失(参考 Eq. 3 )。
       损失平衡参数参数1、2、3分别设置为0.25 , 0.1 和 0.01,这意味着我们从监督信号中增加更好的box和Landmark定位的重要性。

2.2.Dense回归分支

在这里插入图片描述

3.实验

3.1.数据集

       WIDER FACE数据集[60]包括32203幅图像和393703个人脸边界框,在尺度、姿态、表情、遮挡和光照方面具有高度可变性。通过随机抽取61个场景类别,将WIDER FACE数据集分为训练(40%)、验证(10%)和测试(50%)子集。基于EdgeBox的检出率[76],通过逐步合并困难样本来定义三个难度等级(Easy、Medium和Hard)。
       额外的标注:见图4和表1,我们定义五个级别的脸图像质量(根据在人脸上有多难注释Landmark)并在WIDER FACE的训练和验证子集上注释五个人脸Landmark(即眼中心,鼻子和嘴角)。我们总共在训练集上标注了84.6k个人脸,在验证集上标注了18.5k个人脸。

在这里插入图片描述
图4。我们在可以从WIDER FACE训练和验证集进行注释(我们称它们为“可注释的”)的人脸上添加额外的5个人脸Landmark注释。

在这里插入图片描述
表1。五级人脸图像质量。在无可争辩的类别中,人们可以在不费力的情况下找到Landmark。在可注释的类别中,查找大致位置需要一些努力。

3.2.实现细节

       特征金字塔:RetinaFace采用从P2到P6的特征金字塔levels,其中P2到P5通过使用自顶向下和横向连接计算相应的ResNet残差阶段(C2到C5)的输出,如[28,29]。P6是在C5处通过一个3x3卷积 stride=2 计算得到。C1-C5是在ImageNet-11k数据集上预先训练好的ResNet-152[21]分类网络,P6是用“Xavier”方法[17]随机初始化的。
       上下文模块:受 SSH [36] 和 PyramidBox [49]启发, 我们 还 在五个特征金字塔levles上应用 独立 的 上下文 模块来提高 感受野并增加网络背景建模能力。借鉴 WIDER Face Challenge 2018 冠军的经验[33], 通过可变形卷积网络(DCN)替换了横向连接和上下文模块内的所有3x3卷积层,着进一步增强了非刚性上下文建模能力,
       损失头:对于负acnhors,只应用分类损失。对于正anchors,计算了多任务损失。我们使用 一 个跨越不同特征图Hn x Wn x 256,n {2,…,6} 的共享损失头 (1x1 conv);对于网格解码器(mesh decoder),我们采用了预训练模型[70],这是一个很小的计算开销,允许有效的推理。
       Anchor 设置:如表2所示,我们在特性金字塔levels(从P2到P6)上使用特定于尺度的anchor,类似[56]。在这里,P2被设计成通过平铺小anchor来捕捉微小的人脸,这样做的代价是花费更多的计算时间和更多的误报风险。我们将scale step设置为2又1/3,aspect ratio设置为1:1。输入 图像 大小 为 640x640 , anchors可以 覆盖 从16x16 到 406x406的特征金字塔levels。总共有102300个anchors,其中75%来自P2。
       在训练过程中,当IoU大于0.5时,anchors匹配到ground-truth box,当IoU小于0.3时匹配到background。不匹配的锚在训练中被忽略。由于大多数anchor(> 99%)在匹配步骤后为负,我们采用标准OHEM[47,68]来缓解正、负训练样本之间的显著不平衡。更具体地说,我们根据损失值对负锚进行排序,并选择损失最大的anchors,这样负样本和正样本之间的比例至少为3:1。
在这里插入图片描述
表2。特征金字塔的细节,RetinaNet中的步幅大小,ancho配置r。输入图像为 640x640 ,共有102300 个anchors, 75%的anchors平铺在P2上。
       数据增强:由于WIDER FACE训练集中大约 有 20% 的小人脸 , 我们 遵循 [68, 49 ) 并从 原始 图像随机crop方形patches并调整 这些 patches到 640x640 产生 更 大 的 训练人脸。更具体地说,在原始图像的短边[0.3,1]之间随机裁剪正方形patches。对于crop边界上的人脸,如果面盒的中心在crop patches内,则保持面boxes的重叠部分。除了随机裁剪,我们还通过0.5概率的随机水平翻转和光度颜色蒸馏来增加训练数据[68]。
       训练细节:我们使用 SGD 优化 器 (momentum为0.9, 权重衰减为0.0005, batch size为8x4 )训练 RetinaFace 。采用 四 个 NVIDIA Tesla P40 (24GB) GPUs.学习速率从10-3,在5个epoch后上升到10-2,然后在第55和第68个epochs时除以10。训练过程在第80个epochs结束。
       测试细节:对于WIDER FACE的测试,我们遵循[36,68]的标准做法,采用flip以及多尺度(图像的短边在[500, 800, 1100, 1400, 1700])策略。使用IoU阈值为0.4,将Box voting[15]应用于预测的人脸boxes的并集。

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
图2。单阶段密集人脸定位方法的概述。RetinaFace是基于具有独立上下文模块的特征金字塔设计的。根据上下文模块,我们计算每个anchor的多任务损失。

4.实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
图6。RetinaFace通过利用提议的联合额外监督和自我监督多任务学习,可以在报告的1151人中找到大约900张面孔(阈值为0.5)。检测器置信度由右侧的颜色条给出。密集的定位遮罩以蓝色绘制。请放大查看微小人脸上的详细检测、对齐和密集回归结果。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/Roaddd/article/details/128924516