本来想用VS2015编译,结果发现太多问题,加之前期不熟练,走了很多弯路,最后还是重新安装了VS2013(与VS2105并存)然后进行编译才通过。写下了提供给和我一样在走弯路的人。
一、准备工作
1、caffe fast rcnn 最原始版本rbgirshick/caffe-fast-rcnn,没有提供windows版本。国内的happynear做的windows版本,很多人用了( Win7(64位)+VS2013+cuda7.5环境下搭建深度学习Caffe计算框架)、微软有一个分支Microsoft/caffe。
2、Caffe有最新的VS2015编译版本,但是不适用Fast RCNN 以及Faster RCNN ,我试图编译,测试介于才疏学浅没有成功。
3、下面的具体步骤参见Win7(64位)+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++常规中附加包含目录,另一个是链接器-->常规-->附件库目录。
2、 先编译caffelib,然后编译pycaffe
3、 在编译pycaffe之前需要执行D:\Projects\Caffe_Fast_RCNN\src\caffe\proto\extract_proto.bat,生成protobuffer接口代码,批处理文件来生成caffe.pb.h
和caffe.pb.cc
两个c++文件,和caffe_pb2.py
编译后会出现错误提示,提示错误无法解析的外部符号 "__declspec(dllimport) unsigned int __cdeclgoogle::ParseCommandLineFlags
将pycaffe项目属性中gflags.lib修改为libgflags.lib,因为VC用的是libgflags.lib4、编译完成后, 将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
。
提示错误
VS2013,在CMD窗口执行 SETVS90COMNTOOLS=%VS120COMNTOOLS%
继续执行,出错
按http://blog.csdn.net/houwenbin1986/article/details/52495304修改
用文本编辑器打开fast_rcnn_root/lib/setup.py
,将第
18
行和
23
行的
"-Wno-cpp", "-Wno-unused-function"
指令删除,只留下空的中括号
[]
即可。
编译fast rcnn 完成
fast rcnn setup.py安装完成后,到
中可以找到两个文件D:\Program Files\Anaconda2/Lib/site-packages/utils
cython_bbox.pyd
和cython_nms.pyd
,把这两个文件复制到D:\Projects\fast_rcnn_root/lib/utils
中。
三、demo执行
1、cmd窗口进入D:\Projects\Fast_RCNN,然后执行 python tools\demo.py --cpu
2、出现错误
_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出现错误
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 下跑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版本,我没有测试。)