文章网站:website
选择动机
其实这篇是在参考文献里扒拉出来的,但是让我最高兴的点是,这里面的方法和我自己实验是很相近的,从另一个方面证明自己的实验可行。
解决什么问题
首先,考虑这样一个问题:我们一般认为同一个目标人脸的重建结果应当一致。但是,基于目标人脸的多张不同场景下不同姿势的照片,重建出来的人脸彼此不一致,即具有不稳定性。
作者选择使用深度神经网络基于单张人脸图像,对3DMM中的形状和纹理系数进行回归的方式进行重建,同时解决了训练数据匮乏的问题,以及同一个体重建结果一致的问题。
方法
训练集生成方法
采用的主要方法来自论文 Automated 3D Face Reconstruction from Multiple Images using Quality Measures。具体的操作过程是:先对数据集中500k张图像基于landmarks信息进行3DMM拟合,得到各自的相关参数(主要是形状和纹理,其次还有相机参数和光照);再对属于同一个 object 进行处理,使得同一个 object 的三维结果一致,一般是取平均。
此处要说明的是,此篇论文对三维人脸的表示方式仍然是3DMM思想。即,将三维人脸分解为形状和纹理两部分进行表示。在这里,系数
α
\alpha
α和
β
\beta
β的维度为99维。
将单张拟合结果拓展到多张重建的情况下,将同属于一个 object 的系数向量
γ
i
=
{
α
i
,
β
i
}
,
i
∈
1...
N
\gamma_i = \{ \alpha_i, \beta_i \},i\in 1...N
γi={αi,βi},i∈1...N其中
N
N
N的取值取决于这一 object 有多少张属于他的照片。对这
N
N
N个拟合结果进行 pool 操作,实际上就是按照权重对这
N
N
N个信息进行线性组合,使得这一 object,无论什么场景下的二维图像,都对应一种三维结果
γ
\gamma
γ。其中,权重信息
w
i
w_i
wi由预处理过程中的 landmarks 部分一起给出。
到这里的话,其实发现,作者是自己建立了一个数据集,其中属于同一个人脸的照片所对应的 ground-truth 信息则一样,也就是保证了题目中说到的 discriminative。
Following the process described in Sec. 3.1, each subject in our data set is associated with a number of images and a single, pooled 3DMM.
regress pooled 3DMM
有了数据集之后,要做的事情就是设计网络架构和损失函数,并进行训练,使得设计的架构可以做到【输入同一个人的不同照片,输出一样的三维信息】。
作者选择的 backbone 是 ResNet-101,通过修改最后的全连接层使其得到198维的3DMM特征向量 γ \gamma γ。并在上述建立的数据集上进行训练。
损失函数:3DMM特征向量由形状系数和纹理系数组成,它们本身就服从于多元高斯分布。直接在3DMM向量之间进行标准的欧式距离计算会发现最后得到的结果在人脸细节部分有所缺失(这一点在实验中是可以证实的)。作者设计的损失函数为对称欧式损失,如式子(3)所示。其中 γ \gamma γ为 ground-truth, γ p \gamma_p γp为网络的输出。注意到损失函数中包括了两个部分,分别来看:
- over-estimate:where the estimate is further out from the origin than the target. 通过式子可以发现这是基于 ground-truth 在进行计算
- under-estimate:errors on the side of the 3DMM target closer to the origin. 通过式子可以发现这是基于网络输出 γ p \gamma_p γp在进行计算
上述其实可以理解为希望预测的参数与ground-truth之间的相差尽可能小来设计的损失函数。
作者将得到的3DMM特征向量作为主要信息,应用到人脸识别任务中。可以计算不同向量之间的余弦相似度来判断其相似性。
总结
其实这篇文章的想法还是很好理解的。在文章 4.1. 3D shape reconstruction accuracy 部分,作者也给出了在三维形状和深度图之间的误差计算,来衡量重建结果的准确性(这些损失是在保证人脸是正面的情况下进行计算的)。
这篇文章在很多细节部分,是还蛮值得去细读理解的,会加深对之前知识的理解。