关闭

win7下py-faster-rcnn-master下跑通demo.py

标签: fasterrcnn
909人阅读 评论(3) 收藏 举报
分类:



最近一直在看RCNN相关的内容,看完论文就要实现一下。我的caffe一直用的是windows平台,而很多官方文档都是在linux底下操作的,所以只能求助各种大神(Linux菜鸟一枚。。。)。CSDN博客上大神特别多,他们写的很简单,我就掉进了很多坑,每次掉进去都感觉要爬不上来了。不过,功夫不负有心人,折腾了将近一周,终于跑通了demo。

在此,特别感谢rookie_cz,遇到的很多问题都是请教这位大神,帮了我很多。

平台:Win7
显卡:GTX960
python IDE: Anaconda2(2.7.11)
caffe安装包:Microsoft

下面,开始正文。
1 编译caffe
1.1 从微软的Github下载caffe-master,网址https://github.com/Microsoft/caffe,下载安装包。 这里写图片描述
在网页的下方有详细的安装说明。
这里写图片描述
我简单做了下翻译:
Requirements: Visual Studio 2013
Pre-Build Steps: 将.\windows\CommonSettings.props.example 复制重命名为 .\windows\CommonSettings.props,还是同一个文件夹底下。
这里写图片描述

如果电脑中没有GPU,可以通过调整.\windows \ CommonSettings.props 中的变量禁用CUDA和cuDNN,默认情况下是支持CUDA和cuDNN的。Python在默认情况下禁用,但也可以通过\ windows \ CommonSettings.props启用。Caffe需要的第三方依赖(用过happynear的caffe应该会知道大神自己攒了一个第三方库)关系通过NuGet自动解析。
CUDA
从NVIDIA官网下载自己显卡对应版本的CUDA,目前,除了1080,用的都是CUDA7.5。环境变量会自动添加,就是傻瓜式安装。如果没有GPU,可以在CommonSettings.props 将CpuOnlyBuild 设置为 true ,同时将set UseCuDNN to false.
cuDNN
Download cuDNN v4 or cuDNN v5 from nVidia website. 将下载的zip解压缩到%CUDA_PATH%(由CUDA安装程序设置的环境变量)或者,可以将zip解压缩到任何位置,然后CommonSettings.props.CuDnnPath处添加这个位置,我的解压位置在D:\**\software,cuda文件夹就是解压后的cuDNN。
这里写图片描述

这里写图片描述
Python
因为要使用python接口,我们在\ windows \ CommonSettings.props中将PythonSupport设置为true。微软推荐的是 从Miniconda网站下载Miniconda 2.7 64位Windows安装程序。我用的是Anaconda2,都可以。程序安装完后,会自动添加python的路径到环境变量中。同时,注意设置CommonSettings.props中python的路径。
这里写图片描述
另外,没有安装protobuf的,可以用pip install protobuf安装。
不用pip 安装的话,注意下载最新版本的,否则和caffe有兼容问题。
Build
双击.\windows\Caffe.sl打开caffe的VS工程,右键libcaffe重新生成,编译libcaffe。之后编译pycaffe,之后用的到。
Remark
编译完成后,设置 PythonPath 环境变量值为 \Build\x64\Release\pycaffe
或者复制 \Build\x64\Release\pycaffe\caffe 到\lib\site-packages.

2 编译py-faster-rcnn-master
2.1 下载py-faster-rcnn-master,网址:https://github.com/rbgirshick/py-faster-rcnn,直接点击下载后,下载的压缩文件解压后,里面的caffe-fast-rcnn是空的,所以要点进去下载后,然后解压到caffe-fast-rcnn文件中。
这里写图片描述

2.2 编译lib\setup.py,但这个setup是不能直接编译的。我用的是rookie_cz重新整理好的newsetup.py和setup_cuda.py,链接:http://blog.csdn.net/chenzhi1992/article/details/53374265
然后,直接cd到lib下面,执行 python newsetup.py install 和python setup_cuda.py install。如果遇到找不到cl.exe之类的问题,把cl.exe路径添加到环境变量中去就行了。
2.3 其实编译完之后就可以测试demo了,然而,呵呵。。。重点来了,运行demo的时候报错说找不到roi pooling layer。然后我就比较了一下caffe-root和rbg的caffe分支,发现\py-faster-rcnn-master\caffe-fast-rcnn\include\caffe底下多了个fast_rcnn_layers,这是roi和smooth L1的声明文件,然后别的都一样,真的是都一样啊。caffe-root的\src\caffe\layers底下有roi_pooling_layer.cpp/cu和smooth_l1_loss_layer.cpp/cu,这四个文件都有;然后\src\caffe\proto中caffe.proto文件中也有roi的注册,那些写博客要添加这些东西的大神们,让我抑郁了很久。然并卵,再次运行demo,还是找不到roi,然后我又郁闷了很久。时间过的好快,然后元旦我就出去玩了三天。
这里写图片描述
回来之后发现,一直忽略了VS工程中打开的libcaffe以及pycaffe,然后检查了一下libcaffe,果然,真想骂人!!工程中没有添加roi_pooling_layer.cpp和cu,smooth的cpp和cu倒是有。没办法了,把roi_pooling_layer.cpp和cu还有那个fast_rcnn_layers.hpp粘贴到工程中相应位置,然后重新编译caffe,编译的过程慢的不行不行的啊。。。。顺便重新编译下pycaffe,然后把生成的 \Build\x64\Release\pycaffe\caffe 复制到\lib\site-packages替换掉原来的caffe。这样基本上问题就解决了。测试demo.py结果如下:
这里写图片描述
此外还有一些我遇到的其他问题:
1 no module named _caffe
这是pycaffe没有编译好,重新编译一下。但是我有一次发现,faster-rcnn-master\caffe-fast-rcnn\python\caffe报错,no module named _caffe。我重新编译了之后还是有问题。然后我就把py-faster-rcnn-master\caffe-fast-rcnn\python\caffe用编译后的release\pycaffe\caffe替换,就可以了。
2 proposal_layer.py 中 pre_nms_topN = cfg[cfg_key].RPN_PRE_NMS_TOP_N, keyerror = 1
解决方法 :
进行如下修改
cfg_key = str(self.phase) # either ‘TRAIN’ or ‘TEST’
cfg_key = str(‘TRAIN’ if self.phase == 0 else ‘TEST’)
3 cannot import name set_random_seed
解决方法:参考https://github.com/BVLC/caffe/pull/4351/files#diff-9b973c3db5bcd89fc0a5e1977f7cd70aL57
4 最后再说一句,如果电脑上装了mingw,编译setup_cuda.py的时候可能会碰到g++的问题,我把ming卸载了就没问题了。

1
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1964次
    • 积分:83
    • 等级:
    • 排名:千里之外
    • 原创:2篇
    • 转载:1篇
    • 译文:0篇
    • 评论:3条
    文章存档
    最新评论