目录:

1. 序言

2.正文

2.1  关于ROI

2.2  关于RPN

2.3 关于anchor

3. 关于数据集合制作

4. 关于参数设置

  5. 参考

1.序言

  叽歪一下目标检测这个模型吧,这篇笔记是依据我对源码的阅读和参考一些博客,还有rbg的论文之后,这里描述一下个人对于faster-rcnn的一些微小的了解,只是总结一些关键点的理解. 首先看一下这张faster-rcnn整体的图:

              

2.正文

   我们在细说这些关键节点的时候,首先让我们来看一下这个框架,这个图谱是引用的http://shartoo.github.io/RCNN-series/,并且下面的图片都来自于这里,在此处进行说明:

       

2.1  关于ROI & ROI pooling

    ROI的全称为region of interest,俗称感兴趣区域,ROI用来提取我们感兴趣的区域,ROI的应用在一下几个方面:

    1. 在训练模型的时候,ROI用来抽取所选区域样本.

2. 在模型预测时,由RPN提供的top300个建议区域.

         其实比较关键的内容应该是ROI pooling 也就是兴趣区域池化层,这里完全可以单独的拿出来说一说,详细代码见roi_pooling_layer.cu实现,为什么说它很重要呢?

   一般来说我们使用CNN做图片分类的时候,需要将待分类的图片缩放到统一大小,之所以这样做,是因为全链接(FCN)层对我们卷积后的特征图有大小限制,但是我们在使用faster-rcnn运行模型时,

并不需要对图下有大小限制,这就是ROI pooling层的贡献了,因为他会对我们特征图上的ROI区域,进行池化,首先我们要知道ROI的结构成份(left_x,left_y,height,width),ROI pooling 层会将特征图上的ROI区域缩放到符合

FCN层要求的大小,然后在进行分类和预测.

2.2  关于RPN

   对于RPN,它在faster-rcnn模型中扮演角色就是通过对特征图进行初级的目标区域选取,通过预测给予最高的前300个最高的置信度的目标区域,然后fast-rcnn中特征图去获取建议的目标区域,进行分类和预测,那么RPN网络是如何实现这一功能的呢?

 论文中的RPN网络接入的是经过5次卷积之后的特征图(vgg为例),对于这些特征图,RPN会对特征图再使用一个k*k大小的卷积核(滑动窗口)(论文中提供的是k=3)进行卷积滑动,并且滑动窗口(指整个窗口的区域)中的位置都会映射到一个原图的对应的位置,并且由anchor提供了三种尺寸(128^2,256^2,512^2),提供三种比例(1:1,1:2,2:1),通过这些组合可以生成9种尺寸大小的区域,但是映射覆盖区域不能超出图像本身大小,这样就最多产生9个区域结果会分别被接入到cls预测层和reg归层,对于cls层,会通过预测的区域和目标区域(groud truth)进行一个IOU计算,如果IOU>0.7大于1则判断为目标,如果IOU<0.3则判断为背景,同时记录下他们的预测值,如果i在0.3~0.7之间,则是一个无法确定的预测,该区域就不加入到网络训练中.对于reg层会产生加入网络训练中的坐标信息边框回归过程,通过回归过程的训练,是的建议区域尽可能的接近groud truth(目标区域),最后将建议区域接入到ROI pooling层中全链接

2.3 关于anchor

      anchor提供了三种尺寸(128^2,256^2,512^2),提供三种比例(1:1,1:2,2:1),通过这些组合可以生成9种组合尺寸大小的区域

3. 关于数据集合制作

   关于数据集合的制作,我们先来描述一下数据集合的一些的有那些内容,我们就那官方提供的数据集合来说吧~,比如VOCdevkit2007 中的Annotations,ImageSets,JPEGImages,其他的我们可以不用看。

关于Annotations文件夹,文件夹下放置*.xml, JPEGImages放置*.jpg ,注意一个xml必须要对应一个jpg,ImageSets文件夹中放置var.txt,train.txt,trainval.txt,test.txt,还有各种*var.txt,*train.txt,*trainval.txt,这里的*填写标签名,

需要说明的几点,trainval.txt放置所有的图片名,train.txt放置trainval.txt一半的标签名,val.txt放置trainval.txt一半的标签.test.txt其实不要也可以. *var.txt,*train.txt,*trainval.txt 也是一样,这里还需要注意的一点就是 *var.txt,*train.txt,*trainval.txt 中的0,-1,1意思0表示这个图片中存在模糊的样本,1表示该图片中存在该标签的样本,-1表示该图片中存在该图片不存在该标签的样本.

框架图

4. 参考资料:

http://shartoo.github.io/RCNN-series/

     http://blog.csdn.net/u013832707/article/details/53641055

faster-rcnn论文

   

faster-rcnn系列笔记(一)的更多相关文章

  1. 目标检测复习之Faster RCNN系列

    目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ...

  2. Faster RCNN 学习笔记

    下面的介绍都是基于VGG16 的Faster RCNN网络,各网络的差异在于Conv layers层提取特征时有细微差异,至于后续的RPN层.Pooling层及全连接的分类和目标定位基本相同. 一). ...

  3. Tensorflow faster rcnn系列一

    注意:本文主要是学习用,发现了一个在faster rcnn训练流程写的比较详细的博客. 大部分内容来自以下博客连接:https://blog.csdn.net/weixin_37203756/arti ...

  4. Faster RCNN学习笔记

    感谢知乎大神的分享 https://zhuanlan.zhihu.com/p/31426458 Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster R ...

  5. 目标检测之R-CNN系列

    Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ...

  6. Faster RCNN代码理解(Python)

    转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...

  7. [目标检测] 从 R-CNN 到 Faster R-CNN

    R-CNN 创新点 经典的目标检测算法使用滑动窗法依次判断所有可能的区域,提取人工设定的特征(HOG,SIFT).本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上用深度网络提取特征, ...

  8. 深度学习笔记之目标检测算法系列(包括RCNN、Fast RCNN、Faster RCNN和SSD)

    不多说,直接上干货! 本文一系列目标检测算法:RCNN, Fast RCNN, Faster RCNN代表当下目标检测的前沿水平,在github都给出了基于Caffe的源码. •   RCNN RCN ...

  9. 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)

    R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ...

  10. r-cnn学习系列(三):从r-cnn到faster r-cnn

    把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn.  RCNN 输入图像,使用selective search来构造 ...

随机推荐

  1. Centos7安装配置Xhgui

    XhProf是Facebook出品的一个PHP性能监控工具,只包含基本的界面和图形来分析数据.后来Paul Reinheimer在此基础上开发了Xhgui,提供了更好的界面和功能,其主页在https: ...

  2. 获取手机安装的所有包名adb shell pm list packages

    获取所有已安装包的包名:adb shell pm list packages 查找:adb shell pm list packages|findstr suning

  3. 二叉树Binary_Tree(1):二叉树及其数组实现

    定义 二叉树: 二叉树是一种特殊的树.二叉树的特点是每个结点最多有两个儿子,左边的叫做左儿子,右边的叫做右儿子,或者说每个结点最多有两棵子树.更加严格的递归定义是:二叉树要么为空,要么由根结点.左子树 ...

  4. Swift3.0 UITextField

    import UIKit private var textfieldd = UITextField() class TextFieldViewController: UIViewController, ...

  5. 用C#写入Excel表并保存

    想用C#操作Excel表,首先要做一些准备工作. 如果要操作 microsoft office Excel 2003表,就需要引入Microsoft office 11.0 object librar ...

  6. android中Log类的封装

    1.为了方便的使用Log打印日志,以及后续方便撤销日志打印,所以对Log类进行封装是一件好事. package market.phone; import android.util.Log; /** * ...

  7. @Data 注解引出的 lombok 小辣椒

    今天在看代码的时候, 看到了这个注解, 之前都没有见过, 所以就查了下, 发现还是个不错的注解, 可以让代码更加简洁. 这个注解来自于 lombok,lombok 能够减少大量的模板代码,减少了在使用 ...

  8. js代码细嚼慢咽

    全局变量的梗 例1: 对于var 的理解:将该变量声明在当前的作用域中,或者说执行上下文中. function add() { result = 3; //result变量即是隐喻全局变量 } add ...

  9. vbs的一些入门基础。。。

    VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就 ...

  10. zabbix2.2部署安装(安装环境Centos 6.* X64)

    1.在已有的LAMP或者LNMP的基础上安装zabbix,安装一些依赖包: 安装epel源:rpm -ivh http://dl.fedoraproject.org/pub/epel/6/x86_64 ...