打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
(Python)3D人脸处理工具Face3d

介绍

这个项目实现了一些与3D人脸相关的基本功能。

你可以使用它来处理网格数据,从可变形模型生成3D人脸,用一幅图片和几个关键点作为输入来重建3D人脸,给人脸打上不同的光照(详情请见例程)。

一开始,我是为了学习3D人脸重建以及一些个人研究才开始写这个项目的,所以所有的代码都是用Python(numpy)写的。然而,有些函数(例如rasterization光栅化)不能用向量来优化,用python实现的话运行起来会很慢,于是我决定用C++来完成这些部分(不使用别的库,如OpenCV或者eigen),然后用Cython编译以供Python调用。所以最终版本十分轻量而且运行很快。

此外,考虑到初学者可以关注于算法本身,研究者可以快速的尝试并验证自己的想法,numpy版本也被保留了。为了你们能学习到基础知识并理解代码,我会尽力在每个函数中添加引用和公式。

想要了解更多3D人脸的消息和研究,你可以看看这里。

请阅读吧。^_^

架构
# Since triangle mesh is the most popular representation of 3D face, # the main part is mesh processing.mesh/ # written in pythonandc++| cython/ # c++ files, use cython to compile | io.py # read & write obj| vis.py # plot mesh| transform.py # transform mesh & estimate matrix| light.py # add light & estimate light(todo)| render.py # obj to image using rasterization rendermesh_numpy/ # the same with mesh/, with each part written in numpy
# slow but easy to learn and modify# 3DMM is one of the most popular methods to generate & reconstruct 3D face.morphable_model/| morphable_model.py # morphable model class: generate & fit| fit.py # estimate shape&expression parameters. 3dmm fitting.| load.py # load 3dmm data
案例
cd ./examples
  • 3dmm. python 2_3dmm.py

上面这张图:由3dmm随机生成的案例

下面这张图:使用68个关键点由3dmm拟合的人脸

  • 转化. python 3_transform.py

上面这张图:

修复了相机位置&使用正交投影(常使用于重建)

然后转换了人脸:比例,改变俯仰角度,改变下巴角度,改变侧倾角度等

下面这张图:

修复了物体位置&使用透视投影(fovy = 30)(模拟真实视图) 。

然后改变相机位置,旋转相机:从远到近,从下到上,从左到右。

  • light. python 4_light.py

单点投光:从左到右,从上到下,从近到远。

  • image map python 6_image_map.py

渲染图像像素中的不同属性。 例如深度,pncc,uv坐标

  • uv map python 7_uv_map.py

在uv坐标中渲染不同的属性。 例如颜色(纹理贴图),位置(2d面部图像和相应的位置图)

开始吧!

必要条件

  • Python 2 or Python 3

  • Python packages:

  1. numpy

  2. skimage (为了读取&编辑图像)

  3. scipy (为了加载mat)

  4. matplotlib (为了展示)

  5. Cython (为了编译 c++ 文件)

使用

1.克隆库

git clone https://github.com/YadiraF/face3dcd face3d

2.编译 c++ 文件为了在Python中使用(如果你用的是numpy版本的话就忽略吧)

cd face3d/mesh/cython
python setup.py build_ext -i

3.准备BFM数据(如果你不使用3dmm的话就忽略吧)

请看 https://github.com/YadiraF/face3d/blob/master/examples/Data/BFM/readme.md

4.运行例子

cd examples
python1_pipeline.py

(示例使用cython版本,您可以将mesh更改为mesh_numpy以使用numpy版本)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python 在网页爬虫、数据挖掘、机器学习和自然语言处理领域的应用情况如何? |
让Python加速的方法,及一些优化代码的工具(NumPy,PyPy,PyCUDA和Cython等)...
Numba vs Cython
Python金融大数据分析
Python入门之安装numpy和pandas
解密缓冲区协议
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服