Learning an Animatable Detailed 3D Face Model from In-The-Wild Images

目录

文章的创新点

文章的贡献

一.初步计算

1.1 介绍FLAME模型

在这里文章介绍了来自论文Learning a model of facial shape and expression from 4D scans[1]中的FLAME模型,FLAME模型是一个统计3D头部模型,结合了单独的线性身份形状和表达空间与线性混合皮肤(LBS)和posedependent矫正混合形状,以清晰地表达颈部、下巴和眼球。在这个模型中给定了面部标识参数βRβ\boldsymbol{\beta} \in \mathbb{R^{\left| \boldsymbol{\beta} \right|}};姿势参数θR3k+3\boldsymbol{\theta} \in \mathbb{R^{3k+3}}(其中3表示颈部、下巴、眼球三个关节,k=4表示三个关节都有四个关节,除此之外每个关节都有三个全局的旋转向量);表情参数ψRψ\boldsymbol{\psi} \in \mathbb{R^{\left| \boldsymbol{\psi} \right|}},FLAME模型输出的是一个具有n=5023n=5023个顶点的网格。FLAME模型被定义为
M(β,θ,ψ)=W(TP(β,θ,ψ),J(β),θ,W)......(1)M(\boldsymbol{\beta,\theta,\psi})=W(T_P(\boldsymbol{\beta,\theta,\psi}),J(\boldsymbol{\beta}),\boldsymbol{\theta},\mathcal{W})......(1)
其中W(T,J,θ,W)W(\boldsymbol{T,J,\theta,\mathcal{W}})为混合蒙皮函数,TR3n\boldsymbol{T} \in \mathbb{R^{3n}}为顶点,JR3k\boldsymbol{J} \in \mathbb{R^{3k}}为关节,WRkn\mathcal{W} \in \mathbb{R^{k*n}}为线性平滑混合权重,同时考虑到每个人的关节位置不同因此关节位置J\boldsymbol{J}被定义为面部标识参数β\boldsymbol{\beta}的一个函数,此外还可以将函数TP(β,θ,ψ)T_P(\boldsymbol{\beta,\theta,\psi})继续拆分为:
TP(β,θ,ψ)=T+BS(β;S)+BP(θ;P)+BE(ψ;E)......(2)T_P(\boldsymbol{\beta,\theta,\psi})=\boldsymbol{T}+B_S(\boldsymbol{\beta};\mathcal{S})+B_P(\boldsymbol{\theta};\mathcal{P})+B_E(\boldsymbol{\psi};\mathcal{E})......(2)
其中T\boldsymbol{T}表示“零姿势”的平均模板,简单理解就是没有姿势没有表情的白板人脸,然后就开始在白板人脸上添加标识混合形状BS(β;S)B_S(\boldsymbol{\beta};\mathcal{S});姿势调节BP(θ;P)B_P(\boldsymbol{\theta};\mathcal{P});表情混合形状BE(ψ;E)B_E(\boldsymbol{\psi};\mathcal{E})其中的S,P,E\mathcal{S},\mathcal{P},\mathcal{E}是学习到的身份(标识),姿态,表情的基。详见论文[1].到这里其实都是在介绍论文[1]的FLAME模型。

1.2外观模型

由于这个FLAME模型是不提供外观模型的,所以作者转换了巴塞尔人脸模型的线性反照率子空间 进入FLAME UV布局,使其与FLAME兼容。外观模型输出一个UV反照率图A(α)Rdd3A(\boldsymbol{\alpha})\in \mathbb{R^{d*d*3}}用于反照率参数αRα\boldsymbol{\alpha} \in \mathbb{R^{\left| \boldsymbol{\alpha} \right|}}

1.3相机模型

相机模型:现有的野外人脸数据集中的照片通常是从远处拍摄的。 因此,我们使用正交相机模型c\boldsymbol{c}将3D网格投影到图像空间中。 人脸顶点被投影到图像中为v=sΠ(Mi)+tv=s\Pi(M_i)+t,其中MiR3M_i \in \mathbb{R^{3}}MM中的一个顶点,ΠR23\Pi \in \mathbb{R^{2*3}} 是正交的3D-2D投影矩阵,sRs \in \mathbb{R}tR2t \in \mathbb{R^2}分别为各向同性尺度和二维平移。

1.4照明模型

对于人脸重建,最常用的照明模型是基于球谐函数 (SH)。 通过假设光源很远并且人脸的表面反射率是朗伯矩阵,则人脸阴影图像计算如下:
B(α,I,Nu,v)i,j=A(α)i,jk=19IkHk(Ni,j)......(3)B(\boldsymbol{\alpha,\Iota},N_{u,v})_{i,j}=A(\boldsymbol{\alpha})_{i,j}\odot\sum_{k=1}^9{\boldsymbol{\Iota}_kH_k(N_{i,j})}......(3)
其中AA为反照率,NN为表面法线,BB为阴影和纹理,在UV坐标系中Bi,jR3B_{i,j} \in \mathbb{R^3},Ai,jR3A_{i,j} \in \mathbb{R^3}Ni,jR3N_{i,j} \in \mathbb{R^3}表示UV坐标系的像素(i,j)(i,j),球谐函数的基和系数为Hk:R3RH_k:\mathbb{R^3\rightarrow R}I=[I1T,I2T...I9T]\boldsymbol{\Iota}=\begin{bmatrix} \boldsymbol{\Iota}_1^T,\boldsymbol{\Iota}_2^T...\boldsymbol{\Iota}_9^T \end{bmatrix},IkR3\boldsymbol{\Iota}_k \in R^3\odot表示Hadamard积。

1.5纹理渲染

按照给定的几何参数(β,θ,ψ)(\boldsymbol{\beta,\theta,\psi}),反照率系数(α)(\boldsymbol{\alpha}),光线(I)(\boldsymbol{\Iota}),相机信息cc,我们可以通过Ir=R(M,B,c)I_r=\mathcal{R}(M,B,c)来生成2D图像IrI_r,其中R\mathcal{R}表示渲染函数。
FLAME 能够从低维潜在空间生成具有各种姿势、形状和表情的面部几何图形。 然而,模型的表示能力受到低网格分辨率的限制,因此 FLAME 的表面大多缺少中频细节。

二.方法

DECA 学习仅从野外训练图像中回归具有几何细节的参数化人脸模型(图1)。 经过训练后,DECA 会根据单个人脸图像II重建具有详细人脸几何形状的3D头部。 重建细节的学习参数化使我们能够通过控制FLAME的表情和下巴姿势参数来为细节重建设置动画(图2)。这会合成新的皱纹,同时保持特定于个人的细节不变。

预处理
图1

预处理
图2

核心观点:DECA 的关键思想基于观察到一个人的面部显示不同的细节(即皱纹),这取决于他们的面部表情,但他们形状的其他属性保持不变。因此,面部细节应分为静态特定于个人的细节和动态表情相关的细节,例如皱纹。然而,解开静态和动态面部细节是一项重要的任务。静态面部细节因人而异,而动态表情相关的面部细节甚至因人而异。因此,DECA 学习了一个以表情为条件的细节模型,以从特定于个人的细节潜在空间和表情空间中推断面部细节。学习细节位移模型的主要困难是缺乏训练数据。先前的工作使用专门的相机系统在受控环境中扫描人,以获得详细的面部几何形状。然而,这种方法对于捕捉具有不同表达方式和种族和年龄多样性的大量身份来说是昂贵且不切实际的。因此我们提出了一种方法从野外图像中学习细节几何。

2.1粗重建

我们首先以合成分析的方式学习粗略重建(即在FLAME的模型空间中):给定2D图像II作为输入,我们将图像编码为潜在代码,将其解码以合成2D图像IrI_r并使合成图像与输入图像的差值最小。 如图1所示,我们训练了一个编码器𝐸𝑐,它由一个ResNet50网络后跟一个全连接层,以回归低维潜在代码。 这个潜在代码由FLAME参数(β,θ,ψ)(\boldsymbol{\beta,\theta,\psi})(即表示粗几何)、反照率系数(α)(\boldsymbol{\alpha})、光线(I)(\boldsymbol{\Iota})和相机信息cc组成。 更具体地说,粗几何使用前100个FLAME形状参数(β)(\boldsymbol{\beta})、50个表情参数(ψ)(\boldsymbol{\psi})和50个反照率参数(α)(\boldsymbol{\alpha})。总的来说,编码器EcE_c预测了236维潜在代码。
对于给定的每个2D人脸图像数据集IiI_i的每个主题都有多幅图像记为cic_i,每个图像有68个2D关键点kik_i,粗重建分支通过最小化训练来实现:
Lcoarse=Llmk+Leye+Lpho+Lid+Lsc+Lreg......(4)L_{coarse}=L_{lmk}+L_{eye}+L_{pho}+L_{id}+L_{sc}+L_{reg}......(4)
其中LlmkL_{lmk}为界标损失,LeyeL_{eye}为眼睛闭合损失,LphoL_{pho}为光度损失,LidL_{id}为身份损失,LscL_{sc}为形状一致性损失,LregL_{reg}为正则化。

2.1.1边界重投影损失LlmkL_{lmk}

LlmkL_{lmk}测量正确标注的2D人脸边界ki\boldsymbol{k}_i与FLAME模型表面上的相应地标MiR3\boldsymbol{M}_i \in \mathbb{R}^3之间的差异,由估计的相机模型投影到图像中。边界损失定义为:
Llmk=i=168kisΠ(Mi)+t1......(5)L_{lmk}=\sum_{i=1}^{68}{\mid\mid \boldsymbol{k}_i-s\Pi(M_i)+t \mid\mid _1}......(5)

2.1.2眼睛闭合损失LeyeL_{eye}

眼睛闭合损失计算上下眼睑上的界标ki\boldsymbol{k}_ikj\boldsymbol{k}_j的相对偏移量,并测量投影到图像中的FLAME表面MiM_iMjM_j上相应界标偏移量的差异。形式上,眼睛闭合损失为:
Leye=(i,j)EkikjsΠ(MiMj)1......(6)L_{eye}=\sum_{(i,j) \in E}{\mid\mid \boldsymbol{k}_i-\boldsymbol{k}_j-s\Pi(M_i-M_j) \mid\mid _1}......(6)
其中EE是上/下眼睑标志对的集合。边界损失LlmkL_{lmk}(方程 5)惩罚绝对边界位置差异,而 LeyeL_{eye}惩罚眼睑地标之间的相对差异。因为眼睛闭合损失LeyeL_{eye}是平移不变的,所以与 LlmkL_{lmk}相比,它不太容易受到投影3D人脸和图像之间错位的影响。 相比之下,简单地增加眼睛界标的界标损失会影响整体面部形状,并可能导致不令人满意的重建。

2.1.3光度损失LphoL_{pho}

光度损失计算输入图像II和渲染IrI_r之间的误差为:
Lpho=VI(IIr)1L_{pho}=\mid\mid V_I \odot (I-I_r) \mid\mid _{1}
在这里,VIV_I是面部皮肤区域中值为1的面罩,其他地方的值为0,通过现有的面部分割方法,而⊙表示Hadamard积。 仅计算人脸区域的误差可以通过例如: 头发、衣服、太阳镜等。如果没有这个,预测的反照率还会考虑遮挡物的颜色,可能与肤色相去甚远,导致渲染不自然。

2.1.4身份损失LidL_{id}

最近的3D面部重建方法证明了利用身份丢失来生成更逼真的面部形状的有效性受此启发,我们还使用了预训练的人脸识别网络ff在训练期间使用身份丢失。人脸识别网络ff输出渲染图像和输入图像的特征嵌入,以及身份损失然后测量两个嵌入之间的余弦相似度。LidL_{id}定义为:
Lid=1f(I)f(Ir)f(I)2f(Ir)2......(7)L_{id}=1-\frac{f(I)f(I_r)}{\mid\mid f(I) \mid\mid _2 \cdot \mid\mid f(I_r) \mid\mid _2}......(7)
通过计算嵌入之间的误差,损失鼓励渲染图像捕捉一个人身份的基本属性,确保渲染图像看起来与输入主体是同一个人。

2.1.5形状一致性损失LscL_{sc}

给定两个相同主题的图像IiI_iIjI_j(即ci=cjc_i=c_j),粗编码器EcE_c应该输出相同的形状参数(即βi=βj\boldsymbol{\beta}_i=\boldsymbol{\beta}_j)。 以前的工作通过强制βi\boldsymbol{\beta}_iβj\boldsymbol{\beta}_j之间的距离比到对应于不同主题的形状系数的距离小一点来鼓励形状一致性。 然而,在实践中选择这个固定余量是具有挑战性的。 相反,文章提出了一种不同的策略,将βi\boldsymbol{\beta}_i 替换为βj\boldsymbol{\beta}_j,同时保持所有其他参数不变。 鉴于βi\boldsymbol{\beta}_iβj\boldsymbol{\beta}_j代表相同的主题,这组新参数肯定能很好地重建IiI_i
形式上,LscL_{sc}为:
Lsc=Lcoarse(Ii,R(M(βj,θi,ψi),B(αi,Ii,Nuv,i),ci))......(8)L_{sc}=L_{coarse}(I_i,\mathcal{R}(M(\boldsymbol{\beta}_j,\boldsymbol{\theta}_i,\boldsymbol{\psi}_i),B(\boldsymbol{\alpha}_i,\boldsymbol{\Iota}_i,N_{uv,i}),c_i))......(8)
目标是使渲染图像看起来像真人。 如果该方法正确估计了同一个人的两幅图像中的面部形状,那么在这些图像之间交换形状参数应该会产生无法区分的渲染图像。 因此,我们采用光度学和身份
来自交换形状参数的渲染图像的损失。

2.1.6正则化损失LregL_{reg}

LregL_{reg}正则化身份Eβ=β22E_{\boldsymbol{\beta}}=\mid\mid\boldsymbol{\beta}\mid\mid_2^2,表情Eψ=ψ22E_{\boldsymbol{\psi}}=\mid\mid \boldsymbol{\psi} \mid\mid^2_2,反照率Eα=α22E_{\boldsymbol{\alpha}}=\mid\mid \boldsymbol{\alpha}\mid\mid_2^2

2.2细重建

细节重建通过详细的UV位移图D[0.01,0.01]ddD \in \begin{bmatrix} -0.01,0.01 \end{bmatrix}^{d*d}(见图 2)来增强粗略的FLAME几何。 与粗略重建类似,我们训练一个编码器EdE_d(与 𝐸𝑐 具有相同的架构)将II编码为128维的潜在代码δ\boldsymbol{\delta},代表特定主题的细节。然后将潜在代码δ\boldsymbol{\delta}与FLAME的表情ψ\boldsymbol{\psi}和下巴姿势参数θjaw\boldsymbol{\theta}_{jaw}连接,并由FdF_d解码为DD

2.2.1细节解码器

细节解码器定义为:
D=Fd(δ,ψ,θjaw)......(9)D=F_d(\boldsymbol{\delta,\psi,\theta_{jaw}})......(9)
其中细节代码δR50\boldsymbol{\delta} \in \mathbb{R^{50}}控制静态的特定于个人的细节。我们利用来自粗略重建分支的表情参数ψR50\boldsymbol{\psi} \in \mathbb{R^{50}}和下巴姿势参数θjawR3\boldsymbol{\theta_{jaw}} \in \mathbb{R^{3}}来捕获动态表情皱纹细节。 为了渲染,DD被转换为法线贴图。

2.2.2细节渲染

细节位移模型允许我们生成具有中频表面细节的图像。为了重建详细的几何体MM',我们将MM及其表面法线NN转换为UV空间,表示为MuvRdd3M_{uv} \in \mathbb{R^{d*d*3}}NuvRdd3N_{uv} \in \mathbb{R^{d*d*3}},并将它们与DD组合:
Muv=Muv+DNuv......(10)M'_{uv}=M_{uv}+D\odot N_{uv}......(10)
通过从MM′计算法线NN′,我们得到细节渲染IrI'_r
Ir=R(M,B(α,I,N),c)......(11)I'_r=\mathcal{R}(M,B(\boldsymbol{\alpha,\Iota,N'}),\boldsymbol{c})......(11)
细节重建的训练通过最小化损失函数来实现:
Ldetail=LphoD+Lmrf+Lsym+Ldc+LregDL_{detail}=L_{phoD}+L_{mrf}+L_{sym}+L_{dc}+L_{regD}
其中LphoDL_{phoD}为细节光照损失,ID-MRF损失为LmrfL_{mrf}LsymL_{sym}为软对称损失,LregDL_{regD}为细节正则化损失, 由于我们估计的反照率是由具有50个基向量的线性模型生成的,因此渲染的粗糙人脸图像只能恢复低频信息,例如肤色和基本面部属性。 渲染图像中的高频细节主要来自位移图,因此,由于LdetailL_{detail}将渲染的细节图像与真实图像进行比较,因此FdF_d被迫对细节几何信息进行建模。

2.2.3细重建光度损失LphoDL_{phoD}

使用应用的细节置换贴图,渲染图像IrI'_r包含一些几何细节。等同于粗略渲染,我们使用光度损失LphoD=VI(IIr)1,1L_{phoD}=\mid\mid V_I \odot (I-I'_r) \mid\mid_{1,1}其中,回想一下,VIV_I是代表可见皮肤像素的蒙版。

2.2.4ID-MRF lossLmrfL_{mrf}

我们采用隐式多样化马尔可夫随机域 (ID-MRF) 损失重建几何细节。 给定输入图像和细节渲染,ID-MRF损失从预训练网络的不同层提取特征块,然后最小化来自两个图像的相应最近邻特征块之间的差异。 Larsen et al. [2016] and Isola et al. [2017] 指出L1L_1损失无法恢复数据中的高频信息。 因此,这两种方法使用鉴别器来获得高频细节。 不幸的是,这可能会导致对抗训练过程不稳定。 相反,ID-MRF 损失在本地补丁级别将生成的内容正则化为原始输入; 这鼓励 DECA 捕捉高频细节。MRF损失定义如下:
Lmrf=2LM(conv42)+LM(conv32)......(13)L_{mrf}=2L_M(conv4_2)+L_M(conv3_2)......(13)
其中LM(layerth)L_M(layer_{th})表示ID-MRF损失,用于从IrI'_rII中提取VGG19VGG19特征块上第layerlayer层的ID-MRF损失。与光度损失一样,我们仅针对UV空间中的面部皮肤区域计算LmrfL_{mrf}

2.2.5软对称损失LsymL_{sym}

为了增加自遮挡的鲁棒性,我们添加了一个软对称损失来规范化不可见的面部部分。如下:
Lsym=Vuv(Dflip(D))1,1......(14)L_{sym}=\mid\mid V_{uv} \odot(D-flip(D)) \mid\mid _{1,1}......(14)
其中VuvV_{uv}表示UV空间中的面部皮肤,flipflip是水平翻转操作。如果没有LsymL_{sym},对于极端姿势,在遮挡区域中会出现边界伪影。

2.2.6正则化损失LregDL_{regD}

细节正则化:细节位移通过LregD=D1,1L_{regD}=\mid\mid D \mid\mid _{1,1}进行正则化以减少噪声。

2.3细节重建中解纠结

优化LdetailL_{detail}使我们能够重建具有中频细节的人脸。 然而,使这些细节重建动画化,需要我们将δ\boldsymbol{\delta}控制的人的特定细节(即痣、毛孔、眉毛和与表情无关的皱纹)与由FLAME控制的表情相关皱纹(即随着不同面部表情而变化的皱纹)分开表情和下巴姿势参数,ψ\boldsymbol{\psi}θjaw\boldsymbol{\theta_{jaw}}。 文章的主要观察结果是,两张图像中的同一个人应该具有相似的粗略几何形状和个性化的细节。
具体来说,对于渲染的细节图,同一被摄体的两幅图像之间交换细节码应该对渲染的图像没有影响。

2.3.1细节一致性损失

给定同一主题的两张图像IiI_iIj(即ci=cjI_j(即c_i = c_j),细节一致性损失定义为:
Ldc=Ldeltail(Ii,R(M(βj,θi,ψi),A(αi),Fd(δj,ψi,θjaw),Ii,ci))......(15)L_{dc}=L_{deltail}(I_i,\mathcal{R}(M(\boldsymbol{\beta}_j,\boldsymbol{\theta}_i,\boldsymbol{\psi}_i),A(\boldsymbol{\alpha_i}),F_d(\boldsymbol{\delta_j},\psi_i,\theta_{jaw}),\Iota_i,c_i))......(15)
细节一致性损失对于解开身份相关和表达相关的细节至关重要。 在没有细节一致性损失的情况下,特定于个人的细节代码δ\boldsymbol{\delta}捕获身份和表情相关的细节,因此,无法通过改变FLAME下巴姿势和表情来重新定位重建的细节。