Towards High-Fidelity 3D Face Reconstruction from In-the-Wild Images Using GCN

目录

  • 1. 简介
    • 1.1 motivation
    • 1.2 本文关键点
    • 1.3 本文参考使用的相关技术
  • 2. 本文方法
    • 2.1 流程
    • 2.2 损失函数

1. 简介

文章全称《Towards High-Fidelity 3D Face Reconstruction from In-the-Wild Images Using Graph Convolutional Networks》出自CVPR2020,将图卷积网络应用在了三维人脸重建的纹理优化上。

1.1 motivation

  • 一般的3DMM方法生成的面部纹理(也就是让面部纹理由3DMM系数控制)缺乏保真度、精确性(fidelity)
  • 而如果是想生成高保真的人脸纹理图,那得需要高分辨率的人脸纹理图数据,而这样的数据却是难以准备的,比如2019年的GANFit方法,第一次使用了GAN网络(具体是PGGAN)去生成高保真的人脸纹理图,训练好GAN之后,通过可微渲染去优化latent code,让GAN网络生成我们需要的三维重建的人脸纹理图,虽然是个开创性的方法,缺点便是训练GAN网络需要大量的人脸纹理图,而这些图像获取是很困难的。

1.2 本文关键点

  1. 提出了一个由粗到细的框架,重建高保真的面部纹理图,解决了之前方法的需要大量纹理图数据的问题,也就是说不用获取大量的UV纹理图就能重建高质量的纹理
  2. 第一次将图卷积网络(GCN)应用在高保真面部纹理重建上,取得较好的效果

1.3 本文参考使用的相关技术

  • 可微分渲染: 《Unsupervised training for 3d morphable model regression》CVPR2018,也就是开源的tf-mesh-renderer:http://github.com/google/tf_mesh_renderer
  • 3DMM系数预测:《Accurate 3d face reconstruction with weakly-supervised learning: From single image to image set》CVPR2019 Workshop,可以同时预测表情与形状系数,代码已开源:https://github.com/Microsoft/Deep3DFaceReconstruction
  • 图卷积网络:《Generating 3d faces using convolutional mesh autoencoders》ECCV2018,用图卷积进行三维人脸重建,代码已开源:http://coma.is.tue.mpg.de/.
  • 人脸面部遮挡剔除:《Face-to-parameter translation for game character auto-creation》ICCV2019
  • 对抗训练方式:《Improved training of wasserstein gans》NIPS2017,代码已开源:https://github.com/igul222/improved_wga
  • 面部特征提取与人脸身份鉴别:FaceNet CVPR2015,已开源

2. 本文方法

2.1 流程

Towards High-Fidelity 3D Face Reconstruction from In-the-Wild Images Using GCN_第1张图片
核心方法看流程图即可大致理解:

  1. 先用开源的3DMM方法重建好三维人脸形状和纹理,后面再着重将纹理给优化好
  2. 用FaceNet提取出原图片的人脸特征,提取出的特征将来有两个作用:衡量身份损失;把特征加在图卷积网络,用于优化纹理
  3. 如绿色框所示,将3DMM建模的纹理与FaceNet提取出的人脸特征借助图卷积网络进行结合,得到精细的纹理,这里注意:本文没有使用纹理图的方式进行人脸纹理的优化,而是在每个顶点对应颜色层级上进行优化!
  4. 整个流程下来,比较原图与渲染图的差异进行优化,具体优化的部分就是那个图卷积网络

2.2 损失函数

设计了四个损失函数

  1. Pixel-wise Loss
    pix
    渲染图像与输入图像的像素差异自然而然应当成为损失函数,但是人脸的有些部分是被遮挡的!所以比较的应该是那些未被遮挡部分。
  2. Identity-Preserving Loss
    FaceNet
    从更高层次来看,渲染图像与输入图像的人应该是同一个身份的,这时就轮到FaceNet发挥作用了,图中的式子类似于比较两个向量的夹角,夹角越小的话向量越接近,自然就意味着身份越相同了
  3. Vertex-wise Loss
    vert
    第一个损失比较的是未被遮挡的地方,没有指导GCN该如何生成遮挡地方的纹理,这里就让它尽量去生成和原先一样的纹理(也就是3DMM重建后在本该被遮挡地方的纹理)
  4. Adversarial Loss
    adv
    应该是类似与GAN的鉴别器,判断渲染图像与生成图像是否相同,本文这里是参考了WasserGAN

你可能感兴趣的:(#,单视图三维人脸重建,计算机视觉,深度学习,人工智能)