smplify-x 复现记录

       其实已经配过一遍了,但是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默认用的集显,独显驱动没有下载。这里最简单的更换驱动的方法记一下,网上也是乱七八糟。

  右上角打开software&update, 如下图

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) 安装相关依赖

models的结构一定要是这样的。

第五个就是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的环境要求冲突,所以只能关掉,也可能是我太菜,还有别的办法,会的评论里求求你教我。。。拜托了,如果确实用不了,这么说起来我这次重装就没有没有意义。。。淦)

 这时候就应该有结果了

smplx_debug也被创建了,mesh就是生成的网格。

可能会遇到这个问题,这个是因为更新导致逻辑非不能再用“1-xxx”表示了

 

根据提示打开这个conversion.py,把里面的“1-xxx”全部换成“~xxx”就可以了

 

用作者给的可视化代码看一下,运行

结束了,写了好长

  • 21
    点赞
  • 43
    收藏
    觉得还不错? 一键收藏
  • 38
    评论
评论 38
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值