yolact模型DCNv2模块编译错误解决方法

配置环境

1. Ubuntu 18.04

2. Anaconda

3.Cuda10.2+cudnn7.6.5

问题描述

按照yolact(https://github.com/dbolya/yolact)给的DNCv2链接https://github.com/CharlesShang/DCNv2/tree/pytorch_1.0对DNCv2进行编译时出现以下错误:

error: identifier "THCState_getCurrentStream" is undefined

解决方法

1. 首先检查了anaconda环境中的cuda和cudnn是否与系统安装的版本是否一致(OK);

2. 然后检查了.bashrc文件中的环境变量路径是否正确(OK);

3. 接着用某度度了若干教程,没有成功解决问题;

4. 使用Bing搜索了相关问题,查看到以下链接(https://github.com/CharlesShang/DCNv2/issues/57):讨论文的问题为:

DCNv2/src/cuda/dcn_v2_cuda.cu(107): error: identifier "THCState_getCurrentStream" is undefined #57

oh, my god. 又回到了Github/(ㄒoㄒ)/~~  这里面罗列了45个issue. 根据大佬们的讨论,看到了点赞比较多的解决方案:https://github.com/jinfagang/DCNv2_latest

5. 将DCNv2_latest包git下来,替换yolact中对应的文件夹,然后进行编译. 在编译的时候需要注意make.sh脚本文件,其内容为:

#!/usr/bin/env bash
sudo rm *.so
sudo rm -r build/
sudo python3 setup.py build develop

如果是非Anaconda环境,上述编译过程应该不会出问题,其实可以把sudo给del掉,不然运行时可能会要求权限; 主要说一下我的情况吧,上述提到我的配置环境为Anaconda,因此在虚拟环境中运行上述脚本会报错: 找不到torch模块. 因为给了sudo权限,因此是在全局环境下寻找相关模块,就可能引起错误. 针对此类问题,只需要将sudo全部del掉,这样在编译的时候就只在虚拟环境下寻找相关的模块或包. 然后就可以愉快的测试了☺

参考链接

1.yolact: https://github.com/dbolya/yolact
2.DCNv2: https://github.com/CharlesShang/DCNv2/tree/pytorch_1.0
3.DCNv2讨论: https://github.com/CharlesShang/DCNv2/issues/57
4.DCNv2_lastest: https://github.com/jinfagang/DCNv2_latest

 

你可能感兴趣的:(问题记录,ubuntu,yolact,DCNv2)