参考
[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