windows下安装mmdetection填坑记录

-------------------------------------------------------------------------------

问题0(add)

2020年5月12日新发现:
关于cl.exe报的原因。还可能不是VS的cl.exe缺失造成的,比如下图:
在这里插入图片描述
背景:由于本地mmdetection在编译的时候,在这个目录下
在这里插入图片描述
没有生成我的python3.7版本的soft_nms_cpu.***.pyd(是从build下的build\lib.win-amd64-3.7\mmdet\ops\nms中拷过来的)。所以尝试模仿nms_cpu和nms_cuda生成对应版本的soft_nms_cpu。修改了主mmdetection目录下的setup.py.
在这里插入图片描述
但是,就报了最上边那个图的错,“”“无法打开包括文件: “numpy/arrayobject.h”:”因此,就做了如下修改:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最后,运行 python setup.py develop
就活啦!!!【由衷感谢大佬的博客,不止一次帮助到了我,click here
在这里插入图片描述

---------------------------------------------------------------------------------

问题1:

遇到最最最bug的问题,提示:

error: command ‘C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.0\bin\nvcc.exe’ failed with exit status 2

反正我是蒙蔽到不行搞了大半天,直到看到了这个答案
在这里插入图片描述
按照要求,装了VS2017社区版本后,问题竟然就这么莫名其妙的解决了,咱也不知道为什么,反正就这么给解决了。
在这里插入图片描述

问题2:

D:\Program Files (x86)\VS2015_V14\VC\BIN\x86_amd64\cl.exe’ failed with tatus 2.

补充操作
有同学不明白具体是怎么做的,现在详细说明一下。
1 打开Anaconda Prompt(Anaconda3)
2 在base环境下进入你envs中所对应的需要添加激活预处理的环境下,本例激活\envs\open-mmlab

`cd %CONDA_PREFIX%
mkdir .\etc\conda\activate.d
mkdir .\etc\conda\deactivate.d
type NUL > .\etc\conda\activate.d\env_vars.bat
type NUL > .\etc\conda\deactivate.d\env_vars.bat`

${CONDA_PREFIX}是当前环境的路径。我这里是D:\Program Files (x86)\Anaconda3\envs\open-mmlab
这样就有了下文提到的activate.d / env_vars.bat和deactivate.d / env_vars.bat两个文件,就可以按照需求,对环境变量进行设置
在这里插入图片描述
以上内容参考自 这里

这个问题是因为我只根据当前虚拟环境的需求,更改了环境变量path,其余的比如CUDA_HOME并没有修改成对应cuda 的版本。
以防万一,现在把cuda8.0对应的cuda环境变量全部改为需要的cuda10.0的。

activate.d / env_vars.bat 内容如下
@set CUDA_HOME=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
@set CUDA_BIN_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\bin
@set CUDA_LIB_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\lib\x64
@set cuda_libnvvp=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\libnvvp
@set CUDA_PATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0
@set CUDA_SDK_BIN_PATH=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\bin\win64
@set CUDA_SDK_LIB_PATH=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0\common\lib\x64
@set CUDA_SDK_PATH=C:\ProgramData\NVIDIA Corporation\CUDA Samples\v10.0
@set CL_EXE=D:\Program Files (x86)\VS2015_V14\VC\bin\x86_amd64
@set INCLUDE_CUDA=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\include
@set CUPTI_CUDA=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0\extras\CUPTI\libx64
@set CC_CUDA_VERSION=10.0
@set cuda_bin=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\10.0\bin
@set OLD_PATH=%PATH%
@set PATH=%CUDA_BIN_PATH%;%CUDA_LIB_PATH%;%cuda_libnvvp%;%CUDA_PATH%;%CUDA_SDK_BIN_PATH%;%CUDA_SDK_LIB_PATH%;%CUDA_SDK_PATH%;%CL_EXE%;%INCLUDE_CUDA%;%CUPTI_CUDA%;%PATH%;

deactivate.d / env_vars.bat 内容如下
@set PATH=%OLD_PATH%

问题3:

编译找不到cuda_runtime_api.h

手动在mmdetection-master\mmdet\ops\utils\src\compiling_info.cpp中加上文件的路径,变成:
在这里插入图片描述
我也不知道为什么配置了cuda的环境变量之后,系统会找不到这个cuda的头文件。也不理解这个头文件是怎么索引找到的。希望谁知道的话,告知一声,不胜感激。

问题4

编译pycocotools出错,提示

cl: 命令行 error D8021 :无效的数值参数“/Wno-cpp””

有大神已经做好了windows版本的安装包,进入下面链接
https://github.com/philferriere/cocoapi
执行以下命令,将三方库编译Lib\site-packages下。(其实,就是将)
在这里插入图片描述
在这里插入图片描述

【番外】其实,在这个问题中,不识别/Wno-cpp,只需要将setup.py中的相关项目屏蔽掉旧可以了。见下图
在这里插入图片描述

问题5

关于写mmdetection的demo.py

from mmdet.apis import init_detector, inference_detector, show_result

config_file = './configs/faster_rcnn_r50_fpn_1x.py'
checkpoint_file = './checkpoints/faster_rcnn_r50_fpn_1x_20181010-3d1b3351.pth'
# 初始化模型
model = init_detector(config_file, checkpoint_file)
# 测试一张图片
img = 'test.jpg'
result = inference_detector(model, img)
show_result(img, result, model.CLASSES,show=True,out_file='./res.jpg') #这里将结果图片进行保存,其余参数为默认值

问题6

计算机中丢失mspdb140.dll。或者找不到cl.exe大概率是因为计算机中安装vs的时候有,但是没有加入到环境变量中。
-首先从VS安装目录的D:\Program Files (x86)\VS2015_V14\Common7\IDE下,复制四个文件(见下图)。
在这里插入图片描述
到这里:D:\Program Files (x86)\VS2015_V14\VC\bin。
-其次,将这个D:\Program Files (x86)\VS2015_V14\VC\bin添加到环境变量path中。
-最后,重启电脑,cmd就能找到相关文件了。

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值