bfm 人脸模型

bfm 人脸模型

3dmm 的公式:
S = S ‾ + A i d α i d + A exp ⁡ α exp ⁡ \mathbf{S}=\overline{\mathbf{S}}+\mathbf{A}_{i d} \boldsymbol{\alpha}_{i d}+\mathbf{A}_{\exp } \boldsymbol{\alpha}_{\exp } S=S+Aidαid+Aexpαexp
其中 A i d \mathbf{A}_{i d} Aid 为shape base.
A exp ⁡ \mathbf{A}_{\exp } Aexp为表情参数, bfm模型只提供了形状和纹理,
s ( α ) = μ s + U s diag ⁡ ( σ s ) α t ( β ) = μ t + U t diag ⁡ ( σ t ) β \begin{array}{l} \mathbf{s}(\alpha)=\boldsymbol{\mu}_{s}+\mathbf{U}_{s} \operatorname{diag}\left(\boldsymbol{\sigma}_{s}\right) \alpha \\ \mathbf{t}(\beta)=\boldsymbol{\mu}_{t}+\mathbf{U}_{t} \operatorname{diag}\left(\boldsymbol{\sigma}_{t}\right) \beta \end{array} s(α)=μs+Usdiag(σs)αt(β)=μt+Utdiag(σt)β
其中
s = ( x 1 , y 1 , z 1 , … x m , y m , z m ) T t = ( r 1 , g 1 , b 1 , … r m , g m , b m ) T \begin{array}{l} \mathbf{s}=\left(x_{1}, y_{1}, z_{1}, \ldots x_{m}, y_{m}, z_{m}\right)^{T} \\ \mathbf{t}=\left(r_{1}, g_{1}, b_{1}, \ldots r_{m}, g_{m}, b_{m}\right)^{T} \end{array} s=(x1,y1,z1,xm,ym,zm)Tt=(r1,g1,b1,rm,gm,bm)T
分别为坐标和颜色向量.
可以看出BFM还缺少表情向量, 所以要实现一个完整的3dmm还需要从其他项目中copy表情向量. 比如项目3dmm-fitting-pytorch.
这里使用的是Exp_Pca.bin文件里的表情系数, 这个表情系数是从 Facewarehouse 数据集中提取的,为29维,形状参数为199维.
另外, 针对bfm模型要注意下面几点:

  1. 标准的bfm模型包含顶点个数为53490个.
  2. 表情系数(来自Exp_Pca.bin)只针对53215个顶点有参数
  3. 不含脖子的模型顶点个数为35709个.

3ddfa中直接将1,2取交集,最终生成53215个有表情的人脸. 3dmm-fitting-pytorch项目中则通过BFM/BFM_front_idx.mat来获取人脸顶点, 共35709个.
人头坐标系:
在这里插入图片描述

不同论文的NME, 分别在AFLW2000-3D(68点)和AFLW(21点)数据集的结果:
1.Face Alignment Across Large Poses: A 3D Solution [4.94, 5.32]
2.Face Alignment in Full Pose Range:A 3D Total Solution [3.79, 4.55]
3.Towards Fast, Accurate and Stable 3D Dense Face Alignment [3.5, 4.3]

论文1的结构:

在这里插入图片描述
人脸三维顶点的构建:
在这里插入图片描述
f:缩放系数
Pr:正交投影矩阵在这里插入图片描述
所以网络要学习的参数有:
注意,3ddfa的代码对起做了部分修改,3ddfa代码直接回归了62个参数:
[f, pitch, yaw, roll,t2d]这6个参数被一个4*3=12的矩阵替换了,也就是说网络直接回归出一个相似性变换矩阵,inference阶段将这个矩阵分解成我们需要的pitch, yaw, roll等元素. α i d \alpha_{id} αid这个系数,bfm本来为199维度,这里只取了前20维, α e x p \alpha_{exp} αexp这个系数Facewarehouse中获取,原始系数维度为99,这里只取前40维.所以网络总计回归元素数量为:12+40+10 = 62.

论文2在1的基础上做了一下改进:

1.使用四元数替代论文1中回归欧拉角度,避免了万向节死锁问题
2.将Pose Adaptive Feature(PAF)作为一个输入(与图片concate一起)
3.提出了OWPDC(将参数的优先级考虑到loss中)
4.更详细分析了损失函数和输入feature的关系.
论文2网络结构

论文3的改进

在这里插入图片描述
相对论文2,3做了以下3方面改进:

  1. 使用了更优的meta-joint优化策略,动态选择最合适的损失函数
  2. 在线生成短视频训练网络,减小landmark的抖动
  3. 添加2d landmark辅助分支,提高landmark回归精度.

这篇论文不再将PNCC和PAC这种feature作为网络输入,反璞归真,仅仅使用RGB图作为输入.

代码

3ddfa项目:
作者提到:

VDC finetuned from WPDC loss is better than WPDC loss, while there is no such experiment in the original paper.

看起来再wpdc训练好了再用vdc来finetune才能得到最好的结果.

人脸模型:
在这里插入图片描述

参考:
A 3D Face Model for Pose and Illumination Invariant FaceRecognition
https://faces.dmi.unibas.ch/bfm/index.php?nav=1-1-0&id=details
https://github.com/Juyong/3DFace
https://github.com/ascust/3DMM-Fitting-Pytorch/

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值