当前位置: 代码迷 >> 综合 >> 论文阅读——Deep 3D Portrait from a Single Image(CVPR2020)
  详细解决方案

论文阅读——Deep 3D Portrait from a Single Image(CVPR2020)

热度:104   发布时间:2023-11-13 12:15:16.0

摘要

In this paper, we present a learning-based approach for recovering the 3D geometry of human head from a single portrait image. Our method is learned in an unsupervised manner without any ground-truth 3D data. We represent the head geometry with a parametric 3D face model together with a depth map for other head regions including hair and ear. A two-step geometry learning scheme is proposed to learn 3D head reconstruction from in-the-wild face images, where we first learn face shape on single images using self- reconstruction and then learn hair and ear geometry using pairs of images in a stereo-matching fashion. The second step is based on the output of the first to not only improve the accuracy but also ensure the consistency of overall head geometry. We evaluate the accuracy of our method both in 3D and with pose manipulation tasks on 2D images. We alter pose based on the recovered geometry and apply a re- finement network trained with adversarial learning to ame- liorate the reprojected images and translate them to the real image domain. Extensive evaluations and comparison with previous methods show that our new method can produce high-fidelity 3D head geometry and head pose manipula- tion results.

本文方法使用无监督学习,没有任何地面真实的3D数据。我们用一个参数化的3D人脸模型和深度图来表示头部的几何形状,以及头部其他区域包括头发和耳朵。我们通过两步法的几何学习方案完成重建。
第一步:使用自重建在单一图像上学习face shape,然后以立体匹配的方式使用一对对图像,从而来学习头发和耳朵
第二步:其是在第一步输出的基础上,不仅提高了精度,而且保证了整个头部几何形状的一致性。我们评估了我们的方法在三维和二维图像上的姿态操作任务的准确性。根据恢复的几何形状从而来改变姿态,并应用一个经过对抗学习训练的细化网络来改善重投影图像并将其平移到真实图像域。

Preprocessing

对于一幅人像图像,我们先进行粗对齐,从而对检测到的人脸区域进行集中化和缩放(在三维人脸重建步骤后,图像将进行重新对齐,以精确地集中头部的三维中心)。然后我们使用最先进的[34]人脸分割方法分割出头部区域(记为S),其中包括人脸、头发和耳朵区域。

Single-Image 3D Head Reconstruction

在这项工作中,我们使用透视相机模型与经验选择的焦距。头部姿态由旋转矩阵R和平移矩阵t决定

重建3DMM的脸,并且为其他头部区域创建深度图。

人脸重建与姿态估计

利用3DMM,face shape F 和 texture T可以用仿射模型表示:

F = F(α\alphaα,β\betaβ) = Fˉ\bar FFˉ+ BidαB_{id} \alphaBid?α + BexpβB_{exp}\betaBexp?β
T = T(γ\gammaγ) = Tˉ\bar TTˉ + BtγB_{t}\gammaBt?γ
采用BFM模型,对BexpB_{exp}Bexp?采用FaceWarehouse的数据集
α∈R80α ∈ R^{80}αR80, β∈R64β ∈ R^{64}βR64 and δ∈R80δ ∈ R^{80}δR80.

由于真实的3D人脸数据是很少的,所以我们使用无监督学习。我们的方法是借鉴[17]的混合级监督训练方法。
具体来说,所要预测的未知数可以用向量(α, β, δ, p, γ)∈R239表示,其中γ∈R9为场景照明的球谐系数向量。p∈R7是参数化头部姿态的向量

  • 我们可以通过下面式子最小化光照误差:
    在这里插入图片描述
    F表示要渲染的区域。I′I'I是重建图像,I是训练图像
    通过以下方法最小化渲染和真实面孔之间的感知差异:
    请添加图片描述
    f(·)表示用于身份特征提取的人脸识别网络,本文使用[57]中的模型。
    其他常用的损失,如二维面部地标损失和系数正则化损失也被应用,更多的细节在[17]。

Hair&Ear Depth Estimation 头发和耳朵的深度估计

对头部的其他区域估计深度图
在这里插入图片描述
H包括头发和耳朵,以及一小部分被分割的面部区域,这部分区域没有被投影的3DMM面部覆盖。
在一个视频中的两帧,一个受试者的头部姿势不同(R1, t1), (R2, t2)。
我们的脸部重建网络使用I1,I2I_1,I_2I1?,I2?(一个视频中的两帧)作为训练图像,从而来恢复一个受试者不同的头部姿态(R1, t1), (R2, t2)
我们的目标是训练一个网络,在siamese network scheme[13]中预测I1,I2I_1,I_2I1?,I2?的深度图d1和d2。给定深度图估计d1,可通过反投影构建三维网格H1。
在训练前,我们首先对H1和H2的规则像素网格进行朴素三角剖分,构建两个2D网格。
我们可以通过(R2R1?1,?R2R1?1t1+t2)(R_2R_1^{?1},?R_2R_1^{?1}t_1+t_2)(R2?R1?1?,?R2?R1?1?t1?+t2?)将H1转换为I2I_2I2?的相机系统,并将其投影到图像平面上,得到合成图像I2 '。从I2I_2I2?d2d_2d2?生成I1′I_1'I1?的过程也是类似的。
整个过程是可微的,我们用它来训练我们的深度预测网络,有以下损失:

先理清一下:
H1,H2:两帧图片中的区域:包括头发和耳朵,以及一小部分被分割的面部区域
d1, d2:I1,I2I_1,I_2I1?,I2?的深度图
I1′,I2′I_1',I_2'I1?I2?:从I2I_2I2?d2d_2d2?生成I1′I_1'I1?,从I1I_1I1?d1d_1d1?生成I2′I_2'I2?

与stereo matching(立体匹配)一样,先通过最小化亮度误差来强制色彩恒常性约束

请添加图片描述
H2′ = H2′ (H1, d1)
H1′ = H1′ (H2, d2)

H2 '为头部姿态计算得到的H1变形区域,d1为变换过程中得到的变形区域
H1 '为头部姿态计算得到的H2变形区域,d2为变换过程中得到的变形区域

应用梯度差损失,它对亮度变化具有鲁棒性,因此在立体声和光流估计中被广泛采用[6,5,56]:

请添加图片描述
为了施加一个空间平滑先验,我们增加了一个二阶平滑损失:
请添加图片描述
?为拉普拉斯算子。
因为使用了分割区域,用了蒙版,所以重建是基于蒙版的形状吗???然后填上纹理???

face depth as condition and output

我们不是直接从输入图像I估计头发和耳朵的深度,而是将重建的面部形状F投影到图像平面上,得到一个面部深度映射dfd^fdf
dfd^fdf为头发和耳朵深度估计提供了有益的信息(如头部姿势、相机距离)。此外,它允许轮廓周围已知的人脸深度很容易传播到相邻的未知深度区域
我们训练网络也以dfd^fdf为目标来预测面部区域的深度:
请添加图片描述
ShS^hSh代表分割的头发部分。
因为dfd^fdf作为输入,所以通过lfacel_facelf?ace学习人脸深度不会给网络带来太多额外的负担。并且我们可以很容易地加强重建的3D面部和其他区域估计的3D几何形状之间的一致性。比如我们计算整个头部区域S1, S2的平滑损失:
请添加图片描述

Layer-order loss

头发通常会遮住面部的一部分,导致两层。为了确保头发和被遮挡的面部区域之间的正确的相对位置(即,前者应该在后者的前面),我们引入了层序损失:
请添加图片描述
F表示要渲染的区域。这个式子惩罚了不正确的层序。

网络结构

我们使用一个简单的编码器-解码器结构,使用ResNet-18作为骨干。我们抛弃了它的全局平均池和最后的fc层,并添加了几个转置卷积层来将特征映射上采样到全分辨率。在64 × 64、32 × 32和16 × 16分辨率添加跳过连接。输入图像大小为256 × 256。网络结构的更多细节可以在suppl. material.中找到。

Single-Image Head Pose Manipulation

  相关解决方案