3DMM人脸配准与重建:金牌算法解析

最近在研究人脸重建,参考了github上引用量很高的face3d中的2_3dmm.py,因为要在自己的模型和数据上将3d人脸fit到2d,所以花了一点时间研究了里面fitting相关的代码以及算法。face3d上3d landmark fit 到2d landmark主要是用了gold standard algorithm。这个算法是一系列知识点的集合,里面包含相机矩阵,仿射变换,DLT算法以及优化迭代等。在Multiple View Geometry in Computer Vision中gold standard algorithm用于两幅2d图像的配准以及3d到2d的映射,3dmm将其推广到3d数据和2的数据的配准中。

1.投影变换与仿射变换

3d物体从世界坐标X_i = \left [ X, Y, Z, 1 \right ]^T投影到图像坐标系x_i = \left [ x_i, y_i, \omega _i \right ]^T的映射关系为:

x_i = s\left [ R|-t \right ]X_i

其中,R为旋转矩阵(rotation matrix),t为平移矩阵(translation matrix),s为缩放系数(scale)。

而仿射变换变化包括缩放Scale平移(transform)、旋转(rotate)、反射(reflection, 反转对称)、错切(shear mapping),因此上式可以用仿射变换写为更一般化的形式:

x_i=PX_i

P=\begin{pmatrix} p_{11} & p_{12} & p_{13} &p_{14} \\ p_{21} &p_{22} & p_{23} &p_{24} \\ p_{31} &p_{32} & p_{33} & p_{34} \end{pmatrix}=\begin{pmatrix} P_1^T\\ P_2^T \\ P_3^T \end{pmatrix}

2. DLT 算法(The Direct Linear Transformation (DLT) algorithm)

在project transformation中,通过仿射变换将3d点和与相应的2d点匹配的算法为DLT,即直接线性变换,在3dmm中可以理解为3d landmark与2d landmark的对齐。

具体推导过程:

x_i=PX_i

叉乘的结果为:x_i\times PX_i or \left [ x_i \right ]_\times PX_i=0

由叉乘公式,


我们可得,

x_i\times PX_i =\begin{pmatrix} 0 & -\omega_iX_i^T & y_iX_i^T\\ \omega_iX_i^T & 0 & -x_iX_i^T\\ -y_iX_i^T & x_iX_i^T & 0 \end{pmatrix}\begin{pmatrix} P_1\\ P_2 \\ P_3 \end{pmatrix}=0

由于P中只有两个公式线性无关,因此可以写为,

\begin{pmatrix} 0 & -\omega_iX_i^T & y_iX_i^T\\ \omega_iX_i^T & 0 & -x_iX_i^T\end{pmatrix}\begin{pmatrix} P_1\\ P_2 \\ P_3 \end{pmatrix}=0

且由于P3 = (0, 0, 0, 1),因此上式可进一步写为,

\begin{pmatrix} 0^T & -X_i^T\\ X_i^T & 0^T \end{pmatrix}\begin{pmatrix} P_1\\P_2 \end{pmatrix}+\begin{pmatrix} y_i\\-x_i \end{pmatrix} =0

由于X_i^T是3d点的齐次坐标,有4个元素,最左边整个矩阵大小为2x8(2行,8列),我们用A8表示,上式表示为,

A_8P_8=b

通过伪逆矩阵,可以初步计算仿射变换矩阵,A_8^+A_8的伪逆矩阵,

P_8=A_8^+b

至此,DLT算法介绍完毕,通过DLT我们可以初始化3d到2d的仿射变换矩阵P。

3. Gold standard algorithm在3dmm人脸重建中的应用

与DLT相比较,gold standard algorithm是一种将数据标准化,并且迭代的优化算法。如果不改变shape和expression参数,可以理解为3d人脸模型与2d人脸的对齐。如果优化过程中加入shape和expression,改算法可用于人脸重建。

3.1 数据标准化

(1)首先,数据标准化是将2d 或3d的数据中心centroid移动至坐标原点;

(2)然后,将数据点到原点的平均距离标准化,其中2d点到原点的距离标准化为\sqrt{2},3d点到原点的距离标准化为\sqrt{3}

这个处理在gold standard algorithm甚至在DLT中都是必须的!

3.2 Loss function

gold standard algorithm是一个迭代的算法,它的目标是最小化预测点与实际点之间的几何距离。


距离公式:\min_{P}\sum_{i}^{}d\left ( \overline{x}_i, \overline{P}\; \overline{X_i} \right )^2其中上划线代表经过数据标准化处理的量。

Loss function有多种距离计算公式可以选择,在此不例举。


3.3 Gold standard algorithm

目标:选取6个以上的点对,得到P的最大似然估计。(计算初始化的shape,expression参数,如全0或随机数)

算法:

1) 初始化阶段(线性处理)

   1.数据标准化处理(normalization)

\overline{X}_i = UX_i, \overline{x}_i = Tx_i

      使用3.1的算法,其中U, T分别为对3d点(3d landmark points)和2d(2d landmark points)点的进行normalizarion的矩阵,改矩阵为similarity transformation matrix,包含缩放和平移。

   2.DLT算法(上文)

2)迭代优化P矩阵

将P矩阵,3dmm模型,(模型中的shape参数,expression参数(如果有))带入计算新的3d landmark坐标,并计算3d landmark通过P矩阵变换后与2d人脸landmark之间的距离,

直到距离函数\min_{P}\sum_{i}^{}d\left ( \overline{x}_i, \overline{P}\; \overline{X_i} \right )^2到指定误差或指定迭代步数。

每次更新P, (shape parameters, expression parameters参数)。

3)Denormalize P matrix

P = T^{-1}\overline{P}U

还原P

在人脸任务中,还需将P还原出s, R, t矩阵。

output:

s, R, t, (shape 参数, expression参数(optional))



免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空