Maskrcnn-benchmark在windows系统的安装

2018-12-23  本文已影响143人  苏见

安装pytorch 1.0

之前编译安装pytorch 1.0失败,后面偶然发现可用conda安装了,所以重新用conda来安装,pytorch安装方法

在这个页面选择好本地环境后会显示执行命令:

conda install pytorch torchvision -c pytorch

安装过程发现拉包有点慢,加了清华的源:

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/

conda config --set show_channel_urls yes

但是pytorch还是从国外的源拉的,不仅下载慢,而且很容易断,即使执行了以下语句也不行

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/

手动下载https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/win-64/pytorch-1.0.0-py3.6_cuda100_cudnn7_1.tar.bz2后放到

C:\ProgramData\Anaconda3\pkgs\目录下,在执行conda install pytorch torchvision -c pytorch终于安装成功

编译maskrcnn-benchmark

git clone到本地后执行python setup.py build develop 编译过程遇到很多问题,一一解决过程如下:

1 no instance of function template "THCCeilDiv" matches the argument list

错误提示如下:

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(275): error: no instance of function template "THCCeilDiv" matches the argument list

argument types are: (long long, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(275): error: no instance of overloaded function "std::min" matches the argument list

argument types are: (, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(320): error: no instance of function template "THCCeilDiv" matches the argument list

argument types are: (int64_t, long)

C:/Users/Administrator/Documents/maskrcnn-benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu(320): error: no instance of overloaded function "std::min" matches the argument list

argument types are: (, long)

4 errors detected in the compilation of "C:/Users/pazzu/AppData/Local/Temp/tmpxft_00003e80_00000000-10_ROIAlign_cuda.cpp1.ii".

error: command 'C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA\v10.0\bin\nvcc.exe' failed with exit status 1

参考网上的讨论,maskrcnn-benchmark编译问题,解决方法:

修改maskrcnn_benchmark/maskrcnn_benchmark/csrc/cuda/ROIAlign_cuda.cu第275行:

//原代码: dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));

320行:

//原代码: dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));

修改maskrcnn_benchmark/maskrcnn_benchmark/csrc/cuda/ROIPool_cuda.cu第129行:

// dim3 grid(std::min(THCCeilDiv(output_size, 512L), 4096L));

  dim3 grid(std::min(((int)output_size + 512 -1) / 512, 4096));

177行:

//dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));

  dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));

2 LINK : fatal error LNK1104: 无法打开文件“kernel32.lib”

找到kernel32.lib所在目录为C:\Program Files (x86)\Windows Kits\10\Lib\10.0.17763.0\um\x64,添加到环境变量lib中。

3 LINK : fatal error LNK1158: 无法运行“rc.exe”

找到rc.exe所在目录为C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64,添加到环境变量Path中。

demo运行成功:

上一篇下一篇

猜你喜欢

热点阅读