《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network》阅读

Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network

本文提出了一种直观的方法,可以同时完成3D人脸结构的重建和人脸对齐。作者设计了一种称为UV位置图的2D表示方法,它记录了UV空间中完整面部的3D形状。该方法并不依赖任何的先验脸部模型,而是直接重建完整的人脸几何与语义。

Introduction

在早期,2D基准点的人脸检测通常作为其它一些人脸研究任务的基础条件。随着深度学习的发展,一些任务开始用CNN去估计3D可变模型(3DMM)的系数或3D模型变形函数,以此来从2D面部图像恢复相应的3D信息。然而,由于面部模型或模板定义的3D空间的限制,这些方法的性能受到限制。包括透视投影或3D Thin Plate Spline(TPS)转换在内的所需操作也增加了整个过程的复杂性。

最近有一些基于端到端的方法绕开了模型的限制,实现了很好的性能,但却丢失了点的语义。

本文提出了一种称为位置映射回归网络(PRN)的端到端方法,以预测人脸密集对齐并重建3D人脸形状。具体来说,作者设计了一个UV位置图,它是一个2D图像,记录了完整的面部点云的3D坐标,同时保持每个UV位置的语义。然后,文中训练一个带有加权损失的简单编码器 - 解码器网络,该网络更多地关注重要区域,以从单个2D面部图像回归UV位置图。

Proposed Method

3D Face Representation

本文的目标是从单个2D图像中回归3D人脸几何体以及起对齐信息,因此需要一个可以通过深度网络来进行预测的适当表示。为了解决一些以前的工作留下的弊端,本文提出了UV位置图作为具有人脸对齐信息的3D人脸结构呈现,UV位置图记录了UV空间中所有点的3D位置。

与传统UV坐标不同,本文使用UV空间来存储与2D图像相对应的3D人脸模型点的空间位置,其中\(Pos(u_i, v_i)=(x_i, y_i, z_i)\),其中\((u_i, v_i)\)表示的是人脸第i个点的UV坐标,因此\((u_i, v_i)\)\((x_i, y_i)\)表示相同的人脸位置。如下图:

img

因此,该位置图以其语义含义记录了3D人脸的密集点集,通过使用CNN直接从无约束的3D图像中回归位置图,就能够同时获得3D人脸结构以及密集对齐的结果。

由于要直接从2D图像回归3D完整结构,因此端到端训练需要无约束的2D面部图像及其相应的3D形状。300W-LP是一个大型数据集,包含超过60K的无约束图像和3DMM参数,适合形成训练集。

Network Architecture and Loss Function

论文的网络结构通过将输入的RGB图像转为位置图图像,采用了编码器-解码器的结构来学校变换函数。网络的编码器以一个卷积层开始,后面紧跟10个残差块,这样就可以将图像(256x256x3)转变为特征图(8x8x512)。解码器部分使用了17个转置卷积层,kernel大小为4,并使用ReLU层进行激活。架构如下:

img

为了学习网络参数,论文使用了MSE作为损失函数,但这里做了一些改动。因为MSE平等对待所有的点,而图像中人脸的中心区域比其它区域具备更多辨别特征,因此作者使用了权重掩码来构造损失函数。如下图所示,权重掩码记录了图中每个点的权重。按照设计目的,论文将点分为四个类别,分别是68个关键点、眼睛鼻子嘴巴、其它脸部区域和脖子区域,而脖子区域因为容易被毛发或者衣服遮盖,所以分配了0权重。

img

因此损失函数的公式为: \[ Loss = \sum || Pos(u,v) - \overline{Pos}(w,v)|| \cdot W(u,v) \]

Training Details

论文使用了300W-LP的数据集来构造训练集,这是一个包含了不同角度人脸的图像和预测的3DMM系数,从中可以生成3D点云。具体实现上,首先根据ground-truth边框来裁剪图像,然后缩放到256x256大小,然后利用带注释的3DMM参数生成相应的3D位置,并将它们渲染到UV空间中以获得地面实况位置图。

另外,论文还推荐通过在2D图像平面中随机旋转和平移目标面来扰乱训练集。论文使用了Adam优化器,学习率从0.00001开始,并在每5个epochs后衰减一半,batch size设为16。