**

小白跑deep snake项目碰到的坑

**
照着网上这篇博客:CVPR2020分割算法Deep Snake的配置跑程序
中间碰到了大大小小的坑,在各种百度中最后还是运行出来了。写这篇文章就是想说一下我碰到的有哪些坑。

上面那篇博客还是挺好的。没有太多的数据集,笔记本也可以跑。
先说下我的环境:win10+pycharm+python3.6+cuda9.0+torch1.1.0+torchvision0.3.0。(我的笔记本比较辣鸡)没有用到anaconda。包都是pip下载的
具体的坑:

一:搭环境:

1.首先下载python3.6(最好python3.6):我之前没学过python,最开始装的时候直接莽了个3.9,后来运行时碰到了很多坑,换个3.6的就好了
2.cuda安装。这个没太多坑,在nvidia控制面板中看一下自己电脑支持哪个版本就行,我一开始装了一次然后又卸载,再安装时碰到这个

这个只需在安装时选择自定义安装,然后把CUDA/Visual Studio Intergration取消勾选就可以安装了。当时我也没装Visual Studio,这个有点大。后续解决方法百度可以找到。
3.torch安装:不同版本的cuda对torch的要求不一样,这个大家可以自己去百度。我是cuda9.0,需要的是torch1.1.0。一开始我直接
pip install torch==1.1.0. 然后安装出错,后来找了其他镜像源,装好了一个几十m的,然后在跑代码时报错了cpu is not available。然后我在python里面print(torch.cuda.is_available())。结果为false。
然后我就各种百度,都是什么cuda和torch版本不匹配啊啥的。我踩了很多坑了,我敢肯定我cuda和torch是匹配的。在cmd命令下也能看到toch是0.3.0。
最后隐约看到一篇博客说可能是下的torch是无cuda版本的(当时那篇博客我只是扫了一眼,没在意,后面发现真是这个原因)。然后我重新下了带cuda版本的的torch。

pip3 install https://download.pytorch.org/whl/cu90/torch-1.1.0-cp36-cp36m-win_amd64.whl

可以根据自己的电脑配置下载匹配的:torch下载
cpu/torch就是不带cuda的,cu90就是cuda9.0,cp36就是python版本3.6
好家伙差不多700m。最后安装好成功返回ture。

然后安装基本没啥其他坑了。

二、跑程序

首先去github里面fork一份。然后用pycharm去下载代码。除了一个ssh key较麻烦,其他操作都可以百度到。(ssh key解决方法 )
github进不去?
好,现在进入pycharm开始跑程序了。

1.安装依赖库两步
进入工程目录运行如下代码(就是在pycharm中Terminal窗口下,pip在安装python时都会自动安装上):

pip install Cython==0.28.2
pip install -r requirements.txt

第一步还好,第二步安装失败,然后我就打开requirement.txt一个一个用pip命令安装。大致都可以一个一个来,失败了都可以自己百度找个镜像源啥的。
2.安装apex

git clone https://github.com/NVIDIA/apex.git

这个没啥问题,有问题自己去百度
然后进入apex目录安装:

cd apex
python setup.py install

在执行install时基本上就开始各种错了。前面的cpu is not available啥啊也是这儿开始的。
此外,还有个Microsoft Visual C++ 14.0 is required错误

error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/ Tools":

因为我没安装Visual Studio,就出了这个错
解决方法(不用下Visual Studio,下一个Microsoft Visual C++ Build Tools安装就行):百度网盘 提取码: b2qp
安装方法:visual c++ build tools的安装与使用
论文作者在这儿安装用的python setup.py install --cuda_ext --cpp_ext。只不过原贴作者报错了才换的python setup.py install。这个大家可以去原贴看看,最顶上有。

3、使用Cuda编译库lib/csrc
依次进入lib/csrc/下的三个目录里面运行(记得退出apex):`
1)进入lib/csrc/dcn_v2路径运行

cd lib\csrc\dcn_v2
python setup.py build_ext --inplace

现在开始麻烦的来了,如果没有其他什么错,窗口会显示出一大堆东西。翻到最顶上,发现有个错:

E:\Python\Lib\site-packages\torch\utils\cpp_extension.py:189: UserWarning: Error checking compiler version for cl: [WinError 2] 系统找不到指定的文件。warnings.warn('Error checking compiler version for {}: {}'.format(compiler, error))

意思找不到cl.exe这个文件。好吧,那我去给它配个系统变量,在Path后面加个地址(大致目录是这样的,可以自己去找找,最后目录下有cl.exe):

C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64

再次执行上面的代码python setup.py build_ext --inplace,又来一个错误:

E:\Python\lib\site-packages\torch(utils\cpp_extension.py:191: UserWarning:!! WARNING !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Your compiler (cl 19.00.24210) may be ABI-incompatible with PyTorch!
Please use a compiler that is ABI-compatible with GCC 4.9 and above.
See https://gcc.gnu.org/onlinedocs/libstdc++/manual/abi.html.See https://gist.github.com/goldsborough/d466f43e8ffc948ff92de7486c5216d6
for instructions on how to install GCC 4.9 or higher.

意思是我的编译器cl跟PyTorch不兼容,需要GCC4.9或者更高版本的编译器。
但是我之前装过Dev-Cpp,里面的GCC版本是4.9.2的。
然后我在这儿卡了很久很久,也装过MinGW,然后GCC到也没用。(最后发现根本不用装这些)
当时我想的是先不管,先往下看。(最后我跑出来时还是没有管这个warning)看到下面还有其他错误:

E:/Python/lib/site-packages/torch/include\THC/THCNumerics.cuh(196): error: more than one operator "!=" matches these operands:built-in operator "arithmetic != arithmetic"function "operator!=(const __half &, const __half &)"operand types are: c10::Half != c10::Half
6 errors detected in the compilation of "C:/Users/xtt/AppUata/Local/Temp/tmpxft_0001f7c_0000000-8_utils.opp4.ii".
error:command ‘C:\\ProgramFiles\\NVIDIA GPU Computing Toolkit\\CUDA\\v9.0\|bin\\nvcc.exe' failed with exit status 2

(前面还有几个error,但是跟上面都一样,只是把“!=”换成其他的<,>,==啥的)其实一开始我一直搜的是最后两行代码。百度的都是牛头不对马嘴,然后我就搜error: more than one operator "!=" matches these operands:,搜是搜到了,原因是cuda和torch的头文件都提供了相同的重载运算符,编译器不知道用哪一个,可能与前面的warning有关,也有可能是我cuda和torch版本太低了。我百度出来的解决方法都是Linux下。
最后在我坚持不懈的到处找解决方法的情况下。最后还是找到了:
参考博客:Flownet2 NVIDIA pytorch最新安装教程 有效的避坑教程
这是因为torch关于Half和cuda的头文件关于Half 的三元运算符定义重叠了,编译器不知道选择哪个进行编译,(这些是cuda9开发以前遗留的兼容问题)

解决方法:找到THCNumerics.cuh文件,正常来说在这儿:'...\Python\Lib\site-packages\torch\include\THC\THCNumerics.cuh'
找到

static inline __host__ __device__ bool lt(at::Half a, at::Half b) { return a < b; }
static inline __host__ __device__ bool le(at::Half a, at::Half b) { return a <= b; }
static inline __host__ __device__ bool gt(at::Half a, at::Half b) { return a > b; }
static inline __host__ __device__ bool ge(at::Half a, at::Half b) { return a >= b; }
static inline __host__ __device__ bool eq(at::Half a, at::Half b) { return a == b; }
static inline __host__ __device__ bool ne(at::Half a, at::Half b) { return a != b; }

大致在190行左右,然后把以上这些代码注释掉。
再次运行那个代码,出现了跟原贴作者一样的错误:

照着原贴来,进入目录:lib/csrc/dcn_v2/src/cuda
打开dcn_v2_cuda.cu,把extern THCState *state;改成THCState *state = at::globalContext().lazyInitCUDA();
更改后,再次编译即可。
成功
2)进入lib/csrc/extreme_utils路径运行

python setup.py build_ext --inplace

每次最上面都会出现:Your compiler (cl 19.00.24210) may be ABI-incompatible with PyTorch!不用管这个。
也报了跟原贴作者一样的错:

继续跟着原贴改:
打开lib/csrc/extreme_utils/src/utils.cu文件,将里面的long全部替换成int64_t,再次运行编译即可。

3)进入lib/csrc/roi_align_layer路径运行

python setup.py build_ext --inplace

这儿就没啥错了
4、在用Sbd的预训练模型做可视化测试
1)下载预训练模型 here 然后放到这个路径/data/model/snake/sbd/149.pth
当你打开data,发现里面只有一个卑微的.gitignore文件。没办法,自己一路建文件夹。
2)回到工程路径运行(就是回到snake目录下)

python run.py --type demo --cfg_file configs/sbd_snake.yaml demo_path demo_images/2009_000871.jpg ct_score 0.3

然后错误又来了(前面好像还有一个No module named "XXX"的错误,直接用pip安装XXX那个包就行):

Downloading: "http://dl.yf.io/dla/models\imagenet\dla34-ba72cf86.pth" to C:\Users\xtt/.cache\torch\checkpoints\dla34-ba72cf86.pth
Traceback (most recent call last):File "run.py", line 99, in <module>globals()['run_'+args.type]()......File "E:\Python\lib\urllib\request.py", line 650, in http_error_defaultraise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

404错误,没找到页面?注意最上面那句话,是要下个东西到一个文件夹中,去那个文件夹中看了看,没有。那就自己下

去代码中的页面下载,然后拷到目标文件夹中(也就60m)。
再次运行刚才的代码

历尽千辛万苦。哎,还是跑出来了。
其实中间还有其他的一些bug出现,但大多数都可以百度解决。中间这个warning:Your compiler (cl 19.00.24210) may be ABI-incompatible with PyTorch!最后还是没有解决,但是能跑出来就没管了

我中间还进行了驱动更新,安装cudnn啥的麻烦得很。
没学过python,没跑过程序,电脑辣鸡,自己一个人摸着跑出来。哎,都是泪啊!!!

第一次写这些东西,如有不足,请谅解!

小白跑deep snake(巨详细)相关推荐

  1. 【论文阅读/翻译笔记】Deep Snake for Real-Time Instance Segmentation

    原论文标题:Deep Snake for Real-Time Instance Segmentation 原论文链接:https://arxiv.org/abs/2001.01629 翻译:张欢荣 用 ...

  2. Deep Snake for Real-Time Instance Segmentation:基于Deep Snake的实例实时分割

    本文针对自己所看的 Deep Snake 做一个总结和存档,也方便其他同学学习 -- 阿波,2020.4.23 论文原文:Deep Snake for Real-Time Instance Segme ...

  3. 实时实例分割的Deep Snake:CVPR2020论文点评

    实时实例分割的Deep Snake:CVPR2020论文点评 Deep Snake for Real-Time Instance Segmentation 论文链接:https://arxiv.org ...

  4. Deep Snake for Real-Time Instance Segmentation论文理解

    用于实时实例分割的Deep Snake算法 论文链接https://arxiv.org/abs/2001.01629 论文代码:https://github.com/zju3dv/snake/ 本人小 ...

  5. 孤读Paper——《Deep Snake for Real-Time Instance Segmentation》

    <Deep Snake for Real-Time Instance Segmentation>   论文借鉴了snake算法,将snake算法做成了轮廓结构化特征学习的方法.DeepSn ...

  6. 新锐国货品牌拇指白小T成功上线巨益OMS全渠道电商中台

    近日,新锐国货品牌白小T成功上线巨益全渠道电商中台,实现了前端多平台多店铺订单高效路由.库存实时共享以及内部各业务系统之间的全链路数据打通. 白小T是拇指衣橱(浙江)服装科技有限公司旗下打造的IP化T ...

  7. 【小程序】微信小程序云开发笔记详细教程(建议收藏)

    1- 前言 1.1 微信云开发是什么? 微信云开发是微信团队联合腾讯云推出的专业的小程序开发服务. 开发者可以使用云开发快速开发小程序.小游戏.公众号网页等,并且原生打通微信开放能力. 开发者无需搭建 ...

  8. 小白跑WRF第三天,安装三方依赖库

    小白跑WRF第三天,安装三方依赖库 各类安装包的准备 支持库的下载 第一步:进入Build_WRF文件目录下 第二步:创建LIBRARIES文件夹 第三步:下载第三方库 支持库的安装 第一步:安装zl ...

  9. 《已测试》2021新版恋爱撩妹话术小程序前后双端源码+详细安装教程+无限多开独立后台版本

    详情简介: 恋爱话术小程序前后双端稳定运营版本 1.支持流量主 2.支持卡密交易 3.支持收费与免费 4.功能多.稳定运营 在线演示地址: 安装教程: 测试环境: 宝塔linux nginx1.18 ...

最新文章

  1. java map操作_Java 8 中的 Map 骚操作,学习下!
  2. svn服务器搭建及使用 二
  3. Servlet—07—Cookie; Seesion;
  4. java的求和函数_Java Stream流之求和的实现
  5. jquery live hover绑定方法
  6. opencv图像仿射变换和普通旋转
  7. PWN-PRACTICE-BUUCTF-30
  8. mysql.h 动态编译命令_Linux环境编译动态库和静态库总结
  9. 华为笔记本计算机在哪,新一代华为MateBook 的机会在哪里?
  10. 北京大学药学院张亮仁教授/刘振明研究员课题组博士后招聘启事
  11. 数据结构学习笔记:变位词侦测案例
  12. 在Debian上安装FlashPlayer10
  13. cydia软件路径_cydia软件包路径
  14. 魅族发布两款新品:魅蓝 X 1699元起
  15. 盘点微软出品的神级小工具:无比实用~
  16. 【老生谈算法】matlab实现LSB算法源码——LSB算法
  17. EndNote使用教程
  18. Python数据可视化交互基本
  19. 基于STM32单片机智能RFID刷卡汽车位锁设计(论文
  20. python面向对象_05(面向对象封装案例 II)

热门文章

  1. 股指期货5分钟 稳定盈利的交易系统
  2. 几种黑白相间的棋盘实现方法
  3. 2023年全国最新安全员精选真题及答案34
  4. 第1.5章:StarRocks部署--集群部署
  5. PE、PVC、PP、PC、PS、PET化学材料简介--转载
  6. FGW原来是为了保护老外……
  7. 213123123123123
  8. 学生管理系统(Java+MySQL+GUI)
  9. 去印度做投资你只有两条路能选,要么All in要么撤资
  10. 员工培训 80%靠内训