Caffe: Faster-RCNN Python版本配置 (Windows)

来源:互联网 发布:孙悟空 知乎 编辑:程序博客网 时间:2024/05/20 23:55

环境:VS2013,CUDA8.0,CuDNN 5.0,Win10/7,Anaconda

一、准备工作

1. 添加VS的cl.exe所在路径至环境变量

VS的安装路径下有一个VC文件夹,将其中的bin目录添加值环境变量(该目录下有cl.exe),路径参考如下:

D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin

如未正确添加后续步骤将出现 TypeError: object of type ‘NoneType’ has no len() 错误。

2. 下载Caffe-Microsoft并添加roi_poling_layer后正确编译

下载地址:https://github.com/Microsoft/caffe 
由于windows版本caffe的不完善,要先在libcaffe项目中添加roi_poling层的相关支持。具体操作如下:

在libcaffe项目下的 cu—layers 文件夹右击,添加——现有项,找到 caffe根目录—src—caffe—layers下,添加roi_pooling_layer.cu

添加现有项

路径示例:

这里写图片描述

同理,在libcaffe项目下的 src—layers 添加roi_polling_layer.cpp; 
(所在路径:caffe根目录—src—caffe—layers)

在libcaffe项目下 include—layers添加roi_pooling_layer.hpp。 
(所在路径:caffe根目录—include—caffe—layers)

记得在配置中开启python版编译,然后生成caffe。具体步骤可参考这里,生成成功则大功告成。

error MSB4062: 未能从程序集 …… 加载任务“NuGetPackageOverlay”。

如果你之前生成过windows版caffe,在添加roi_pooling支持后重新生成时,很可能会碰到error MSB4062错误。我的解决方案如下:

(1)将caffe根目录下的Build文件夹整个删除; 
(2)右键 解决方案caffe —清理解决方案; 
(3)重新生成。

另:网上有说是CuDNN 5.0 与 CUDA8.0 兼容问题的,也有说是Nuget中opencv更新至2.4.11问题的(默认为2.4.10),我个人的尝试是——不好使 = =。我在两个配置过caffe的机器上都出现了error MSB4062,均为CUDA 8.0+CuDNN 5.0,一个Win7一个Win10,最终都是重新生成得以解决。

二、配置Faster-RCNN

1. 配置windows版的py-faster-rcnn

下载py-faster-rcnn,地址:https://github.com/rbgirshick/py-faster-rcnn

由于上述版本中的python都是基于linux环境编写的,windows运行需要进行改动。好在有人已经完成了相关工作:

再下载py-faster-rcnn-windows,地址:https://github.com/MrGF/py-faster-rcnn-windows 
将其中的文件复制进py-faster-rcnn进行替换。

替换后,在py-faster-rcnn根目录—lib—rpn路径下,编辑proposal_layer.py:

(1)将其中的 param_str_ 替换为 param_str。 
(2)将

cfg_key = str(self.phase)
  • 1

替换为

cfg_key = str('TRAIN' if self.phase == 0 else 'TEST')
  • 1

2. 拷入生成的Caffe

将Caffe根目录—Build文件夹下,找到生成的pycaffe,将其中的caffe文件夹整体复制到py-faster-rcnn根目录—caffe-fast-rcnn—python文件夹下。我生成的caffe是Release版本,如图:

这里写图片描述

复制到:

这里写图片描述

注:官方推荐用命令

git clone --recursive https://github.com/rbgirshick/py-faster-rcnn.git
  • 1

下载py-faster-rcnn,如果用Download ZIP(因为我们已经有了Caffe-Microsoft),在py-faster-rcnn的caffe-faster-rcnn下单独创建python文件夹,再将生成的pycaffe下的caffe拷贝进来,实测也能够完成demo生成。

3. 客制化修改与setup

根据本机的CUDA环境,修改py-faster-rcnn—lib路径下的setup_cuda.py:

(1)第14行

'-arch=sm_35'
  • 1

修改为本机显卡的计算能力,具体查询Nvida官网。 
(2)第33行

include_dirs = [numpy_include, 'C:\\Programming\\CUDA\\v7.5\\include'])
  • 1

修改为本机的CUDA-include环境,比如我的路径是:

include_dirs = [numpy_include, 'C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v8.0\\include'])
  • 1

此时可以CMD打开至py-faster-rcnn\lib路径下,运行命令:

python setup.py installpython setup.py build_ext --inplacepython setup_cuda.py install
  • 1
  • 2
  • 3

假如出现缺少某些依赖项或cv2.pyd (opencv) 的情况,用pip install命令安装或网上搜索相关配置方法即可,pip用法示例:

pip install easydict
  • 1

成功状态如图:

这里写图片描述

4. 运行demo

官方要求我们运行py-faster-rcnn\data\scripts下的fetch_faster_rcnn_models.sh进行model下载,实际直接下载该链接:https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz

下载完成后,解压文件夹至py-faster-rcnn\data目录下,如图:

这里写图片描述

CMD到达py-faster-rcnn\tools路径下,我的环境是VS2013,运行:

SET VS90COMNTOOLS=%VS120COMNTOOLS%python demo.py
  • 1
  • 2

其它如VS2012 就改为SET VS90COMNTOOLS=%VS110COMNTOOLS%,出问题就是VS的锅 = =。

这里写图片描述

Windows-Caffe,真不容易= =

转载请标明出处:http://blog.csdn.net/u011185952/article/details/71079038

参考博文:http://blog.csdn.net/chenzhi1992/article/details/52618386