在跑3d人脸demo Deep3DFaceReconstruction时遇到一些问题,拿个小本本记录下来.
项目介绍
这个项目实现了通过单张图片推理3d人脸参数的功能,对应的论文为:Accurate 3D Face Reconstruction with Weakly-Supervised Learning: From Single Image to Image Set.
代码基于tensorflow编写.
环境介绍
Ubuntu18, 显卡1050ti,cuda配置:
NVIDIA-SMI 450.102.04 Driver Version: 450.102.04 CUDA Version: 11.0
1.按照readme下载好对应的BFM模型以及预训练模型.开始配置环境.
conda create -n deep3d python=3.6
source activate deep3d
conda install tensorflow-gpu==1.12.0
conda install bazel # 原文档漏写了安装这个bazel程序
pip install pillow argparse scipy
2.编译tf_mesh_renderer代码
git clone https://github.com/google/tf_mesh_renderer.git
cd tf_mesh_renderer
git checkout ba27ea1798
git checkout master WORKSPACE
# mesh_renderer/kernels/BUILD 文件编译部分添加上 'Set -D_GLIBCXX_USE_CXX11_ABI=1 ',支持c++11的编译.
bazel test //... # 原文档写的是bazel test ... , 但是我这里运行错误,估计是bazel版本不一致,加上//就可以编译了....
我这里还有个编译错误,说是找不到tensorflow_framework.so,原因是我装了两个python,一个3.6,另一个是3.7,但是mesh_renderer/kernels/BUILD中用python -c 'import tensorflow as tf; print(tf.sysconfig.get_lib())'
来获取tensorflow 库安装位置,这里的python默认指向3.7,
所以要手动将python 改为python3.6就行了.编译完成后将生成的rasterize_triangles_kernel.so复制到Deep3DFaceReconstruction项目的render目录下.
3. 运行
python3.6 demo.py --pretrain_weights network
参数network指向预训练模型所在目录,完成后会在output目录下生成一些obj文件,用meshlab打开就行了.
生成的obj文件和mat文件可以从下面链接下载:
链接: https://pan.baidu.com/s/1M2NnahUR0OpwtQj_pb12eQ 提取码: xwqp