热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Windows下用cpu模式跑通目标检测py-faster-rcnn的demo.py

关键字:Windows、cpu模式、Python、faster-rcnn、demo.py声明:原文发表在博客园,未经允许不得转载!!!本篇blog过程已经多名读者实践验证,有人反馈报错TypeEr

关键字: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能识别,如图,前面加了了扳手图标)点进去修改一下配置信息,打开如下图,这里注意修改以下几个地方:(其他地方和我不一样可以先不用管)

第七行:  true    采用cpuonly模式

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

第十三行: true  编译Python接口需要打开

第四十八行:D:\Anaconda2  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的。

 


推荐阅读
  • 深入剖析JVM垃圾回收机制
    本文详细探讨了Java虚拟机(JVM)中的垃圾回收机制,包括其意义、对象判定方法、引用类型、常见垃圾收集算法以及各种垃圾收集器的特点和工作原理。通过理解这些内容,开发人员可以更好地优化内存管理和程序性能。 ... [详细]
  • 解决TensorFlow CPU版本安装中的依赖问题
    本文记录了在安装CPU版本的TensorFlow过程中遇到的依赖问题及解决方案,特别是numpy版本不匹配和动态链接库(DLL)错误。通过详细的步骤说明和专业建议,帮助读者顺利安装并使用TensorFlow。 ... [详细]
  • 使用WinForms 实现 RabbitMQ RPC 示例
    本文通过两个WinForms应用程序演示了如何使用RabbitMQ实现远程过程调用(RPC)。一个应用作为客户端发送请求,另一个应用作为服务端处理请求并返回响应。 ... [详细]
  • 本文介绍了如何利用Python进行批量图片尺寸调整,包括放大和等比例缩放。文中提供了详细的代码示例,并解释了每个步骤的具体实现方法。 ... [详细]
  • Coursera ML 机器学习
    2019独角兽企业重金招聘Python工程师标准线性回归算法计算过程CostFunction梯度下降算法多变量回归![选择特征](https:static.oschina.n ... [详细]
  • 利用Selenium与ChromeDriver实现豆瓣网页全屏截图
    本文介绍了一种使用Selenium和ChromeDriver结合Python代码,轻松实现对豆瓣网站进行完整页面截图的方法。该方法不仅简单易行,而且解决了新版Selenium不再支持PhantomJS的问题。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 主板IO用W83627THG,用VC如何取得CPU温度,系统温度,CPU风扇转速,VBat的电压. ... [详细]
  • 嵌入式开发环境搭建与文件传输指南
    本文详细介绍了如何为嵌入式应用开发搭建必要的软硬件环境,并提供了通过串口和网线两种方式将文件传输到开发板的具体步骤。适合Linux开发初学者参考。 ... [详细]
  • 本文详细介绍了如何在PHP中进行数组删除、清空等操作,并提供了在Visual Studio Code中创建PHP文件的步骤。 ... [详细]
  • 本文详细介绍了在不同操作系统中查找和设置网卡的方法,涵盖了Windows系统的具体步骤,并提供了关于网卡位置、无线网络设置及常见问题的解答。 ... [详细]
  • 本文探讨了为何相同的HTTP请求在两台不同操作系统(Windows与Ubuntu)的机器上会分别返回200 OK和429 Too Many Requests的状态码。我们将分析代码、环境差异及可能的影响因素。 ... [详细]
  • 探讨 HDU 1536 题目,即 S-Nim 游戏的博弈策略。通过 SG 函数分析游戏胜负的关键,并介绍如何编程实现解决方案。 ... [详细]
  • 本文详细介绍了如何下载并安装 Python,包括选择合适的版本、执行安装程序以及设置环境变量的步骤。此外,还提供了测试安装是否成功的简单方法。 ... [详细]
  • 本文档汇总了Python编程的基础与高级面试题目,涵盖语言特性、数据结构、算法以及Web开发等多个方面,旨在帮助开发者全面掌握Python核心知识。 ... [详细]
author-avatar
MC红石粉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有