最近在做单目3d人体姿态估计的相关项目,看了一些基于smpl的论文,smplify是smpl人体模型比较早期的应用,想着复现了研究一下,但是smplify是基于python 2.7编写的,这里结合网上很多信息直接记录了我用python 3.9配置的过程。
下载文件
注册账号并下载smpl:
smpl项目主页
下载1.0.0 for python2.7
下载smplify代码和模型,这里我们下载基于官方python 2.7源码修改后的python 3.7版本代码:
Smplify代码
下载lsp数据集上2d关节点结果,同样需要注册并下载:
smplify项目主页
lsp数据集包含lsp和lsp_et两个版本,Smplify Demo只需下载lsp数据集图片即可:
lsp数据集image下载
将下载后的文件,放到一个目录下:
整理文件
在刚才存放下载文件的目录下,原地解压:
unzip SMPLify-main.zip
unzip SMPL_python_v.1.0.0.zip
unzip lsp_dataset.zip
tar -zxvf lsp_results.tar.gz
整理文件目录:
cd SMPLify-main/;mkdir images
mv ../images/ ./images/lsp
mv ../smpl/smpl_webuser/ ./code/
mv ../smpl/models/* ./code/models/
mv ../results/ ./
清理:
cd ..
rm -rf !(SMPLify-main)
环境配置
创建虚拟环境,因为conda版本较新,这里我用的python 3.9
conda create -n Smplify python=3.9
conda activate Smplify
先安装以下包:
pip install numpy scipy opencv-python matplotlib chumpy
安装opendr:
对于opendr的安装可以参照下面连接或其他教程,这里不赘述:
opendr的安装
调整代码
接下来,用ide打开 SMPLify-main,我用的是Pycharm 2022.3
配置python环境为刚才创建的Smplify
运行fit_3d.py并增加一些运行参数,在运行显示正在处理的图片:
运行fit_3d.py可能会遇到以下问题:
1.
问题:
ModuleNotFoundError: No module named 'cPickle'
解决:
cPickle改为pickle
2.
问题:
No module named 'posemapper'
解决:
fit_3d.py中添加
import sys
sys.path.append('./smpl_webuser')
sys.path.append('./lib')
问题:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 0: invalid start byte
解决:
serialization.py中修改成如下:
Demo运行成功