SMPL源码实现及相关问题

SMPL源码实现及相关问题

  • SMPL模型
  • 代码结构
  • SMPL实现具体步骤
    • 一、环境的配置
    • 二、相关库的安装
    • 三、运行SMPL
  • CITATION

SMPL模型

SMPL模型官网http://smpl.is.tue.mpg.de/,里面可以下载模型和观看演示视频,只不过要先注册一个账号。SMPL由Michael J. Black团队等人在2015提出,是现在人体三维重建广泛使用的模型。这个模型我也在深入理解,也发了一篇自己对SMPL源码及内容的相关理解(会持续更新),感兴趣的可以跳转看一下!所有的内容都望大家批评指正,互相交流!

代码结构

整个代码的结构:下载下来的文件名字为smpl的文件夹
@models文件夹:存放男女模型的文件夹
(1)女:basicModel_f_lbs_10_207_0_v1.0.0.pkl
(2)男:basicmodel_m_lbs_10_207_0_v1.0.0.pkl
@smpl_webuser文件夹:整体的代码文件
—README.txt: 技术手册,方便实现查阅
—lbs.py: 线性蒙皮的实现
—posemapper.py: 旋转向量和旋转矩阵之间的转换模块
—serialization.py: 对于以上男女模型的保存和导入文件,导入之后就可以直接使用了
—verts.py: 关于网格模型顶点的转换模块
—hello_world文件夹是模型测试文件:
  —hello_smpl.py 是把SMPL模型保存成.obj格式的文件,可以用三维显示软件查看的obj文件
   —render_smpl.py 显示SMPL模型的代码,通过给不同的shape pose参数就可以得到不同的SMPL模型,三维渲染显示

SMPL实现具体步骤

Ubuntu 16.04.6 LTS Linux 4.15.0-118-generic x86_64的操作系统,个人也在windows系统上用pycharm运行过模型一顿操作只跑通了hello_smpl.py,相对来说Ubuntu对于很多支持包的安装更加方便,并且以后的研究基本也是在Ubuntu上进行的,所以个人推荐使用Ubuntu.我使用MobaXterm连接服务器配置的相关环境,和运行的程序。直接在Ubuntu系统上配置,也是大同小异。然后切入正题:

一、环境的配置

我直接为运行这个程序配置了个python2.7的环境

conda create -n py2 python=2

目前大部分使用的是python3,但是源代码是python2实现的,有些命令是不兼容的。所以要么安装python2.7,要么就将代码改写。

二、相关库的安装

安装相关库的时候可以使用默认源也可以使用其他国内源我使用的清华大学源,个人推荐使用国内源,因为国内源安装不容易出错并且快上好多倍。

 pip install package -i https://pypi.tuna.tsinghua.edu.cn/simple

----(1)numpy的安装: pip install numpy
----(2)scipy的安装 : pip install scipy
----(3)chumpy的安装: pip install chumpy
----(4)opencv的安装: pip install opencv-python
----(5)opendr的安装: pip install opendr
前面安装的包都是基础的包,一般不会出问题,我在安装包的时候遇到了以下两个问题:
一、python2.7配置opencv-python报错
这是因为最新的opencv已经不再支持python 2.7了,最后一个支持 Python 2.7 的 opencv 版本是 4.2.0.32,因此执行如下命令安装 opencv:

pip install opencv-python==4.2.0.32

二、python2.7配置opendr报错
本身是因为依赖缺失的问题造成的报错,可以输入以下指令解决:

sudo apt install libosmesa6-dev
sudo apt-get install build-essential
sudo apt-get install libgl1-mesa-dev
sudo apt-get install libglu1-mesa-dev
sudo apt-get install freeglut3-dev

但我没有服务器管理员权限,所以我直接采用了手动安装:
1.在GitHub找到 Opendr的安装包
2.再去下载OSMesa.Linux.x86_64.zip
3.这一步注意
若使用了anaconda,手动安装不是在base环境下安装,则一定要把下载的Opendr安装包移动到你 anaconda --> envs --> pythonx.x --> lib --> pythonx.x --> site-packages下,然后再继续执行;
若在base环境下手动安装则不需要移动。
4.打开终端输入:

cd xxx/opendr-master

转到opendr-master文件夹
5.python setup.py build
6.python setup.py install

三、运行SMPL

在运行的时候运行到:

from smpl_webuser.serialization import load_model

出现了报错,原因是SMPL自定义的包smpl_webuser导入错误,解决方法:
1.找到你的python安装路径,…/env/lib/python2.7
2.进入python安装路径的site-packages下
3.创建一个后缀为.pth的文件:touch xxx.pth
4.编辑该pth文件:vi xxx.pth
5.将smpl和smpl_webuser两个含有__init__.py文件的文件夹的绝对路径写入到xxx.pth文件中。(注意:一定要是绝对路径)
  例如:/home/jianping/work/smpl_webuser
然后就是正常的运行代码了!
hello_smpl.py的测试:
python hello_smpl.py-----执行成功后在该目录下生成了一个xxxx.obj文件—这个时候可以用三维软件查看,也可修改文件中的shape、pose的参数来得到不同的人体模型!

SMPL源码实现及相关问题_第1张图片
render_smpl.py的测试:
python render_smpl.py-----执行成功之后就可以看到渲染的smpl模型
之后就可以对这个模型理解应用了。

  在结尾感谢我上面用蓝色超链接所引到的文章的作者,是你们分享的经验让我能成功跑通这个程序!

CITATION

[1]:Matthew Loper, Naureen Mahmood, Javier Romero, Gerard Pons-Moll, and Michael J. Black. 2015. SMPL: a skinned multi-person linear model. ACM Trans. Graph. 34, 6, Article 248 (November 2015), 16 pages. DOI:https://doi.org/10.1145/2816795.2818013
[2]:https://blog.csdn.net/nbxuwentao/article/details/100177159
[3]:https://blog.zhangxiann.com/202007021817/
[4]:https://blog.csdn.net/qq_26369907/article/details/88708082
[5:]https://blog.csdn.net/qq_40659982/article/details/88071592

你可能感兴趣的:(三维人体重建,python,人工智能,ubuntu,linux,深度学习)