faster-rcnn是MSRA在物体检测最新的研究成果,该研究成果基于RCNN,fast rcnn以及SPPnet,对之前目标检测方法进行改进,faster-rcnn项目地址
首先,faster rcnn所使用的caffe版本并不是官方caffe,是Shaoqing Ren自己在官方版本上实现的一个caffe,具体下载地址为:caffe-faster-rcnn地址 另外,在配置caffe时,可以直接把自己已配置成功的makefile.config文件拷贝过去。
由于该版本caffe相对最新的caffe比较旧,因此如果使用opencv 3.0以上版本,需要对Makefile进行修改(实现对OpenCV 3.x的支持)
查找“Derive include and lib directories”一节,修改“LIBRARIES +=”的最后一行,增加opencv_imgcodecs
opencv_core opencv_highgui opencv_imgproc opencv_imgcodecs 保存,退出。
在此基础之上,需要对原本编译成功的caffe的makefile.config文件进行修改,rbg给出了makefile.config修改参考地址:Makefile.config
如果出现错误:
Building with 'g++'.
/home/agruzdev/git/faster_rcnn/external/caffe/matlab/+caffe/private/caffe_.cpp::: fatal error: gpu/mxGPUArray.h: No such file or directory
compilation terminated.

解决地址:解决方案

在Makefile.config文件中加入:

MATLAB_INCLUDE := -I$(MATLAB_DIR)/toolbox/distcomp/gpu/extern/include
MATLAB_LIBS := -lmwgpu

提示错误:

Invalid MEX-file caffe_.mexa64': libcudart.so.7.5: cannot open shared object file: No such file or directory

解决方案:

LD_LIBRARY_PATH路径未配置

sudo gedit ~/.bashrc

在文本最后加入:

export LD_LIBRARY_PATH=/usr/local/cuda-7.0/lib64:/usr/local/lib:$LD_LIBRARY_PATH

对应自己的cuda路径位置

 注:每次需要在新机器上部署fater-rcnn代码时候,最好的方法就是把对应的caffe-fater-rcnn版本重新放在external下面,保留原有的Makefile.config文件,
这样可以最快的部署好faster- rcnn平台。 错误:
[libprotobuf ERROR google/protobuf/descriptor_database.cc:] File already exists in database: caffe.proto
[libprotobuf FATAL google/protobuf/descriptor.cc:] CHECK failed: generated_database_->Add(encoded_file_descriptor, size):
Killed
解决方法:
最好方法是重启matlab 安装2:
在有多个项目需要使用多个data时,最好将所有需要用的数据都存放在datasets文件夹下,使用ln -s srcpath dstpath来构建软链接到项目中,这样一次构建就可以永久使用,也不用考虑后续的其它问题。
构建软链接的命令为:
ln -s srcpath dstpath

在使用faster-rcnn时候,如果因为服务器的迁移带来的问题,那么需要将bin文件夹下生成的mex文件进行删除,使用faster_rcnn_build命令来重新生成,具体的操作细节同faster-rcnn的github主页上readme相同。

注意:faster-rcnn中使用的caffe版本较低,不支持cudnn-v4,因此如果要在Makefile.config文件中打开CUDNN加速,那么安装的cudnn版本应该低于v4(v2或者v3:没试过)

----------------------------------------------------    2016.05.09更新    --------------------------------------------------

Faster RCNN主要有两部分组成: 
  Region porposal Network(获取region candidate)
  Detection(Fast RCNN) 由于rpn网络是一个0(non-region) vs 1 (region)网络,所以一般情况下不用使用自己的数据集进行finetuning,直接使用已经训练好的rpn_ZF.caffemodel获取对应图像的region proposal即可。当然也可以使用自己的数据集对该网络进行finetuning。
RPN网络的另外一种region 提取方法:
DeepBox
deepproposal
deepmask 但是在一般应用中需要根据自己的实际情况对detection网络,即Fast RCNN网络进行finetuning。这里要讲的是如何使用自己的数据集对Fast RCNN网络进行finetuning。在已有训练好的网络caffemodel前提下,从头训练一个网络是非常费时也是费人的。我就是经历了这样一个痛苦的过程,才走回正道。在做一个事情之前需要认证想清楚自己的目标是什么,不要盲目的做,到头来浪费时间,耽误研究进程。 如何使用自己的数据集finetuning FastRCNN,网上已经给出了很多参考教程:

Train a fast-rcnn CovNet on another dataset

Train Fast-RCNN on Another Dataset

Test Fast-RCNN on Another Dataset

how to use py-faster-rcnn to do 4 classes training instead of 20 classes?

Training Faster RCNN on Imagenet

How to train fast rcnn on imagenet

以及将ResNet应用于Fast RCNN中进行检测:

ResNet Implementation for Faster-rcnn

上述进行Fast RCNN finetuning都是基于fast rcnn python版本进行。由于本人使用的是Ren Shaoqing提供的matlab版本,所以需要在matlab下面进行finetuning。

在$FRCNN/experiments/ZF_for_Fast_RCNN_VOC0712文件中,在给定train.mat(bbox:region candidate,images: image_path)条件下使用数据集进行finetuning。

操作步骤:

1.$FRCNN/+Dataset/文件夹下添加自己的数据集对应文件;

2.使用selective search 或者上面提到的已经训练好的RPN网络来获取bbox,将其存成train.mat形式(具体形式见网上selective_search_data.mat);

3.修改solver.prototxt文件以及train_val.prototxt 和 test.protxt文件中对应的cls  和 bbox数值,以及对应的layer_name;

4. 修改fast_rcnn_train.m文件中snapshot函数中

  bbox_pred_layer_name = 'bbox_pred_vid';

为自己定义的layer:name(bbox_pred_vid)。

5. 修改fast_rcnn_im_detect.m文件中

scores = caffe_net.blobs('cls_score_vid').get_data();

为自己定义的layer:name(cls_score_vid)。

6.修改imdb_eval函数

最后就可以按照ZF_for_Fast_RCNN_VOC0712仿写自己的训练程序。


2017.05.16更新 py-faster-rcnn

Nvidia cuda版本已经更新至8.0,因此在使用py-faster-rcnn的时候需要支持cuda8.0,而原始的faster python版本代码并不支持cuda8.0,所以需要将其中的caffe代码进行更新。

更新代码方式见:py-faster-rcnn support 1080P and cudnn v5?

Caffe使用step by step:faster-rcnn目标检测matlab代码的更多相关文章

  1. Caffe使用step by step:r-cnn目标检测代码

    深度学习算法火起来之后,基于深度学习各种模型都如雨后春笋一般在各个领域广泛应用. 由于想把深度学习算法应用在在视频目标检测方向,得到一个较好的结果.由于视频数据的复杂性,因此使用深度学习算法在视频中的 ...

  2. caffe学习三:使用Faster RCNN训练自己的数据

    本文假设你已经完成了安装,并可以运行demo.py 不会安装且用PASCAL VOC数据集的请看另来两篇博客. caffe学习一:ubuntu16.04下跑Faster R-CNN demo (基于c ...

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

    Region-CNN,简称R-CNN,是首次将深度学习应用于目标检测的算法. bounding box IOU 非极大值抑制 selective search 参考链接: https://blog.c ...

  4. R-CNN目标检测的selective search(SS算法)

    候选框确定算法 对于候选框的位置确定问题,简单粗暴的方法就是穷举或者说滑动窗口法,但是这必然是不科学的,因为时间和计算成本太高,直观的优化就是假设同一种物体其在图像邻域内有比较近似的特征(例如颜色.纹 ...

  5. Cascade R-CNN目标检测

    成功的因素: 1.级联而非并联检测器 2.提升iou阈值训练级联检测器的同时不带来负面影响 核心思想: 区分正负样本的阈值u取值影响较大,加大iou阈值直观感受是可以增加准确率的,但是实际上不是,因为 ...

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

  7. 新人如何运行Faster RCNN的tensorflow代码

    0.目的 刚刚学习faster rcnn目标检测算法,在尝试跑通github上面Xinlei Chen的tensorflow版本的faster rcnn代码时候遇到很多问题(我真是太菜),代码地址如下 ...

  8. 目标检测-Faster R-CNN

    [目标检测]Faster RCNN算法详解 Ren, Shaoqing, et al. “Faster R-CNN: Towards real-time object detection with r ...

  9. 基于候选区域的深度学习目标检测算法R-CNN,Fast R-CNN,Faster R-CNN

    参考文献 [1]Rich feature hierarchies for accurate object detection and semantic segmentation [2]Fast R-C ...

随机推荐

  1. Unity3d之Hash&Slash学习笔记之(二)--角色基础类的构建

    Hash&Slash学习笔记之(二)--角色基础类的构建 BaseStat类的构建 基本成员变量: _baseValue //基础属性值 _buffValue //增加的buff值 _expT ...

  2. wordpress4.4+版本自动生成一个768w像素缩略图的解决办法

    4.4版本以后,wordpress增加了响应式图片的功能,目的是让图片能适应手机.平板等不同屏幕,但是我不想要这个功能,把缩略图大小全调成0,function.php里的相关函数全删除了, 上传图片还 ...

  3. 树莓派UPS-18650,添加时钟

    1.简介 UPS-18650 是一个专门为树莓派(以下简称 pi)所设计的 UPS 电源,采用两颗标准 的 18650 锂电池进行供电,支持外部电源插入检测,支持边充边放,既插上外部电源时, pi 由 ...

  4. sql server sql查询数据库的表,字段,主键,自增,字段类型等信息

    1.查询数据表的属性(名称.说明.是否主键.数据类型.是否自增) SELECT t1.name columnName,case when t4.id is null then 'false' else ...

  5. gith命令行使用之上传和删除

    git这个工具的功能很强大,而使用git bash的命令行来进行git工具的操作尤为重要.而且我个人认为,用命令行进行git工具的操作比起图形界面的git工具,要更容易理解.图形界面的那个叫Torto ...

  6. alibaba/Sentinel 分布式 系统流量防卫兵

    Sentinel: 分布式系统的流量防卫兵 Sentinel 是什么? 随着微服务的流行,服务和服务之间的稳定性变得越来越重要.Sentinel 以流量为切入点,从流量控制.熔断降级.系统负载保护等多 ...

  7. (二)Hyperledger Fabric 1.1安装部署-Fabric Samples

    Hyperledger Fabric Samples是官方推荐的First Network,对于熟悉fabric和测试基础环境很有好处. Fabric Samples源码下载:使用git下载源码,进入 ...

  8. Tomcat部署与使用

    Tomcat简介 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache.Sun和其他一些公司及个人共同开发 ...

  9. chown命令详情

    基础命令学习目录首页 原文链接:https://www.jb51.net/article/98255.htm chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID:组可以是组名 ...

  10. 互评Alpha版本—SkyHunter

    1.根据NABCD评论作品:   N(Need,需求):飞机大战题材的游戏对80,90后的人来说算是童年的记忆,可以在闲暇之余打开电脑玩一会儿.但是面向初中生,高中生的话这种PC小游戏可能不会那么适合 ...