二、Face Alignment in Full Pose Range: A 3D Total Solution(3DDFA)

        这篇论文是关于人脸对齐的文章,但是在文章中作者也进行了三维人脸重建的任务,而且之后关于人脸重建的论文也大部分都引用了这篇文章,所以来学习一下这篇论文。

1.1阅读时间2023.4.2-4.10

1.2背景:

       在过去的 20 年里,一系列有效的框架被提出。最近,随着级联回归和卷积神经网络的引入,人脸对齐的准确性有了显著提高。然而,大多数现有的方法是为中等姿态设计的,假设偏航角小于 45和所有地标可见。当偏航角的范围扩大到 90,重大的挑战出现。这些挑战可以从三个主要方面加以区分:分别是建模问题、拟合问题、训练数据不足问题。

建模当人脸偏离正面视野时,由于自遮挡,一些地标变得不可见。在中等姿态下,可以通过改变脸部轮廓地标的语义位置来解决这一问题,称为地标匹配。然而,在大的姿势,其中一半的脸被遮挡,一些地标不可避免地看不见。

拟合全姿态面部对齐的另一个挑战来自于从正面到侧面的巨大的外观变化。级联线性回归模型和传统的非线性模型都不够灵活,无法统一覆盖这些复杂的变化,基于卷积神经网络(CNN)的方法在许多应用中显示出比传统方法更好的性能。为了有效的大姿态人脸对齐,需要将CNN与级联回归框架相结合。但现有方法大多采用单一网络完成拟合,这限制了其性能。

数据不足手动标注大型人脸上的地标是非常繁琐的,因为被遮挡的地标必须“猜测”,这对大多数人来说是不可能的。

1.3使用数据集

1.3.1 300W-LP数据集

       300W_LP是一个包含300个人脸图像的数据集,通过300W数据基础上编辑扩展而来,用于人脸识别和关键点检测的研究。该数据集是在大规模人脸识别数据集LFW和部分人脸关键点检测数据集AFLW的基础上构建而成的。300W_LP数据集包含了多个姿态和表情下的人脸图像,每个图像都标注有68个关键点。这些关键点表示人脸的各个部位,包括眼睛、鼻子、嘴巴等。该数据集还包括了头部姿态、表情和光照等方面的变化,使得该数据集更适合用于人脸识别和关键点检测的研究。300WLP共有数据61225张(还有一半的数据增强:偏转,平移等操作的61225张)图片,其中

  • AFW:5207
  • AFW_Flip:5207
  • HELEN:37676
  • HELEN_Flip:37676
  • IBUG:1786
  • IBUG_Flip:1786
  • LFPW:16556
  • LFPW_Flip:16556

  • 数据集参数:
  • header: 存储文件格式的描述信息。
  • version: 存储数据集的版本信息。
  • globals: 存储全局变量的信息。
  • pt2d: 存储人脸关键点坐标的信息,以68个点的x和y坐标表示。
  • roi: 存储人脸区域的位置信息,以左上角和右下角的坐标表示。Illum_Para: 存储人脸光照参数的信息。
  • Color_Para: 存储人脸颜色参数的信息。
  • Tex_Para: 存储人脸纹理参数的信息。
  • Shape_Para: 存储人脸形状参数的信息。
  • Exp_Para: 存储人脸表情参数的信息。
  • Pose_Para: 存储人脸姿态参数的信息。

示例:

参数: 输出结果/shape

Header: b'MATLAB 5.0 MAT-file, Platform: PCWIN64, Created on: Wed Nov 18 15:36:38 2015'

version :1.0

globals: []

roi (1, 4)

Illum_Para (1, 10) 光照参数包含了10个值,

  1. 平行光方向的X轴分量
  2. 平行光方向的Y轴分量
  3. 平行光方向的Z轴分量
  4. 环境光的强度
  5. 平行光的强度
  6. 平行光和环境光之间的强度比例
  7. 反射光强度的比例
  8. 高光反射的大小
  9. 高光反射的锐度
  10. 高光反射的中心位置

Color_Para (1, 7)

  1. Red_Gain: 红色增益,表示红色通道的放大倍数。
  2. Green_Gain: 绿色增益,表示绿色通道的放大倍数。
  3. Blue_Gain: 蓝色增益,表示蓝色通道的放大倍数。
  4. Red_Offset: 红色偏移,表示红色通道的偏移量。
  5. Green_Offset: 绿色偏移,表示绿色通道的偏移量。
  6. Blue_Offset: 蓝色偏移,表示蓝色通道的偏移量。
  7. Gamma: gamma值,用于控制图像的亮度和对比度。

这些参数的作用是用于调整图像的颜色属性,从而使得图像看起来更加真实、自然。例如,通过调整Red_Gain、Green_Gain、Blue_Gain参数,可以改变图像的色彩饱和度和色调;通过调整Red_Offset、Green_Offset、Blue_Offset参数,可以调整图像的亮度和对比度;通过调整Gamma参数,可以改变图像的亮度和色彩层次。

Tex_Para: (199, 1)

Shape_Para: (199, 1)

Exp_Para :(29, 1)

pt2d: (2, 68)

Pose_Para: (1, 7) 前三个值(-0.048704468、-0.37336788、-0.24793532):欧拉角,分别表示绕X、Y、Z轴旋转的角度。后三个值(203.04193、180.1507、-97.495697):旋转中心,分别表示绕X、Y、Z轴旋转的中心点坐标。最后一个值(0.0012901439):旋转角速度,表示旋转的速度大小。

1.3.2 300W-LP数据集:

      AFLW2000-3D(2000)是AFLW2000-3D是一个基AFLW2000数据集的人脸姿态估计数据集。它包含了2000张人脸图像和每张图像对应的3D姿态参数,用于评估和比较不同的人脸姿态估计算法(本数据集为本文作者所创建)。

        AFLW2000数据集是一个人脸对齐数据集,其中包含2000张人脸图像以及每张图像对应的68个关键点坐标。AFLW2000-3D在AFLW2000数据集的基础上,为每张图像提供了更加精细的3D姿态参数,包括旋转角度、旋转中心、以及相机内参等。相关参数:'__header__', '__version__', '__globals__', 'pt2d', 'Illum_Para', 'Color_Para', 'Tex_Para', 'Shape_Para', 'Exp_Para', 'Pose_Para', 'roi', 'pt3d_68'。大部分的参数所代表的的意思与300WLP差不多,其中pt2d代表人脸对齐21个关键点位置,pt3d_68代表三维人脸模型的68个关键点位置。

1.3.3  AFLW数据集:

       AFLW 包含21080张姿态变化较大的人脸。每幅图像最多可标注21个可见地标。该数据库非常适合评价大姿态下的人脸对齐性能。

1.4基础知识
1.4.1 级联回归

公式1:级联回归结构

        级联回归是一个迭代优化的过程,每一次迭代都会在前一次迭代的基础上做一些微小的调整,直到最终得到所需的输出。在级联回归中,每一级回归器都会依次学习一些微小的调整,并将这些微调结果传递给下一级回归器。因此,级联回归能够逐步改善模型的输出结果,提高模型的性能。

       公式表示的就是级联回归的迭代过程。其中,pk  表示在第 k 次迭代时优化得到的参数值,pk+1  表示在第 k+1 次迭代时的参数值,Regk  表示在第 k 次迭代时的正则化项,Fea(I,pk)  表示在当前参数值下,图像 I 的特征表示,也可以理解为预测结果。在每一次迭代中,我们先根据当前的参数值,计算出预测结果,然后计算损失函数,并在损失函数上加上正则化项的惩罚,得到最终的目标函数。接着使用优化算法(如梯度下降法),在目标函数上沿着负梯度方向更新参数值,使得目标函数下降。这样反复迭代,直到收敛或达到预设的迭代次数,得到最优的参数值。

1.4.2 3dmm

公式2-3:3DMM主要算法公式

第一个是3dmm的主要内容,第二个公式是3d人脸模型投影到2d平面,具体参数见上一文章。

1.5本文工作

        为了解决当偏航角的范围扩大到 90出现的问题,本文作者做了如下工作,为了解决自遮挡的挑战,我们认为在大姿态下,拟合3DMM比检测 2D标志更合适。从 3DMM估计的可见性使我们能够只匹配检测到的图像模式的顶点,所以使用3dmm来拟合人脸,实现人脸对齐工作。为了处理大姿态拟合的问题,提出新型级联卷积神经网络作为回归器,引入PNCC和PAF两种输入特征,还提出新的代价函数优化加权参数距离损失。为了处理训练数据不足的问题,作者构建了一个由对二维人脸图像和三维人脸模型组成的人脸数据库。我们进一步阐明了一种人脸剖面方法,在大姿态下合成 60k+训练样本。合成的样本很好地模拟了大姿态下的人脸外观,提高了之前和提出的人脸对齐方法的性能。

1.5.1本文网络结构

图一:本文网络结构

       本文的网络结构采用双流CNN网络,输入的是一张2d人脸图像和一个初始的3d人脸参数模型pk pk 包含234维参数, 6维位姿参数[q0, q1, q2, q3, t2dx, t2dy],199 维形状参数 αid  和 29维表达参数αexp ,双流网络上部分输入的是人脸图像和PNCC深度图像,分别都是200*200*3的,CNN网络由5个卷积层4个池化层和一个全连接组成,下半部分的输入图像是人脸图像和锚点数据,是200*200*3的,CNN网络由一个PAC卷积层和3个卷积,3个池化层和一个全连接层组成,最终双流网络的输出经过一个全连接层来更新pk参数 ,整个网络的输出结果为

公式4:网络结构

整个网络的输入特征满足三个要求:

1、输入是一个平滑的图像

2、输入的特征依赖于CNN输出

3、拟合完成时输入特征要具有判别性。

       在人脸对齐中,特征图可以理解为一种表示人脸信息的二维图像数据,它是经过卷积神经网络处理后得到的。特征图的作用是提取图像中的重要特征信息,以供后续的人脸对齐处理使用。而这里所提到的“convolvable property”则是指特征图可以被卷积操作处理,因此它应该是一个二维的平滑地图,反映当前拟合的准确性。

      具体来说,每一级的回归模型都会根据当前的输入特征预测出一组参数,这些参数会被用于计算下一个阶段的特征。而这些参数的预测值是基于CNN输出的,因此需要将CNN的输出作为反馈特性传递给回归模型,以便更准确地预测下一个阶段的特征。

       输入特征应该包含与人脸姿态、形状等相关的信息,并且这些信息应该足以让回归网络能够准确地预测出地真参数。如果输入特征缺乏这些信息,回归网络可能无法正确地拟合目标,从而导致级联回归无法收敛。

1.5.2 PAF(Pose Adaptive Convolution)【是一种对姿态适应的特征表示方法,通过将人脸的关键点投影到图像上,将图像中关键点之间的方向信息编码到PAF中。PAF的主要作用是在训练阶段将姿态信息引入模型中,以提高模型对姿态变化的鲁棒性和准确性。

图2:PAF

       给定当前模型参数p,我们首先投影3DMM并在图像平面上采样特征锚,得到64 × 64 × 2【解释:当将3DMM模型投影到图像平面上时,模型中的某些点可能会被遮挡而不可见。对于可见的点,它们的投影点会出现在图像上,可以在图像中采样对应的特征点,作为可见点的投影特征锚点。】的投影特征锚V ( p )锚(图4 ( b ) )。其次,在每个特征锚处裁剪d × d面片,并根据其柱坐标将面片拼接成( 64 * d ) × ( 64 * d )面片图(图4 ( c ) )。最后在补丁图上以d为步长进行d × d卷积,生成64 × 64的响应图PAF(图4 ( d ) )。

1.5.3 PNCC(Projected Normalized Coordinate Code)【是一种对人脸形状进行编码的方法,将人脸上每个像素点的位置信息进行归一化处理,并编码为一个向量,用于表示人脸形状的特征。PNCC的主要作用是在重建阶段将人脸形状信息引入模型中,以提高模型对人脸形状的还原能力。】

图3:PNCC

公式5:NCC算法

       NCC(Normalized Cross Correlation)是一种用于在3D人脸模型和2D图像之间进行配准的方法。其中S为 3DMM的平均形状。经过归一化处理后,每个顶点的三维坐标唯一分布在[0,0,0]和[1,1,1]之间,可以认为是一个顶点索引,我们称之为归一化坐标码(NCC)(图3(a))。由于NCC有三个通道作为RGB,我们也可以显示NCC作为人脸纹理。在配准过程中,作者使用了人脸的纹理信息来提高匹配的准确性。在文章中提到,NCC是在RGB(红绿蓝)三个通道上计算的,因此可以将NCC作为人脸纹理来显示。这意味着,在完成3D人脸模型和2D图像之间的配准后,可以将NCC的RGB值映射到人脸表面,而在3D模型上显示出人脸的纹理信息。

公式6:PNCC算法

        在拟合过程中,以模型参数 pk  为参数,采用 Z-Buffer 对NCC着色的投影3D人脸进行渲染,其中,Z-Buffer(ν, τ)呈现由τ着色的三维网格ν, V3d(p)为投影的三维面。我们调用渲染的图像投影归一化坐标码。然后,PNCC与输入图像进行堆叠,并发送给CNN。

公式理解:PNCC是在将NCC作为纹理贴到3D人脸模型上,并根据视角和相机参数将其转换成2D图像后得到的结果。具体而言,V3d(p)表示3D人脸模型上的每个顶点在2D图像上的投影位置,而NCC则提供了在该位置的纹理信息。Z-Buffer则是用来计算3D人脸模型在投影到2D图像上时每个像素点的深度信息,进而确定每个像素点是否需要被绘制。因此,PNCC可以看作是基于NCC纹理贴图的2D人脸图像,其中每个像素点对应着3D人脸模型上的一个顶点,且带有深度信息的图像。

1.5.4 损失函数

公式7:PDC损失函数

       初始参数p0 是固定的,初始化指定。在每次迭代中,CNN的输入是上一次迭代的输出参数p(称为当前参数),CNN的输出是参数更新量∆p,即CNN学习到的从当前参数p到最佳拟合参数pg的差异。然后,使用当前参数和∆p来更新参数,即pnew  = p + ∆p。因此,在下一次迭代中,pnew 就变成了下一轮迭代的p0 。这样,初始参数p0 在每次迭代中都会变化。

       PDC传统上用于基于回归的模型拟合。但 p 中不同的尺寸对合成三维面有不同的影响。例如,在偏移量相同的情况下,偏航角会带来比形状参数更大的对准误差,而PDC对形状参数进行了同等的优化,导致效果不佳。

公式8:VDC损失函数

V(·)为脸型的构造和投影,为 3dmm弱投影公式。我们称之为顶点距离代价(VDC)。与 PDC相比,VDC通过显式考虑参数语义,较好地模拟了拟合误差。然而,VDC本身不是凸的,优化并不保证收敛于真实人脸参数pg 。此外,我们观察到VDC呈现出病态曲率,因为位姿参数的方向总是比 PCA系数呈现出更高的曲率。因此,采用梯度下降优化VDC时,由于存在“之字形”问题,收敛速度非常缓慢。二阶优化是处理病理曲率的首选方法,但它们昂贵且难以在GPU上实现。

公式9:WPDC损失函数

        这篇论文中的损失函数 Ewpdc 是用于训练网络的。具体来说,它是由两个部分组成的。第一个部分是 (∆p−(pgp0 )),表示实际的变换与期望的变换之间的误差。其中,∆p 表示网络预测的变换,(pgp0 ) 表示目标变换,pg  表示全局的期望变换,p0 表示当前的估计变换。第二个部分是 diag(w),表示权重对误差的影响。在这个论文中,作者使用了一个基于距离的权重 w,以使更接近目标的点有更高的权重,而更远离目标的点则具有更小的权重。两个部分相乘并相加即可得到损失函数 Ewpdc。损失函数的目标是尽可能地减小实际变换和期望变换之间的误差,以使得网络能够更准确地预测出人脸姿态。

       这样的设计可以更好地处理一些参数对结果影响较小的情况,避免因为一些细节差异而导致模型过度拟合。同时,该设计也可以更好地利用真实参数的信息,提高模型的精度和鲁棒性。在这篇论文中,公式中的Z表示权重矩阵w的最大值,具体来说,它是对于每个元素的绝对值的最大值,即:Z = max(|w(i,j)|)


这个Z用于对损失函数进行正则化,使得模型对于参数的误差的惩罚更加平衡和合理。

   

公式10:OWPDC损失函数

       其中w为权值向量,∆p 为CNN输出,pc  = p0  +∆p 为当前预测参数,0 和1分别为 0和1 向量,<_元素是小于的。在公式10中,通过在当前参数 pc  上添加一个加权参数更新 diag(w)( pgpc ),我们希望新面孔在有限更新的情况下更接近地面真实面孔。请注意,λ||diag(w) (pgpc )||2∗是OWPDC的梯度的平方和,它模拟了需要调整多少CNN权值来预测每个参数。我们使用这个惩罚项来选择最有利于拟合且最容易学习的参数。w的范围被限制为[0,1],以确保参数被优化到 pg 。显然,当 λ 设置为 0 时,将会有一个简单的解决方案,w = 1, OWPDC会恶化到PDC。

1.6实验结果

1.6.1 NME比对算法

公式11:NME算法

      N表示测试样本的数量,xi表示算法预测的第i个样本的人脸关键点坐标,xi*表示第i个样本的真实关键点坐标,d表示归一化系数。NME越小,代表预测结果与真实结果的差距越小,模型的性能越好。

1.6.2单独对PAF和PNCC做评估

1.6.2 OWPDC的权值:反映了参数的优先级


1.6.3 与其他算法进行对比

1.7代码解析

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值