在win10和win7系统上配置faster rcnn(GPU)冲冲冲
介绍
最近实验室需要在win7系统上配置一个faster rcnn,实验需要,它就是不允许在ubuntu下使用。这里简单介绍一下自己的配置过程。最后顺利跑了起来。
github:jwyang/faster-rcnn.pytorch
该项目的ubuntu配置环境教程:wind-chaser
ubuntu的配置教程写的非常详细了。这个项目的使用方法在github页面或者这位追风者的博客都写的非常清楚。我主要介绍一下如何在windows系统上配置。
我的环境
win10 或者 win7 (都成功)
Anaconda3
python3.6
cuda10.1 update2!!!(我只尝试了update2,为什么使用它下文会解释)
pytorch1.4
配置过程
1. 数据准备
在根目录下新建data文件夹,data文件夹下新建 pretrained_model文件夹和VOCdevkit2007文件夹,前者用来存放下载下来的训练权重,后者存放官方VOC2007数据集,或者你自己用labelImg标注的数据集。这个权重模型一般不太好下载,我把网盘下载地址送上,不过我只使用了resnet101,所以链接也只有resnet101,需要使用其他权重的小伙伴去github链接下找。(链接:https://pan.baidu.com/s/1s8DptXAGizhVGP6AYfXzeQ 提取码:ort4 复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V1的分享)
2. 把数据集放进VOCdevkit2007文件夹下,名字为VOC2007
--data
----pretrained_model
-------resnet_caffe.pth
----VOCdevkit2007
-------VOC2007
3. 安装依赖包和pytorch1.4,这里的cuda版本是10.1
终端执行两行代码
conda install pytorch==1.4.0 torchvision==0.5.0 cudatoolkit=10.1 -c pytorch
pip install -r requirements.txt
4. 编译!!windows的小伙伴一定都死在了这步!ubuntu编译就很顺利,windos它不行啊!
cd lib
python setup.py build develop
终端执行这两行代码,报错。
error1
error: Microsoft Visual C++ 14.0 is required.
solution1
1安装 Visual C++ Build Tools 2015 并勾选Windows 10 SDK
2安装Visual Studio 2019并勾选使用C++的桌面开发,一定要勾选C++的桌面开发!
这里建议直接使用第二种方法,省事。这个解决方法是在*上有人提到的,还有一位大佬的博客。
error2
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe'
failed with exit status 2
solution2
使用solution1中的方法1解决。我没遇到过这个情况。
error3
C:/Users/Skaldak/FasterRCNN/lib/model/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/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(275):
error: no instance of overloaded function "std::min" matches the argument list
argument types are: (<error-type>, long)
C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(321):
error: no instance of function template "THCCeilDiv" matches the argument list
argument types are: (int64_t, long)
C:/Users/Skaldak/FasterRCNN/lib/model/csrc/cuda/ROIAlign_cuda.cu(321):
error: no instance of overloaded function "std::min" matches the argument list
argument types are: (<error-type>, long)
solution3
1修改 lib\model\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));
2修改 lib\model\csrc\cuda\ROIAlign_cuda.cu 第320行
// dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));
dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));
3修改 lib\model\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));
4修改 lib\model\csrc\cuda\ROIPool_cuda.cu 第176行
// dim3 grid(std::min(THCCeilDiv(grad.numel(), 512L), 4096L));
dim3 grid(std::min(((int)(grad.numel()) + 512 -1) / 512, 4096));
5删除 lib\build 下所有内容,再次
python setup.py build develop
出现:
Installed ......\lib
Processing dependencies for faster-rcnn==0.1
Finished processing dependencies for faster-rcnn==0.1
如上所示就说明编译完成了,强调一下,这部分不是我原创,感谢博主Skaldak提供的解决方案。
下来就可以尝试运行了
终端执行代码:
python trainval_net.py --dataset pascal_voc --net res101 --cuda
下来应该会报错一个关于pycocotools的错误,具体错误是啥记不清了,不要担心,很好解决
首先在终端执行
pip install pycocotools
然后lib文件下看到有个文件夹叫做pycocotools,把这个文件夹重新命名为其他名字。这里的目的是为了不让程序调用我们编译过的原代码的pycocotools,而是调用我们pip安装的pycocotools。
再次运行训练代码,如果顺利的话,代码应该可以顺利跑起来了。
想说的话
其实大家看一下我一直提到的那位博主的博客,会注意到评论区有人报错,错误内容为编译器要求为VS2013-2017版本的,而我们使用的是2019版本的。最开始我也遇到了这个问题。这是你的电脑环境问题,一定要使用cuda10.1 update2,或者叫做cuda10.1.243,cuda10.0的情况配不出来.如果查一下cuda10.0你会发现他是2018年发行的工具,使用VS2019自然会报错,要求你使用低版本的VS编译,而cuda10.1 update2 是2019年8月份发行的工具,所以VS2019可以顺利编译。这也是为什么我的这篇博客和Skaldak的内容很相似,我还是要写的原因,希望大家可以避开这个坑。只要使用cuda10.1和VS2019顺利编译以后,可以再把你的cuda版本换回去,比如我又换回了8.0版本去做其他工作。
冲冲冲!