美文网首页
3dmm近期论文综述

3dmm近期论文综述

作者: 霞客环肥 | 来源:发表于2019-08-06 16:39 被阅读0次

关于3d重建,离不开3dmm或者是3dmm的思想。

3dmm可以分为线性和非线性。

关于如何求解3dmm的形状及纹理参数,又可以分为对2d图片做卷积处理,或是直接在mesh上做处理。

在mesh上做图卷积是最近冒出来的新方向,在解决非欧几里德结构数据上有优越表现。

0. 回顾3dmm

基于单张图像的三维人脸建模较为基础的方法就是99年的这篇《A Morphable Model For The Synthesis Of 3D Faces》

算法的大致思路是利用一个人脸数据库构造一个平均人脸形变模型,在给出新的人脸图像后,将人脸图像与模型进行匹配结合,修改模型相应的参数,将模型进行形变,直到模型与人脸图像的差异减到最小,这时对纹理进行优化调整,即可完成人脸建模。

公式表示:
S_{new} = \overline S + \sum_{i=1}^{m-1}\alpha_is_i + \sum_{i=1}^{m-1}\beta_ie_i,(这里s为shape,e为表情)
纹理也是相似的表达形式。

于是人脸重建问题转为了求 \alpha , \beta系数的问题。

得到一张单张正脸照片,可以从里面得到人脸的68个特征点坐标(X),在BFM模型中有对应的68个特征点(X_{3d}),根据这些信息便可以求出\alpha , \beta系数,将平均脸模型与照片中的脸部进行拟合。

X_{projection} = s*P*R*(S)+t_{2d}

这里的X_{projection}是三维模型到2维平面的点,P = \begin{bmatrix} 1 & 0 & 0\\ 0 & 1 & 0\end{bmatrix}为正交投影矩阵,R为旋转矩阵,t_{2d}是位移矩阵。

那么需要求解的参数包括
s, R, t_{2d},\alpha, \beta

近期关于人脸的3d重建或校正,有很多发展,下面是4篇近期有代表性的papers。

1. 3DDFA

来自Stan li的论文《Face Alignment Across Large Poses: A 3D Solution》(2015)。

这篇论文主要做的是脸部校正face alignment,face aligment需要检测出人脸特征点,是许多人脸应用的关键步骤。

在人脸特征点识别中,一个比较大的问题在于大多数算法,只能应对小角度(小于45°),无法应对大角度的情况。

原因在于:

  1. 现行的基于特征点的模型的前提是:假设所有特征点都是可见的。这并不适用于侧脸。

  2. 比较激烈的表情,正脸和侧脸就会有很大的变化。

  3. 呼应第一点,很多姿态下,脸部的特征点并不都是可见的,标定数据就变得无聊且难。

    已有的数据库,包括AFM, LFPW, HELEN, IBUG只包含可见点。

为了应对这些问题,3DDFA的解决方案是:

  1. 为了解决不可见特征点的问题,作者决定不再拟合2d脸部图片,而是去拟合3d稠密脸部模型。那么遮挡和表情的问题就可以通过3d变换来解决。

  2. 为了解决拟合过程,作者提出基于回归的联级CNN网络。

  3. 为了解决数据的问题,作者构建了数据库,将2d脸部图片与3d模型一一配对。

特别之处:PNCC

设欲求的3dmm的参数为:
p=[s, R, t_{2d},\alpha, \beta]

作者提出了一个PNCC(Projected Normalized Coordinate Code)。


PNCC.png

如图,NCC是归一化到0到1之间的大众脸\overline S,有RGB 3个色道。

而PNCC是在参数p下,新的3d脸部S,通过Z-Buffer渲染法得到的2d图片,公式如下:

image.png

网络架构

image.png

输入:图片+PNCC,图片和PNCC各有rgb3色道,所以输入大小为100 \times 100 \times 6.
输出:234维的列向量。这234分别代表:

234维输出
199 shape parameters
29 expression parameters
6 个位姿参数

2. Nonlinear 3D Morphable Model

来自论文《On Learning 3D Face Morphable Model from In-the-wild Images》
3dmm公式表示为:
S_{new} = \overline S + \sum_{i=1}^{m-1}\alpha_is_i + \sum_{i=1}^{m-1}\beta_ie_i,(这里s为shape,e为表情)

包括3DDFA也都是在线性层面寻找shape参数\alpha

这些线性3dmm有一些不足之处:

  1. 需要高质量的3d扫描。

  2. 需要在严格的条件下获得。无法面对任意从网上抓图即刻复原的要求。

  3. 3dmm的表征能力不单单只被样本限制,还被其自身线性结构限制。

为了应对这些问题,Nonlinear 3dmm的解决方案是:

  1. 学习一个非线性3dmm模型;

  2. shape 和 albedo 都是由2d图片得到;

  3. 前端编码器和后端解码器只依赖2d图片,不使用3d扫描。加上最后一层渲染层,达到了
    end-to-end 。为弱监督学习。

特别之处:如何引入非线性?

观察shape(形状)&albedo(纹理):
S = \overline S + G\alpha A = \overline A + R\beta

可以发现他们形如全连接层的:
Z = WX + b

那么可以把它们看作是单层全连接层,那么自然为了增加模型表现力,浅层网络可以被拓展为深层结构,比如DNN。


image.png

网络结构

image.png

输入:单张图片。

先经过1个Encoder, 得到shape的参数f_S,纹理albedo的参数f_A, 以及相机位姿参数m和光源参数L
I\to m,L,f_S,f_A
再经过2个Decoder, 将shape以及albedo参数,解码为shape和albedo。
D_S:f_S \to S, S\in R^{3n} D_A:f_A\to A,A\in R^{3n}
最后为了使得网络端对端且弱监督,decoders得到的3d模型,需要一步渲染,得到模型的2d图片,与输入图片做对比,作为损失函数。
arg min \sum_{i=1}^K||\hat I_i-I_i||_1

image.png

线性3dmm和非线性3dmm的对比:


image.png

以上这两篇还是在CNN的基础上操作,最近由于Geometric Deeplearning的发展,3dmm本身的样本是mesh,也是看作是图或者流体数据,近期有一些研究将GDL在应用在3dmm上。

3. Convolutional Mesh Autoencoder(CoMA)

来自论文《Generating 3D faces using Convolutional Mesh Autoencoders》(2018)。

这篇论文主要是:

  1. 提出了针对mesh的卷积网络mesh convolutions。

  2. 提出了编码解码结构(encoder-decoder structure),证明mesh convolution是可行的。

特别之处:mesh operators.

数据分为2类:

  1. 欧几里结构数据;

  2. 非欧几里德结构数据。

欧几里德结构数据

image

图片(image),视频(video),语音(voice)。

简单来说:排列整齐

  1. 邻节点清晰;

  2. 邻节点数目确定。

非欧几里德结构数据

(1) 图数据(graphic)

image

(2) 流形数据(manifold)

image

简单来说:排列不整齐

  1. 邻节点难以确定;

  2. 邻节点数目不确定。

这也意味这非欧几里德数据无法用相同的卷积操作来进行。

所以我们希望将非欧几里德结构数据嵌入到欧几里德空间。

对图的拓扑结构进行表示:

image

拉普拉斯矩阵为:
L = D -A
D是度数矩阵;A是邻接矩阵。

对L进行特征值分解:
LU = U\Lambda
U是每列为特征向量的正交矩阵;\Lambda是特征值的对角矩阵。

那么,
L = U\Lambda U^{-1}=U\Lambda U^T
(正交矩阵的转置等于它的逆)。

对于一个信号 x(n维),它的傅里叶变换可以定义为:
\hat x = U^Tx, (x\in R^n)
反傅里叶变换为:
x = U\hat x,(x\in R^n)
那么对于信号x与卷积核y:
x * y= U((U^Tx)\bigodot (U^Ty))
在图上的卷积操作可以定义为用循环切比雪夫多项式,制定一个mesh fileter,kenerl为
g_\theta
那么这个filter可以参数化为:
g_\theta = \sum_{k=0}^{K-1} \theta_kT_k(\tilde \Lambda)
这里\tilde L=2L/\lambda-I_n, 参数\theta \in R^K是切比雪夫参数向量,T_k\in R^{n \times n}是在阶数为k时的切比雪夫多项式,T_k(x) = 2xT_{k-1}(x)-T_{k-2}

谱卷积定义为:
y_i = \sum_{i=1}^{F_{in}}g_{\theta_{i, j}}(L)x_i
x是输入,y是输出,整体的滤波操作y=g(L)x很高效。

上述是mesh的卷积操作,下面是卷积的采样操作。包括上取样和下取样。

整个mesh共由m个顶点,

下取样:
Q_d\in \{0, 1\}^{n \times m}, [n \times m] * [m \times 6]=[n \times 6]
上取样:
Q_d\in \{0, 1\}^{m \times n}

下面的图片可视化了mesh convolutions的作用。


image.png

(a) \to(b): down-sampling;
(b)\to(c):mesh convolution;
(c)\to(d)up-sampling

网络结构

包含一个Encoder和一个Decoder.
Encoder:
从一个R^{5023\times 3}的空间映射到R^8的向量空间

image.png
image.png

可以看出mesh convolution可以充分解决mesh的卷积问题。

4. Dense 3D Face Decoding

来自论文《Dense 3D Face Decoding over 2500FPS: Joint Texture & Shape Convolutional
Mesh Decoders》(2019).

这篇论文主要是将2.Nonlinear 3dmm 和3.Convolutional Mesh Autoencoder结合在了一起。即:

  1. 提出了应用mesh convolutions 的非线性3dmm。

  2. 提出了编码解码结构(encoder-decoder structure),直接从2d脸部图片生成包含形状和纹理的3d重建。

网络结构

image.png

包括4个部分:
1 Image encoder;
2 mesh encoder;
3 shared mesh decoder;
4 differentiable rendering module.

Image encoder:

输入: 112 \times 112 \times 3的单张图片。
经过10个卷积层 输出7 \times 7\times 256
再经过一个全连接层 输出256 \times 1

mesh encoder和shared mesh decoder与Convolutional Mesh Autoencoder(CoMA)相同。


image.png

shared mesh decoder:

image encoder的输出,作为shared mesh decoder输入: 256 \times 1
经过4个mesh convolutions和上采样,得到28431 \times 6(x,y,z,r,g,b)

最后的differentiable rendering module是为了约束代价函数。使生成的3d脸部mesh模型的2d投影图片与输入图片最相似。

值得一提的是,此网络的代价函数除了最后的图片相似性,还约束了中间decoder的过程,公式表达为:
\arg \min L_{rec} + \lambda L_{render}
这里的
L_{rec} = \sum_i||D(E_M(S_i; \theta_{E_M});\theta_D)-S_i||_2+ \sum_i||D(E_M(A_i; \theta_{E_M});\theta_D)-A_i||_1
作为中间decoder的约束;
L_{render}是约束投影图片和输入图片的。
L_{render} = \sum_i||P(D(E_I(I_i;\theta_{E_I});\theta_D);m)-I_i||

5. 总结

关于3d重建,离不开3dmm或者是3dmm的思想。

3dmm可以分为线性和非线性。

关于如何求解3dmm的形状及纹理参数,又可以分为对2d图片做卷积处理,或是直接在mesh上做处理。

在mesh上做图卷积是最近新冒出的新方向,在解决非欧几里德结构数据上有优越表现。

相关文章

网友评论

      本文标题:3dmm近期论文综述

      本文链接:https://www.haomeiwen.com/subject/atdidctx.html