FLAME使用线性变换来描述与身份和表情相关的形状变化,并使用标准的线性混合蒙皮(LBS)来模拟围绕 K = 4 K = 4 K=4个关节的颈部、下巴和眼球旋转。由形状系数参数化, β ⃗ ∈ R ∣ β ⃗ ∣ \vec{β} \in \mathbb{R}^{|\vec{β}|} β ∈R∣β ∣,姿势 θ ⃗ ∈ R ∣ θ ⃗ ∣ \vec{θ} \in \mathbb{R}^{|\vec{θ}|} θ ∈R∣θ ∣,和表情 ψ ⃗ ∈ R ∣ ψ ⃗ ∣ \vec{ψ} \in \mathbb{R}^{|\vec{ψ}|} ψ ∈R∣ψ ∣,FLAME返回 N = 5023 N = 5023 N=5023个顶点。
FLAME模型了与身份相关的形状变化 B S ( β ⃗ ; S ) : R ∣ β ⃗ ∣ → R 3 N B_S(\vec{β};\pmb{S}):\mathbb{R}^{|\vec{β}|} \rightarrow \mathbb{R} ^ {3N} BS(β ;S):R∣β ∣→R3N,校正姿势混合形状 B P ( θ ⃗ ; P ) : R ∣ θ ⃗ ∣ → R 3 N B_P(\vec{θ};\pmb{P}):\mathbb{R}^{|\vec{θ}|} \rightarrow \mathbb{R} ^ {3N} BP(θ ;P):R∣θ ∣→R3N,以及表情混合形状 B E ( ψ ⃗ ; E ) : R ∣ ψ ⃗ ∣ → R 3 N B_E(\vec{ψ};\pmb{E}):\mathbb{R}^{|\vec{ψ}|} \rightarrow \mathbb{R} ^ {3N} BE(ψ ;E):R∣ψ ∣→R3N,作为具有学习基础 S \mathcal{S} S、 E \mathcal{E} E和 P \mathcal{P} P的线性变换。给定模板 T ‾ ∈ R 3 N \overline{\pmb{T}} \in \mathbb{R}^{3N} T∈R3N处于"零姿势",身份、姿势和表情混合形状被建模为相对于 T ‾ \overline{\pmb{T}} T的顶点偏移。每个姿势向量 θ ⃗ ∈ R 3 K + 3 \vec{θ} \in \mathbb{R}^{3K+3} θ ∈R3K+3包含 ( K + 1 ) (K+1) (K+1)个轴角表示中的旋转向量;即每个关节加上全局旋转一个向量。混合蒙皮函数 W ( T ‾ , J , θ ⃗ , W ) W (\overline{\pmb{T}}, \pmb{J}, \vec{θ}, \mathcal{W}) W(T,J,θ ,W)然后围绕关节 J ∈ R 3 K \pmb{J} \in \mathbb{R}^{3K} J∈R3K旋转顶点,由混合权重 W ∈ R K × N \mathcal{W} \in \mathbb{R} ^ {K \times N} W∈RK×N线性平滑。
其中
T P ( β ⃗ , θ ⃗ , ψ ⃗ ) = T ‾ + B S ( β ⃗ ; S ) + B P ( θ ⃗ ; P ) + B E ( ψ ⃗ ; E ) , (2) T_P(\vec{β},\vec{θ},\vec{ψ})=\overline{\pmb{T}}+B_S(\vec{β};\mathcal{S})+B_P(\vec{θ};\mathcal{P})+B_E(\vec{ψ};\mathcal{E}), \tag{2} TP(β ,θ ,ψ )=T+BS(β ;S)+BP(θ ;P)+BE(ψ ;E),(2)
最近在人脸识别(例如[38])和面部标志检测(例如[4, 29])方面的进展导致了带有身份标签和2D面部标志的大型图像数据集。在训练中,我们假设有一组2D面部图像 I i I_i Ii,对应的身份标签 c i c_i ci和标志 k i k_i ki。
形状一致性假设可以通过 β i ⃗ = β j ⃗ , ∀ c i = c j \vec{β_i} = \vec{β_j},∀c_i = c_j βi =βj ,∀ci=cj(即一个主体的面部形状在多个图像中应保持不变),以及 β i ⃗ ≠ β j ⃗ , ∀ c i ≠ c j \vec{β_i} \neq \vec{β_j},∀c_i \neq c_j βi =βj ,∀ci=cj(即不同主体的面部形状应该是不同的)来形式化。RingNet引入了一个环形结构,可以同时优化任意数量的输入图像的形状一致性。有关形状一致性的详细信息,请参见第3节。
RingNet分为 R R R个环元素 e i = 1 i = R e^{i=R}{i=1} ei=1i=R,如图3所示,其中每个ei都包括一个编码器和一个解码器网络(见图4)。编码器在 e i e_i ei之间共享权重,解码器在训练期间保持不变。编码器是特征提取网络 f f e a t f{feat} ffeat和回归网络 f r e g f_{reg} freg的组合。给定图像 I i I_i Ii, f f e a t f_{feat} ffeat输出一个高维向量,然后由 f r e g f_{reg} freg编码成一个语义上有意义的向量(即 f e n c ( I i ) = f r e g ( f f e a t ( I i ) ) f_{enc}(I_i) = f_{reg}(f_{feat}(I_i)) fenc(Ii)=freg(ffeat(Ii)))。这个向量可以表示为相机、姿势、形状和表情参数的串联,即 f e n c ( I i ) = [ c a m i , θ ⃗ i , β ⃗ i , ψ ⃗ i ] f_{enc}(I_i) = [cam_i, \vec θ_i, \vec β_i, \vec ψ_i] fenc(Ii)=[cami,θ i,β i,ψ i],其中 θ ⃗ i , β ⃗ i , ψ ⃗ i \vec θ_i,\vec β_i,\vec ψ_i θ i,β i,ψ i是FLAME参数。
图4:输出图像的3D网格的Ring元素。
为简单起见,我们在以下省略 I I I,使用 f e n c ( I i ) = f e n c , i f_{enc}(I_i) = f_{enc,i} fenc(Ii)=fenc,i和 f f e a t ( I i ) = f f e a t , i f_{feat}(I_i) = f_{feat,i} ffeat(Ii)=ffeat,i。回归网络通过迭代误差反馈循环[17, 7]迭代地回归 f e n c , i f_{enc,i} fenc,i,而不是直接从 f f e a t , i f_{feat,i} ffeat,i回归 f e n c , i f_{enc,i} fenc,i。在每个迭代步骤中,从先前的估计中进行渐进性移动,以达到当前估计。形式上,回归网络将串联的 [ f f e a t , i t , f e n c , i t ] [f^t_{feat,i}, f^t_{enc,i}] [ffeat,it,fenc,it]作为输入,并输出 δ f e n c , i t δf^t_{enc,i} δfenc,it。然后我们通过以下方式更新当前估计,
f e n c , i t + 1 = f e n c , i t + δ f e n c , i t (3) {f_{enc,i}}^{t+1} = {f_{enc,i}}^{t} + δ{f_{enc,i}}^{t} \tag{3} fenc,it+1=fenc,it+δfenc,it(3)
环元素 R R R的数量是我们网络的一个超参数,它确定在 β ⃗ \vec β β 上进行优化一致性的并行处理的图像数量。RingNet允许同时使用同一主体的图像和不同主体的图像的任意组合。然而,为了不失一般性,我们将相同身份的面部图像提供给 { e j } j = 1 j = R − 1 {\{e_j\}}^{j=R−1}_{j=1} {ej}j=1j=R−1,将不同身份的图像提供给 e R e_R eR。因此,对于每个输入训练批次,每个切片包含 R − 1 R-1 R−1个相同人的图像和另一个人的一个图像(见图3)。
3.3. Shape Consistency Loss
为简化起见,让我们称具有相同身份标签的两个主体为"匹配对",而具有不同身份标签的两个主体为"不匹配对"。我们工作的一个关键目标是创建一个强大的端到端可训练的网络,可以从同一主体的图像中产生相同的形状,并对不同主体产生不同的形状。换句话说,我们希望使我们的形状生成器具有区分性。我们通过要求匹配对在形状空间中的距离比不匹配对小一个边界值 η η η来强制执行这一点。距离是在面部形状参数的空间中计算的,这对应于中性姿势下顶点的欧几里得空间。
在RingNet结构中, e j e_j ej和 e k e_k ek产生 β ⃗ j \vec β_j β j和 β ⃗ k \vec β_k β k,当 j ≠ k j \neq k j=k且 j , k ≠ R j,k \neq R j,k=R时,它们是匹配对。类似地, e j e_j ej和 e R e_R eR产生 β ⃗ j \vec β_j β j和 β ⃗ R \vec β_R β R,当 j ≠ R j \neq R j=R时,它们是不匹配对。我们的形状一致性项为:
∥ β j ⃗ − β k ⃗ ∥ 2 2 + η ≤ ∥ β j ⃗ − β R ⃗ ∥ 2 2 (4) \left\| \vec {\beta_j} - \vec {\beta_k} \right\|_2^2 + \eta \leq \left\| \vec {\beta_j} - \vec {\beta_R} \right\|_2^2 \tag{4} βj −βk 22+η≤ βj −βR 22(4)
因此,我们在训练RingNet端到端时最小化以下损失:
L S = ∑ i = 1 n b ∑ j , k = 1 R − 1 max ( 0 , ∥ β i j ⃗ − β i k ⃗ ∥ 2 2 − ∥ β i j ⃗ − β i R ⃗ ∥ 2 2 + η ) (5) L_S = \sum_{i=1}^{n_b} \sum_{j,k=1}^{R-1} \max\left(0, \left\| \vec {\beta_{ij}} - \vec {\beta_{ik}} \right\|2^2 - \left\| \vec {\beta{ij}} - \vec {\beta_{iR}} \right\|_2^2 + \eta\right) \tag{5} LS=i=1∑nbj,k=1∑R−1max(0, βij −βik 22− βij −βiR 22+η)(5)
其可以归一化为:
L S C = 1 n b × R × L S (6) L_{SC} = \frac{1}{n_b \times R} \times L_S \tag{6} LSC=nb×R1×LS(6)
n b n_b nb是环中每个元素的批处理大小。
在训练期间,RingNet输出3D网格,为这些网格计算静态和动态3D标志,并使用编码器输出中预测的相机参数将这些标志投影到图像平面。因此,我们计算投影标志kpi和地面真实2D标志ki之间的以下L1损失:
L proj = ∥ w i × ( k p i − k i ) ∥ 1 (7) L_{\text{proj}} = \|w_i \times (k_{pi} - k_i)\|_1 \tag{7} Lproj=∥wi×(kpi−ki)∥1(7)
其中 w i w_i wi是由2D标志预测器提供的每个地面真实标志的置信度得分。如果置信度高于0.41,则将其设置为1,否则设置为0。训练RingNet端到端的总损失 L t o t L_{tot} Ltot是:
L tot = λ SC L SC + λ proj L proj + λ β ~ ∥ β ~ ∥ 2 2 + λ ψ ~ ∥ ψ ~ ∥ 2 2 (8) L_{\text{tot}} = \lambda_{\text{SC}} L_{\text{SC}} + \lambda_{\text{proj}} L_{\text{proj}} + \lambda_{\tilde{\beta}} \|\tilde{\beta}\|2^2 + \lambda{\tilde{\psi}} \|\tilde{\psi}\|_2^2 \tag{8} Ltot=λSCLSC+λprojLproj+λβ~∥β~∥22+λψ~∥ψ~∥22(8)
其中 λ λ λ是每个损失项的权重,最后两项对形状和表情系数进行正则化。由于 B S ( β ⃗ ; S ) B_S(\vec β; \mathcal S) BS(β ;S)和 B E ( ψ ⃗ ; E ) B_E( \vec ψ; \mathcal E) BE(ψ ;E)被平方方差缩放, β ⃗ \vec β β 和 ψ ⃗ \vec ψ ψ 的L2范数表示正交形状和表情空间中的马哈拉诺比斯距离。
3.5. 实现细节
特征提取网络使用预训练的 ResNet50 [15] 架构,在训练期间也进行了优化。特征提取网络输出一个 2048 维向量,作为回归网络的输入。回归网络包括两个维度为 512 的全连接层,带有 ReLu 激活和 dropout,接着是一个最终的线性全连接层,输出为 159 维。对这个 159 维的输出向量,我们连接了相机、姿势、形状和表情参数。前三个元素表示比例和 2D 图像平移。接下来的 6 个元素是全局旋转和颚部旋转,都是在轴角表示法中。由于 FLAME 的颈部和眼球旋转不对应于面部标记,因此不进行回归。接下来的 100 个元素是形状参数,然后是 FLAME 的 50 个表情参数。可微分的 FLAME 层在训练期间保持不变。我们使用学习率为 1e-4 的 Adam [20] 优化器对 RingNet 进行 10 轮训练。不同的模型参数为 R = 6 R = 6 R=6, λ S C = 1 λ_{SC} = 1 λSC=1, λ p r o j = 60 λ_{proj} = 60 λproj=60, λ β ⃗ = 1 e − 4 λ_{\vec β} = 1e − 4 λβ =1e−4, λ ψ ⃗ = 1 e − 4 λ_{\vec ψ} = 1e − 4 λψ =1e−4, η = 0.5 η = 0.5 η=0.5。RingNet 架构在 Tensorflow [1] 中实现,并将公开发布。我们使用 VGG2 人脸数据库 [6] 作为训练数据集,其中包含面部图像及其相应的标签。我们在数据库上运行 OpenPose [29] 并计算面部的 68 个标记点。OpenPose 对许多情况都无法成功。在清理了失败的情况后,我们得到了大约 80 万张图像,以及相应的标签和面部标记,用于我们的训练语料库。我们还考虑了由 [4] 提供的约 3000 张具有极端姿势的图像及其相应的标记。由于对于这些极端图像我们没有任何标签,我们通过随机裁剪和缩放来复制每个图像,以考虑匹配对。
4. 基准数据集和评估指标
本节介绍了我们的 NoW 基准测试,用于从单眼图像进行 3D 面部重建的任务。该基准测试的目标是引入一个标准评估指标,以测量在视角、光照和常见遮挡变化下 3D 面部重建方法的准确性和鲁棒性。
数据集:该数据集包含 100 名受试者的 2054 张 2D 图像,使用 iPhone X 拍摄,并为每个受试者单独提供了一个 3D 头部扫描。这个头部扫描用作评估的地面真实。选择的受试者包含年龄、BMI 和性别的变化(55 名女性,45 名男性)。
对于所有类别的挑战都是在给定单眼图像的情况下重建一个中性的 3D 面部。请注意,几张图像中存在面部表情,这需要方法来分离身份和表情,以评估预测的身份的质量。
捕获设置:对于每个受试者,我们使用主动立体系统(3dMD LLC,亚特兰大)捕获中性表情的原始头部扫描。多摄像头系统包括六对灰度立体摄像头、六个彩色摄像头、五个斑点图案投影仪和六个白色 LED 面板。重建的 3D 几何对于每个受试者包含约 12 万个顶点。每个受试者在扫描过程中佩戴头巾,以避免由于头发导致的面部或颈部区域的遮挡和扫描仪噪声。
评估指标:在给定单眼图像的情况下,挑战是重建一个 3D 面部。由于预测的网格出现在不同的本地坐标系中,通过使用预测和扫描之间的一组相应的地标对重建的 3D 网格进行刚性对齐(旋转、平移和缩放)。我们进一步执行基于扫描到网格距离的刚性对齐(即每个扫描顶点与网格表面上最近点之间的绝对距离),使用地标对齐作为初始化。然后,计算每个图像的误差,即地面真实扫描与重建网格之间的扫描到网格距离。然后报告不同的错误,包括所有距离的累积错误图,中位距离,平均距离和标准偏差。
剔除研究 :在这里,我们通过在表3中比较不同 R R R值的选择,为在RingNet中使用环形架构提供了一些动机。我们在包含10个受试者的验证集上评估这些值(其中六个来自[8],四个来自[21])。对于每个受试者,我们选择一个中性扫描和两到四个扫描仪图像,为图像重建3D网格,并在刚性对齐后测量扫描到网格的重建误差。使用具有更多元素的环形结构与仅使用单个三元组损失相比,误差减小,但它也增加了训练时间。为了在时间和误差之间取得平衡,我们在实验中选择了 R = 6 R = 6 R=6。