caffe学习(四):py-faster-rcnn配置,运行测试程序(Ubuntu)
上一篇博客中讲了在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.cuinclude/caffe/layers/cudnn_sigmoid_layer.hpp,
src/caffe/layers/cudnn_sigmoid_layer.cpp,
src/caffe/layers/cudnn_sigmoid_layer.cuinclude/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
替换为
cudnnConvolutionBackwardDatacudnnConvolutionBackwardFilter_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)相关推荐
- caffe下matlab、python的配置和faster RCNN的运行
因为自己的电脑没有安装linux环境,显卡也不支持CUDA,所以在实现faster RCNN的demo的过程中还是很麻烦的. 完善项目文件 下图是vs2013 打开的caffe解决方案的工程目录.由于 ...
- [深度学习] RCNNs系列(1) Ubuntu下Faster RCNN配置及训练和测试自己的数据方法
最近用到Faster RCNN进行目标检测,前前后后两周把RCNN,SPPNet,Fast RCNN和Faster RCNN大体调查了一遍,准备写一个RCNNs系列,后面还要加上今年最新的Mask R ...
- 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 ...
- 深度学习之windows python faster rcnn 配置及demo运行
写这篇文章主要是针对深度学习零基础的新手,因为我也是新手,在配置环境这一块花了我很大的心血,网上的资料很多都只是说配置,然后直接运行就完了,可是对于我这样的新手在配置的过程中会遇见各种各样的问题,所以 ...
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程
Faster R-CNN教程 Faster R-CNN教程 最后更新日期:2016年4月29日 本教程主要基于python版本的faster R-CNN,因为python layer的使用,这个版本会 ...
- Windows下Faster R-CNN 配置/Matlab版本编译
配置环境: Windows10x64 Matlab2015Ra VS2013 Opencv2.4.11 CUDA7.5 GTX950M CUDA7.5安装 因为Cuda7.5做了很大的优化改进,而且对 ...
- 【MATLAB深度学习】采用Faster R-CNN实现车辆目标检测
本文展示了如何使用MATLAB训练Faster R-CNN目标检测器,实现对车辆的检测.本例使用一个包含295张图像的小标记数据集.每个图像包含一个或两个已标记的车辆目标.一个小的数据集对于探索 Fa ...
- AgileEAS.NET SOA 中间件平台5.2版本下载、配置学习(四):开源的Silverlight运行容器的编译、配置...
一.前言 AgileEAS.NET SOA 中间件平台是一款基于基于敏捷并行开发思想和Microsoft .Net构件(组件)开发技术而构建的一个快速开发应用平台.用于帮助中小型软件企业建立一条适合市 ...
- [计算机视觉][神经网络与深度学习]Faster R-CNN配置及其训练教程2
faster-rcnn分为matlab版本和python版本,首先记录弄python版本的环境搭建过程.matlab版本见另一篇:faster-rcnn(testing): ubuntu14.04+c ...
- 深度学习(六十四)Faster R-CNN物体检测
最新文章
- 可视化Linux性能监控
- centos yum install redis
- outlook邮箱邮件大小限制_设置Office 365邮箱默认发送和接收邮件大小限制
- python词云安装什么库_python词云安装什么库
- elasticsearch 6.x (五) 单一文档 API 介绍和使用 update和delete API
- cocos2dx 3.x Value、Vector和Map意识
- 【LeetCode笔记】263. 丑数(Java、迭代)
- linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)
- MySQL表联合查询 理论基础:外键、操作关联表(一)
- Ubuntu嵌入式开发环境配置问题集锦(不断更新)
- Redisson分布式锁使用采坑记
- 化妆品行业组合解决方案
- RPG Maker MV 遇敌对战
- 消费复苏中的企业该走向何处?
- 电脑python编程软件哪个好用_5个最好用的Python编程开发工具(IDE)分享
- R极简教程-10:R语言绘图基础
- Directx11教程七之2D渲染
- java string特殊字符_java string对特殊符号的处理
- python3.5权限问题
- outlook邮箱日历华为手机与电脑同步设置
热门文章
- Linux定期监视某文件变化,监控Linux文件变化,防止服务器被黑
- 九九乘法表_JAVA
- Building MFC application with /MD[d] (CRT dll version) requires MFC shared dll version 错误解决
- 【ros】2.ros的xx.msg编译
- 数据库事务的隔离级别
- Visual Studio Code之常备快捷键
- 我的Java后端书架 (2016年暖冬4.0版)
- Java 解惑(Java Puzzler)
- 学会这9招,你也能成为演讲高手
- 前端要给力之:代码可以有多烂?