目录:

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. mybatis中#和$符号的区别(转)

    mybatis做为一个轻量级ORM框架在许多项目中使用,因其简单的入门受到了广大开发者的热爱.在近期项目中再做一个相关的开发,碰到了#.$符号这样的问题,之前没怎么注意过,通过学习之后,有了点感悟,分 ...

  2. ZKWeb网页框架2.0正式发布

    2.0.0更新的内容有 更新框架要求 框架要求从 netstandard 1.6 升到 netstandard 2.0 框架要求从 netcoreapp1.1 升到 netcoreapp2.0 更新引 ...

  3. MVC+EF 入门教程(三)

    一.前言 上一节,我们将了生成数据库,那么这张我就将操作设计库. 二.在 Aplication 定义服务 在 Application 中添加文件夹(Blog)和 操作类(BlogServer).实例如 ...

  4. Spring Tool Suite生成默认的MVC项目的配置文件问题

    1.STS是开发Spring程序的首选,基于JavaEE的程序,我都用STS来开发,但是在生成默认的MVC项目时,其配置文件让人很讨厌,在许多选项上都会加一个beans,如<beans:bean ...

  5. std::shared_ptr<void>的工作原理

    前戏 先抛出两个问题 如果delete一个指针,但是它真实的类型和指针类型不一样会发生什么? 是谁调用了析构函数? 下面这段代码会发生什么有趣的事情? // delete_diff_type.cpp ...

  6. Servlet小总结

    Servlet Servlet(服务器端小程序)是使用Java语言编写的服务器端程序,像JSP一样,生成动态的Web页.Servlet主要运行在服务器端,并由服务器调用执行. Servlet处理的基本 ...

  7. JavaScript及jQuery中的各种宽高属性图解

    文/poetries(简书作者)原文链接:http://www.jianshu.com/p/60332df38393 著作权归作者所有,转载请联系作者获得授权, 并标注“简书作者”.   作者声明:本 ...

  8. JaCoCo 代码覆盖率工具(基于Maven+TestNG)

    JaCoco是一个代码覆盖率库. 官方网站:http://www.jacoco.org/ 安装: 以 Maven(http://www.testclass.net/maven/) 安装为例: < ...

  9. eclipse 更换 JDK 版本后报错

    在实际开发过程中,可能由于项目的需要,我们需要更换 JDK 的版本.但是更换后会报错,如下: Java compiler level does not match the version of the ...

  10. python自动安装mysql5.7

    python自动安装mysql5.7 python版本:python2.6 centos版本:centos6.9 mysql版本:mysql5.7.19 安装目录路径和数据目录路径都是固定,当然也可以 ...