最近在研究人脸重建,参考了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的数据的配准中。

参考资料:

书籍: Multiple View Geometry in Computer Vision

https://www.csc.kth.se/~madry/courses/mvg10/Attachments/04_Presentation03_Ch7_Omid.pdfhttps://www.csc.kth.se/~madry/courses/mvg10/Attachments/04_Presentation03_Ch7_Omid.pdfhttps://www.ece.mcmaster.ca/~shirani/vision/hartley_ch7.pdfhttps://www.ece.mcmaster.ca/~shirani/vision/hartley_ch7.pdf

1.投影变换与仿射变换

3d物体从世界坐标投影到图像坐标系的映射关系为:

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

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

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

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

具体推导过程:

叉乘的结果为:

由叉乘公式,

我们可得,

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

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

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

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

至此,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点到原点的距离标准化为,3d点到原点的距离标准化为

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

3.2 Loss function

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

距离公式:其中上划线代表经过数据标准化处理的量。

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

3.3 Gold standard algorithm

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

算法:

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

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

使用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之间的距离,

直到距离函数到指定误差或指定迭代步数。

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

3)Denormalize P matrix

还原P

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

output:

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

代码参考:

GitHub - YadiraF/face3d: Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations.Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations. - GitHub - YadiraF/face3d: Python tools for 3D face: 3DMM, Mesh processing(transform, camera, light, render), 3D face representations.https://github.com/YadiraF/face3d

3dmm人脸配准/重建:gold standard algorithm相关推荐

  1. 腾讯优图|人脸3D重建与渲染技术研究与应用

    编辑丨腾讯优图AI开放平台 6月5日-6日,2021全球人工智能技术大会(GAITC 2021)在杭州成功举办.本次大会,旨在汇聚中国科创智慧与活力的同时,与世界建立互通共享的沟通桥梁,在交流中探索共 ...

  2. 腾讯优图提出LAP无监督多视角人脸3D重建算法,高清还原面部细节

    编辑丨腾讯优图AI开放平台 近日,腾讯优图实验室提出无监督多视角人脸3D重建算法LAP(Learning to Aggregate and Personalize),摆脱人脸3D训练样本真值依赖,高清 ...

  3. 人脸3D重建:Cascaded Regressor

    <Cascaded Regressor based 3D Face Reconstruction from a Single Arbitrary View Image>论文解读 本文来自四 ...

  4. 2DASL:目前最好的开源人脸3D重建与密集对齐算法

    点击我爱计算机视觉标星或置顶,更快获取CVML新技术 之前52CV曾经报道过PRNet:人脸3D重建与密集对齐,其结果非常惊艳,在很多人脸应用中都有用武之地. 最近同样专注于3D人脸重建与密集对齐的算 ...

  5. 【PaperReading】Toward a gold standard for benchmarking gene set enrichment analysis

    Toward a gold standard for benchmarking gene set enrichment analysis 朝着基因集富集分析基准评估的金标准迈进 1. 引言 2. 方法 ...

  6. FACEGOOD 推出10万点人脸关键点跟踪,重新定义工业级人脸3D重建

    2020-03-17 11:27:05 机器之心发布 作者:FACEGOOD 目前无论是学术界还是工业界对人脸的研究有两个方向,其一民用级,通过技术泛化为用户提供低精的产品,这些技术在工业级高精度上是 ...

  7. PRNet:人脸3D重建与密集对齐

    随着直播视频的兴起,人脸动画贴纸成为一项必备的视频技术,而其后的核心技术人脸对齐和人脸跟踪在学术界也越来越火,本文介绍的PRNet就可以使你快速开发有趣的人脸应用. PRNet来自于论文"J ...

  8. 由人脸图片重建出三维人脸网格

    预备知识. 人脸的参数化模型 V(α)=As平均人脸+∑iαi形状系数Es,i形状主元V(α)=As⏟平均人脸+∑iαi⏟形状系数Es,i⏟形状主元 V(\alpha)=\un ...

  9. 基于2D图像的人脸三维模型重建

    目录 一.理论基础 二.核心程序 三.仿真测试结果 一.理论基础 三维重建是计算机图形学和计算机视觉领域中最热门的研究方向之一,是一种根据给定的平面二维图像信息获取空间三维景物信息的技术.与二维平面相 ...

  10. 三维人脸重建 (一)

    文章目录 3DMM是什么 传统3DMM方法 PCA降维 模型求解问题分析 具体参数(s,R,t2d,α,β)({s, R, t_{2d}}, \alpha, \beta)(s,R,t2d​,α,β)的 ...

最新文章

  1. Silverlight初级教程-开发工具
  2. MuJoCo要开源!DeepMind收购物理引擎MuJoCo,将推动全球机器人研发
  3. 最好用的硬盘搜索工具--Ava find pro
  4. 跟随我在oracle学习php(40)
  5. Android之如何解决ScrollView起始位置不是最顶部的解决办法
  6. solidity payable_以太坊区块链搭建与使用(五)-智能合约Solidity
  7. 树莓派Java程序运行_树莓派上Java程序作为linux服务并开机自动启动
  8. 红黑树原件 及其插入、删除(附图说明)
  9. SQL Server 占用内存太高,查找占用内存高以及影响其性能的sql语句
  10. 协议栈处理中的conntrack HASH查找/Bloom过滤/CACHE查找/大包与小包/分层处理风格
  11. 阶段3 2.Spring_08.面向切面编程 AOP_1 AOP的概念
  12. Summary on deep learning framework --- Torch7
  13. McAfee官方卸载工具下载及使用
  14. 金融数据类——外汇,CFD
  15. 电路交换、报文交换、分组交换的特点和比较
  16. 三阶魔方层先法 复原公式
  17. python exec 函数_Python之浅谈exec函数
  18. 2dpca matlab程序,simulink基于2DPCA的人脸识别
  19. 电脑上个别按键失灵可能原因
  20. 关于安装cmd命令行安装pyinstaller库失败的解决方法

热门文章

  1. 介绍两款实用软件:CCPROXY和SOCKSCAP
  2. 完成 Orange3 数据挖掘 汉化版
  3. java poi jar包下载_poi.jar下载-poi.jar包 3.8/3.9/3.10 免费版 - 河东下载站
  4. html 收藏本页,设为首页与加入收藏的JS代码(多浏览器支持)
  5. 如何开发自己的股票软件102
  6. java修改文件的名称_Java修改文件名称
  7. Json笔记-高德地铁数据分析
  8. 【忆往昔】我欠老牛两本书
  9. 如何对 ABAP 数据库表通过 ABAP 代码进行更新和删除操作试读版
  10. 安卓root之后交管123123 20秒闪退和中国农业银行app 6.0闪退的解决方法