您的位置:首页 > 其它

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

2018-01-16 10:09 1501 查看
参考

caffe

Faster rcnn

遇到的相关错误
Python error Microsoft Visual C 90 is required Unable to find vcvarsallbat

ImportError DLL load failed 找不到指定的程序

AttributeError ProposalLayer object has no attribute param_str_

KeyError 1

参考

[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

下载Faster rcnn的源码(地址为https://github.com/rbgirshick/py-faster-rcnn)。

下载github上的lib来替换原来Faster根目录下的lib文件夹: https://github.com/MrGF/py-faster-rcnn-windows

用命令行(CMD)到{Faster root} / lib ,然后执行

python setup.py (cpu)

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'])


至此,所需要的东西都编译好了,可以执行 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: