Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)

本来想用VS2015编译,结果发现太多问题,加之前期不熟练,走了很多弯路,最后还是重新安装了VS2013(与VS2105并存)然后进行编译才通过。写下了提供给和我一样在走弯路的人。

一、准备工作

1、caffe fast rcnn 最原始版本rbgirshick/caffe-fast-rcnn没有提供windows版本。国内的happynear做的windows版本很多人用了 Win764位)+VS2013+cuda7.5环境下搭建深度学习Caffe计算框架)、微软有一个分支Microsoft/caffe。

2、Caffe有最新的VS2015编译版本,但是不适用Fast RCNN 以及Faster RCNN ,我试图编译,测试介于才疏学浅没有成功。

3、下面的具体步骤参见Win764位)+VS2013+cuda7.5环境下搭建深度学习Caffe计算框架

4、下载caffe fast rcnn windows版本后解压到D:\Projects\Caffe_Fast_RCNN(以下以我的测试目录为例说明)

5、下载fast r-cnn 解压到D:\Projects\Fast_RCNN

6、下载安装Anaconda2到目录D:\Program Files\Anaconda2

7、第三方库http://pan.baidu.com/s/1bSzvKa,在源码的根目录下建立个D:\Projects\Caffe_Fast_RCNN\3rdparty文件夹,把文件解压进去就可以了(参见https://github.com/happynear/caffe-windows)

8、下载fast r-cnn所需的模型文件。http://pan.baidu.com/s/1kTzQYgR。下载完成后,请将3个文件夹放置在fast_rcnn_root/data中。


二、编译Caffe Fast RCNN

1、 在d:\Projects\Caffe_Fast_RCNN\build_cpu_only目录打开MainBuilder.sln,项目属性中修改pycaffe的配置属性,主要是python27对应的路径为D:\Program Files\Anaconda2,有二个地方,一个是C\C++常规中附加包含目录,另一个是链接器-->常规-->附件库目录。

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第1张图片Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第2张图片

2、 先编译caffelib,然后编译pycaffe

3、 在编译pycaffe之前需要执行D:\Projects\Caffe_Fast_RCNN\src\caffe\proto\extract_proto.bat,生成protobuffer接口代码,批处理文件来生成caffe.pb.hcaffe.pb.cc两个c++文件,和caffe_pb2.py

编译后会出现错误提示,提示错误无法解析的外部符号 "__declspec(dllimport) unsigned int __cdeclgoogle::ParseCommandLineFlags

将pycaffe项目属性中gflags.lib修改为libgflags.lib,因为VC用的是libgflags.lib

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第3张图片

4、编译完成后, 将Caffe_Fast_RCNN(根目录)下的python复制到 D:\Projects\Fast_RCNN\caffe-fast-rcnn下,实际上是编译好的_caffe.pyd,caffe python接口DLL文件复制到fast rcnn中。

5、编译fast rcnn, 打开cmd,定位至fast_rcnn_root/lib目录中,执行python setup.py install

提示错误

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第4张图片

VS2013,在CMD窗口执行 SETVS90COMNTOOLS=%VS120COMNTOOLS%

继续执行,出错

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第5张图片

按http://blog.csdn.net/houwenbin1986/article/details/52495304修改

用文本编辑器打开 fast_rcnn_root/lib/setup.py ,将第 18 行和 23 行的   "-Wno-cpp", "-Wno-unused-function" 指令删除,只留下空的中括号 [] 即可。

编译fast rcnn 完成

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第6张图片

fast rcnn setup.py安装完成后,到D:\Program Files\Anaconda2/Lib/site-packages/utils中可以找到两个文件cython_bbox.pydcython_nms.pyd,把这两个文件复制到D:\Projects\fast_rcnn_root/lib/utils中。

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第7张图片


三、demo执行

1、cmd窗口进入D:\Projects\Fast_RCNN,然后执行 python tools\demo.py --cpu

2、出现错误

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第8张图片

_Caffe.pyd需要调用dll的文件路径没有设置正确。第三方库http://pan.baidu.com/s/1bSzvKa下载后,解压到 D:\Projects\Fast_RCNN\3rdparty/bin,此文件夹添加到环境变量的PATH(计算机>>属性>>高级系统设置>>系统属性>>环境变量),这样才能让程序找到这些第三方库的dll在第三方库包中还提供了openblas的库文件。参见(http://blog.csdn.net/u011511601/article/details/51205974

注意:如果执行还是提示错误,需要将cmd窗口关闭,重新打开。Path才起作用


3、 继续执行demo出现错误

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第9张图片

ValueError: Buffer dtype mismatch, expectedint_t but got long long

 用文本编辑器打开fast_rcnn_root/lib/utils/nms.pyx,将第25行的np.int_t修改为np.intp_t。参见(http://blog.csdn.net/chenzhi1992/article/details/52618386)


4、终于出结果了

Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第10张图片Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only)_第11张图片



其他错误参见 windows 下跑python版subcnn和 faster rcnn



2017-03-15 补充

运行测试成功后,换了一台机器,总是出问题。好歹找到原来版本。下面发送给大家参考。

caffe (fast rcnn vs2013编译通过) 链接: http://pan.baidu.com/s/1slDAULZ 密码: vubc 

fast rcnn 链接: http://pan.baidu.com/s/1cjDxbK 密码: w6qf


解压后,配置路径就可以测试

(注意:python 我用的Anaconda2,protobuf 直接使用pip install protobuf 安装3.2版本,3.1也可以。2.6.1不行)

(另外 happynear 最近出了VS2015版本,我没有测试。)











你可能感兴趣的:(Windows 下(VS2013)编译 Caffe Fast RCNN (CPU Only))