这个cascade RCNN的调试是真的折磨人,对于新手的我,查了各种各样奇奇怪怪的资料,终于调通了。以此记录,如果能帮助到大家,那就更好了。
调试步骤
第一步 下载工程
我的工程目录是这样的
此处我们默认大家可以正确导入数据集,因为此处主要记录的是如何生成nms里面调用的_C库。
第二步 观察setup.py
用命令行进入 到 lib
文件夹
那么我们此时,先别急着运行什么,我们先打开setup.py,看看里面的头文件结构是什么
从这个头文件可以知道,这份代码肯定是用的pytorch1.0以上的编译环境,因为它调用了这一句from setuptools import setup
第三步 配置环境
如果没有虚拟环境就先配置一下虚拟环境
conda create -n torch(1.0) python==3.7
然后建立好环境后激活一下
conda activate torch(1.0)
接着呢~,我们先安装一下requirement.txt里面的环境
然后配置好后,就进入重头戏了。我们知道如果直接运行肯定会发现报这个错no module....._C
然后到处找都没找到这个_C是哪里的,其实是编译nms文件夹里面的.c、.h以及csrc文件夹里面的头文件来生成的一个.so的加密文件,至于为什么加密,我也不知道,反正是能加速吧
此时,你先查看一下自己的cuda
版本,这个很重要,非常重要,因为这里就决定你最后编译后的文件是什么cuda版本,如果这里不查,到后面配环境配错了,是运行不出那个_C库的
查看cuda的命令是nvcc -V
我自己是cuda10
然后就在自己的虚拟环境里面配置pytorch,原封不动地复制就可以
conda install pytorch==1.0.1 torchvision==0.2.2 cudatoolkit=10.0 -c pytorch
然后安装好之后就开始编译
在命令行里面输入这个
setup.py build develop
最后就可以生成这个文件
这样就可以了。
此处注意一下,gcc的版本最后要和自己的Ubuntu版本匹配,我的是Ubuntu18,对应的是gcc 7.5
还有就是如果有make.sh这个东东,也可以编译这个都行sh make.sh
报错记录
如果出现这个错误
/usr/local/cuda-10.0/nvcc: No such file or directory
你只需要在命令行输出export CUDA_HOME=/usr/local/cuda-10.0/
如果出现 _cudaPopcallConfiguration 以及出现ImportError: libcudart.so.8.0 cannot open shared object file: No such file or directory
那肯定是你的pytorch和cuda版本不匹配
如果在setup.py里面的头文件是from torch.utils.ffi import create_extension
那就是旧版本的torch环境才行,需要切换回0.3.1