本篇blog是对cvpr论文《H4D: Human 4D Modeling by Learning Neural Compositional Representation》源码的一个复现。主要实现源码中的demo部分。
半年前也复现过一两个cv代码,以为三维重建方面的复现比较简单,没想到pytorch3d和pytorch_geometric的安装这么复杂磨人,磨了几个星期,最后作为一个刚入门的新手给大家排一些坑:
1.PyTorch (test with Python 3.7, PyTorch 1.5.1, CUDA 10.1 on Ubuntu 16.04)
这个部分我其实比较踩了一些坑:
python可以用3.8及以上,所给的pytorch3d官网只支持pytorch 1.9.0以上,而且cuda10.1版本太低只能装到pytorch 1.7.0,所以cuda版本也要换。ubantu16.04也不是必须的,可以用更高版本。此外,我一开始用的是虚拟机安的ubantu,最后发现不行,只能双系统。双系统教程比较多,我就不介绍了。
我的失败经历:cuda10.2版本安装在我自己的小笔记本(GTX 1050)上面,结果最后运行
python generate.py h4d_pretrained --is_demo
的时候直接告诉我显存不够,哭死/(ㄒoㄒ)/~~。然后用了工作室的小服务器,RTX A4000,用的一样的环境,结果报错:cuda版本太低了。最后查资料发现RTX A4000算力有8.6,只能支持11.x的cuda,只有算力7.x的显卡支持10.x的cuda。最后我选择了一个对应版本pytorch 1.12.0的cuda11.6.
最后给大家放一个我第一步安装环境的指令;
#启动pycharm
sh pycharm.sh
#创建叫做h4d的虚拟环境,这里我选择python=3.8,因为后面发现有些地方必须要3.8
conda create -n h4d python=3.8
conda activate h4d
##安装torch-1.12.0 ,cu116
conda install pytorch==1.12.0 torchvision==0.13.0 torchaudio==0.12.0 cudatoolkit=11.6 -c pytorch -c conda-forge
2.PyTorch Geometric (GitHub - pyg-team/pytorch_geometric: Graph Neural Network Library for PyTorch)
## PyG 2.3 至少需要PyTorch 1.12版本安装好了
## 比较建议
pip install torch_geometric
##安装额外依赖包
pip install pyg-lib -f https://data.pyg.org/whl/torch-1.12.0+cu116.html
conda install pytorch-scatter -c pyg
conda install pytorch-sparse -c pyg
conda install pytorch-cluster -c pyg
conda install pytorch-spline-conv -c pyg
这些指令我找了好久,主要是不喜欢看官方文档,喜欢在CSDN找一些安装过的人发的blog,最后都失败了,最后试错了无数次,没办法了只好选择看官方文档,结果很容易的就成功了,哭笑不得。
3.PyTorch3D (GitHub - facebookresearch/pytorch3d: PyTorch3D is FAIR's library of reusable components for deep learning with 3D data)
##安装fvcore,iopath
##如果python版本大于3.7
conda install -c fvcore -c iopath -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
##如果python版本小于3.8
conda install -c conda-forge fvcore iopath
conda install -c bottler nvidiacub
#接下来的指令通用
#安装pytorch3d
conda install pytorch3d -c pytorch3d
4.其他注意事项
## Chumpy安装
pip install ./chumpy
## 安装requirements.txt文档里面的依赖,需要注意的是有个依赖包版本的报错,
我选择的是 mesh2sdf==0.1.0 --> mesh2sdf==1.1.0
pip install -r requirements.txt
## 因为我们是随便quik demo一下, 所以不需要大的数据集下载,数据集已经由作者保存在Quick Demo里面的链接里了
ln -s <your data path> ./dataset/cape_release
##这行指令就可以不用管了。
##总结一下,主要是下载三个文件:
H4D-master
H4D_pretrained
H4D_demo_data
因为我选择的是Quick Demo,所以数据集可以不用管(当时我还以为要下数据集,害得我内存都满了,不过想要CPAE数据集的可以看看我上一篇blog,里面有分享了网盘链接)。
## 最终运行,结果保存在out里面,每行代码都会创建一个文件夹,里面保存了30帧对应的点云数据(.obj)
# Forward 4D Reconstruction
python generate.py h4d_pretrained --is_demo
# Backward Fitting
python fitting.py h4d_pretrained
# Motion Retargeting
python motion_retargeting.py h4d_pretrained
讲一讲我对这三个文件的理解(其实原论文里面都有,但是如果你没看过可以直接看我的解释)
demo_generation:就是简单的人体3d重建,
back_fitting:生成了两组的30帧序列,一个是没穿衣服的,一个是穿衣服的。
motion_retargeting:这个就有意思了,因为原论文里面提到的SMPL参数先验参数,里面有身体形状和姿势模块,所以他只要把这个人的这个两个参数替换掉,就可以把一个人的特征叠加在另一个人身上。