其实已经配过一遍了,但是ubuntu,cuda,pytorch,没按readmel来弄,用的ubuntu20.0.4+cuda11.0+pytorch1.7配了环境,网络可以跑,但是文章里面用到的自渗透检测的方法要求的pytorch版本很低,要求pytorch1.0,高了编译不了,会报一个CompileError(忘记留图了);导致cuda版本太高,需要cuda10.0;导致Ubuntu版本太高,需要ubuntu18.0。。。。裂开
现在从头再来一边,希望不会再报那个CompileError。现在严格按照readme里面要求的配置走一遍(血的教训), Python 3.6+ CUDA 10.0+CuDNN 7.3 + PyTorch 1.0 + Ubuntu 18.04。但是第一次还是留下了经验的,我第一次复现的时候查资料,基本上没找到,所以这里记录一下。
因为smplify-x是smplx的一种实现方法,给的代码里面有网络,需要用cuda,也就要调用显卡,所以没法用虚拟机,我自己装了双系统windows+Ubuntu,装系统很简单,随便搜个就行,这里放一个
Ubuntu 20.04 双系统安装完整教程 - 相遂 - 博客园
因为Ubuntu也是小白,刚装好还是有联网,分辨率,输入法等问题,我也写了下我碰到的
CSDNhttps://mp.csdn.net/mp_blog/creation/editor/121026620好了,现在系统问题解决了,开始干活。
先理清楚个问题,防止有我一样的纯纯小白(原来不是学计算机的),cuda是一种由NVIDIA推出的通用并行计算架构,该架构使GPU能够解决复杂的计算问题。cuDNN是用于深度神经网络的GPU加速库。Pytorch是一个开源的Python机器学习库,基于Torch。
大白话:深度网络需要大量计算,显卡可以加速这些计算。但显卡要先装个cuda来实现这个功能,cudnn是cuda的库是些经常用到的东西。pytorch就是上层的,实现网络结构的,用它来调用cuda,实现显卡计算能力的利用,加速计算。所以搭建就是从下到上:cuda,cudnn->python环境->pytorch。
1.装cuda
cuda是在显卡之上的,想装cuda先看自己显卡能装什么cuda。打开终端(ctrl+alt+t)命令:nvidia-smi,查看显卡(这是nvidia的命令,其他自己查)。
右上角cuda version表示了你显卡支持的cuda版本上限,不能高于可以低于。如果nvidia-smi提示找不到这个命令,那就是ubuntu默认用的集显,独显驱动没有下载。这里最简单的更换驱动的方法记一下,网上也是乱七八糟。
additional drivers下面可以看到自己的显卡驱动
ubuntu默认的是最下面那个,可以看到不是nvidia的,选个后面是proprietary的,
apply changes后开始下载,重启之后nvidia-smi可以查看显卡信息。
显卡看好了开始装cuda
CUDA Toolkit 10.0 Archive | NVIDIA Developer
官网找到,这里下载.run文件的方式,按照图例选好系统信息,点下载(补丁的步骤一样)
下载好后,到下载目录打开终端,输入命令sudo sh cuda_10.0.130_410.48_linux.run,输密码,然后有一个很长的协议,按着回车到结束
安装选项,第二个是问你要不要装驱动,我们装过了,选no不然会安装失败,其他都是yes。
装完之后,提示你配置环境变量
sudo gedit ~/.bashrc ,然后在文件末尾添加下面2行
输入: source ~/.bashrc
验证是否安装通过:
已经装好。
2.装cudnn
cuDNN Archive | NVIDIA Developer NVIDIA cuDNN is a GPU-accelerated library of primitives for deep neural networks.https://developer.nvidia.com/rdp/cudnn-archive官网下载对应的四个文件,只是版本号的区别,文章要求CuDNN 7.3
将下载的 cuDNN Library for Linux (x86_64) 解压,复制解压出来的文件到安装好的CUDA环境中,
输入: sudo cp cuda/include/cudnn.h /usr/local/cuda/include
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64
更改权限输入: sudo chmod a+r /usr/local/cuda/include/cudnn.h /usr/local/cuda/lib64/libcudnn*
接下来安装Deb包(在这里要把后面的文件名换成自己下载的)
分别输入:sudo dpkg -i libcudnn8_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-dev_8.0.5.39-1+cuda11.0_amd64.deb
sudo dpkg -i libcudnn8-samples_8.0.5.39-1+cuda11.0_amd64.deb
安装deb包时候遇见个新问题,结果重新把包下一遍就行了,只能说玄学。
检验是否安装成功 :
输入: cd /usr/local/cuda/samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
又碰见个新问题,测试最后一步运行不起来,如下:
网上说是驱动不匹配,但是根据他们给的表格我的驱动版本是对的。
重启了一下,问题解决了,大家记得安装完cudnn之后重启一下。。。。。。测试结果如下,pass就没问题
3.安装anacoda,pycharm
现在显卡就已经做好准备被调用了,pytorch是上层框架,不同的文章可能用的不一样,所以我们在容器中安装pytorch,比较方便。这边用conda创建虚拟环境+pycharm可视化编程。在这两个安装没有难度,conda需要换下源,放一个比较全的,挨个尝试,创建虚拟环境。
Anaconda更换镜像源方法_ahmcwt的专栏-CSDN博客_anaconda 镜像源
4.装pytorch
前面的完成之后,用pycharm打开自己新建的python=3.6的环境,我这里直接把环境命名为'pytorch'
官网找到下载命令,在虚拟环境中的终端直接下载,过程中可能会碰到网络问题,调整以下源
这是调整之后的,删掉了一些东西,好像是那些东西会指引conda连外网导致连不上,删掉就可以解析安装包成功了。
装好了之后这里可以查到pytorch版本。
5.smplify-x源码配置
搞了那么久,终于是可以开始调整代码。readme里面写的不太清除,反正我第一次弄的时候迷糊了好半天。这里一步一步记录一下。
首先,打开最下边的requirements.txt,里面是一些基础的依赖包,可以直接点上面的install requirements 完成前面的下载。可能会出现下载失败,这时候我是在终端一个一个pip install 文件名 全部都直接成功了。装完之后,黄条提示就会消失。
然后拐回来看readme,这个文档的顺序有些问题,他把要先装的东西放到下面去了,应该先看
这四个东西的大标题叫Dependencies,然后他后面给的都是另外三个文章的工作成果代码,把这些工作下载下来,在相同的容器中安装相关依赖,建立链接。最好是把这些工作中给的例子跑出来。
这里不叙述这三个工作了,太长了。说一下你要把哪些东西拷到smplify-x项目里。
可以看到,我们要运行的是smplx模型,所以运行代码是这一段,但是这一段,其实只有第一行是命令,其他是解释说明(输入终端会提示找不到命令),但是你现在直接输入第一行,运行也会报错,因为刚才下的4个东西还没放到项目里,代码找不到。
这是直接运行,提示你找不到smplx模型。具体怎么放呢,打开这个fit_smplx.yaml文件,这是个初始化配置文件,他应该跟前面作者给的那一段结合起来看。
从上往下,先说怎么看,先看.yaml,里面前面给的是在代码里面变量的名字,后面是项目里应该有的文件名;作者给的更象是,他给变量名大写,表示这个是自己说的话(我是这么理解的,可能不对)。
先看第一行,是data_folder,项目里应该有个'data'的文件夹,且根据作者描述,他还要有两个子文件夹,'images'和'keypoints',放imag和关节点位置文件,作为输入。这需要我们自己创建
第二行output_folder,一看就是放输出的,.yaml里面说文件名叫'smplx_debug',这个运行之后会自动生成,这里就不自己建了
第三是个设置,好像是显示优化的迭代数,有默认,先不用管。
第四个就是smplx模型了,.yaml说名字为'models',项目里没有自己建。然后把自己下的
解压拷进去,注意,这个是有文件结构要求的,在smplx工作的代码里有讲(作者可能就是这个原因给的工作代码的链接,没直接给模型的链接)。而且想要调用smplx的模型还有其他的依赖和关联要建立
把这个工作在相同的容器里面跑一遍[SMPL-X](https://github.com/vchoutas/smplx) 安装相关依赖
第五个就是vpose姿势先验的包,.yaml说叫'vposer',这个写在最下面。没有,自己建。
直接解压,复制粘贴,文件名要改的。
最后一个是一个文件,先不用管。
我们这时候从EHF数据库里把一组里面的img .jpg和.json分别放到data的images和keypoints里面,准备运行。记得改名字,比如01_img.jpg对应01_img_keypoints.json,没改汇报错。按着提示改就行。
运行 python smplifyx/main.py --config cfg_files/fit_smplx.yaml
这个就是说文章中用到的自渗透检测方法没有启用,也是我上次因为版本卡住的地方,先在.yaml里面
31行改为False,关掉这个调用。再运行。
(补充:我研究了以下,这个自渗透检测的方法要求的环境太老了,torch=1.0.0,不是pytorch,而且这个是optional dependiences ,如果安装的话跟上面三个dependiences的环境要求冲突,所以只能关掉,也可能是我太菜,还有别的办法,会的评论里求求你教我。。。拜托了,如果确实用不了,这么说起来我这次重装就没有没有意义。。。淦)
这时候就应该有结果了
可能会遇到这个问题,这个是因为更新导致逻辑非不能再用“1-xxx”表示了
根据提示打开这个conversion.py,把里面的“1-xxx”全部换成“~xxx”就可以了
用作者给的可视化代码看一下,运行
结束了,写了好长