简介:这是一篇17年的CVPR,做者提出使用现有的人脸识别深度神经网络Resnet101来获得一个具备鲁棒性的人脸模型。算法
原文连接:https://www.researchgate.net/publication/311668561_Regressing_Robust_and_Discriminative_3D_Morphable_Models_with_a_very_Deep_Neural_Network网络
摘要ide
主要说了两个部分:第一部分,三维人脸模型尚未普遍应用到人脸识别等领域,主要缘由是同一个对象的不一样照片生成的人脸模型差别较大,也就是不够鲁棒;或者不一样对象生成的人脸模型又太接近,也就是人脸模型太泛化,没有区分度。第二部分,就是做者的主要贡献,其一是解决了训练数据匮乏的问题,其二,用CNN作三维人脸重建,提升了人脸识别的准确率。函数
介绍学习
主要仍是围绕前面提到的两个问题,一是人脸模型没有区分度,二是人脸模型不够鲁棒。优化
如图所示,3DDFA获得的就是一张大众脸,没有特点,做者的方法就比较接近潘大大了。idea
针对上述问题,做者就说了,咱们能解决上面的两个问题。咱们用一个深度卷积神经网络去回归3DMM形状参数(Note:只是形状!),而后就能够获得3维人脸形状了,至于纹理参数是直接从照片中得来的,这不是做者关注的重点。另外,做者还解决了训练数据集不够的问题,用多张照片去生成3维人脸模型,做为Ground Truth,这个后面会提到。.net
相关工做3d
此处略去n个字~,论文里阐述了以往作3维人脸建模的一些方法。一句话总结:俱往矣~。视频
Regressing 3DMM parameters with a CNN
做者认为,以前没有将CNN用在三维人脸建模方面,主要是由于从二维图像重建三维人脸模型,咱们须要回归高维的形状参数,这就要求很是深的网络,而训练很是深的网络又须要大量的训练数据,很尴尬,已知的三维人脸模型的训练集小的可怜。那怎么办呢?追古溯今,做者淘到了一个好方法,利用一个对象的多姿态人脸图片能够生成准确率至关高的三维人脸形状[30],而后把生成的模型做为训练集,ko一个问题;那鲁棒性和区别性的人脸形状怎么解决呢?借鉴二维空间中的深度卷积神经网络模型,并且模型仍是现成的~。
Generating training data
首先,利用中科院的CASIA WebFace dataset,借鉴[30]的方法。500k的单张图片,每个都估计一个3DMM,后续还会继续进行处理。估计方法以下:
利用BFM,使用Vetter等人的三维人脸重建公式:
参数说明请看原文,咱们要求的其实就是α和β。对[8][33]的方法作了一点改变,给定一张图片,用他们的方法能够获得一个近似的形状参数α*和纹理参数β*,这里做者用了CLNF来作人脸检测,获得68我的脸关键点,求得该张图片的置信度(后面会用到),将获得的关键点用来初始化估计人脸模型的姿态,该姿态用六个自由度表示:
而后再优化3DMM的形状,纹理,姿态,光照和颜色,利用[33]的方法解决定位偏差。 一旦损失函数收敛,就获得的形状参数和纹理参数,这就是图像I获得的3DMM估计,虽然这个过程计算量大,但它只是用在生成数据中,不会影响算法效率。
根据最近的工做[30],咱们将每一个对象的多个3DMM(包含形状和纹理)估计进行池化,也就是每一个对象的多张照片对应获得的3DMM估计,进行加权求和,最后一个对象只有一个3DMM估计,池化公式以下:
ωi是前面CLNF求到的置信度。
Learning to regress pooled 3DMM
上一个步骤结束以后,一个对象会有多个不一样角度的照片,但只有一个3DMM估计。如今咱们要用这些数据去学习一个函数,使同一个对象的不一样照片获得的3DMM特征向量是相同的。为此,咱们引入了一个深度神经网络ResNet,修改了它的最后一层全链接层,使输出为198维的3DMM特征向量γ,用池化的3DMM估计做为真实标注,让网络去学习。
The asymmetric Euclidean loss
由构造函数可知,3DMM向量属于多元高斯分布,均值在原点处,表明了均值人脸,就是那我的脸形状和纹理重建公式,所以,在训练期间,若是使用标准的欧拉损失函数来最小化距离,会使获得的人脸模型太泛化,没有区别性。
做者就提出了一个非对称欧拉损失,使模型学习到更多的细节特征,使三维人脸模型具备更多的区别性,公式以下:
效果还不错:
Network hyperparameters
就是介绍一下训练的时候,一些超参数的设置,具体参看原文。下面这个图是对整个流程的总结,分三个部分,每一部分,上面都已经作了解释:
Discussion: Render-free 3DMM estimator
3DMM参数直接经过对输入图像的回归获得,没有进行纹理渲染的优化,咱们主要是获得准确的形状,所以在估计3DMM时也更快。
Parameter based 3D-3D recognition
对获得的3维人脸模型进行评价,看它是不是属于同一个对象。
3D-3D recognition with a single image(???)
用3DMM参数γp做为人脸特征的描述子。由于不一样的关键点经常表示不一样的人脸外观,应用PCA方法,从上面的训练数据集(获得68个关键点的那个)中学习,使估计的参数接近人脸关键点。最后用余弦类似度量判断两我的脸三维模型是否类似。(没搞懂,还望指教。。。)
3D-3D recognition with multiple-image
对于多图像,首先使用上面的等式2对3DMM参数进行池化,此时权重都是相等的。对于每一个对象的视频,咱们会池化获得一个3DMM,而后他们的多张图像,也是池化获得一个3DMM,再对这些3DMM进行一次池化,反正最后一个对象,一个3DMM。
Face alignment
做者说了,咱们就用了二维图像的人脸标准框,其余的特征点检测,人脸对齐都没用。但咱们方法对未对齐的人脸也很鲁棒??,也很省时。。。
Experimental results
自由发挥了,溜了~~~
初来乍到,还望各位大佬多多指教!
参考:
知乎:https://zhuanlan.zhihu.com/p/24316690
[30]M. Piotraschke and V. Blanz. Automated 3D face reconstruction from multiple images using quality measures. In Proc. Conf. Comput. Vision Pattern Recognition, June 2016.
[33]S. Romdhani and T. Vetter. Estimating 3D shape and texture using pixel intensity, edges, specular highlights, texture constraints and a prior. In Proc. Conf. Comput. Vision Pattern Recognition, volume 2, pages 986–993, 2005.
[8]V. Blanz and T. Vetter. Face recognition based on fitting a 3d morphable model. Trans. Pattern Anal. Mach. Intell., 25(9):1063–1074, Sept 2003.