论文:《A Morphable Model for the Synthesis of 3D Faces》
选择动机
在接到这个课题的时候,先去看了相关硕博论文里的研究现状部分,发现这一篇论文的方法会被多次提及,所以选择这篇论文作为这一课题的第一篇文献。(目前读了十几篇相关文献,最近在回顾总结,所以CSDN上的文献顺序和我的阅读顺序不一致)
- 做什么?——基于单张(或多张)人脸图像进行人脸的三维重建
- 这篇论文的目标:modeling textured 3D faces 带纹理的三维人脸建模
- 怎么做?(如下图)分为两个部分
- 基于3D人脸扫描数据集建立变形模型
- 输入一张2D人脸图像,结合变形模型进行人脸的三维重建。通过调整相关形状和纹理参数进行属性编辑应用。
数据集
使用激光扫描仪对200个人(100男,100女)的头部进行扫描。扫描结果以**柱坐标(cylindrical)**进行表示。除此之外,所有的人脸没有化妆,没有饰品,不带头发,无表情。
Morphable 3D Face Model
模型建立及基本思想
假设数据集中所有人脸均对齐(使用光流法optic flow进行对齐)。
使用
n
n
n个顶点的三维坐标对三维人脸的形状进行表示:
S
=
(
X
1
,
Y
1
,
Z
1
,
X
2
,
.
.
.
,
Y
n
,
Z
n
)
T
∈
R
3
n
S={(X_1,Y_1,Z_1,X_2,...,Y_n,Z_n)}^T \in R^{3n}
S=(X1,Y1,Z1,X2,...,Yn,Zn)T∈R3n,
使用
n
n
n个顶点处的RGB值对三维人脸的纹理进行表示:
T
=
(
R
1
,
G
1
,
B
1
,
R
2
,
.
.
.
,
G
n
,
B
n
)
T
∈
R
3
n
T={(R_1,G_1,B_1,R_2,...,G_n,B_n)}^T \in R^{3n}
T=(R1,G1,B1,R2,...,Gn,Bn)T∈R3n。
那么,基于
m
m
m个人脸样例构建3DMM,且每一个人脸样例均由形状向量
S
i
S_i
Si和纹理向量
T
i
T_i
Ti表示。新的人脸形状
S
m
o
d
e
l
S_{model}
Smodel和纹理
T
m
o
d
e
l
T_{model}
Tmodel可基于
m
m
m个样例线性表示为:
S
m
o
d
e
l
=
∑
i
=
1
m
a
i
S
i
,
T
m
o
d
e
l
=
∑
i
=
1
m
b
i
T
i
,
∑
i
=
1
m
a
i
=
∑
i
=
1
m
b
i
=
1
S_{model}=\sum_{i=1}^m a_i S_i,\quad T_{model}=\sum_{i=1}^m b_i T_i,\quad \sum_{i=1}^m a_i = \sum_{i=1}^m b_i =1
Smodel=i=1∑maiSi,Tmodel=i=1∑mbiTi,i=1∑mai=i=1∑mbi=1那么变形模型的定义:根据系数
a
⃗
=
(
a
1
,
a
2
,
.
.
.
,
a
m
)
T
\vec a={(a_1,a_2,...,a_m)}^T
a=(a1,a2,...,am)T和
b
⃗
=
(
b
1
,
b
2
,
.
.
.
,
b
m
)
T
\vec b={(b_1,b_2,...,b_m)}^T
b=(b1,b2,...,bm)T产生的一系列人脸
(
S
m
o
d
e
l
(
a
⃗
)
,
T
m
o
d
e
l
(
b
⃗
)
)
(S_{model}(\vec a),T_{model}(\vec b))
(Smodel(a),Tmodel(b))。不同的系数
a
⃗
\vec a
a和
b
⃗
\vec b
b会产生不同的形状和纹理。
为了保证产生的结果是一张可信的人脸,需要基于样例人脸集估计参数的概率分布。
具体做法是将多元高斯分布(multivariate normal distribution)拟合到包含200个人脸扫描结果的数据集上。其中,形状均值为
S
ˉ
\bar S
Sˉ,纹理均值为
T
ˉ
\bar T
Tˉ,形状协方差为
C
S
C_S
CS,纹理协方差为
C
T
C_T
CT。协方差矩阵基于
Δ
S
\Delta S
ΔS和
Δ
T
\Delta T
ΔT进行计算,且有
Δ
S
i
=
S
i
−
S
ˉ
\Delta S_i =S_i-\bar S
ΔSi=Si−Sˉ和
Δ
T
i
=
T
i
−
T
ˉ
\Delta T_i =T_i-\bar T
ΔTi=Ti−Tˉ。
引入PCA(Principal Component Analysis,主成分分析)思想,基于协方差矩阵计算得到特征值
σ
2
\sigma^2
σ2和特征向量
s
,
t
s,t
s,t。根据特征值降序选择
m
−
1
m-1
m−1个特征向量,基于平均形状或纹理,对新的人脸形状或纹理进行表示。
S
m
o
d
e
l
=
S
ˉ
+
∑
i
=
1
m
−
1
α
i
s
i
,
T
m
o
d
e
l
=
T
ˉ
+
∑
i
=
1
m
−
1
β
i
t
i
S_{model}=\bar S+\sum_{i=1}^{m-1} \alpha_i s_i,\quad T_{model}=\bar T+\sum_{i=1}^{m-1} \beta_i t_i
Smodel=Sˉ+i=1∑m−1αisi,Tmodel=Tˉ+i=1∑m−1βiti系数
α
⃗
,
β
⃗
\vec {\alpha},\vec{\beta}
α,β的概率分布为:
p
(
α
⃗
)
∼
e
x
p
[
−
1
2
∑
i
=
1
m
−
1
(
α
i
/
σ
s
,
i
)
2
]
,
p
(
β
⃗
)
∼
e
x
p
[
−
1
2
∑
i
=
1
m
−
1
(
β
i
/
σ
t
,
i
)
2
]
p(\vec{\alpha})\sim exp[-\frac{1}{2} \sum_{i=1}^{m-1}{(\alpha_i / \sigma_{s,i})}^2],\quad p(\vec{\beta})\sim exp[-\frac{1}{2} \sum_{i=1}^{m-1}{(\beta_i / \sigma_{t,i})}^2]
p(α)∼exp[−21i=1∑m−1(αi/σs,i)2],p(β)∼exp[−21i=1∑m−1(βi/σt,i)2]
分区变形模型
将人脸分成4个独立的子区域进行变形操作:眼睛、鼻子、嘴巴、剩下区域。分别进行变形操作,再整合到一起。
人脸属性
变形模型的系数与人脸属性之间不是明确的对应关系。加入手动标记的人脸属性 μ i \mu_i μi,并映射到变形模型的参数空间。 Δ S = ∑ i = 1 m μ i ( S i − S ˉ ) , Δ T = ∑ i = 1 m μ i ( T i − T ˉ ) \Delta S=\sum_{i=1}^m \mu_i (S_i - \bar S),\quad \Delta T=\sum_{i=1}^m \mu_i (T_i - \bar T) ΔS=i=1∑mμi(Si−Sˉ),ΔT=i=1∑mμi(Ti−Tˉ)继而去影响后续协方差矩阵、特征值、特征向量的计算。
模型与图片的匹配
单图像
上图展示的是模型与单张人脸图像的匹配过程。采用分析合成(analysis-by-synthesis)的思想,先基于目前的模型参数对人脸进行初步的三维重建,映射到二维图像,与输入图像进行对比,基于残差信息更新参数,使得产生的二维图像与输入图像尽可能相似。基于最终的结果可以对人脸进行一些属性编辑的操作。
在世界坐标与图像坐标之间进行投影计算时,引入渲染参数
ρ
⃗
\vec \rho
ρ,包含相机位姿、缩放因子、旋转矩阵、平移向量、光照因素等。
基于参数
(
α
⃗
,
β
⃗
,
ρ
⃗
)
(\vec \alpha,\vec \beta,\vec \rho)
(α,β,ρ),模型最终得到的2D图像可以表示为
I
m
o
d
e
l
(
x
,
y
)
=
(
I
r
,
m
o
d
(
x
,
y
)
,
I
g
,
m
o
d
(
x
,
y
)
,
I
b
,
m
o
d
(
x
,
y
)
)
T
I_{model}(x,y)={(I_{r,mod}(x,y),I_{g,mod}(x,y),I_{b,mod}(x,y))}^T
Imodel(x,y)=(Ir,mod(x,y),Ig,mod(x,y),Ib,mod(x,y))T。希望重建的2D图像与输入的2D人脸图像尽可能相似,通过计算二者之间的欧氏距离,并基于此更新重建过程中的参数。
E
I
=
∑
x
,
y
∥
I
i
n
p
u
t
(
x
,
y
)
−
I
m
o
d
e
l
(
x
,
y
)
∥
2
E_I=\sum_{x,y} {\lVert I_{input}(x,y) - I_{model}(x,y) \rVert}^2
EI=x,y∑∥Iinput(x,y)−Imodel(x,y)∥2以贝叶斯决策论的思想来看,寻找一组参数
(
α
⃗
,
β
⃗
,
ρ
⃗
)
(\vec \alpha,\vec \beta,\vec \rho)
(α,β,ρ),使得后验概率
p
(
I
i
n
p
u
t
∣
(
α
⃗
,
β
⃗
,
ρ
⃗
)
)
p(I_{input}|(\vec \alpha,\vec \beta,\vec \rho))
p(Iinput∣(α,β,ρ))越大越好。假设输入图像
I
i
n
p
u
t
I_{input}
Iinput带有标准方差为
σ
N
\sigma_N
σN的高斯噪声,则
p
(
I
i
n
p
u
t
∣
(
α
⃗
,
β
⃗
,
ρ
⃗
)
)
∼
e
x
p
[
−
1
2
σ
N
2
E
I
]
p(I_{input}|(\vec \alpha,\vec \beta,\vec \rho))\sim exp[\frac{-1}{2{\sigma_N}^2}E_I]
p(Iinput∣(α,β,ρ))∼exp[2σN2−1EI]。最大化后验概率等价于使下面的代价函数最小化。
E
=
1
σ
N
2
E
I
+
∑
j
=
1
m
−
1
α
j
2
σ
S
,
j
2
+
∑
j
=
1
m
−
1
β
j
2
σ
T
,
j
2
+
∑
j
(
ρ
j
−
ρ
ˉ
j
)
2
σ
ρ
,
j
2
E=\frac{1}{\sigma_N^2}E_I+\sum_{j=1}^{m-1}\frac{\alpha_j^2}{\sigma_{S,j}^2}+\sum_{j=1}^{m-1}\frac{\beta_j^2}{\sigma_{T,j}^2}+\sum_j \frac{(\rho_j - \bar \rho_j)^2}{\sigma_{\rho,j}^2}
E=σN21EI+j=1∑m−1σS,j2αj2+j=1∑m−1σT,j2βj2+j∑σρ,j2(ρj−ρˉj)2
参数更新方式
α
j
→
α
j
−
λ
j
∂
E
∂
α
j
\alpha_j \rightarrow \alpha_j - \lambda_j \frac{\partial E}{\partial \alpha_j}
αj→αj−λj∂αj∂E
多图像
输入的是同一个人的不同照片,共享相同的形状和纹理参数,不同的是渲染参数。
E
I
E_I
EI则替换为每一张输入图像与模型结果的欧氏距离的总和。
结果展示
上图展示的是变形模型与单张人脸图像进行匹配的结果。图1是输入的单张人脸图像,图2是3D形状,图4是带纹理的3D形状。图3、图5、图6、图7则是进行相关属性变化的结果。
总结
这篇论文是人脸三维重建任务中较为经典的一个解决方案,后续还有很多基于3DMM拓展的模型和数据集,使用也比较广泛。首先是引入PCA思想对三维人脸形状和纹理的线性表达和变形,其次是分析合成思想进行图像与模型的匹配以及参数更新。但这个模型的不足之处也显而易见:参数过多(不适用于实时性要求较高的任务),数据集的获取难度较大等。