caffe下matlab、python的配置和faster RCNN的运行

46 篇文章 2 订阅
18 篇文章 0 订阅

因为自己的电脑没有安装linux环境,显卡也不支持CUDA,所以在实现faster RCNN的demo的过程中还是很麻烦的。

完善项目文件

下图是vs2013 打开的caffe解决方案的工程目录。由于windows版本caffe的不完善,要先在其libcaffe项目中添加roi_poling层的相关支持。(Fast R-CNN的ROIPooling层需要这个源文件编译)

具体做法是对cu&include&src下的layers右键,添加现有的项,分别添加的是roi_pooling_layer对应的.cu/.hpp/.cpp文件。其中.cu和.cpp文件在caffe安装根目录src/caffe/layers下。.hpp在include/caffe/layers下。

P.s:Caffe中的.cu文件,是交给nvcc编译的c++源文件,可以编译成cpu指令或者GPU指令。

修改属性表

在commonSettings.props中修改属性。为了配置caffe的接口,需要在属性表中把python版编译接口打开,并且指出anaconda2的路径。这两行分别在属性表的13行和第48行。

好几个博客都使用的是anaconda2的python安装包,而caffe中默认的是Miniconda2(仅包含conda和 Python)。Anaconda是一个开源的Python发行版本,其包含了conda、Python等180多个科学包及其依赖项,anaconda2对应Python2版本。对比之下,pycharm、spyder是IDE,可以调试,代码高亮,项目管理等。因为python是解释型的语言,pycharm在新建项目的时候就需要指定interpreter,而这个解释器就可以是anaconda下的python.exe。而在anaconda之中也集成了IDE:jupyter notebook。

清华大学镜像站下载anaconda,https://repo.continuum.io/archive/Anaconda2-4.2.0-Windows-x86_64.exe

(千万要下载支持python2.7的anaconda2,不然后面会遇到找不到python27.lib)去编译Release版本的pycaffe,好像如果编译Debug版本会出现python27_d.lib找不到什么的。

Matlab也一样,除了打开matlabsupport,还需要修改matlab.exe路径和mxGPUArray.h所在include路径。新版matlab的mxGPUArray.h位置改动了,可以将新位置放在includePath之中,也可以将头文件复制到默认的includePath处。

重新编译

在Build/x64/Release下得到pycaffe文件夹和 matcaffe文件夹。

Pycaffe:

Matcaffe:编译过程中遇到了头文件martix.h找不到的情况,把绝对路径include进去就好了。还遇到了无法打开libmx.lib的问题,在项目属性中添加库目录。

python中安装caffe包

将编译生成的pycaffe中的caffe文件夹拷贝到D:\Program Files\Anaconda2\Lib\site-packages中

在cmd中进入python命令行,然后import caffe,会出现下面问题


因为c++版本中生成的NugetPackages里面包含了依赖项opencv,protobuf等,而python版本还没有。解决办法是退出python,在cmd中conda install protobuf/pip install protobuf,安装成功之后重新import caffe,没有报错。

验证

使用的实例是Texture Synthesis with Convolutional Neural Networks这篇论文的代码,主要实现的是利用噪声生成一张真实图片。下载,解压github上的源码https://github.com/leongatys/DeepTextures

在cmd中cd到解压目录,输入jupyter notebook

可以在localhost:8888/中得到jupyter notebook,顾名思义,这是一个web型的交互式笔记本。显示当前文件夹中的文件。

点击example.ipynb,shift+enter逐步调试.

出现了python.exe停止运行等错误,中断发现应该是GPU不支持的问题,在cmd中的提示验证了这个猜想:

按照下面代码把模式改成CPU:

#if cpu mode we should not call,below 3 line of code is just for using GPU mode.
#gpu = 0
#caffe.set_mode_gpu()
#caffe.set_device(gpu)

在链接1中是将代码写在一个py文件中一次性运行,而且因为不是在解压文件目录下打开jupyter notebook,用了绝对路径。但是不管是分步运行还是一次性运行,都没有报错,都没有图像生成,理论上应该生成代码给的参考图像才对。现在还不知道怎么回事。

我怀疑是我除了anaconda2还安装了一个python,所以运行notebook的时候有两个kernels found,于是用pycharm新建了一个project,选择anaconda2下的python.exe作为interpreter,但是显示找不到caffe等:


Faster rcnn

Python版本的caffe和faster rcnn(链接3):

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

针对windows环境,替换py-faster-rcnn中的lib)https://github.com/MrGF/py-faster-rcnn-windows将其中的文件复制进py-faster-rcnn进行替换。

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

将Caffe根目录—Build文件夹下,找到生成的pycaffe,将其中的caffe文件夹整体复制到py-faster-rcnn根目录—caffe-fast-rcnn—python文件夹下。如果是用Download ZIP(因为我们已经有了Caffe-Microsoft),在py-faster-rcnn的caffe-faster-rcnn下单独创建python文件夹,再将生成的pycaffe下的caffe拷贝进来。官方推荐用命令递归下载,递归的意思是initialize submodules in the clone,自动初始化并更新仓库中的每一个子模块:

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

Matlab版本的caffe+faster rcnn(链接4)

按照参考操作就可以了,需要注意的是要下载的是matlab版本的faster rcnn,解压应该在faster-rcnn-master/experiment下。

需要针对cpu-only的环境修改代码。因为不用GPU,所以还需要选择网络较小的zf-5,而不是很大的VGG-16.这两个网络的model在output文件夹下面。

我遇到的问题是:

先是出现invalid mex-file,添加了vs的dll文件在m文件目录下,将build/x64/release路径添加到系统环境变量。

然后出现了load使用错误的原因,其实是model文件和测试图片的路径错了,按照提示改一下就好了。

下面是demo自带图像的测试结果:


Reference:

1.      下载anaconda2:https://www.cnblogs.com/billyzh/p/6307716.html

2.      Jupyter:https://blog.csdn.net/zb1165048017/article/details/52980102

3.      Py Faster RCNN:https://blog.csdn.net/u011185952/article/details/71079038

4.      Mat faster rcnn:https://blog.csdn.net/mr_curry/article/details/54745116

5.      翻墙获取faster_rcnn_models:https://blog.csdn.net/hongbin_xu/article/details/76100132

6.      修改setup.py到CPU:http://www.caffecn.cn/?/question/13


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值