「人脸检测系列」工程里最好用的RetinaFace以及ECCV2020 新开源的MGCNet人脸遮挡重构

it2024-01-09  100

前言:

应之前关注博客的朋友留言,“有没有更详细点的MGCNet”。MGCNet,自监督单眼三维人脸 基于遮挡感知的多视点几何一致性重建。自监督,我想起了去年的RetinaFace,RetinaFace 取得成功很大因素是运用了很多监督信息和自监督信息。虽然有点天马行空,但我还是觉得可以扩展地水写字出来的,概述下工程上应用较多表现SOTA的RetinaFace以及ECCV里的MGCNet

一、RetinaFace

0. Paper and Code

RetinaFace: Single-stage Dense Face Localisation in the Wild paper: https://arxiv.org/pdf/1905.00641.pdf github: https://github.com/deepinsight/insightface/tree/master/RetinaFace

另,RetinaFace代码也已经并入了InsightFace库 https://github.com/deepinsight/insightface InsightFace,它是目前针对2D与3D人脸分析(含检测、识别、对齐、属性识别等)知名和开发者很活跃的开源库,这个库基于MXNet 1.2 to 1.6, with Python 3.x.

1 相关概念回顾

1.1 图像金字塔v.s.特征金字塔:滑动窗口模式,其中一个分类器应用于密集的图像网格,可以追溯到过去几十年。比如Viola-Jones的框架,人脸检测探索的一个里程碑[5]。滑动窗口特征在一段时间占主导地位,但在随着 feature pyramid , sliding-anchor,multi-scale feature maps等特征金字塔最终占主导了。

1.2 两阶段v.s.单阶段:目前的人脸检测方法继承了一般目标检测方法的一些成果,可以分为两类:两阶段方法(Faster R-CNN)和单阶段方法(如SSD和RetinaNet) 两阶段方法采用了一种proposal and refinement机制进行特征提取,具有较高的定位精度。相比之下,单阶段方法对人脸位置和尺度进行了密集采样,导致训练过程中正负样本极不平衡。为了处理这种不平衡,广泛采用抽样[47]和重新加权[29]的方法。与两阶段方法相比,单阶段方法效率更高,召回率也更高,但存在获得更高误报率和影响定位准确性的风险。

1.3 上下文建模:为了增强模型捕捉微小人脸的上下文推理能力[23],SSH[36]和pyramibox[49]在特征金字塔上应用了上下文模块,以扩大欧几里德网格的接受野。为了提高cnn的非刚性变换建模能力,可变形卷积网络(DCN)[9,74]采用了一种新的变形层来模拟几何变换。2018年WIDER Face Challenge的冠军解决方案[33]表明,刚性(扩展)和非刚性(变形)上下文建模是互补和正交的,可以提高人脸检测的性能。

1.4 多任务学习:联合人脸检测和对齐被广泛应用[6,66,5],因为对齐的人脸形状为人脸分类提供了更好的特征。在Mask R-CNN[20]中,通过与现有分支并行地添加预测对象掩码的分支,显著地提高了检测性能。Densepose[1]采用Mask-RCNN的结构来获得每个选定区域内的稠密部分标签和坐标。然而[20,1]中的稠密回归分支是通过监督学习来训练的。此外,密集分支是一个小的FCN应用于每个RoI,以预测像素到像素的密集映射。

2 概述

受通用对象检测方法的启发,人脸检测最近取得了显著进展。与一般的目标检测不同,人脸检测具有更小的比率变化(从1:1到1:1.5),但更大的比例变化(从几个像素到数千像素)。最新的最新技术方法[36,68,49]集中于单阶段[30,29]设计,在特征金字塔上密集地采样面部位置和比例[28],与两阶段方法相比,显示出了良好的性能和更快的速度[43,63,8]。根据这一思路,我们改进了单级人脸检测框架,并利用强监督和自监督信号带来的多任务损失,提出了一种最新的密集人脸定位方法。我们的想法在图1中作了举例说明。 单级人脸检测器RetinaFace,它利用联合的额外监督和自监督多任务学习,在不同的人脸尺度上进行像素级的人脸定位。 具体来说,在以下五个方面做出了贡献: (1)在更宽的人脸数据集上手动标注了五个面部标志点,并在这种额外的监督信号的帮助下观察到了在硬脸检测方面的显著改进。 (2) 进一步添加了一个自监督网格解码器分支,用于预测像素级的三维形状人脸信息,并与现有的监督分支并行。 (3) 在WIDER FACE hard subse测试集上,RetinaFace的平均精度(AP)优于最先进的平均精度(AP)1.1%(实现AP等于91.4%). (4) 大部分时候,人脸检测是为了后续的识别算法,作者特意将检测结果送入人脸验证网络,在IJB-C test set上测试结果表明可以提高ArcFace的人脸验证精度(TAR=89.59% for FAR=1e-6) (5) 通过采用轻量级骨干网络,RetinaFace可以在单个CPU内核上实时运行VGA分辨率的图像。

3 网络架构

3.1 使用特征金字塔网络架构

3.2 Multi-task Loss

(1) Face classification loss

(2) Face box regression loss

(3) Facial landmark regression loss

(4)Dense regression loss

4、人脸识别精度

不多说了看结果吧,通过比较广泛使用的MTCNN[66]和提出的RetinaFace,说明了人脸检测和对齐对深层人脸识别(即ArcFace)的影响。在CFP-FP上的实验结果表明,RetinaFace可以将ARFACE的验证精度从98.37%提高到99.49%。结果表明,目前正面轮廓人脸验证的性能已接近正面人脸验证的性能(如LFW上的99.86%) 其实光表现惊艳的RetinaFace,就得单独水一篇的,特征金字塔网络架构、Dense regression loss还有图卷积啊,巴拉巴拉的,这里就只是抛砖引玉概述下,其实可以水一篇RetinaFace与ArcFace的博文还是有点意义的,看后面时间吧

二、MGCNet

0. Paper and Code

MGCNet:Self-Supervised Monocular 3D Face Reconstruction by Occlusion-Aware Multi-view Geometry Consistency Paper:https://arxiv.org/pdf/2007.12494.pdf 代码:https://github.com/jiaoangshang/MGCNet

1. 概述

本文提出了一种基于多视点几何一致性的自监督训练结构,为人脸姿态和深度估计提供了可靠的约束。首先提出了一种遮挡感知的视图合成方法,将多视点几何一致性应用于自监督学习。然后设计了三种新的多视点一致性损失函数,包括像素一致性损失、深度一致性损失和基于人脸地标的外极线丢失。我们的方法是准确和稳健的,特别是在表情、姿势和光照条件变化很大的情况下。在人脸对齐和三维人脸重建基准上的综合实验证明了其优于现有的方法。 MGCNet的推理过程以单个图像为输入,而在训练过程中,输入是同一面部和相应的地面真实2D地标的N视图图像(例如It−1,I,Itt+1,N=3)。然后,MGCNet估计了3DMM系数和面部姿势,表示了合成的目标图像和源视图中的深度图。

工作流程

如下图1:

2 模型

人脸模型: 三维可变形模型(3DMM)是MGCNet的先验人脸模型。具体地说,3DMM将面部形状和纹理编码为:

S=S(α,β)=S+A+B(mean)

T=T(γ)=T(mean)+Tidγ

其中Smean和Tmean分别表示平均形状和平均反照率。作者将耳朵和颈部区域排除在外,最终的面部模型包含∼36K个顶点。

Camera model:采用针孔摄像机模型来定义三维-二维投影。

Illumination model:为了获得逼真的人脸图像,我们用球谐函数进行建模。

3 二维特征丢失

框架中利用了初步的二维特征丢失函数。 Render loss 渲染损失的目的是最小化输入的人脸图像和渲染图像之间的差异,其中Ireis是渲染图像,I是输入图像,M是投影3D面部区域中所有2D像素的数目。wskini是第i个像素的皮肤置信度,如[15]所示。渲染损失主要影响3DMM的反照率。

Landmark loss为了提高人脸对齐的精度,我们采用了2D路标损失,它定义了预测地标和地面真实地标之间的距离,其中N是地标的数量,q是从我们的人脸模型中选取的3D地标的投影。值得注意的是,地标具有不同的重要性级别,表示为每个地标的置信度clm。我们只将鼻子和内口标志的置信度设置为10,其他设置为1。

Identity loss重建人脸的逼真度是一个重要的指标。我们使用[22]中的身份丢失,即输入图像和渲染图像的深度特征之间的余弦距离,其中◦表示元素乘除。η1和η2是输入图像和渲染图像的深层特征。

Regularization loss为了防止面部形状和纹理参数发散,使用3DMM的正则化损失,其中w,w,widexpshape是3DMM系数正则化的权衡参数(默认为1.0,0.8,3e−3)。N、 N,Nαβγ是3DMM参数α,β,γ的长度。

Final 2D feature loss组合二维特征损失函数L2D定义为

L2D=wL+wL+wL,其中2D特性损失的权衡参数根据经验设定,wrender=1.9,wlm=1e−3,wid=0.2,wreg=1e−4。我们在后面的实验中将基线方法视为仅通过二维特征损失训练的模型。

4 关键要素

在下面将介绍此次创新贡献的关键要素

4.1 遮挡感知视图合成

该思想的关键是增强多视点几何一致性,从而实现自监督训练。这可以通过视图合成来实现,视图合成在多视图输入图像之间建立密集的像素对应关系。然而,在人脸合成中,由于自遮挡的应用非常普遍,因此在人脸合成中,极易受到人脸合成的影响。如图2所示,假设如图2(a)所示的左脸颊可见像素点,则由于鼻塞,图2(b)中找不到对应像素ps。自遮挡会导致冗余像素一致性丢失和深度一致性丢失。此外,自遮挡像素的相关梯度会受到图3(像素一致性丢失子图)中红色部分的显著冗余误差的严重影响,使得训练更加困难。为了在真实场景中更实用、更有用的导航,自遮挡是一个值得解决的问题。

4.2 Pixel Consistency Loss像素一致性损失

我们通过视图合成生成合成目标图像,然后从源视图中最小化目标视图与合成目标视图之间的像素误差

4.3 Dense Depth一致性损失

与RGB图像相比,深度图受梯度局部性问题的影响较小[5]。因此,我们提出了一个密度深度一致性损失函数,它有助于更明确地解决深度模糊问题,增强深度图的多视图一致性。类似地,我们通过双线性插值从源视图合成目标深度图,并计算与目标深度图Dt的一致性。

其中一个关键问题是在人脸检测数据预处理阶段对人脸区域进行裁剪,使深度值达到一定的比例。为了解决这个问题,我们计算了两个深度图的比例,并修正了深度图的比例。因此,我们将致密深度稠度损失定义为

4.4 Facial epipolar Loss

MGCNet使用了面部地标来建立极线一致性,因为我们的极线损失基于稀疏的地面真实二维面部地标,与像素一致性或深度一致性损失相比,极线损失不太可能受到辐射或照明变化的影响。

4.5 Combined Loss

MGCNet的最终损失函数L是2D特征损失和多视图几何损失的组合。仅通过二维特征损失训练网络会导致人脸姿态和深度模糊,这反映在几何不一致上,如图4(a)所示的大极线误差。在图4(b)中,我们对MGCNet进行了像素一致性损失、密度深度一致性和面部极性丢失的训练,展现出了显著的改进,超过了我们新的基于多视点几何一致性的自监督训练的Pipeline。最后,组合损失函数定义为

5结论

作者团队提出了一种用于单目三维人脸重建的自监督流水线MGCNet,并展示了利用多视点几何一致性为人脸姿态和深度估计提供更可靠约束的优点。重点研究了遮挡感知的视点合成和多视点损失,使结果更加鲁棒可靠。MGCNet深刻地揭示了多视点几何一致性自监督学习在获取高层次线索和几何推理特征对应方面的能力。与其他方法的比较结果表明,MGCNet可以在不需要昂贵的标记数据的情况下获得优异的结果。该进一步研究将集中在基于多视图或视频的三维人脸重建上。

最新回复(0)