上一篇博客中讲了在Ubuntu下安装caffe的经验总结(各种问题,简直怀疑人生了)。博客链接:点我打开
faster-rcnn有两个版本,分别是python的和MATLAB的。这里介绍python版本的faster-rcnn的配置。
网上有很多相关的教程,起初我在配置时也被一些博客坑了,这里分享一下调试和解决问题的过程。

下载工程

输入指令:

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

由于git的速度有点慢,所以可以选择直接访问他的网址,在github上直接下载。链接:点我打开

我是直接在github上下载的,下载完后发现了caffe-faster-rcnn文件夹中是空的。所以还需要另外下载caffe-faster-rcnn文件夹,可以选择使用指令:

cd caffe-fast-rcnn
git submodule update --init --recursive

或者直接点击,进入caffe-faster-rcnn,进行下载。下载后拷贝到py-faster-rcnn目录下即可。

安装Caffe依赖包

安装一些要用的依赖包,否则编译时会报错。

sudo apt-get install python-pip
sudo pip install cython
sudo pip install easydict
sudo apt-get install python-opencv

每个人装的都不一样,少了哪个就装哪个吧。我编译的时候少了easydict和python-opencv,这块问题不多,全部都会自动配置完成。
补充:有一个朋友安装easydict时发现输入指令后安装成功,但是在python shell下import easydict报错。这种情况可以重启一下,再试试能不能正常import easydict。有可能是配置还没立即生效。

编译caffe

默认用$RCNN_ROOT表示下载下来的py-faster-rcnn目录所在的路径。

cd $RCNN_ROOT/lib
make -j8

-j8是使用多核编译,这样编译速度快一点。

输入指令:

先进入到caffe-fast-rcnn目录下:

cd $RCNN_ROOT/caffe-fast-rcnn

复制Makefile.config.example为Makefile.config。

cp  Makefile.config.example  Makefile.config

编辑Makefile.config。

sudo gedit Makefile.config

在Makefile.config中有两处要改。

# In your Makefile.config, make sure to have this line uncommented
WITH_PYTHON_LAYER := 1
# Unrelatedly, it's also recommended that you use CUDNN
USE_CUDNN := 1

把前面的注释去掉即可。
WITH_PYTHON_LAYER必须开,否则会报错。
USE_CUDNN建议开,但是由于代码提供者的caffe版本是老版本的,没有”与时俱进“,所以只兼容CUDNN 较老版本的。我装的是v5.0版本的,开了它就会报错。
解决办法有两种:一、更换CUDNN的版本为老版本的v3.0或是v4.0的;二、注释掉CUDNN那句代码,我是直接注释掉了,使用也不影响。
推荐使用cuDNN,由于不想重新折腾CUDNN,我就没有更换为老版本的。暂时还没找到相对好的解决办法,如果找到了其他会再补充。


—————————————————2017.7.30 补充————————————————-

我使用的是cuDNN v5版本,不能支持py-faster-rcnn。今天找到了一个不需要更换cuDNN,就能使cuDNN v5也能兼容py-faster-rcnn。
参考链接:faster rcnn +cudnn V5
其中给出了两种方法:
一种是到github去下载新版的caffe并将它与py-faster-rcnn中的caffe-faster-rcnn合并,更换成新版的caffe,使其支持cuDNN v5版本;
另一种是自己手动更改一些文件,更改caffe的一些配置使其兼容cuDNN v5。
第一种方法较简单,但是一旦工程被修改过就很容易出错,不推荐;所以我采用了第二种方法。

1、用最新版本的caffe源码目录中的如下文件替换py-faster-rcnn/caffe-fast-rcnn中的对应文件。

include/caffe/layers/cudnn_relu_layer.hpp,
src/caffe/layers/cudnn_relu_layer.cpp,
src/caffe/layers/cudnn_relu_layer.cu

include/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cu

include/caffe/layers/cudnn_tanh_layer.hpp,
src/caffe/layers/cudnn_tanh_layer.cpp,
src/caffe/layers/cudnn_tanh_layer.cu

2、用caffe源码中的这个文件替换掉faster rcnn 对应文件

include/caffe/util/cudnn.hpp

3、打开 py-faster-rcnn/caffe-fast-rcnn 中的 src/caffe/layers/cudnn_conv_layer.cu文件,并将:

cudnnConvolutionBackwardData_v3
替换为
cudnnConvolutionBackwardData

cudnnConvolutionBackwardFilter_v3
替换为
cudnnConvolutionBackwardFilter

修改之后,即使不注释USE_CUDNN := 1,在编译时也不会报错了。


修改完成之后就可以编译了:

make -j8
make pycaffe -j8

编译caffe工程和caffe的python支持,要等一会儿。
make完的结果:

make pycaff完的结果:

获取faster_rcnn_models

输入指令:

cd $RCNN_ROOT
./data/scripts/fetch_faster_rcnn_models.sh

执行脚本,实质是访问http://www.cs.berkeley.edu/%7Erbg/faster-rcnn-data/faster_rcnn_models.tgz 下载文件,但是我们这边访问总是被拒绝。

好了,这里给出一个翻墙下载的方法,速度也还可以。
用https://mm.ww.rrjs.pw/翻墙下载,这是一个网页代理,在网页输入你想要访问的地址,它会帮你跳转到国外的网站去。
在网页下输入:
https://dl.dropboxusercontent.com/s/o6ii098bu51d139/faster_rcnn_models.tgz?dl=0
这个url可以在fetch_faster_rcnn_models.sh中查到。

点击开始浏览,即可进行下载了。我下载下来有728.6MB。

把这个文件移到$RCNN_ROOT/data下,将其解压。
指令和结果截图:

获取imagenet_models

方法同faster_rcnn_models。
网上通用的方法是:

cd $RCNN_ROOT
./data/scripts/fetch_imagenet_models.sh

很有可能,你看到的是半天没反应。

所以还是使用https://mm.ww.rrjs.pw/翻墙下载。
输入网址:
https://dl.dropbox.com/s/gstw7122padlf0l/imagenet_models.tgz?dl=0
此URL可以在fetch_imagenet_models.sh中找到。
这种方法翻墙的网速还算挺快的。

如果有别的较快的翻墙手段的,或者自己买了vpn的,都可以直接输入指令下载。

文件有1.1GB。把它复制到$RCNN_ROOT/data下,解压。
指令和结果截图:

测试demo.py文件

先直接运行demo.py看看吧:

cd $RCNN_ROOT
./tools/demo.py

我运行后出现了错误:

Loaded network /home/xhb/Study/Caffe_Study/py-faster-rcnn-master/data/faster_rcnn_models/VGG16_faster_rcnn_final.caffemodel
F0726 11:58:39.877975  3897 syncedmem.cpp:56] Check failed: error == cudaSuccess (2 vs. 0)  out of memory
*** Check failure stack trace: ***
已放弃

意思是,在载入VGG16_faster_rcnn_final.caffemodel时出错。查阅资料,发现这是因为gpu的显存不够。
如果是自己训练和测试模型,可以去更改配置文件中的batch_size,将test和train的batch_size都改为1。我们只是测试别人训练的模型也没法更改了。
起初我也很困惑,明明我的gpu显存有4G,而这个要求的应该是3G,应该是可以的。试了很多方法,但是还是会报错。

下面是官方给出的说明:

  • For training smaller networks (ZF, VGG_CNN_M_1024) a good GPU (e.g., Titan, K20, K40, …) with at least 3G of memory suffices
  • For training Fast R-CNN with VGG16, you’ll need a K40 (~11G of memory)
  • For training the end-to-end version of Faster R-CNN with VGG16, 3G of GPU memory is sufficient (using CUDNN)

退一步考虑,我们下载下来的faster_rcnn_models模型中有两个:

VGG16_faster_rcnn_final.caffemodel
ZF_faster_rcnn_final.caffemodel

VGG16是大型模型,而ZF模型则是较小的模型。
所以我们换成使用ZF模型进行测试。
方法一:
使用如下指令:

 ./tools/demo.py --net zf

方法二:
由于默认使用VGG16模型,所以修改为使用ZF模型。
打开demo.py:

定义了一个字典,有两个模型,VGG16和ZF。

修改vgg16为zf,这样默认载入的就是zf的模型而不是vgg16的了。

保存一下,可以开始测试了。
输入指令:

cd $RCNN_ROOT
./tools/demo.py

测试结果:
自动载入图片进行测试,识别出的东西会用红框标出。

这次只是跑了一个faste-rcnn,依然还有很多问题,后面解决了还会补上解决方案。
我使用的是gpu版本的caffe,如果要使用CPU版本的caffe,可以参考这篇博客:ubuntu16.04+py-faster-rcnn+ZF运行demo.py 。 修改一些东西,使用步骤大致一样。

下面这几篇博客给出了一些常见报错及解决办法:
为了caffe(四)学习人家的文章
caffe跑试验遇到错误:Check failed: error == cudaSuccess (2 vs. 0) out of memory


—————————————————2017.7.30 补充————————————————-

今天我在文章中补充了cuDNN v5不兼容的解决办法。
之前我跑vgg16的模型总是说显存不够,最后选择了使用zf模型,在我今天开启了cuDNN后重新编译了caffe,重新运行发现能够正常使用vgg16的模型了。
总结一下:
我的笔记本带的gpu内存是4G。
只有开启了cuDNN支持后,要求gpu至少有3G的显存,可以正常使用vgg16、zf等模型;
若不开启cuDNN支持,编译也可以正常通过,但是只有zf可以使用,使用vgg16模型会报错,提示显存不够。
运行VGG16模型的结果:


caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu)相关推荐

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

    因为自己的电脑没有安装linux环境,显卡也不支持CUDA,所以在实现faster RCNN的demo的过程中还是很麻烦的. 完善项目文件 下图是vs2013 打开的caffe解决方案的工程目录.由于 ...

  2. [深度学习] RCNNs系列(1) Ubuntu下Faster RCNN配置及训练和测试自己的数据方法

    最近用到Faster RCNN进行目标检测,前前后后两周把RCNN,SPPNet,Fast RCNN和Faster RCNN大体调查了一遍,准备写一个RCNNs系列,后面还要加上今年最新的Mask R ...

  3. Caffe学习系列(1):安装配置ubuntu14.04+cuda7.5+caffe+cudnn

    一.版本 linux系统:Ubuntu 14.04 (64位) 显卡:Nvidia K20c cuda: cuda_7.5.18_linux.run cudnn: cudnn-7.0-linux-x6 ...

  4. 深度学习之windows python faster rcnn 配置及demo运行

    写这篇文章主要是针对深度学习零基础的新手,因为我也是新手,在配置环境这一块花了我很大的心血,网上的资料很多都只是说配置,然后直接运行就完了,可是对于我这样的新手在配置的过程中会遇见各种各样的问题,所以 ...

  5. [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程

    Faster R-CNN教程 Faster R-CNN教程 最后更新日期:2016年4月29日 本教程主要基于python版本的faster R-CNN,因为python layer的使用,这个版本会 ...

  6. Windows下Faster R-CNN 配置/Matlab版本编译

    配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...

  7. 【MATLAB深度学习】采用Faster R-CNN实现车辆目标检测

    本文展示了如何使用MATLAB训练Faster R-CNN目标检测器,实现对车辆的检测.本例使用一个包含295张图像的小标记数据集.每个图像包含一个或两个已标记的车辆目标.一个小的数据集对于探索 Fa ...

  8. AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置...

    一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...

  9. [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2

    faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04+c ...

  10. 深度学习(六十四)Faster R-CNN物体检测

最新文章

  1. 可视化Linux性能监控
  2. centos yum install redis
  3. outlook邮箱邮件大小限制_设置Office 365邮箱默认发送和接收邮件大小限制
  4. python词云安装什么库_python词云安装什么库
  5. elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API
  6. cocos2dx 3.x Value、Vector和Map意识
  7. 【LeetCode笔记】263. 丑数(Java、迭代)
  8. linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)
  9. MySQL表联合查询 理论基础:外键、操作关联表(一)
  10. Ubuntu嵌入式开发环境配置问题集锦(不断更新)
  11. Redisson分布式锁使用采坑记
  12. 化妆品行业组合解决方案
  13. RPG Maker MV 遇敌对战
  14. 消费复苏中的企业该走向何处?
  15. 电脑python编程软件哪个好用_5个最好用的Python编程开发工具(IDE)分享
  16. R极简教程-10:R语言绘图基础
  17. Directx11教程七之2D渲染
  18. java string特殊字符_java string对特殊符号的处理
  19. python3.5权限问题
  20. outlook邮箱日历华为手机与电脑同步设置

热门文章

  1. Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑
  2. 九九乘法表_JAVA
  3. Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 错误解决
  4. 【ros】2.ros的xx.msg编译
  5. 数据库事务的隔离级别
  6. Visual Studio Code之常备快捷键
  7. 我的Java后端书架 (2016年暖冬4.0版)
  8. Java 解惑(Java Puzzler)
  9. 学会这9招,你也能成为演讲高手
  10. 前端要给力之:代码可以有多烂?