最新3D人脸技术综述_我爱计算机视觉-CSDN博客

【技术综述】基于3DMM的三维人脸重建技术总结_hacker_long的专栏-CSDN博客

一、应用:Face Animation,dense Face Alignment,Face Attribute Manipulation

二、设备:单目相机(Monocular)、双目相机(Stereo)和深度相机(RGB-D)

三、数据:深度图,点云,网格图,

1、深度图像/range:是三维人脸的 z 轴数值被投影至二维平面的图像,效果类似一个平滑的三维曲面。由于这是一种二维表示方式,所以很多现存的二维图像的处理方法可以直接应用。这种数据可以直接以灰度图的方式展示出来,也可以使用三角剖分原则转换成三维网格。

2、三维点云:每一个点都对应一个三维坐标 。有时,人脸的纹理属性也可以拼接到形状信息上,这时点的表达就成了 ,其中 p,q 是稀疏坐标。

点云表示的缺点是每一个点的邻域信息不好获取,因为点的存储一般是无序的。一般情况下,点云数据会用来拟合一个平滑的曲面,以减少噪声的影响。

3、三维网格:使用在三维曲面上预计算好并索引的信息进行表示,相比于点云数据,它需要更多的内存和存储空间,但是由于三维网格的灵活性,更适合用来做一些三维变换,例如仿射变换、旋转和缩放。每一个三维网格数据,由以下元素构成:点、线、三角面。二维纹理的坐标信息也可以存储在点信息中,有利于重建更精确的三维模型。

人脸数据库汇总—Part 1_holybin的专栏-CSDN博客

1) AFLW2000-3D, 由AFLW的前2000张图片和他们的3D注释组成的。除了3DMM参数外,3D标注还包含68个3D地标。、既可以用于人脸重建,也可以用于人脸对齐。可下载

2) BU-3DFE,包括 100 人,其中 44 名男性,56 名女性,采集对象包括白人、黑人、亚洲人、印度人等。每个人被采集 25 幅图像,包括一个中性模型和 6 类带表情模型,每种表情分为 4 种程度,包括的表情有:高兴、厌恶、恐惧、生气、惊讶、悲伤。需申请

3) BU-4DFE,BU-3DFE数据集的扩展。提供高分辨率的3D动态面部表情数据库,以视频速率捕捉3D面部表情。包括101名受试者的606个3D面部表情序列组成。需申请

4) MICC,由从高分辨率3D扫描系统捕获的3D人脸数据,包含53名受试者与他们的地面真相3D mesh。此外,它有一些视频序列在不同的分辨率,条件和规模水平。

6) FaceWarehouse,由150名年龄在7岁到80岁之间的中国人建立的。每个受试者包含47个不同的表情。

7) 4DFAB,动态高分辨率3D人脸的数据库。包含180名受试者的1,800,000个3D mesh。

8)FRGC Ver2.0,包含了465 人的 4007 幅 2.5 维图像,图像尺寸为 320*240,除了中性表情外,还包括一些带表情的图像,如:微笑、惊讶等。

)University ofNotre Dame database(UND),包括 277 人的 953 幅人脸深度图像,所有的人脸都是正面、无表情的,图像尺寸为 320*240。这个库包含了用于三维人脸配准的标准库 FRGC Ver1.0。

)GavabDB,包含了 61 人的 549 幅三维图像,其中 45 名为男性,16 名为女性。所有的被采集者都是高加索人种,年龄从 18 至 40 岁。每个采集分别采集 9 幅图像:2 幅中性正面、2 幅左右全侧面、1 幅仰头、1 幅低头、1 幅微笑表情、1 幅大笑表情、1 幅随意表情姿态图像。

)3D_RMA,包含了 120 人,每人 6 幅点云深度数据,包括姿态:正面、左或右、仰头或低头。

)USF,包含 100 个中性表情的三维人脸模型。

)BJUT-3D Facedatabase,包含 500 人的三维模型,男女各半。每人采集一个三维模型,对每个模型去噪并切除了多余部分。

四、pipeline

1、基于传统方法的人脸重建

通过图像本身表达的信息完成 3D 人脸重建,如图像的视差、相对高度等,比较常见的如通过双目视觉实现 3D 重建,难点在于如何匹配不同视角下对应的特征点。

《A Survey of Different 3D Face Reconstruction Methods》https://pdfs.semanticscholar.org/d4b8/8be6ce77164f5eea1ed2b16b985c0670463a.pdf

2、基于模型的人脸重建

两个较常用的模型:通用模型 CANDIDE, 3DMM。

1)CANDIDE:由 113 个顶点和 168 个面组成。通过修改这些顶点和面,使得其特征与待重建的图像相匹配。通过整体调整,使五官等面部关键点尽量对齐;通过局部性调整,使人脸的局部细节更加精细,在这之后进行顶点插值,即可以获得重建后的人脸。优点是重建速度快,缺点是重建的精度严重不足,面部细节特征重建欠佳。

2)3D Morphable Model (3DMM):一种人脸模型的线性表示。核心思想:人脸可以在三维空间中进行一一匹配,并且可以由其他许多幅人脸正交基加权线性相加而来。

人脸的基本属性包括形状和纹理,每一张人脸可以表示为形状向量和纹理向量的线性叠加。

Si,Ti之间不是正交相关的,不能作为基向量,所以需要使用PCA进行降维分解。

需要先计算形状和纹理向量的平均值,去中心化。然后分别计算协方差矩阵,求得形状和纹理协方差矩阵的特征值α,β和特征向量si,ti。

使用 3DMM 模型重建人脸首先需要这两组基,目前使用较多的是 BFM 基(https://faces.dmi.unibas.ch/bfm/main.php?nav=1-2&id=downloads)。

在求解这几个系数,随后的很多模型会在这个基础上添加表情,光照等系数,原理与之类似。

将2D人脸拟合到3D模型上,被称为Model Fitting,这是一个病态问题。

把三维模型投影到二维平面可以表示为:

(a) 初始化一个3维的模型,需要初始化内部参数α,β,以及外部渲染参数,包括相机的位置,图像平面的旋转角度,直射光和环境光的各个分量,图像对比度等共20多维,有了这些参数之后就可以唯一确定一个3D模型到2D图像的投影。

(b) 在初始参数的控制下,经过3D至2D的投影,即可由一个3D模型得到2维图像,然后计算与输入图像的误差。再以误差反向传播调整相关系数,调整3D模型,不断进行迭代。每次参与计算的是一个三角晶格,如果人脸被遮挡,则该部分不参与损失计算。

(c) 具体迭代时采用由粗到精的方式,初始的时候使用低分辨率的图像,只优化第一个主成分的系数,后面再逐步增加主成分。在后续一些迭代步骤中固定外部参数,对人脸的各个部位分别优化。

对于只需要获取人脸形状模型的应用来说,很多方法都会使用2D人脸关键点来估计出形状系数,具有更小的计算量,迭代也更加简单,另外还会增加一个正则项.

难点:

(a) 该问题是一个病态问题,本身并没有全局解,容易陷入不好的局部解。

(b) 人脸的背景干扰以及遮挡会影响精度,而且误差函数本身不连续。

(c) 对初始条件敏感,比如基于关键点进行优化时,如果关键点精度较差,重建的模型精度也会受到很大影响。

需要一个数据库来建立人脸基向量空间:

(1)Basel Face Model数据集(简称BFM模型)《Large Scale 3D Morphable Models》:100张男性,100张女性,大部分为高加索人脸,年龄分布8~62岁。模型的每一个点的位置都进行了精确匹配,也就是说每一个点都有实际的物理意义,比如属于右嘴角等。经过处理后,每一个模型由53490个点描述。

(2)基于此模型采集了9663个人得到LSFM模型《A 3D Face Model for Pose and Illumination Invariant Face Recognition》,能够进一步提升表达能力。

LSFM-3DMM:《Large Scale 3D Morphable Models》  2017

《Face Normals “in-the-wild” using Fully Convolutional Networks》 CVPR2017

大规模的人脸模型,可以构建针对特定年龄,性别或族裔群体的模型

(3)2017年发布的版本BFM 2017《Morphable Face Models - An Open Framework》中提供了表情系数,同样还是一个线性模型

(4)国内数据集,FaceWarehouse《 A 3D Facial Expression Database for Visual Computing》,不开源。

(5)当前基于3DMM的表情模型主要有两个思路,分别是加性模型和乘性模型

加性模型就是线性模型了,将表情作为形状的一个偏移量。

但是因为表情也会改变人脸的形状,因此它和形状并非完全正交的关系,所以有的研究者提出了乘性模型。

纹理模型也被称为表观模型,相对于形状模型来说更加复杂,受到反射率和光照的影响。一般视为一个因素,即反射率。2009年提出的BFM模型中,纹理模型是一个线性模型,即由多个纹理表情基进行线性组合。

光照模型通常采用的是球面模型。

(6)Nonlinear-3DMM:非线性3DMM模型,更好地表达人脸信息。

《Nonlinear 3D Face Morphable Model》  CVPR 2018/2019
   《On Learning 3D Face Morphable Model from In-the-wild Images》  CVPR2019

3、基于 CNN 端到端的人脸重建

全监督方法

《Regressing Robust and Discriminative 3D Morphable Models with a very Deep Neural Network》中提出的3DMM CNN,用深度学习的方法直接回归相关系数。

形状系数和纹理系数各有99维,用CASIA WebFace数据集中的多张照片进行model fitting求解生成了对应的三维人脸模型作为真值。

损失函数:因为重建的结果是一个三维模型,所以损失函数是在三维的空间中计算,如果使用标准的欧拉损失函数来最小化距离,会使得到的人脸模型太泛化,趋于平均脸。对此作者们提出了一个非对称欧拉损失,使模型学习到更多的细节特征,使三维人脸模型具有更多的区别性

除了预测形状系数外,3DMM的研究者们还提出了ExpNet《 ExpNet: Landmark-free, deep, 3D facial expressions》预测表情系数,FacePoseNet《Faceposenet: Making a case for landmark-free face alignment》预测姿态系数

《Disentangling Features in 3D Face Shapes for Joint Face Reconstruction and Recognition 》通过 CNN 回归 Identity Shape 和 Residual Shape 参数,表达式和 3DMM 类似,不同之处在于除了普通的 reconstruction loss(一般为 element-wise L2 loss),还增加了一个 Identification loss,以保证重建的人脸 ID 特征不变。

《End-to-end 3D face reconstruction with deep neural networks》用高层的语义特征表示 ID 信息,中间层的特征表示表情特征,因此可从不同的层级回归相应的参数。

《Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric》

192*192*200的Volumetric表示3D人脸

自监督方法

将二维图像重建到三维,再反投影回二维图,以MoFa《Mofa: Model-based deep convolutional face autoencoder for unsupervised monocular reconstruction》为代表。

输入首先经过一个Deep Encoder提取到语义相关的系数,系数包含了人脸姿态,形状,表情,皮肤,场景光照等信息。然后将该系数输入基于模型的decoder,实现三维模型到二维图像的投影,模型可以使用3DMM模型。最后的损失是基于重建的图像和输入图像的像素损失。当然,还可以添加关键点损失,系数正则化损失作为约束。

 人脸的三维特征编码

充分发挥出CNN模型对于像素的回归能力,基于3DMM模型将三维人脸进行更好的特征编码:

1)3DDFA《 Face alignment across large poses: A 3d solution》,使用Projected Normalized Coordinate Code(简称PNCC)作为预测特征。

一个三维点包括X,Y,Z和R,G,B值,将其归一化到0~1之后便称之为Normalized Coordinate Code。如果使用3DMM模型将图像往X-Y平面进行投影,并使用Z-Buffer算法进行渲染,NCC作为Z-buffer算法的color-map,便可以得到PNCC图。

3DDFA框架,输入为100×100的RGB图和PNCC特征图,两者进行通道拼接。算法的输出为更新后的PNCC系数,包括6维姿态,199维形状和29维表情系数。

引入权重,让网络优先拟合重要的形状参数,包括尺度、旋转和平移。当人脸形状接近真值时,再拟合其他形状参数。

2)PRNet《Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network》开源代码:https://github.com/YadiraF/PRNet)利用UV位置图(UV position map)来描述3D形状。提出一种同时完成3D人脸重建和稠密人脸对齐的端对端的方法,位置映射回归网络(PRN)

在BFM模型中,3D顶点数为53490个,作者选择了一个大小为256×256×3的UV位置图(UV position map)来进行编码,三个通道记录了三维位置信息,分别是X,Y,Z。

用CNN网络( encoder-decoder结构)直接预测UV位置图。通过不同区域不同权重的 Loss Function,实现了较高精度的人脸重建和稠密关键点对齐。

特征点(68点),眼睛、鼻子、嘴巴,其他脸部,脸以外的部分;他们的权重分别比:16:4:3:0

缺点:生成的mesh存在明显条纹。是UV图像映射到3D时必然存在的,可以通过平滑或插值来解决:

UVmap:u,v是纹理贴图的坐标,UVmap定义了2D图片上每个点的3D位置的信息。 将2D图像上每一个点精确对应到3D模型物体的表面,在点与点之间的间隙位置由软件进行图像光滑插值处理。这就是所谓的UV贴图。简单的来说,就是将三维物体上的点映射到2维空间上

Mesh用于描述物体的形状。使用三角面来存储。储存的信息有:1)每个三角形的三个顶点。2)每个三角形的边。3)每个三角形为一个面。

每张纹理图Texture map的(u,v)坐标均可存储在三维Mesh的各个顶点信息中,这个存储操作即为两者之间的映射关系。纹理的映射是将纹理图贴到多边形表面的过程。

《3D Dense Face Alignment via Graph Convolution Networks》

逐级增加回归的 mesh 顶点,从而在多个监督的任务下完成最终 mesh 的回归,减小mesh条纹.

​​​​​​Joint 3D Face Reconstruction and Dense Face Alignment from A Single Image with 2D-Assisted Self-Supervised Learning

源码: https://github.com/XgTu/2DASL

通过图形卷积网络进行3D密集面对齐

难点和展望

3DMM模型参数空间是一个比较低维的参数空间,并且纹理模型过于简单。基于3DMM模型的方法面临的最大问题就是结果过于平均,难以重建人脸皱纹等细节特征,并且无法恢复遮挡。对此有的方法通过增加局部模型进行了改进《 Learning detailed face reconstruction from a single image》。

综述paper:

A Review of 3D Face Reconstruction From A Single Image

survey on 3D face reconstruction from uncalibrated images

A Literature Review of 3D Face Reconstruction From a Single Image(未找到)

3D人脸重建(一)综述相关推荐

  1. ​ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法

    点击下方卡片,关注"CVer"公众号 AI/CV重磅干货,第一时间送达 点击进入-> CV 微信技术交流群 本文分享ECCV 2022论文<REALY: Rethink ...

  2. 3D人脸重建和人脸分析常用的数据集汇总

    作者:Tom Hardy Date: 2019-12-31 来源:3D人脸重建和人脸分析常用的数据集汇总

  3. 汇总|3D人脸重建算法

    作者:Tom Hardy Date:2019-12-30 来源:汇总|3D人脸重建算法

  4. 单目3D人脸重建DECA

    #SIGGRAPH2021单目3D人脸重建,皱纹可以随着表情而产生自然变化,更加逼真. 代码已开源DECA: Learning an Animatable Detailed 3D Face Model ...

  5. VR来了,3D人脸重建跟上《三维人脸重建-3DMM》

    之前我们写过了<三维人脸重建入门>,接下来,自然就是入门之后的事情.当然了,不管是一个什么项目,方法永远不会是唯一的. 一 引言 To my best of knowledge,如之前所说 ...

  6. 3D人脸重建——PRNet网络输出的理解

    前言 之前有款换脸软件不是叫ZAO么,分析了一下,它的实现原理绝对是3D人脸重建,而非deepfake方法,找了一篇3D重建的论文和源码看看.这里对源码中的部分函数做了自己的理解和改写. 国际惯例,参 ...

  7. 基于多视角照片的3D人脸重建

    [原文:http://www.sigvc.org/why/book/3dp/chap5.3.2.htm] 5.3.2 基于多视角照片的3D人脸重建 多视角三维重建的技术原理请详见第6章6.3节&quo ...

  8. [读论文]弱监督学习的精确 3D 人脸重建:从单个图像到图像集-Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From

    论文地址:Accurate 3D Face Reconstruction with Weakly-Supervised Learning:From Single Image to Image Set ...

  9. 深度学习 3d人脸 重建_深度学习实时3D人脸跟踪

    深度学习 3d人脸 重建 Snapchat was made popular by putting funny dog ears on people's head, swapping faces an ...

  10. ECCV 2022 | 清华腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法

    原文链接: ECCV 2022 | 清华&腾讯AI Lab提出REALY: 重新思考3D人脸重建的评估方法 本文分享ECCV 2022论文<REALY: Rethinking the E ...

最新文章

  1. 解决 Out of range value adjusted for column 'ID' at row 1
  2. 2020年生活服务业新业态和新职业从业报告
  3. python求n的阶乘并输出身份信息_python编程求n的阶乘_使用Python编程的阶乘
  4. C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042
  5. 计算机丢失faultrep.dll,faultrep.dll
  6. ssm医院人事管理系统设计与实现 毕业设计源码111151
  7. aspen分离膜_双膜组件强化CO_2混合气分离的研究
  8. 用低代码+BPM赋能知识文档管理系统
  9. 女生29岁 ,想学前端,还来得及么?
  10. linux snappy 版本,snappy初级文档
  11. springCloud Api网关搭建
  12. 机器视觉光源的选型要领
  13. 人脸识别(cv2库的实现)
  14. c++实现经典游戏贪吃蛇(超详解)
  15. 12月更新 - 可能是最好用百度网盘搜索神器
  16. 郭鹤年--亚洲糖王与酒店巨子
  17. 关于websocket的http无法升级到ws请求的错误The HTTP response from the server [404] did not permit the HTTP upgrad
  18. ios局部滚动出界解决办法
  19. 用cxf开发一个可以被安卓调用的接口
  20. 基于python的jieba分词

热门文章

  1. PS(Photoshop)去水印的4个方法
  2. 日本語トレーニング(二十二)
  3. 运动坐标系的旋转角速度与旋转角(转换角)的关系
  4. Springboot实现微信公众号模板消息发送
  5. linux 查找内容对应行数,Linux查看文件指定行数内容与查找文件内容
  6. 计算机电源输出定义,电脑电源接口定义图解
  7. IPS(入侵防御系统)技术
  8. R语言使用aov函数执行单因素方差分析、使用TukeyHSD函数分析单因素方差分析的结果并解读TukeyHSD函数的输出结果
  9. 各种浏览器网页背景颜色护眼设置
  10. python3GUI--磁力搜索工具(附tk源码)