faster-rcnn系列笔记(一)
目录:
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系列笔记(一)的更多相关文章
- 目标检测复习之Faster RCNN系列
		目标检测之faster rcnn系列 paper blogs1: 一文读懂Faster RCNN Faster RCNN理论合集 code: mmdetection Faster rcnn总结: 网络 ... 
- Faster RCNN 学习笔记
		下面的介绍都是基于VGG16 的Faster RCNN网络,各网络的差异在于Conv layers层提取特征时有细微差异,至于后续的RPN层.Pooling层及全连接的分类和目标定位基本相同. 一). ... 
- Tensorflow faster rcnn系列一
		注意:本文主要是学习用,发现了一个在faster rcnn训练流程写的比较详细的博客. 大部分内容来自以下博客连接:https://blog.csdn.net/weixin_37203756/arti ... 
- Faster RCNN学习笔记
		感谢知乎大神的分享 https://zhuanlan.zhihu.com/p/31426458 Ross B. Girshick在2016年提出了新的Faster RCNN,在结构上,Faster R ... 
- 目标检测之R-CNN系列
		Object Detection,在给定的图像中,找到目标图像的位置,并标注出来. 或者是,图像中有那些目标,目标的位置在那.这个目标,是限定在数据集中包含的目标种类,比如数据集中有两种目标:狗,猫. ... 
- Faster RCNN代码理解(Python)
		转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ... 
- [目标检测] 从 R-CNN 到 Faster R-CNN
		R-CNN 创新点 经典的目标检测算法使用滑动窗法依次判断所有可能的区域,提取人工设定的特征(HOG,SIFT).本文则预先提取一系列较可能是物体的候选区域,之后仅在这些候选区域上用深度网络提取特征, ... 
- 深度学习笔记之目标检测算法系列(包括RCNN、Fast RCNN、Faster RCNN和SSD)
		不多说,直接上干货! 本文一系列目标检测算法:RCNN, Fast RCNN, Faster RCNN代表当下目标检测的前沿水平,在github都给出了基于Caffe的源码. • RCNN RCN ... 
- 论文笔记:目标检测算法(R-CNN,Fast R-CNN,Faster R-CNN,FPN,YOLOv1-v3)
		R-CNN(Region-based CNN) motivation:之前的视觉任务大多数考虑使用SIFT和HOG特征,而近年来CNN和ImageNet的出现使得图像分类问题取得重大突破,那么这方面的 ... 
- r-cnn学习系列(三):从r-cnn到faster r-cnn
		把r-cnn系列总结下,让整个流程更清晰. 整个系列是从r-cnn至spp-net到fast r-cnn再到faster r-cnn. RCNN 输入图像,使用selective search来构造 ... 
随机推荐
- python filter map reduce
			filter(function, iterable): Construct a list from those elements of iterable for which function retu ... 
- 使用docker+consul+nginx集成分布式的服务发现与注册架构
			一.环境说明: 1.一台虚拟机,该系统已经装好了docker: ip 192.168.10.224 虚拟网卡,与主机互通 操作系统rhel6 内核 2.6.32 64位 docker版本 1.7.1 ... 
- 17089 最大m子段和
			17089 最大m子段和 时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC;VC Description "最大m子段和 ... 
- asp.net mvc 下拉列表
			第一步:新建一个格式化下拉列表的公共类文件 using System; using System.Collections; using System.Collections.Generic; usin ... 
- web基础笔记整理(一)
			一.程序的分层 1.界面层: 某种类型的应用程序 a.DOS(控制台运行) b.桌面应用程序--独立安装,独立运行 c.web类型--现在流行的 单机版:电脑上要安装,程序升级之后,电脑上也要升级-- ... 
- SpringJDBC的JdbcTemplate在MySQL5.7下不支持子查询的问题
			org.springframework.jdbc.BadSqlGrammarException: PreparedStatementCallback; bad SQL grammar [ SELECT ... 
- php-迭代创建级联目录
			方法一代码: path = './a/b/c/d/e/f'; $path_arr = explode('/',$path);//得到数组array('.','a','b','c','d','e','f ... 
- 解决NTPD漏洞,升级Ntpd版本
			关于解决漏洞的问题我就不详说了,主要就是升级版本.这里我们就直接简单记录下步骤: 1.升级 使用root用户登录系统进入到/home/guankong ,上传ntp-4.2.8p9-1.el6.x86 ... 
- [经验分享]WebAPI中返回类型JsonMessage的应用
			这是一个绝无仅有的好类型,一个你爱不释手的好类型,好了,不扯了,直接上干货. 相信大家都知道,在调用接口的时候返回Json数据已经成为一种不成文的标准,因为它的解析快,易读等优秀的特性,所以被绝大多数 ... 
- shell 踩坑记
			变量赋值时,等号两边不能有空格: 在判断表达式中,不论是 [ -n "$1" ] 还是 [ -f "$1" ] 都要在变量两侧加上双引号: 在使用与或非判断式 ... 
