文章目录
摘要
人脸对齐是CV领域的一个重要研究课题,它将人脸模型与图像进行匹配,提取人脸像素的语义信息。然而,大多数算法都是为中小姿态(45°以下)的人脸设计的,缺乏将大的姿势的人脸(姿态高达90◦的人脸)对齐的能力。
这方面的挑战有三个方面。首先, 常用的基于地标的人脸模型假设所有的landmark都是可见的,因此不适合于剖面视图.
其次,在大姿态下,从正面到侧面,脸部的外观变化更大。
第三,在大的姿态下标记地标是非常具有挑战性的,因为不可见的地标必须被猜测才能显示。
本文提出了一种新的三维稠密人脸对齐框架(3DDFA)来解决这三个问题,该框架通过卷积神经网络(CNN)将稠密的三维人脸模型拟合到图像上。除此之外,还提出了一种在剖面视图中合成大规模训练样本的方法,以解决第三个数据标记问题。在具有挑战性的AFLW数据库上的实验表明,我们的方法比最新的方法有了显著的改进。
主要贡献
- 我们建议将三维密集的人脸模型而不是稀疏的地标形状模型拟合到图像上。这样一些遮挡就可以解决了
- 使用CNN和PNCC(Projected Normalized Coordinate Code) 来fit 3d model, 以及一个特别的损失函数Weighted Parameter Distance Cost(WPDC)
- 为了实现 3DDFA 的培训,我们构建了一个包含成对2D 人脸图像和 3D 人脸模型的面部数据库。
方法
3d 形变模型
A
i
d
A_{id}
Aid和
A
e
x
p
A_{exp}
Aexp分别来自 BFM 和 Face-Warehouse
- 下面是把3d人脸投影到图片屏幕的公式, 用了Weak Perspective Projection, 弱透视投影像是正交投影的缩放
f f f 是scale, P r P_r Pr 是正交投影矩阵 [ 1 0 0 0 1 0 ] \left[ \begin{matrix} 1 & 0 & 0 \\ 0 & 1 & 0 \end{matrix} \right] [100100], R是旋转矩阵, 有三个欧拉角表示, t 2 d t_{2d} t2d是位置矢量
所以总的模型参数是:
p = [ f , p i t c h , y a w , r o l l , t 2 d , α i d , α e x p ] T p =[f, pitch, yaw, roll, t_{2d},\alpha_{id},\alpha_{exp}]^T p=[f,pitch,yaw,roll,t2d,αid,αexp]T
网络结构
3d对齐的目的是从单张人脸
I
I
I 中估计上面的参数
p
p
p, 在迭代
k
(
k
=
0
,
1
,
.
.
.
,
K
)
k(k = 0, 1, ...,K)
k(k=0,1,...,K) 中, 给定初始参数
p
k
p^k
pk, 构建一个特殊的特征
P
N
C
C
PNCC
PNCC和
p
k
p^k
pk一起预测参数更新
Δ
p
k
\Delta p^k
Δpk
然后使用
p
k
+
1
=
p
k
+
Δ
p
k
p^{k+1} = p^k +\Delta p^k
pk+1=pk+Δpk 变为网络
N
e
t
k
+
1
Net^{k+1}
Netk+1 的输入, 和
N
e
t
k
Net^k
Netk 的结构相同
输入是1001006, 包含一个级联的3通道的图片和3通道的PNCC图, 网络有4个CNN层, 三个Pooling层, 两个全连接层, 前两个卷积层共享权重以提取低级特征。最后两个卷积层不共享权重以提取位置敏感特征,进一步回归到 256 维特征向量。
输出是一个234维度的参数更新, 包含6个维度的姿态参数
[
f
,
p
i
t
c
h
,
y
a
w
,
r
o
l
l
,
t
2
d
x
,
t
2
d
y
]
[f, pitch, yaw, roll, t_{2dx}, t_{2dy}]
[f,pitch,yaw,roll,t2dx,t2dy] 和199维的形状参数
α
i
d
\alpha_{id}
αid 以及一个29维的表情参数
α
e
x
p
\alpha_{exp}
αexp
特征设计(感觉挺重要)
输入的特征应该满足以下三个条件:
1)可卷积性(应该是一个平滑的2D map)
2)反馈性(要求输入特性依赖于CNN输出)
3)收敛性(要求拟合完成时,输入具有判别性)
归一化投影坐标编码
为了收敛的更好使用了归一化
Normalized Coordinate Code (NCC), 这是归一化的形状坐标(x, y, z)
S
ˉ
\bar S
Sˉ 是3dMM平均脸 , 除了坐标归一化还有纹理也就是这里的颜色归一化
如果使用3DMM模型将图像往X-Y平面进行投影,并使用Z-Buffer算法进行渲染,NCC作为Z-buffer算法的color-map,便可以得到PNCC图。参数是p
- 渲染出的PNCC和图片级联输入到网络中, 这里应该是作者建立了图片和3D model的成对数据集, 所以才能进行训练.
回到上面讲的设计特征, PNCC满足反馈性, 因为公式中 p 是CNN的输出, NCC作为一个常量, 其次PNCC提供了 the 2D locations of visible 3D vertexes on the image plane , 当CNN检测到each NCC superposes its corresponding image pattern during testing, the cascade will converge
损失函数
由于参数范围差异很大,我们在训练前进行 z-score normalization。
Parameter Distance Cost (PDC)
以第一次迭代举例, CNN的目的是预测参数
p
p
p的更新
Δ
p
\Delta p
Δp 加到初始参数
p
0
p^0
p0 上使得它和 ground truth
p
g
p^g
pg 更接近.
当然这样有点问题, 因为不同的参数带来的对齐的影响是不一样的, 比如角度偏差 比形状PCA 系数偏差有更大的对齐误差, 然而PDC平等的优化它们.
顶点距离成本 Vertex Distance Cost(VDC)
为了使3DMM更好的形变到3D人脸 model真值,通过最小化拟合的和真实的3D人脸之间的顶点距离误差来优化
V
V
V是面部构造和弱透视投影
VDC表现出病态曲率curvature (Deep learning via Hessian-free optimization)。姿势参数的方向 总是表现出比PCA系数高得多的曲率。
用梯度下降来优化VDC,由于 "之字形 "的问题,收敛速度非常慢。二阶优化是首选,但它们expensive and hard to be implemented on GPU
加权参数距离Weighted Parameter Distance Cost (WPDC)
其中W是重要性矩阵,其对角线是每个参数的权重,
p
(
i
)
d
p^d_{(i)}
p(i)d是第i个劣化(i-deteriorated)的参数
其第
i
i
i 部分来自预测参数(p0+p),其他部分来自于地面真实参数
p
g
p^g
pg,
∣
∣
V
(
p
(
i
)
d
)
−
V
(
p
g
)
∣
∣
||V(p^d_{(i)})-V(p^g)||
∣∣V(p(i)d)−V(pg)∣∣ 指对第i个模型参数的预测失误所带来的对齐错误(alignment error)。这表明了它的重要性。
CNN首先专注于参数较大的参数,如比例、旋转和平移。当
p
(
i
)
d
)
p^d_{(i)})
p(i)d) 更接近
p
g
p^g
pg 时,这些参数的权重开始缩小,CNN将优化这些参数。这些参数的权重开始缩减,CNN将优化不太重要的参数,但同时也会保持高优先级的参数足够好。与VDC相比,WPDC弥补了病态曲率的问题 而且没有V(.)的导数,更容易实现。