faster-rcnn代码阅读-roi-data层
这一节讲述roi-data层,和这一层有关的结构图如下:

roi-data层的prototxt定义如下:
layer {
name: 'roi-data'
type: 'Python'
bottom: 'rpn_rois'
bottom: 'gt_boxes'
top: 'rois'
top: 'labels'
top: 'bbox_targets'
top: 'bbox_inside_weights'
top: 'bbox_outside_weights'
python_param {
module: 'rpn.proposal_target_layer'
layer: 'ProposalTargetLayer'
param_str: "'num_classes': 2"
}
}
这一层接着上一节的proposal层,主要的操作是对RPN阶段输出的proposal做进一步的筛选,从中选出背景和前景,得到rois,然后计算rois的回归目标。因为第二阶段的rois回归是和类别一一对应的,第二阶段全连接网络预测出的回归目标值bbox_pred的shape为(num_rois, 4*num_classes),所以最后需要将计算出的rois的回归目标值放入与其类别相对应的位置。这一层的详细操作如下:
1、取gt的x1, y1, x2, y2列,再补个全是0的第一列(表示batch_inds),然后将前面proposal层得到的rpn_rois和这样一个新的矩阵在第一个维度上合并,得到all_rois;
2、用于训练的rois的BATCH_SIZE=128,其中前景rois占比为0.25,有32个,背景rois有96个,因此,需要从all_rois中采样;
3、在all_rois中,若某个rois和任意一个gt的overlap大于或等于0.5,则该rois为前景,其类别为与之overlap最大的那个gt的类别。若某个rois和所有gt的overlap的最大值大于或等于0.1,并且小于0.5,则该rois为背景。这样便筛选出了前景和背景rois,每个rois都和一个gt对应(和它overlap最大的那个gt);
4、计算每个rois相对于它的gt的偏移量(回归目标targets),这个过程和rpn-data层中计算RPN阶段的回归目标一样。然后还需要将targets减去事先设定的均值,除以事先设定的标准差,最后将rois的类别添加在targets的第一列,得到bbox_target_data;
5、将rois的回归目标值放入与rois的类别相对应的位置,得到bbox_targets,并将bbox_inside_weights对应位置的4个值赋为1,而bbox_targets, bbox_inside_weights其他位置的值都为0,bbox_outside_weights在bbox_inside_weights大于0的位置值为1,其他位置值为0。
总结一下,这一层的输出有rois, labels, bbox_targets, bbox_inside_weights, bbox_outside_weights。第二阶段全连接网络的输出bbox_pred将和其中的bbox_targets, bbox_inside_weights, bbox_outside_weights作为第二阶段loss_bbox的输入。roi-data层的代码链接见这里。
faster-rcnn代码阅读-roi-data层的更多相关文章
- Faster RCNN代码理解(Python)
转自http://www.infocool.net/kb/Python/201611/209696.html#原文地址 第一步,准备 从train_faster_rcnn_alt_opt.py入: 初 ...
- Faster rcnn代码理解(4)
上一篇我们说完了AnchorTargetLayer层,然后我将Faster rcnn中的其他层看了,这里把ROIPoolingLayer层说一下: 我先说一下它的实现原理:RPN生成的roi区域大小是 ...
- Faster rcnn代码理解(2)
接着上篇的博客,咱们继续看一下Faster RCNN的代码- 上次大致讲完了Faster rcnn在训练时是如何获取imdb和roidb文件的,主要都在train_rpn()的get_roidb()函 ...
- Faster rcnn代码理解(1)
这段时间看了不少论文,回头看看,感觉还是有必要将Faster rcnn的源码理解一下,毕竟后来很多方法都和它有相近之处,同时理解该框架也有助于以后自己修改和编写自己的框架.好的开始吧- 这里我们跟着F ...
- Faster RCNN代码解析
1.faster_rcnn_end2end训练 1.1训练入口及配置 def train(): cfg.GPU_ID = 0 cfg_file = "../experiments/cfgs/ ...
- Faster R-CNN论文阅读摘要
论文链接: https://arxiv.org/pdf/1506.01497.pdf 代码下载: https://github.com/ShaoqingRen/faster_rcnn (MATLAB) ...
- Faster R-CNN代码例子
主要参考文章:1,从编程实现角度学习Faster R-CNN(附极简实现) 经常是做到一半发现收敛情况不理想,然后又回去看看这篇文章的细节. 另外两篇: 2,Faster R-CNN学习总结 ...
- Faster rcnn代码理解(3)
紧接着之前的博客,我们继续来看faster rcnn中的AnchorTargetLayer层: 该层定义在lib>rpn>中,见该层定义: 首先说一下这一层的目的是输出在特征图上所有点的a ...
- tensorflow faster rcnn 代码分析一 demo.py
os.environ["CUDA_VISIBLE_DEVICES"]=2 # 设置使用的GPU tfconfig=tf.ConfigProto(allow_soft_placeme ...
- 对faster rcnn代码讲解的很好的一个
http://www.cnblogs.com/houkai/p/6824455.html http://blog.csdn.net/u014696921/article/details/6032142 ...
随机推荐
- 【转】tomcat优化-有改protocol 和 缓存 集群方案
tomcat优化 在线上环境中我们是采用了tomcat作为Web服务器,它的处理性能直接关系到用户体验,在平时的工作和学习中,归纳出以下七种调优经验. 1. 服务器资源 服务器所能提供CPU.内存.硬 ...
- SQL 更新
SQL UPDATE 语句(更新表中的记录) UPDATE 语句用于更新表中的现有记录. SQL UPDATE 语句 UPDATE 语句用于更新表中已存在的记录. SQL UPDATE 语法 UPDA ...
- MySql5.7默认生成的密码无法正常登陆
1.修改 /etc/my.cnf,在 [mysqld] 小节下添加一行:skip-grant-tables=1 这一行配置让 mysqld 启动时不对密码进行验证 2.重启 mysqld 服务:sys ...
- [HNOI2015]菜肴制作 题解(贪心+拓扑)
Description 知名美食家小 A被邀请至ATM 大酒店,为其品评菜肴. ATM 酒店为小 A 准备了 N 道菜肴,酒店按照为菜肴预估的质量从高到低给予 1到N的顺序编号,预估质量最高的菜肴编号 ...
- Block 使用总结
- (void)testBlockWeakObj1 { UILabel *tl = [[UILabelalloc]init];//本地局部变量 __weak UILabel *weakTL = tl; ...
- 在Windows Server2016中安装SQL Server2016(转)
在Windows Server2016中安装SQL Server2016(转) 转自: http://blog.csdn.net/yenange/article/details/52980135 参考 ...
- 项目管理模式:外瀑布内敏捷(有人称为“信封法”)--转自知乎大神:CORNERSTONE
作者:CORNERSTONE 链接:https://www.zhihu.com/question/265968122/answer/878124580 来源:知乎 著作权归作者所有.商业转载请联系作者 ...
- ()centos7 安装python36
centos7 默认安装 python2.7 1.先安装python36和对应pip yum install python-pip #安装python2的pip yum install python3 ...
- DQL 数据查询语言 IS (information_schema)
3.information_schema 统计信息库 1.介绍: 视图 1.安全: 只允许查询,不知道操作的对象是谁. 2.方便: 只需要简单的select语句即可使用. 2.作用: 1.方便我们做数 ...
- python中面向对象之装饰器
python面向对象内置装饰器property,staticmethod,classmethod的使用 @property 装饰器作用及使用 作用:面向对象中的方法伪装成属性 使用如下: class ...