Github:https://github.com/FuxiCV/3D-Face-GCNs
论文提出了使用图卷积神经网络GCN(Graph Convolutional Networks)对3DMM方法 (3D Morphable Model) 重建生成的纹理进行改进的方法。并且这里只重建mesh的顶点颜色,而不是重建整个的uv图。
主要贡献:
- 提出了使用单张图片,基于 coarse-to-fine的框架重建高保真纹理的3d人脸,并且不需要大量的高清人脸数据。
- 首次提出使用图卷积来生成高保真的纹理,可以生成人脸mesh中每一个定点的细节颜色。
- 相比其他state-of-the-art 的方法,我们的方法在定性和定量上都比其他方法更好。
Morphable 3D Face Models:
3dmm方法,由人脸形状,表情,纹理,构成。其中, Basel Face Model (BFM)模型是3dmm模型的变种。
Smean:平均人脸形状,从BFM获得
Tmean:平均人脸纹理,从BFM获得
Ibase:PCA降维后的人脸ID,从BFM获得
Ebase:PCA降维后的人脸表情,从 FaceWarehouse 获得
Tbase:PCA降维后的人脸纹理,从BFM获得
网络结构:
整体3D-Face-GCNs由3个模块组成,人脸识别FaceNet模块,特征提取Regressor模块,纹理精修GCN模块。黄色的模块表示预先训练好的,灰色的模块是不可训练的,蓝色的模块是可以训练的。
输入图片为224*224,mesh的顶点一共35709个。
FaceNet模块生成人脸的embedding 向量。
Regressor模块回归3dmm的相关参数,姿态,光照等。一共回归257维向量。其中,3dmm的ID 80维,表情64维,纹理80维,人脸姿态6维,光照27维。
GCN模块由3部分组成。GCN Decoder解码FaceNet的人脸识别特征,并且生成详细的mesh顶点颜色。GCN Refiner精修Regressor模块生成的mesh顶点颜色。 Combine Net负责将GCN Decoder和GCN Refiner的mesh顶点颜色进行整合,输出最终的mesh顶点颜色
判别器将3dmm的结果和3D-Face-GCNs精修的结果进行对比,实现监督训练。
损失函数:
Pixel-wise Loss:
为了排除遮挡,眼镜,脸上覆盖物的影响,首先使用一个训练好的分割模型提取出人脸皮肤区域。然后计算输入图片和带光照渲染的重建后3d人脸图片的2d投影图片之间的距离。
Identity-Preserving Loss:
保证输入图片和渲染图片人的ID属性一样。
Vertex-wise Loss:
保证输入图片和渲染图片的每一个mesh定点的反射率一样。N表示一共的定点数目。
Adversarial Loss:
基于 Wasserstein GAN 的对抗loss
整体loss:
σ2 = 0.2 ,σ3 = 0.001
刚开始训练 σ1 = 0, σ4 = 1,再进行了1个epoch的训练后,σ1 逐渐增大为1,σ4逐渐减少为0。
实验结果: