深入浅出3DMM:构建人脸模型的核心技术揭秘

本文基于LSFM[1-3],对于如何从原始扫描获得的3D人脸数据中获得3DMM的基底做一个介绍。如有错误,欢迎评论指正。


一.算法流程

构造3DMM核心有两步:1)建立3D人脸之间的密集对应关系,2)PCA统计分析。

图1.算法流程

二.具体步骤

1. 3D人脸关键点检测

检测原始3D扫描人脸上的3D关键点,具体步骤如下:

  • 1)设置虚拟相机,从原始扫描3D人脸合成不同角度下的图像;
  • 2)采用传统的AAM[6]方法从合成图片中检测2D人脸关键点;
  • 3)映射回原始3D扫描人脸上得到3D人脸关键点。

2.密集对应建立-NCIP

将所有原始3D扫描人脸对齐到一个模板人脸上(注:LSFM使用的是BFM同款模板),具体步骤如下:

  • 1)利用上述检测得到的3D人脸关键点,对原始扫描人脸和模板人脸做初始配准;
  • 2)采用NICP[7]做精细配准,目标函数如下:

式1

式2

式3

式4

式1表示该目标函数,由distance term,stiffness term和landmark term三项组成;

 式2为distance term, X i X_i Xi 为3*4纬度的变换矩阵, v i = [ x , y , z , 1 ] T v_i=[x,y,z,1]^T vi=[x,y,z,1]T 为模板顶点, T T T为匹配的距离 v i v_i vi最近的目标点, w i w_i wi为该匹配点对的权重;

 式3为stiffness term, ∣ ∣ ∗ ∣ ∣ F ||*||_F ∣∣F为Frobenius范数, G : = d i a g ( 1 , 1 , 1 , γ ) G:=diag(1,1,1,\gamma) G:=diag(1,1,1,γ)为权重矩阵, γ \gamma γ为设定的控制变换矩阵旋转和扭曲部分和平移部分的系数, ε \varepsilon ε为有邻接关系的模板顶点的集合;

 式4为landmark term, L L L为匹配的模型关键点和目标点云关键点的集合。

注:

  • 1)如何求解就不介绍了,该目标函数有解析解,具体可参考原始论文[7],网上也有一些开源代码;

  • 2)我们常用的BFM模型,最早是采用UV展开建立密集对应的,简单来说就是将3D人脸进行圆柱展开,然后将问题转化为在2D图像上做对齐的问题,可参考[5]。

    图2.构建密集对应的两种方法:展开法和配准法

3.统计分析-PCA

PCA是一种数据降维算法,算法理解可参考[8],具体步骤如下:

假设数据为 X X X ( n ∗ m n*m nm n n n为维度, m m m为条目数,在本例中即每列对应一个人脸的顶点坐标集合),具体步骤如下:

  • 1)去均值,即将 X X X 每行的元素减去该行的均值;
  • 2)计算协方差矩阵 C = 1 m X X T C=\frac{1}{m}XX^T C=m1XXT n ∗ n n*n nn );
  • 3)求解 的特征值和特征向量(每个特征向量为 维,每个特征值为1维)
  • 4)按特征值大小对特征向量排序,取前 维,即为构成的一组新的基底。

4.错误剔除

由于错误的3D关键点标注或者NICP未收敛,部分错误的密集对应会对统计分析有一定的影响,因此需要进行剔除这部分错误的人脸,具体步骤如下:

  • 1)对于当前构建好的PCA基底,拟合经过NICP配准后的原始扫描三维人脸得到形状参数 ;
  • 2)计算如下所示的形状参数 的加权和,该加权和:

式5

式5中, λ d \lambda_d λd α i \alpha_i αi对应的特征值。

  • 3) 根据 的分布设定得到一个阈值 θ f \theta_f θf,对于 F ( α ) > θ f F(\alpha)>\theta_f F(α)>θf 认为是异常点需要剔除,阈值的选取参考论文描述:
    We classify as outliers all shape vectors α with a squared norm F(α) above a threshold θ f . This threshold is selected so that F(α) is expected to be less than θ f with a very high probability p f (e.g. 99%), under the assumed Gaussian distribution. Consequently, θ f is specified by the evaluation of the chi-square inverse cumulative distribution function at the probability p f . Note that the set of shape vectors α with F(α) < θ f corresponds to a hyper-ellipse in the d-dimensional space of shape parameters. Following the aforementioned procedure, we find that less than 1% of the training meshes are classified as outliers.
  • 4)剔除错误的人脸后,重新执行上述统计分析步骤,得到最终的3DMM基底。

三.实现

搜索了下构建3DMM的开源实现,除LSFM[3],我们常用的BFM后来更新了一版新模型,采用了一套新的流程,代码是用scala写的[4],感兴趣的可以去看看。

四.参考

[1]A 3D Morphable Model learnt from 10,000 faces

[2]Large Scale 3D Morphable Models

[3]GitHub - menpo/lsfm: Large Scale Facial Model (LSFM) - an automatic pipeline for constructing 3D Morphable Models from large collections of facial meshes

[4]https://github.com/unibas-gravis/basel-face-pipeline

[5]基于3DMM模型的三维人脸建模方法的实现

[6]HOG active appearance models

[7]Optimal Step Nonrigid ICP Algorithms for Surface Registration

[8]CodingLabs - PCA的数学原理

最后,创作不易,如果对您有一点点帮助,希望可以给笔者点点关注、给个免费的赞or收藏or小心心,谢谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值