Detectron 创建blob的过程
1
主要是从roidb生成blobs的过程
以上便是整体的流程图,那么简单说一下detectron产生anchor的过程
相对于之前faster产生一系列的anchor不同,FPN在每一个level上面都会创建属于该level感受野的anchor,假设stride为4,8,16,32,64,那么在每一个stride上面,会产生一种面积的,长宽比分别为0.5,1,2的三种anchor,相比于之前的一下子产生多种面积多种长宽比的anchor要更加合理。
def _generate_anchors(base_size, scales, aspect_ratios):"""Generate anchor (reference) windows by enumerating aspect ratios X #每一个base_size对应一个scales,固定为8scales wrt a reference (0, 0, base_size - 1, base_size - 1) window."""anchor = np.array([1, 1, base_size, base_size], dtype=np.float) - 1anchors = _ratio_enum(anchor, aspect_ratios)anchors = np.vstack([_scale_enum(anchors[i, :], scales) for i in range(anchors.shape[0])])return anchors
在rpn.py里面有
# Add RPN targetsif cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_RPN:# RPN applied to many feature levels, as in the FPN paperrpn_blobs = _get_rpn_blobs(im_height, im_width, foas, all_anchors, gt_rois #这里的这个函数产生五个level的blob,保存成5个字典)for i, lvl in enumerate(range(k_min, k_max + 1)):for k, v in rpn_blobs[i].items():blobs[k + '_fpn' + str(lvl)].append(v) #将产生的五个字典对应到对应的blob里面else:# Classical RPN, applied to a single feature levelrpn_blobs = _get_rpn_blobs(im_height, im_width, [foa], all_anchors, gt_rois)for k, v in rpn_blobs.items():blobs[k].append(v)
最后在rpn部分,blob里面的键值一共有23个,是哪23个呢?
一共有5个level,每一个level都会有
rpn_labels_int32_wide_fpn_x,rpn_bbox_targets_wide_fpn_x, rpn_bbox_inside_weights_wide_fpn_x,rpn_bbox_inside_weights_wide_fpn_x这四个参数,所以一共有20个
再加上roidb,data和im_info这三个参数,最后一共是23个
解析一下这几个blob里面存储的是什么
rpn_labels_int32_wide_fpn_x:存储的是对应level的anchor的label也即是背景还是前景
rpn_bbox_targets_wide_fpn_x:存储的是对应level的anchor的bbox的target,也即回归的目标
rpn_bbox_inside_weights_wide_fpn_x: 存储的是对应的回归目标的权重,只对正样本的权重做出设置,其他的为0,x,y,w,h四个参数的权重设置为1
rpn_bbox_inside_weights_wide_fpn_x: 对整个minibatch做平均的时候用到的,只统计参与训练的样本的个数,然后用1除以这个个数做归一化
roidb:roidb里面存储的是最原始从数据的标注里面加在的一些列的信息,包括label等等,具体包含的内容如下
valid_keys = [
'has_visible_keypoints', 'boxes', 'segms', 'seg_areas', 'gt_classes',
'gt_overlaps', 'is_crowd', 'box_to_gt_ind_map', 'gt_keypoints'
]
data:存储的是对应的roidb里面的图片以及缩放的尺度信息;
im_info:缩放后的图片的大小以及尺度的信息
blob里面存储的是一个batch的图片信息,假设cfg.TRAIN.IMS_PER_BATCH=2,那么blob一次存储的将是两张图片的信息,例如,此时blobs['data']存储的是两张图片的RGB存储,以此类推
Detectron 创建blob的过程相关推荐
- ASP.NET Web API 过滤器创建、执行过程(二)
ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...
- 32拟合分析_SigmaPlot14.5:指导用户逐步完成图形创建和数据分析过程
SigmaPlot 14.5 专为满足科学家.专业研究人员和工程师的需求而设计 SigmaPlot凭借获奖的界面和直观的向导技术,指导用户逐步完成图形创建和数据分析过程.SigmaPlot具备创建令人 ...
- mybatis mysql Dao_Dao模式创建mybatis项目过程
Java EE框架 1.表现层 springMVC 2.粘合剂 spring(IOC/控制反转 AOP/面向切面编程 DI/依赖注入) 3.持久层 mybatis Dao模式创建mybatis项目过程 ...
- Java:对象创建和初始化过程
1.Java中的数据类型 Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型) ...
- 在JavaScript中从base64字符串创建Blob
本文翻译自:Creating a Blob from a base64 string in JavaScript I have base64-encoded binary data in a stri ...
- Spring源码系列(十二)Spring创建Bean的过程(二)
1.写在前面 上篇博客主要Spring在创建Bean的时候,第一次调用的Bean的后置处理器的过程,同时笔者也打算将整个Spring创建的Bean的过程,通过这个系列,将Bean的创建过程给讲清楚,废 ...
- Hive创建表的过程详细过程
Hive创建表的过程详细过程 Demo 第一个demo CREATE TABLE db.testTable(id string COMMENT 'id',name string COMMENT '姓名 ...
- C++类对象的创建与释放过程
C++类对象的创建与释放过程 类的定义与实例化 类对象的创建方法 类对象的创建过程 类对象的释放过程 析构函数 缺省析构函数 类的定义与实例化 类对象的创建方法 1.在栈上创建 类名 对象; // 无 ...
- web服务器使用JSP创建网页的过程
通过浏览器 调用.jsp文件 通过浏览器url调用 Servlet 文件 第一点: eclipse环境下,创建访问.jsp文件和创建访问servlet文件 参考http://www.runoob.co ...
- Cube和Kylin创建Cube的过程
转载:http://www.aboutyun.com/thread-20757-1-1.html 简介 Kylin作为一个OLAP引擎,需要Cube模型支撑,在我们的工作过程中,在和用户以及相关的开发 ...
最新文章
- IssueVission的命令处理
- 想不到,那些让我半夜偷偷收藏的沙雕表情包,竟是出自 AI 之手
- 算法----------字符串的排列(Java版本)
- JAVA中使用FTPClient实现文件上传下载
- DATE_GET_WEEK
- 《几何与代数导引》习题1.36.2
- 在浏览器控制台执行以下代码,输入的结果是()
- Eclipse出现the type java.lang.CharSequence can't be resolved.
- NSString删除换行符号
- 前端与游戏前端unityUI比较
- Android Studio 应用目录结构说明
- 《Python 黑帽子》学习笔记 - 原书 netcat 代码分析 - Day 7
- 网管世界 网管生活 网管总结
- Timeline(时间线)
- 下拉列表—DropDownMenu的使用解析
- 正大国际期货:为什么外盘期货顺势交易这么难
- 人工智能在脑神经科学的应用创新与热点——脑机接口
- 适用场景:All kinds of GCs
- gethostbyname和struct hostent详解
- 巨头侵蚀下,社交电商的“蜂群”当如何生存?