人脸三维重建调研
目标
根据某人一张或多张二维人脸图像重建出三维人脸模型(这里主要讨论单张)。
人脸三维重建发展概述
三维人脸重建主要有两种思路:model-based和model-free。
model-based以[A Morphable Model For The Synthesis Of 3D Faces,1999](A Morphable Model For The Synthesis Of 3D Faces)为基准,旨在训练相对于平均人脸的参数,通过参数来改变平均脸,从而生成新的三维模型。在CNN被广泛应用之前主要使用非线性优化来拟合参数,这类研究很多。这类方法主要依赖训练集的人脸数据,不同人种的识别效果影响很大,对新的数据容错率尚待考虑。[详写]
model-free是通过神经网络,通过二维图像特征点计算回归三维人脸坐标,这类方法是现在主流方法,但是一定程度上丢失了人脸自身的性质。二维图像特征点一般通过人脸对齐的方法实现,人脸对齐也是主要通过CNN来实现。
自从ResNet在15年被提出后,很多网络都通过ResNet的思想来加快训练和模型效果。
3月底的人脸三维重建想法
3月底人脸重建模型精度高,面片数越高效果越好。
主要有两种方案:
方案一:项目通过回归UV为位置坐标,以及加权损失函数,实现了18年state-of-the art的模型,且该方法的检测速度较快,有助于产品落地,且demo运行效果不错,面片数约8万,对于遮挡不严重、角度不要过大的识别效果不错。虽说Github上只有训练好的模型和模型思想,且项目的作者给出了一些可定制的训练想法,以及提高精度的方式。
我的想法是复现该论文的网络,并进行持续改进和优化。该论文的效果与运行速度相对较优
可以采用的数据集有300W-LP、Florence、其他数据集。这些数据集主要是欧美脸,从其他根据欧美脸重建出来的亚洲脸模型看,效果并不是很差,有一定的使用价值。
采用的框架:Pytorch,Tensorflow是目前主流深度学习框架,但是Pytorch的上升趋势很明显,后来出现的Pytorch因为其更易使用而深受欢迎
语言主要采用Python、Matlab。
方案二:
项目通过回归模型直接计算三维点云,根据二维特征点,计算三维投影偏差,
在线可运行网页
缺点:预测时间比较长,需要学习torch框架
源码使用语言:python、lua、matlab
框架:torch
初步时间安排如下:
- 1月14号~1月18号:源码阅读、相关论文细读、相关知识的学习以及网络复现
- 1月21号~1月25号:网络复现
- 寒假期间,能够初步训练出一个demo
- 2月11号~2月15号:网络优化,调参
- 2月18号~2月22号:网络持续优化(假设能完成)
应用于产品的人脸三维重建想法
应用于产品的人脸三维重建的面片数不能太高。故打算在三月底的人脸三维重建的基础上进行改进。主要改进点:
- 降低图片分辨率,更改网络模型、调参
- 降低UV图的分辨率,最终降低面片数
初步时间安排
- 2月25号~3月1日:更改超参,降低分辨率,尝试训练新的网络
- 3月4号~3月8号:持续改进
重难点
二维特征点检测方法大部分是基于2D人脸形状建模的,存在以下几个问题:
- 人脸部分不在图像里面,人脸被遮挡,人脸转角过大,影响特征点检测
利用二维特征点来恢复三维人脸形状的方法存在以下几个问题:
- 不同姿态下检测的特征点语义信息不一致,难以确定3D点云中与其对应的点
现存开源项目的三维面片数主要存在以下问题:
- 如何克服三维面片数过大使得模型无法在产品上运行
需要掌握和学习的技术[删除]
- 基础图形、图像知识
- 相关论文阅读:ResNet等论文
- Ubuntu:MeshLab,Blender;Windows:Maya、3DsMax等建模软件的使用
- PyTorch、Tensoflow等深度学习框架
- dlib:一个C++机器学习工具(多数用于人脸检测)
- Matlab、Python、C++语言
后期可能考虑的问题
- 可能需要三维人脸的美化
- 人脸的风格与虚拟人物是否搭配
其他项目[删除]
1、回归模型:根据二维特征点,计算三维投影偏差
Large Pose 3D Face Reconstruction from a Single Image via Direct Volumetric CNN Regression
在线可运行网页
缺点:预测时间比较长,需要学习torch框架
源码使用语言:python、lua、matlab
框架:torch
2、A Point Set Generation Network for 3D Object Reconstruction from a Single Image
生成1024个三维点云,输入的是原图像+分割图像,需要转换成obj
框架:tensorflow
3、End-to-end 3D face reconstruction with deep neural networks
源码:python
框架:mxnet