关键字:Windows、cpu模式、Python、faster-rcnn、demo.py

声明:原文发表在博客园,未经允许不得转载!!!本篇blog过程已经多名读者实践验证,有人反馈报错TypeError:‘None Type‘ object has no attribute _getitem_‘,但拿本人编译好的文件可以跑通,对于此问题我没去探究,评论区给出了解决办法(nms函数cpu参数false改为true)。blog中除提到的下载链接外我还会给出网盘链接方便下载(链接失效,本人百度云上传次数受限无法再上传),包括我的整个工程的网盘链接。如果有些报错解决不了可直接拿本人的相关文件替换,本篇blog具有较高的参考性。

本人微软版caffe工程     下载链接:http://pan.baidu.com/s/1o83DIl0 提取密码:60zg

本人py-faster-rcnn工程    下载链接:http://pan.baidu.com/s/1bpjby2N 提取密码:t8aj

起因:导师交待目标检测有关论文的阅读任务,建议我跑下demo.py(一个测试小程序,可以读入图片及相关网络模型,进而对图片进行目标检测)。但是,我这个小白哪会啊?之前配置caffe环境电脑蓝屏重装系统后就一直不敢再装,后续实验都是在实验室有gpu的工作站上进行的。这次跃跃一试,本来配置的是gpu模式,到最后一步时,报了与cuda相关的错,后来查询电脑计算能力低于cudnn的最低要求,果断放弃gpu模式,转投cpu模式。但是网上真的没有教程啊,或者说只有那种极其简略的教程,debug也欲哭无泪,因为我源码没看多少。为避免后来人少走弯路,我着手写了这篇博客。本篇博客建立在作者没读过源码的基础上,所以很多解释都是较为粗糙但是实用的,我们的目标只有一个:Windows下用cpu模式跑通demo.py。实际上很多人不建议我用cpu跑,伤机器,可苦了我的ThinkPad e431。当初买电脑因为不玩游戏,所以买商务本,现在表示很后悔!

经过:经过?很痛苦、很痛苦、很痛苦,尤其是对一个啥也不会的小白来说更痛苦。不过在此过程中,有负责任的导师的帮助,还有幸遇到一个同济大神,他教会我很多东西!仅以此blog向他们致以崇高的敬意!

结果:当然是配好了gpu环境后发现自己显卡计算能力不够(配置gpu环境本篇不涉及,基本与cpu环境配置过程一致,只是要装cuda、cudnn以及修改一些配置信息),所以重新配置了cpu环境并跑通了demo.py。

特别感谢:俊杰哥(不想暴露他的信息)、导师、不染(QQ名)、rookie_cz(虽然他没教我什么,向他求助也不回我,但他的blog很有分量,略表感谢)。

适用对象:电脑上一切空白,没搭过caffe环境的人,py-faster -rcnn从零开始的人。

一、  准备工作

下载Anaconda2、visual studio 2013、opencv库以及notepad++

(1)下载Anaconda2.7(注意一定是2.7版本的,faster rcnn只支持Python 2.7)

下载链接:http://pan.baidu.com/s/1c11GaWC 提取密码:ak6q

本人安装了Anaconda windowsX64 2.7版本来配置python,安装Anaconda2后需要下载必要的python库,之所以选择Anaconda是因为它在安装时会自动安装一些必要的计算库。傻瓜式安装过程,为便于叙述的一致性,建议读者与我放在相同的路径下:D:\。

安装完成后按理说是会自动将Anaconda2中Python.exe的路径添加到系统环境变量中,最好是检查一下,至于怎么添加系统环境变量路径,我也是百度解决的。看了path,果然是自动添加的。

Anaconda安装完成后,打开cmd联网状态下敲入pip install protobuf回车再敲入pip install easydict回车,如图所示,联网状态下下载两个依赖包。如果这时敲pip list,可以看到机器所装的依赖包。因为我已经装过一遍,所以会有如下staisfied显示。

(2)下载visual studio 2013 文件太大,不提供网盘链接了,相信程序猿们一般都会下载,求助一个问题,怎么把vs2013的背景色由黑色变成白色,导师遇到了这个困惑。知道的同学麻烦留言。

(3)下载opencv图形图像处理库2.4版本

安装Opencv参考链接: http://www.cnblogs.com/chensheng-zhou/p/4895332.html

下载链接:http://pan.baidu.com/s/1jIdx6su 提取密码:a69d

我是放在了D:\中,把D:\opencv\opencv\build\python\2.7\x64目录下的cv2.pyd复制到D:\Anaconda2\Lib\site-packages目录下供后面调用。

(4)下载notepad++

下载链接:http://pan.baidu.com/s/1kV0wbav 提取密码:ozy7

一种文本编辑器,方便看打开文件的代码,傻瓜式安装。

二、  配置caffe环境 (cpu模式以及Python接口)

配置参考链接

http://blog.csdn.net/xierhacker/article/details/51834563 http://www.cnblogs.com/LaplaceAkuir/p/6445189.html

由于我配置的是cpu环境,与它的大体过程差不多,但这两篇blog是网上为数不多讲的比较清楚的配置caffe环境文章,贴出来仅供参考,具体以以下操作步骤为准。

下载微软版的caffe,编译时它会自动在联网状态下下载第三方库,操作起来相对简单,这正是不选其他版本caffe的原因,下载链接:https://github.com/Microsoft/caffe

下载链接:http://pan.baidu.com/s/1kVDntFh 提取密码:ff5n

打开网址页面如下,选择右上角clone or download-----dowmload zip下载caffe压缩包至电脑并解压,这里提醒一下,解压路径中最好不要有中文,比如我就放在E:\deep learning如图所示,解压后得到caffe—master文件夹。可以先无视我文件夹中的其他一些文件,比如cuda,实际上最后我也没用cuda,,至于原因前面已经提到过。

打开caffe-master文件夹,看到一个windows文件夹,打开windows文件夹,看到里面一个CommonSettings.props.example文件,复制一个副本,并改名字为CommonSettings.props,同时保留这两个文件(我发现好像编译caffe后CommonSettings.props.example文件貌似会消失,这里改主要是为了能使VS2013能识别,如图,前面加了了扳手图标)点进去修改一下配置信息,打开如下图,这里注意修改以下几个地方:(其他地方和我不一样可以先不用管)

第七行:  <CpuOnlyBuild>true</CpuOnlyBuild>    采用cpuonly模式

第八行:  <UseCuDNN>false</UseCuDNN>           不使用cudnn(与cuda加速深度学习的)

第十三行: <PythonSupport>true</PythonSupport>  编译Python接口需要打开

第四十八行:<PythonDir>D:\Anaconda2</PythonDir>  Python路径,建议放这保持一致

修改后保存、保存、保存

然后打开E:\deep learning\caffe-master,在此路径下找到Makefile.config.example文件,复制粘贴一个副本,并将名字修改为Makefile.config,这时同样看到一个小扳手图标。如图所示,点进去修改两个地方:

第八行: CPU_ONLY := 1       去掉#,文件本身这句是用#注释掉了

第八十七行:WITH_PYTHON_LAYER := 1  去掉#,文件本身这句是用#注释掉了

(by the way,如果觉得第多少行什么的不方便,建议用notepad++文本编辑器打开文件,如图可以显示行数) 修改后,保存、保存、保存。

打开caffe-master/windows/caffe.sln

在解决方案中找到libcaffe,右键点击“设为启动项目(A)”

在菜单栏找到调试—libcaffe属性,项目选择活动(released)、活动(x64)模式,修改libcaffe的C++常规设置,将警告视为错误选择否,如图所示。

设置完毕后即可开始编译了(如果只是为了跑通demo请先看三在libcaffe中添加三个文件),注意在联网状态下编译,这时会出现Nuget(第三方库)还原管理界面,结束后会在caffe-master的同级目录下生成一个NugetPackages的目录,装的是各种依赖库。

编译时间很长,耐心等待后没有报错就表明libcaffe编译完成了。然后在解决方案中找到pycaffe设为启动项目后进行上述相同的设置后编译。编译完成可能会报很多警告,只要不是错误就好了。

最后右键点击解决方案,点击重新生成解决方案,注意看是否是release模式

经过漫长的等待就会编译完毕,编译完成后,会得到一个bulid文件夹,如果你有图示的这些文件说明你上述编译成功了,注意看我下图的路径中的文件是否具备。

报错与解决:这块的报错我遇到过,一般会提醒某些格式错,用notepad++打开重新保存也许就可以解决了,主要是因为编码\n的问题。一般的错误百度基本都能找到解决办法。另外如果实在解决不了,那就按上述步骤重新编译一遍。

三、  faster-rcnn配置

配置参考链接:

http://blog.csdn.net/yueyuecsdn/article/details/53995383?winzoom=1

本来不打算把一、二分开写的,但考虑到任务不同,有的用caffe框架的任务不需要下述操作,所以还是分开写吧。如果是仅为了跑通py-faster-rcnn的demo.py可以在上述二中编译libcaffe前加入以下三个文件cu、cpp、hpp。

由于faster-rcnn中使用了roi-pooling-layer层,而微软版本编译时并未添加roi_pooling_layer,所以我们需要将hpp头文件、cu文件和cpp文件手动加入到libcaffe中。

具体操作:在caffe.sln的解决方案中找到libcaffe它目录下的cu-layers右键点添加-现有项,在E:\deep learning\caffe-master\src\caffe\layers中找到roi_pooling_layer.cu点添加。同样地,在libcaffe它目录下的include-layers右键点添加-现有项,在E:\deep learning\caffe-master\include\caffe\layers 中找到roi_pooling_layer.hpp点添加。最后,在在libcaffe它目录下的src-layers右键点添加-现有项,在E:\deep learning\caffe-master\src\caffe\layers中找到roi_pooling_layer.cpp点添加。

添加完成后,按照二中的说明编译libcaffe、pycaffe以及整个解决方案。

按照上述二、三过程,运行demo.py所需的环境基本上已经搭好了。以上如果出现了什么错,可以尝试重新生成试下,重新生成之前可以在VS2013菜单栏找到生成-清理解决方案点击,有时就是这么奇怪,重新生成就好了。

四、  跑通demo.py

参考链接:

http://blog.csdn.net/yueyuecsdn/article/details/53995383?winzoom=1

http://blog.csdn.net/chenzhi1992/article/details/53374265

将刚才编译好的E:\deep learning\caffe-master\Build\x64\Release\pycaffe目录下的caffe文件夹拷到D:\Anaconda2\Lib\site-packages目录下。

cmd命令行中敲入命令如图所示,如果结果如图所示显示>>>,说明Python接口已经搭好了。

下载py-faster-rcnn-master,链接:https://github.com/rbgirshick/py-faster-rcnn,打开网址页面如下,右上角clone or download下点击download zip下载压缩包后解压到电脑上,打开文件会发现py-faster-rcnn-master的caffe-fast-rcnn文件是空的,所以需要再点进去单独下载caffe-fast-rcnn然后解压到caffe-fast-rcnn文件夹,如图。

下载链接:http://pan.baidu.com/s/1jHDFeNc 提取密码:lpbc

下载链接:http://pan.baidu.com/s/1c2tiKDU 提取密码:oal1

下载好py-faster-rcnn-master,用E:\deep learning\caffe-master\Build\x64\Release\pycaffe目录下的caffe文件夹替换E:\deep learning\py-faster-rcnn-master\caffe-fast-rcnn\python目录下的caffe文件夹。

编译E:\deep learning\py-faster-rcnn-master\lib\setup.py,但这个setup是不能直接编译的。我用的是rookie_cz重新整理好的newsetup.py和setup_cuda.py下载后放到lib下。

下载链接:http://pan.baidu.com/s/1c1Ugq7u 提取密码:2dis

具体操作为:首先在电脑中搜索cl.exe的路径,将其路径添加到环境变量中(添加环境变量步骤请百度)。cl.exe在VS2013路径下:D:\vs2013\VC\bin,如图我把该路径添加到path中。

如果没有将cl.exe路径添加到环境变量中,就会报下面这个错。

然后在cmd中直接cd到lib下面,执行 python newsetup.py install 和python setup_cuda.py install,如图。

可能执行过程中会报错,以执行 python newsetup.py install为例,可能会出现如图所示的错误。

这时只需要接着报错error在cmd中敲SET VS90COMNTOOLS=%VS120COMNTOOLS% (如果用的是vs2013),敲完这句回车,继续敲python newsetup.py install,应该就没问题了。同样地,接着敲python setup_cuda.py install。执行这句可能会遇到下面这个错,只需下载一个lib文件夹来替换,用lib下的nms文件夹直接替换你的E:\deep learning\py-faster-rcnn-master\lib 目录下nms文件夹就行了,替换后重新python setup_cuda.py install。

下载链接:http://pan.baidu.com/s/1hrNm8te 提取密码:1ucz

两个py文件正确install的结果如图所示。

编译完成后,将经过上述编译两个py文件后产生的两个后缀为.pyd的文件在E:\deep learning\py-faster-rcnn-master\lib\build\lib.win-amd64-2.7\nms目录下复制拷到E:\deep learning\py-faster-rcnn-master\lib\nms中。(最佳的方法你直接用我的nms文件替换你的,可以省略很多步骤)

下载caffemodel(里面包括VGG网络和ZF网络训练好了的参数)解压到E:\deep learning\py-faster-rcnn-master\data目录下。

下载链接:http://pan.baidu.com/s/1kUYBIth 提取密码:qs85

以上过程可能会遇上我blog里未给出的错误,如果按照我的过程做,应该是不会遇到一些典型错误的,如果真的遇到有两种解决办法:一是百度,二是参考我给出的几条blog链接。

在跑demo之前还需要改几个地方防止它以gpu模式运行:

1.E:\deep learning\py-faster-rcnn-master\lib\fast_rcnn目录下nms_wrapper.py文件改成下面如图,主要是注释了几行,第9、17、18、19行。

2.E:\deep learning\py-faster-rcnn-master\tools目录下demo.py文件改成如图,注释了几个地方,另外做了部分修改。(建议可以直接替换我工程里的demo.py)

3.E:\deep learning\py-faster-rcnn-master\lib\rpn目录下proposal_layer.py文件修改第26行,将后面括号中的变量self.param_str_最后一个_去掉。

这里如果不改会报下面如图这个错。

E:\deep learning\py-faster-rcnn-master\lib\rpn目录下proposal_layer.py文件修改64—69行,改成我这个样子,恒定取值。如果觉得麻烦可以去我的工程里直接替换这个文件,貌似这步我改复杂了,可以百度参考一些blog。

如果不作这步修改,可能出现以下如图错误。

4.E:\deep learning\py-faster-rcnn-master\lib\nms目录下cpu_nms.pyx修改第25行,我是把第25行注释了,所以是第26行。将np.int_t改成np.intp_t保存,还是要觉得不妥直接替换我的工程就行了。我个人强烈建议在前面就用我工程的nms文件来替换你的,这样关于nms文件夹内很多文件修改都不用做了。如果没有用我的nms文件夹替换,在修改cpu_nms.pyx文件后需要重新执行python newsetup.py install和python setup_cuda.py install

如果不作这步修改,可能会报如图以下错误。

这时如果上述操作没问题,就可以跑了,首先cmd中cd到demo.py所在的文件夹E:\deep learning\py-faster-rcnn-master\tools

加载过程会比较慢的,耐心等吧,而且特别伤cpu。

跑成功的截图如图所示:

结语:写这篇blog花了我几天时间,本来准备用CSDN发表博客,但用过CSDN的人应该清楚我不用它的原因,因为有图CSDN插图太复杂。人生的第一篇blog教程,主要还是为了让大家避免走弯路。大家如果觉得有用,看完后心中默念:祝作者家庭幸福、学习进步、生活如意、爱情快来! 哈哈,接受大家的祝福我会很happy的。

Windows下用cpu模式跑通目标检测py-faster-rcnn 的demo.py的更多相关文章

  1. 如何在Windows下用cpu模式跑通py-faster-rcnn 的demo.py

    关键字:Windows.cpu模式.Python.faster-rcnn.demo.py 声明:本篇blog暂时未经二次实践验证,主要以本人第一次配置过程的经验写成.计划在7月底回家去电脑城借台机子试 ...

  2. 【目标检测】Faster RCNN算法详解

    Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with region proposal network ...

  3. 目标检测算法Faster R-CNN

    一:Faster-R-CNN算法组成: 1.PRN候选框提取模块: 2.Fast R-CNN检测模块. 二:Faster-R-CNN框架介绍 三:RPN介绍 3.1训练步骤:1.将图片输入到VGG或Z ...

  4. windows下命令行模式中cd命令无效的原因

    当我们执行cmd 想切换当前工作目录时,会发现windows下命令行模式中cd命令没有生效,到底是什么原因呢? 例如: 当我们想切换到 D:\MySql\mysql-5.7.19-winx64\bin ...

  5. Windows下获取CPU频率

    一直想在Windows下取得CPU的时钟速度,找了好久终于找到了函数CallNtPowerInformation,要想使用它,首先必须包含powrprof.h头文件和链接库powerprof.lib. ...

  6. 深度学习与CV教程(12) | 目标检测 (两阶段,R-CNN系列)

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...

  7. Windows下安装配置Yaf框架的方法及创建典型合理的Demo目录结构

    Yaf是一个C语言编写的PHP框架,由鸟哥Laruence开发的高性能框架: Yaf官方文档:http://www.laruence.com/manual/index.html 第一步:安装PHP扩展 ...

  8. 目标检测(三) Fast R-CNN

    引言 之前学习了 R-CNN 和 SPPNet,这里做一下回顾和补充. 问题 R-CNN 需要对输入进行resize变换,在对大量 ROI 进行特征提取时,需要进行卷积计算,而且由于 ROI 存在重复 ...

  9. 第二十九节,目标检测算法之R-CNN算法详解

    Girshick, Ross, et al. “Rich feature hierarchies for accurate object detection and semantic segmenta ...

随机推荐

  1. 使用TortoiseGit同步代码到github远程仓库

    1.clone github上的代码仓库的URL 可以用HTTPS,SSH, or Subversion 2.同步push 到远程仓库时 要用 SSH地址,同生成SSH private key ,在g ...

  2. python爬虫知识点详解

    python爬虫知识点总结(一)库的安装 python爬虫知识点总结(二)爬虫的基本原理 python爬虫知识点总结(三)urllib库详解 python爬虫知识点总结(四)Requests库的基本使 ...

  3. BZOJ3932:[CQOI2015]任务查询系统

    浅谈主席树:https://www.cnblogs.com/AKMer/p/9956734.html 题目传送门:https://www.lydsy.com/JudgeOnline/problem.p ...

  4. zoom在清除浮动中的利用

    zoom 是个困惑了好久的元素,今天对它有了个初步的认识 zoom , ie 的专属属性,在其他浏览器中不起作用,它的原本功能是设置或检测对象的缩放比例(只在ie下起作用) 比如   <div ...

  5. VMware vs openStack对比直观优势

    openStack VS VMware直观优势:1.openStack设计架构开放.生态稳定 大型国际巨头公司支持及开发参与,功能版本迭代快,相对的VMware则是封闭的商业化系统.2.基于openS ...

  6. IOS深入学习

    iOS超全开源框架.项目和学习资料汇总(1)UI篇 iOS超全开源框架.项目和学习资料汇总(2)动画篇 iOS超全开源框架.项目和学习资料汇总(3)网络和Model篇 数据库 FMDB – sqlit ...

  7. 8. php回调后门

    中国菜刀下载,基于原版中国菜刀优化版20160309. 下载地址: http://pan.baidu.com/s/1jHoJxHW China chopper http://pan.baidu.com ...

  8. java继承使用的细节问题?

    关于java继承的基本概念就不多说了,下面就说说继承使用应该注意的细节问题? 示例 一: package com.bizvane; class Fu{ public Fu() { System.out ...

  9. c++中调用python脚本提示 error LNK2001: 无法解析的外部符号 __imp_Py_Initialize等错误的解决方法

    最近项目中需要实现一个服务器宕机后短信提醒的功能,个人觉得在使用Python 写http请求这块很方便,发短信这块就使用了python,但是c++程序中调用这个脚本时,编译不通过,提示如下错误: er ...

  10. hdu2795(线段树单点更新&区间最值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2795 题意:有一个 h * w 的板子,要在上面贴 n 条 1 * x 的广告,在贴第 i 条广告时要 ...