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 ...
随机推荐
- HIVE的Shell操作
1.Hive支持的一些命令 退出使用quit或exit离开交互式外壳. set key = value使用它来设置特定配置变量的值. 这里要注意的一件事是,如果您对变量名拼写错误,cli将不会显示错误 ...
- 【JNDI】Java Naming and Directory Interface
一.数据源的由来 在Java开发中,使用JDBC操作数据库的四个步骤如下: ①加载数据库驱动程序(Class.forName("数据库驱动类");) ②连接数据库(Conn ...
- ajax 实战使用
注意ajax 必须放在script脚本中使用 ajax用于前端朝后端提交数据,并且后端函数处理好结果返回给success函数作为回调函数给前端,前端拿到后端传来的值,比如code==0 来做相应的前端 ...
- PHP ftp_fput() 函数
定义和用法 ftp_fput() 函数上传本地一个已经打开的文件,并在 FTP 服务器上把它保存为一个文件. 如果成功,该函数返回 TRUE.如果失败,则返回 FALSE. 语法 ftp_fput(f ...
- PC 端响应式布局
前言:PC端 电脑显示器的尺寸种类还是很多的,台式电脑和笔记本电脑尺寸相差就更明显,所以响应式布局还是很重要的,甚至是必须要考虑的. 响应式的页面好不好,在后管平台上很明显.因为后管平台,一般是全屏显 ...
- Java-Class-C:cn.hutool.core.date.DateUtil
ylbtech-Java-Class-C:cn.hutool.core.date.DateUtil 1.返回顶部 2.返回顶部 1.1. import cn.hutool.core.date.Da ...
- apach hadoop2.6 集群利用Phoenix 4.6-hbase 批量导入并自动创建索引
基础环境: 1.安装apach 版本hadoop2.6 2.部署hbase1.0.0 3.下载phoenix-4.6.0-HBase-1.0.下载地址(http://mirror.nus.edu.sg ...
- [已解决]报错This event loop is already running
安装nest_asyncio pip install nest_asyncio 导入并调用 import nest_asyncio nest_asyncio.apply()
- 42-Ubuntu-用户管理-07-修改权限命令介绍
修改文件权限 序号 命令 作用 01 chown 修改文件/目录拥有者 02 chgrp 修改文件/目录所在主组 03 chmod 修改文件/目录权限 chmod chown chgrp ...
- springboot配置swagger-rest文档
前言 swagger是一个很好的restful形式的api文档,可以通过比较小的侵入来提供很好的restful的文档.因为swagger是依赖服务生成的,所以其实是依赖服务的,这也算是它的一个小缺点吧 ...