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

因为自己的电脑没有安装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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/493702.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Innodb 表空间卸载、迁移、装载

从MySQL的Innodb特性中我们知道,Inndob的表空间有共享和独享的特点,如果是共享的。则默认会把表空间存放在一个文件中(ibdata1),当开启独享表空间参数Innodb_file_per_table时,会为每个Innodb表创建一个.ib…

马化腾与中国知名科学家联手发起“科学探索奖”

来源:腾讯今日,公布一件大事情:腾讯基金会将投入10亿元人民币的启动资金资助“科学探索奖”,每年将在基础科学和前沿核心技术方面的九大领域,遴选出50名青年科技工作者。获奖人年龄上限为45岁,且每位获奖者…

转:DP和HDP

Dirichlet Process and Hierarchical Dirichlet Process 原文:http://hi.baidu.com/zentopus/item/46a622f5ef13e4c5a835a28e Dirichlet Process and Hierarchical Dirichlet Process 在这篇文章里,我会初步地介绍Dirichlet Process以及Hierarchical Dir…

摩尔定律的三种走向

来源:科学网中兴事件以来,中国集成电路行业的发展受到全国人民的关注。许多人群情激奋,恨不得马上自力更生,赶上先进。也有一些人认为现在的世界经济是一个综合体,一个国家不可能样样领先,需要时日。正好&a…

李航《统计学习方法》笔记

虽然书名是统计学习,但是却是机器学习领域中和重要的一本参考书。当前的机器学习中机器指计算机,但是所运用的方法和知识是基于数据(对象)的统计和概率知识,建立一个模型,从而对未来的数据进行预测和分析&a…

【2018第五届世界互联网大会】世界互联网领先科技成果发布:带你看看这15项“黑科技”...

世界互联网领先科技成果发布现场。来源:央视网11月7日,第五届世界互联网大会“世界互联网领先科技成果发布活动”在浙江乌镇举行。这是世界互联网大会第三次面向全球发布领先科技成果。发布活动由中国工程院院士、中国互联网协会理事长邬贺铨主持&#x…

利用caffe的python接口实现DeepImageSynthesis实例

在之前实现faster rcnn的博客中,先是配置了caffe的python接口,但是在验证的时候用DeepTexture的实例没有成功。改用pycharm而不是jupyter notebook再试一试,毕竟在IDE中更好调试。 新建工程,选择anaconda2作为解释器,因…

深度:语音技术革命正在改变人类的交流方式

来源:资本实验室语言是我们日常交流的主要方式,可以让我们快速了解对方的意图,并做出适当的反应。但对很多语言障碍者而言,说话这一看似简单的行为依旧是难以想象的困难。语言是件极其复杂的事情,不仅仅是文字表面上的…

李航《统计学习方法》---感知机

这一章就讲了感知机。我觉得是深受工业革命的影响,把一些可以实现功能的基本单元都喜欢叫做什么机,这里的感知机,还有后来的以感知机为基础的支持向量机。直接看定义,看本质,实际上,感知机是一种线性分类模…

5G 对无线通讯芯片产业链的影响

来源:乐晴智库精选▌无线通信芯片概要:未来五年增速放缓,射频前端成为主要驱动力在智能手机普及的带动下,2012-2017五年无线通信芯片实现9.7%的复合增长率,根据iHS的数据,2017年市场规模达到1,322亿美金,占…

图像极坐标变换的研究

做图像配准的时候,发现图像进行旋转的情况下的配准有一些特殊。于是想到可以用极坐标进行配准。查了一下资料,发现大家用的更多的是对数极坐标Log Polar。 笛卡尔坐标系和极坐标系 先来说一下我们常用的笛卡尔坐标。X轴水平向右是正方向,y轴垂…

刚刚、Gartner发布物联网技术十大战略和趋势

来源:网络大数据Gartner的研究副总裁尼克•琼斯(Nick Jones)说:“物联网将在未来十年继续为数字化业务创新带来新的机遇,而许多新机遇有赖于新的或经过改进的技术。洞察创新物联网趋势的CIO们有机会领导本企业的数字化创新。”此外&#xff0…

图像的旋转和尺度缩放在对数极坐标系下的研究

首先来看一张特殊的同心圆图像及其极坐标变换:这是我自己在opencv下用cvLogPolar函数做的实验:极坐标原点选择在同心圆圆心时,同一个圆上的点到圆心的距离相等,所以映射在极坐标中应该是一组垂直于极轴的平行线。在自己的实验中因…

李航《统计学习方法》-----支持向量机

书中第七章才是支持向量机SVM,但在SVM与感知机有相似的地方,看了感知机的知识之后趁热先看看SVM。 首先回顾一下感知机。感知机的模型是线性分类模型,将两种类别标记为正负1,将新的样本输入线性函数,再将线性函数代入符…

乌镇互联网大会发布15项世界领先科技成果

来源:中央广电总台央视新闻客户端11月7日下午,第五届世界互联网大会“世界互联网领先科技成果发布活动”在乌镇互联网国际会展中心举行。大会共现场发布了15项世界互联网领域领先的“黑科技”,引得观众阵阵惊叹。15项世界互联网领先科技成果&…

OpenCV中的傅里叶的门道

接触到傅里叶-梅林算法,需要用到傅里叶变换,于是去查了一下OpenCV中的实现方法,没想到习以为常的傅里叶变换之中的门道还不少。 //傅里叶变换https://blog.csdn.net/keith_bb/article/details/53389819Mat I imread("Lena.jpg", I…

Science:人类迎来目前最为全面的癌症染色质可及性图谱

来源:吴晓波频道摘要:肿瘤在世界范围内导致人类死亡的首要原因之一,尤其是随着医疗水平的发展,人类的寿命的不断延长,癌症逐渐成为威胁人类健康的首要因素。肿瘤在世界范围内导致人类死亡的首要原因之一,尤…

傅里叶变换频谱的可视化保存

在上一篇关于傅里叶变换的博客中,知道了imshow的一个小trick:对normalize得到的0~1之间的浮点数构成的矩阵会进行放大255的操作,得到可视化的灰度图。即便是在python中也是如此操作的,只不过python中的函数封装得更加严密&#xf…

她取代马斯克成特斯拉新董事长 究竟什么来头?

来源:智车科技摘要:就如乔布斯之于苹果,对很多人来说,马斯克对特斯拉而言也有非凡的意义。甚至可以说,特斯拉的品牌吸引力很大程度上来自于“钢铁侠”本人。但由于当初任性发布“私有化”消息,被美国证交会…

十二天深入理解计算机系统(一)

计算机系统漫游 1 信息就是位上下文 系统中所有的信息都是由一串位表示的,在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符串或者机器指令。 2 文本文件和二进制文件 有ASCII字符构成的文件称为文本文件,所有其他文件都是…