3D人脸重建算法汇总

前言

本文首发于公众号【3D视觉工坊】,原文请见3D人脸重建算法,更多干货获取请关注公众号~

1、Nonlinear 3D Face Morphable Model(2018)

论文链接:https://arxiv.org/abs/1804.03786
项目链接:http://cvlab.cse.msu.edu/project-nonlinear-3dmm.html

主要思想:三维变形模型(3DMM)作为一种经典的三维人脸形状和纹理统计模型,在人脸分析、模型拟合、图像合成等领域有着广泛的应用。传统的3DMM是从一组控制良好的2D人脸图像中学习到的,并通过两组PCA基函数来表示。由于训练数据的类型和数量以及线性基的存在,使得3DMM的表示能力受到限制。针对这些问题,本文提出了一种新的框架,在不采集三维人脸扫描数据的情况下,从大量无约束的人脸图像中学习非线性3DMM模型,具体地说,在给定人脸图像作为输入的情况下,网络编码器估计投影、形状和纹理参数。两个解码器作为非线性3DMM分别从形状和纹理参数映射到三维形状和纹理。利用投影参数、三维形状和纹理,设计了一种新的解析可微绘制层来重建原始输入人脸。整个网络是端到端培训,只有薄弱的监督。我们证明了非线性3DMM比线性3DMM具有更好的表现力,以及它对人脸对齐和三维重建的贡献。

主要贡献:
1、 我们学习了一个非线性3DMM模型,它比传统的线性模型具有更大的表示能力。
2、 我们通过弱监控,利用大量没有三维扫描的二维图像,共同学习模型和模型拟合算法。新的渲染层实现了端到端的训练。
3、 新的3DMM进一步提高了相关任务的性能:人脸对齐和人脸重建

主要结构:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

实验结果:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2、On Learning 3D Face Morphable Model from In-the-wild Images(2019)

论文链接:https://arxiv.org/abs/1808.09560
项目链接:http://cvlab.cse.msu.edu/project-nonlinear-3dmm.html

本篇和Nonlinear 3D Face Morphable Model是同一作者,在原有文章的基础做了相关提升和改进~

主要思想:三维变形模型(3DMM)作为一种经典的三维人脸形状和反照率的统计模型,在人脸分析、模型拟合、图像合成等方面有着广泛的应用。传统的3DMM是从一组具有良好控制的二维人脸图像的三维人脸扫描中学习而来,并由两组PCA基函数表示。由于训练数据的类型和数量以及线性基的存在,使得3DMM的表示能力受到限制。为了解决这些问题,本文提出了一个新的框架,在不采集三维人脸扫描的情况下,从大量的新的原始人脸图像中学习非线性3DMM模型。具体地说,给定一个人脸图像作为输入,网络编码器估计投影、光照、形状和反照率参数。两个解码器作为非线性3DMM分别从形状和反照率参数映射到三维形状和反照率。利用投影参数、光照、三维形状和反照率,设计了一种新的解析可微渲染层来重建原始输入人脸。整个网络是端到端培训,只有薄弱的监督。展示了非线性3DMM相对于线性3DMM的优越表现力,以及它对人脸对齐、三维重建和人脸编辑的贡献。

  • 4
    点赞
  • 92
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
3D人脸重建是指将2D人脸图像转换为3D人脸模型的过程,可以应用于虚拟现实、人脸识别、面部表情分析等领域。下面是一个简单的3D人脸重建流程: 1. 采集人脸数据:使用3D扫描仪或者多角度拍摄等方式采集人脸数据。 2. 人脸对齐:将人脸数据进行对齐,使得不同角度的人脸数据能够拼接在一起。 3. 特征点提取:使用人脸关键点检测算法,提取人脸的关键点信息。 4. 三角剖分:将人脸模型进行三角剖分,得到人脸模型的面信息。 5. 纹理映射:将2D人脸图像映射到3D人脸模型上,得到3D人脸模型的纹理信息。 6. 优化重建结果:使用光照估计、纹理平滑等算法重建结果进行优化。 Python中可以使用一些开源框架来实现3D人脸重建,比如OpenCV、Dlib、Face3D等。其中Face3D是一个用于3D人脸重建的Python库,它提供了人脸对齐、关键点检测、三角剖分、纹理映射等功能。以下是一个使用Face3D进行3D人脸重建的Python代码: ```python from face3d import mesh from face3d.morphable_model import MorphabelModel # 加载3D人脸模型 model = MorphabelModel('model.mat') # 读取人脸图像并进行人脸对齐和关键点检测 img = mesh.load_image('face.jpg') pos = model.get_landmarks(img) # 三角剖分 vertices = model.predict_vertices(pos) faces = model.faces # 纹理映射 texture = mesh.texture_mapping(img, vertices, model.uv_coords, model.triangles) # 可视化3D人脸模型 mesh.render_texture(vertices, faces, texture) ``` 这段代码使用Face3D库加载了一个3D人脸模型,并且使用人脸图像进行了人脸对齐和关键点检测。然后,使用模型预测顶点坐标和面信息,并且使用纹理映射将2D人脸图像映射到3D人脸模型上。最后,使用mesh.render_texture函数可视化3D人脸模型。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值