Windows下py-Faster rcnn的编译及遇到的问题

7 篇文章 0 订阅
4 篇文章 0 订阅

参考

[1]Windows下faster-rcnn编译
[2]windows py-faster-rcnn配置
[3]Caffe: Faster-RCNN Python版本配置 (Windows)
[4]Windows-Py-Faster-rcnn

caffe

windows-caffe的编译参考我的上一篇博客,或是找其他。
在编译windows-caffe的时候有个小问题,默认是没有把roi_pooling层放进去编译的,这样的后果就是之后在运行pyfaster-rcnn网络的时候会出现Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer ROIPooling的问题。
把roi_pooling_layer.hpp , roi_pooling_layer.cpp , roi_pooling_layer.cu 添加到libcaffe项目的layer层下,具体步骤参照参考资料4.在添加完以后重新编译,最后编译出来的pycaffe的接口是在Build/x64/Release/pycaffe/caffe目录下。
具体参考如下:caffe,运行fast-rcnn出现Check failed: registry.count(type) == 1 (0 vs. 1) Unknown layer type: ROIPooling
编译完成后,python接口路径需要手动配置。设置环境变量PythonPath指向 \Build\x64\Release\pycaffe, 或者复制 \Build\x64\Release\pycaffe\caffe 到python_root\lib\site-packages.这里的python_root对应miniconda2。这样之后,在python中import caffe就会成功。

Faster rcnn

  1. 下载Faster rcnn的源码(地址为https://github.com/rbgirshick/py-faster-rcnn)。
  2. 下载github上的lib来替换原来Faster根目录下的lib文件夹: https://github.com/MrGF/py-faster-rcnn-windows
  3. 用命令行(CMD)到{Faster root} / lib ,然后执行

    1. python setup.py (cpu)
    2. python setup_cuda.py (GPU)
      其中,修改setup_cuda.py中的第33行为自己的cuda路径
      include_dirs = [numpy_include, 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0\\include']) 
  4. 至此,所需要的东西都编译好了,可以执行 python tools/demo.py了

遇到的相关错误

1. Python error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)

解决方案:http://blog.csdn.net/liwugang43210/article/details/50732920

2. ImportError: DLL load failed: 找不到指定的程序。

具体描述:

>>>import matplotlib.pyplot as plt
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\pyplot.py", line 29, in <module>
    import matplotlib.colorbar
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\colorbar.py", line 36, in <module>
    import matplotlib.contour as contour
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\contour.py", line 23, in <module>
    import matplotlib.text as text
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\text.py", line 33, in <module>
    from matplotlib.backend_bases import RendererBase
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\backend_bases.py", line 63, in <module>
    import matplotlib.textpath as textpath
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\textpath.py", line 20, in <module>
    from matplotlib.mathtext import MathTextParser
  File "C:\ProgramData\Anaconda2\lib\site-packages\matplotlib\mathtext.py", line 62, in <module>
    import matplotlib._png as _png
ImportError: DLL load failed: 找不到指定的程序。

解决方案:conda install libpng(注:一般都是什么模块没有装全,看具体错误,缺什么装什么。)

3. AttributeError: ‘ProposalLayer’ object has no attribute ‘param_str_’

解决方案:找到对应文件,修改param_str_为param_str ,完成编译。

4. KeyError: ‘1’

具体描述:

Traceback (most recent call last):
  File "demo.py", line 142, in <module>
    _, _= im_detect(net, im)
  File "D:\Windows+Caffe\py-faster-rcnn\tools\..\lib\fast_rcnn\test.py", line 154, in im_detect
    blobs_out = net.forward(**forward_kwargs)
  File "D:\Windows+Caffe\py-faster-rcnn\tools\..\caffe-fast-rcnn\python\caffe\pycaffe.py", line 121, in _Net_forward
    self._forward(start_ind, end_ind)
  File "D:\Windows+Caffe\py-faster-rcnn\tools\..\lib\rpn\proposal_layer.py", line 65, in forward
    pre_nms_topN  = cfg[cfg_key].RPN_PRE_NMS_TOP_N
KeyError: '1'

解决方案:
1. 暴力地将第64行改为cfg_key = ‘TEST’#str(self.phase), demo可以正常运行。
2. 直接做个判断,phase ==1 为 TEST 0则为TRAIN就可以了

if self.phase:
cfg_key = 'TEST'
else:
cfg_key = 'TRAIN'

注:python代码需要注意缩进,不然运行demo.py的时候会报错

IndentationError: unexpected indent
Traceback (most recent call last):
  File "demo.py", line 135, in <module>
    net = caffe.Net(prototxt, caffemodel, caffe.TEST)
SystemError: NULL result without error in PyObject_Call
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值