论文地址:RetinaFace: Single-stage Dense Face Localisation in the Wild
开源地址:https://github.com/deepinsight/insightface/tree/master/RetinaFace.
RetinaFace是一个多任务学习的多尺度人脸检测模型,可实现人脸处理领域的检测和关键点提取,并应用了FPN的UpSample实现特征融合(多尺度检测)。该研究的额外收益,是通过更准确的检测对齐,提升了人脸识别模型的准确率。以下图片均来源于论文截图。
目前无约束人脸检测已有了巨大的进步,但真实场景下人脸检测的准确度和效率依然面临挑战,RetinaFace团队在WIDERFACE数据集基础上,通过标注5点关键点作为人脸检测训练的额外监督信号,添加Mesh Decoder实现人脸三维编解码进行自监督学习,显著提升人脸检测效果。
RetinaFace技术路线的设计基于以下原因:
设定多任务训练的损失函数:
L = L c l s ( p i , p i ∗ ) + λ 1 p i ∗ L b o x ( t i , t i ∗ ) + λ 2 p i ∗ L p t s ( l i , l i ∗ ) + λ 3 p i ∗ L p i x e l p i 人 脸 置 信 度 p i ∗ 是 人 脸 为 1 , 非 人 脸 为 0 L c l s ( p i , p i ∗ ) 二 分 类 s o f t m a x 损 失 函 数 t i 预 测 位 置 ( t x , t y , t w , t h ) t i ∗ 标 注 位 置 ( t x ∗ , t y ∗ , t w ∗ , t h ∗ ) L b o x ( t i , t i ∗ ) 中 心 归 一 化 后 的 定 位 损 失 ( s m o o t h − L 1 ) l i 预 测 的 5 点 坐 标 ( l x 1 , l y 1 , . . . , l x 5 , l y 5 ) l i ∗ 标 注 的 5 点 坐 标 ( l x 1 ∗ , l y 1 ∗ , . . . , l x 5 ∗ , l y 5 ∗ ) L p t s ( l i , l i ∗ ) 同 L b o x ( t i , t i ∗ ) 方 法 L p i x e l D e n s e R e g r e s s i o n 损 失 λ 1 , λ 2 , λ 3 损 失 平 衡 权 重 , 分 别 为 0.25 、 0.1 、 0.01 L=L_{cls}(p_i,p_i^*)+\lambda_1p_i^*L_{box}(t_i,t_i^*)\\+\lambda_2p_i^*L_{pts}(l_i,l_i^*)+\lambda_3p_i^*L_{pixel}\\ \begin{alignedat} \ &p_i&\ \ \ \ &人脸置信度\\ &p_i^*&&是人脸为1,非人脸为0\\ &L_{cls}(p_i,p_i^*)&&二分类softmax损失函数\\ &t_i&&预测位置(t_x,t_y,t_w,t_h)\\ &t_i^*&&标注位置(t_x^*,t_y^*,t_w^*,t_h^*)\\ &L_{box}(t_i,t_i^*)&&中心归一化后的定位损失(smooth-L_1)\\ &l_i&&预测的5点坐标(l_{x1},l_{y1},...,l_{x5},l_{y5})\\ &l_i^*&&标注的5点坐标(l_{x1}^*,l_{y1}^*,...,l_{x5}^*,l_{y5}^*)\\ &L_{pts}(l_i,l_i^*)&&同L_{box}(t_i,t_i^*)方法\\ &L_{pixel}&&Dense Regression损失\\ &\lambda_1,\lambda_2,\lambda_3&&损失平衡权重,分别为0.25、0.1、0.01 \end{alignedat} L=Lcls(pi,pi∗)+λ1pi∗Lbox(ti,ti∗)+λ2pi∗Lpts(li,li∗)+λ3pi∗Lpixelpipi∗Lcls(pi,pi∗)titi∗Lbox(ti,ti∗)lili∗Lpts(li,li∗)Lpixelλ1,λ2,λ3 人脸置信度是人脸为1,非人脸为0二分类softmax损失函数预测位置(tx,ty,tw,th)标注位置(tx∗,ty∗,tw∗,th∗)中心归一化后的定位损失(smooth−L1)预测的5点坐标(lx1,ly1,...,lx5,ly5)标注的5点坐标(lx1∗,ly1∗,...,lx5∗,ly5∗)同Lbox(ti,ti∗)方法DenseRegression损失损失平衡权重,分别为0.25、0.1、0.01
即在人脸检测的监督中加入检测框和关键点的损失监督信号。这里的中心归一化就是将标注的点,放到以标注的anchor中心为原点的坐标上,并分别除以anchor的长宽。
Mesh Decoder是种图卷积方法,相比二维卷积对欧式网格感受野计算加权和,图卷积是计算连接两个顶点的最小边数。
G = ( V , ξ ) L = D − ξ y = g θ ( L ) x = ∑ k = 0 K − 1 θ k T k ( L ~ ) x = [ x ˉ 0 , . . . , x ˉ K − 1 ] θ L p i x e l = 1 W ∗ H ∑ i W ∑ j H ∣ ∣ R ( D P S T , P c a m , P i l l ) i , j − I i , j ∗ ∣ ∣ 1 V 包 含 人 脸 形 状 和 纹 理 信 息 的 编 码 顶 点 集 ξ n ∗ n 的 编 码 点 间 连 接 状 态 稀 疏 矩 D 对 角 矩 阵 , D i i = ∑ j ξ i j g θ k 阶 截 断 的 切 比 雪 夫 多 项 式 θ 切 比 雪 夫 系 数 向 量 L ~ 缩 放 尺 度 拉 普 拉 斯 算 子 T k ( L ~ ) 在 L ~ 下 估 计 的 k 阶 拉 普 拉 斯 多 项 式 P S T 预 测 的 形 状 和 纹 理 参 数 D P S T 图 卷 积 结 果 P c a m 摄 像 头 参 数 [ x c , y c , z c , x c ′ , y c ′ , z c ′ , f c ] P i l l 补 光 参 数 [ x l , y l , z l , r l , g l , b l , r a , g a , b a ] R ( D P S T , P c a m , P i l l ) 投 影 得 到 的 二 维 人 脸 I i , j ∗ 长 宽 为 W 、 H 的 标 定 裁 剪 块 G=(V,\xi)\\ L=D-\xi\\ y=g_\theta(L)x=\sum_{k=0}^{K-1}\theta_kT_k(\tilde L)x=[\bar{x}_0,...,\bar{x}_{K-1}]\theta\\ L_{pixel}=\dfrac{1}{W*H}\sum_i^W\sum_j^H||R(D_{P_{ST}},P_{cam},P_{ill})_{i,j}-I_{i,j}^*||_1\\ \begin{alignedat} \ &V&\ \ \ \ &包含人脸形状和纹理信息的编码顶点集\\ &\xi&&n*n的编码点间连接状态稀疏矩\\ &D&&对角矩阵,D_{ii}=\sum_j\xi_{ij}\\ &g_\theta&&k阶截断的切比雪夫多项式\\ &\theta&&切比雪夫系数向量\\ &\tilde L&&缩放尺度拉普拉斯算子\\ &T_k(\tilde L)&&在\tilde L下估计的k阶拉普拉斯多项式\\ &P_{ST}&&预测的形状和纹理参数\\ &D_{P_{ST}}&&图卷积结果\\ &P_{cam}&&摄像头参数[x_c,y_c,z_c,x_c',y_c',z_c',f_c]\\ &P_{ill}&&补光参数[x_l,y_l,z_l,r_l,g_l,b_l,r_a,g_a,b_a]\\ &R(D_{P_{ST}},P_{cam},P_{ill})&&投影得到的二维人脸\\ &I_{i,j}^*&&长宽为W、H的标定裁剪块 \end{alignedat} G=(V,ξ)L=D−ξy=gθ(L)x=k=0∑K−1θkTk(L~)x=[xˉ0,...,xˉK−1]θLpixel=W∗H1i∑Wj∑H∣∣R(DPST,Pcam,Pill)i,j−Ii,j∗∣∣1VξDgθθL~Tk(L~)PSTDPSTPcamPillR(DPST,Pcam,Pill)Ii,j∗ 包含人脸形状和纹理信息的编码顶点集n∗n的编码点间连接状态稀疏矩对角矩阵,Dii=j∑ξijk阶截断的切比雪夫多项式切比雪夫系数向量缩放尺度拉普拉斯算子在L~下估计的k阶拉普拉斯多项式预测的形状和纹理参数图卷积结果摄像头参数[xc,yc,zc,xc′,yc′,zc′,fc]补光参数[xl,yl,zl,rl,gl,bl,ra,ga,ba]投影得到的二维人脸长宽为W、H的标定裁剪块
WIDER FACE,在此基础上根据标注关键点的难易程度划分5挡:
特征金字塔获取5层多尺度特征,骨架网络是ImageNet-11k数据集上训练的ResNet152分类模型,并在最后接上一个通过“Xavier”随机初始化的3x3卷积层,stride=2。
Context Module,采用可变卷积网络(DCN)对每个尺度的输出添加后处理模块。
损失权重,负样本只用分类损失,正样本添加1x1的卷积进行训练,mesh decoder直接使用预训练模型。
Anchor,对不同的金字塔输出得到anchor,训练的时候,与标注框的IOU大于0.5的匹配为TP,小于0.3的匹配为FP,中间未匹配部分在训练时忽略;采用OHEM解决样本不均衡问题,主要策略为对负样本按照损失值排序,按照与正样本3:1的比例挑选靠前的部分。
数据增广,从原图中随机抠取正方形区域,并resize到640x640,正方形抠选区域的边长为原图最小边的0.3~1,如果某人脸标注框的中心在抠选区域内,则保留该标注为当前抠选区域中的有效人脸;同时对图像按照0.5的概率进行随机水平翻转及颜色空间变换。
训练参数:
项目 | 参数名 | 参数值 |
---|---|---|
训练设备 | P40(24GB) x 4 | |
优化算法 | optimiser | SGD |
动量 | momentum | 0.9 |
权重衰减 | weight decay | 0.0005 |
批量 | batch size | 8 x 4 |
学习率 | lr | 初始化1e-3, 5 epochs 后1e-2, 55 epochs 后1e-3, 68 epochs 后1e-4 |
总迭代数 | epochs | 80 |
评价方法,采用WIDER FACE的评价标准,并对测试图像水平翻转以及短边缩放到[500, 800, 1100, 1400, 1700],按照预测框与标注框0.4的IOU阈值进行统计。
进行不同任务组合的性能对比,包含只有人脸检测、人脸检测+人脸关键点、人脸检测+dense regression、人脸检测+人脸关键点+dense regression,实验证明通过多任务学习可以提高人脸检测的性能。其中只增加dense regression方法时会出现hard档数据检测性能下降,作者认为可能是dense regression在该场景下处理比较困难。
检测准确度,作为目前性能最好的开源人脸检测算法,在论文发布时自然是WIDER FACE中准确度最好的,目前经次于AInnoFace、RefineFace。
关键点、3维点集等也达到不错的效果,其中dense regression是通过自监督学习实现,在复杂场景下处理效果不佳,作者认为可能是非对齐、1x1x256的紧凑特征量的影响。
对人脸识别的帮助,基于更高性能的人脸检测和关键点对齐,原有人脸识别模型性能得到进一步提升,即证明了人脸对齐对人脸识别的影响,也证明了RetinaFace的应用价值。
推理效率,除了在GPU上运行ResNet152,作者还在P40、i7-6700K、RK3399上测试了MobileNet的性能,在准确度略微下降的情况下取得更高的推理速度。