1、传统线性3DMM:
模型和纹理分别是平均值+基础值*系数——S = Sˉ + Aα,T (l) = Tˉ(l) + Bβ,此为3DMM的基础。
并且提出了将 3D 人脸投影到图像平面上使用弱透视投影模型(3D转为2D透视投影模型):
- g(α, m):3D顶点位置在2D中的函数输出
- f:比例因子
- :正交投影矩阵
- R:欧拉角表示旋转角度
- t2d:平移向量
- M :有维度2×4,有六个自由度,通过一个 6 维向量 m来参数化。 然后使用 2D 图像渲染纹理和照明模型。
2、非线性3DMM
文章核心整体框架:
用两个networks decode Ds、Dt去解码形状,纹理,他们进入3D时分别是人脸形状和人脸纹理。为了使框架端到端可训练,这些参数通过encoder网络估计,它本质上是?3DMM 的拟合算法。三个深度网络联手以重建输入人脸图像为最终目标,在基于几何的渲染层帮助下。
总体流程:给一张2D人脸图片——我们需要学习一个encodeE:I→m,fS,fT 来估计投影参数 m、
形状参数和纹理参数——延伸到Ds:decode,fs到s,将形状参数解码到3DshapeS;Dt,decode,ft到t,将纹理参数解码到真实纹理T。目的是使带有m、S和T的渲染图像能够近似于原始图像,目标函数为:
形状纹理表示
形状解码器 DS 是一个 MLP,其输入是来自 E 的形状参数 fS。
指出了适合非线性3DMM的纹理模式,文章归类为
三种。
- ,Texture value per vertex。有纹理强度对应于面网格中每个顶点的值。自从3D 顶点未在 2D 网格上定义,此表示将被参数化为一个向量,这不仅失去了顶点的空间关系,但也阻止它利用在 2D 图像上部署 CNN 的便利性。相比之下,鉴于图像合成的快速发展,它最好选择 2D 图像,例如正面人脸。
- ,Texture as a 2D frontal face,作为纹理表示。正面包含很少的两侧信息,会丢失很多侧视图的纹理信息。
- ?,2D unwarped texture。具体来说,每个 3D 顶点 vS 都使用圆柱解扭曲投影到 UV 空间上。假设面部网格具有top 指向 y 轴,vS = (x, y, z) 的投影到 UV 空间 vT = (u, v) 计算如下:,其中 α1, α2, β1, β2 是不变的尺度和平移标量去展开的人脸放入图像边界。此外,纹理解码器 DT 是一个 CNN 构建的小数步长的卷积。
?网络人脸渲染
?为了从S,T,m中重建出人脸,文章中定义了一个渲染层R(m, S, T)。并且渲染分成三步走:
- S中每个顶点的纹理值由它在 2D 纹理 T 中的预定义位置,通常,它涉及通过双线性采样内核进行子像素采样:其中 vT = (u, v) 是 vS 通过的 UV 空间投影方程式 (5)。
- 其次,3D 形状/网格 S 通过 Eqn 投影到图像平面。如方程式(3)。
- 最后,3D网格是使用 Z 缓冲区渲染器渲染,其中每个像素都是与网格的单个三角形相关联
?
?其中,?Φ(g, m, n) = {v (1) S , v (2) S , v (3) S }是返回包围像素的三角形的三个顶点的操作。
(m, n) 投影 g 后。为了处理遮挡,当一个像素位于多个三角形中时,选择离图像平面最近的三角形。每个像素的强度是通过插入强度来确定的。网格顶点通过重心坐标?{λ (i)} 3 i=1。值得注意的是,文章中2D 纹理表示可以通过卷积滤波器生成,这大大减少了 DT 中的参数数量。
网络构造(重点)
文章设计了?E, DT 网络架构,如 Tab. 所示。 1.此外,DS 包括两个全连接层1, 000-dim 中间表示,带有 eLU 激活。整个网络经过端到端的训练以重构输入图像,具有损失函数:
Lrec = PN i=1 ||?Ii ? Ii ||1,强制渲染图像?Ii 类似于输入图像li。对抗性损失 Ladv 有利于真实渲染,而地标损失 LL 强制执行几何约束
对抗性损失,主要基于GAN,对抗性损失为广泛用于合成逼真的图像 ,其中生成器和鉴别器交替训练。 在文章的例子中,生成渲染图像的网络 ?Ii是发生器(generator)。 鉴别器包括一个专用网络 DA,旨在区分真实人脸图像 Ii 和渲染图像 ?Ii. 在生成器的训练过程中,纹理模型 DT 将被更新 目标是 ?Ii,通过DA被归类为真人脸。由于面部渲染已经创建了正确的人脸图像的全局结构,基于全局图像的对抗性损失可能无法有效地在局部面部区域上产生高质量的纹理。 因此,在鉴别器中使用了 patchGAN 。 这里 DA 是一个CNN 由四个 3 × 3 的卷积层组成,步幅为 2,和过滤器的数量分别为 32、64、128 和 1。 最后,能够使用对抗性损失的关键因素之一是在 2D 图像空间中渲染,而不是在?3D 顶点空间或展开的纹理空间。 这个显示了渲染层的必要性和重要性。
|