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

声明:本篇blog暂时未经二次实践验证,主要以本人第一次配置过程的经验写成。计划在7月底回家去电脑城借台机子试试验证步骤的正确性,本blog将根据实际遇到的问题持续更新。另外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过程已经多名读者实践验证,有人反馈报错TypeErr ...

  2. Windows下如何采用微软的Caffe配置Faster R-CNN

    前言 比较简单的一篇博客.https://github.com/microsoft/caffe 微软的Caffe以在Windows下编译简单而受到了很多人的喜爱(包括我),只用改改prop配置然后无脑 ...

  3. 如何在Windows下开发Python:在cmd下运行Python脚本+如何使用Python Shell(command line模式和GUI模式)+如何使用Python IDE

    http://www.crifan.com/how_to_do_python_development_under_windows_environment/ 本文目的 希望对于,如何在Windows下, ...

  4. 如何在windows下安装GIT

    如何在windows下安装GIT 分步阅读 Git是一个免费的.开源的版本控制软件.在Windows上安装git,一般为msysgit,官方下载地址为 http://code.google.com/p ...

  5. 如何在WINDOWS下编译BOOST C++库 .

    如何在WINDOWS下编译BOOST C++库 cheungmine 2008-6-25   写出来,怕自己以后忘记了,也为初学者参考.使用VC8.0和boost1.35.0.   1)下载boost ...

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

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

  7. 如何在Windows下查看JAVA端口占用情况(阿里面试)

    如需要确定谁占用了9050端口 为例: 1.Windows平台 在windows命令行窗口下执行: 1.查看所有的端口占用情况 C:\>netstat -ano 协议 本地地址 外部地址 状态 ...

  8. 【实用】如何在windows下快速截图?

    如何在windows下快速截图? 快速截图是很多人的需求.截图的工具和方案也很多,但是,这里给出一个通用的,被大众认为最高效的一个解决方案. 我们都知道键盘上有一个"prt sc" ...

  9. Windows下获取CPU频率

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

随机推荐

  1. php mysqli MySQL server has gone away 问题分析

    结论 mysqli没有处理对端(MySQL server)的断开请求.在send时,收到对端(MySQL server)的RST,会打印MySQL server has gone away. 环境 x ...

  2. windows平台安装并使用MongoDB

    下载并安装MongoDB,我的安装路径:D:\Program_Files\MongoDB 创建数据库目录,我的目录:D:\mongodb\data\db 命令行下运行MongoDB服务器: 在命令行窗 ...

  3. Java反射机制能够获取的信息,与应用

    一.什么是Java反射机制? [1]反射机制是在运行状态中,对于任何一个类,都能够知道这个类的所有属性和方法: [2]对于任意一个对象,都能够调用它的任意一个属性和方法: 像这种动态获取类的信息以及动 ...

  4. hdu 3091 Necklace(状态压缩类似于TSP问题)

    Necklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 327680/327680 K (Java/Others)Total ...

  5. 2016-2017 ACM-ICPC, NEERC, Southern Subregional Contest H. Delete Them

    H. Delete Them time limit per test 2 seconds memory limit per test 512 megabytes input standard inpu ...

  6. 【DG】利用闪回数据库(flashback)修复Failover后的DG环境

    利用闪回数据库(flashback)修复Failover后的DG环境 1.1  BLOG文档结构图 1.2  前言部分 1.2.1  导读和注意事项 各位技术爱好者,看完本文后,你可以掌握如下的技能, ...

  7. java注解(Annotation)

    本文转载自http://www.cnblogs.com/xdp-gacl/p/3622275.html 一.认识注解 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解 ...

  8. Python文件夹备份

    Python文件夹备份 import os,shutil def file_copy(path1,path2): f2 = [filename1 for filename1 in os.listdir ...

  9. [Redis源码阅读]sds字符串实现

    初衷 从开始工作就开始使用Redis,也有一段时间了,但都只是停留在使用阶段,没有往更深的角度探索,每次想读源码都止步在阅读书籍上,因为看完书很快又忘了,这次逼自己先读代码.因为个人觉得写作需要阅读文 ...

  10. QT制作窗口切换的小程序

    前言:本次实验是在三个窗口之间自由切换,窗口中播放gif格式的动态图. 让我们先来看看使用到的主要的函数: 一.播放gif格式动态图的函数 QMovie *movie = new QMovie(&qu ...