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的过程相关推荐

  1. ASP.NET Web API 过滤器创建、执行过程(二)

    ASP.NET Web API 过滤器创建.执行过程(二) 前言 前面一篇中讲解了过滤器执行之前的创建,通过实现IFilterProvider注册到当前的HttpConfiguration里的服务容器 ...

  2. 32拟合分析_SigmaPlot14.5:指导用户逐步完成图形创建和数据分析过程

    SigmaPlot 14.5 专为满足科学家.专业研究人员和工程师的需求而设计 SigmaPlot凭借获奖的界面和直观的向导技术,指导用户逐步完成图形创建和数据分析过程.SigmaPlot具备创建令人 ...

  3. mybatis mysql Dao_Dao模式创建mybatis项目过程

    Java EE框架 1.表现层 springMVC 2.粘合剂 spring(IOC/控制反转 AOP/面向切面编程 DI/依赖注入) 3.持久层 mybatis Dao模式创建mybatis项目过程 ...

  4. Java:对象创建和初始化过程

    1.Java中的数据类型     Java中有3个数据类型:基本数据类型(在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型) ...

  5. 在JavaScript中从base64字符串创建Blob

    本文翻译自:Creating a Blob from a base64 string in JavaScript I have base64-encoded binary data in a stri ...

  6. Spring源码系列(十二)Spring创建Bean的过程(二)

    1.写在前面 上篇博客主要Spring在创建Bean的时候,第一次调用的Bean的后置处理器的过程,同时笔者也打算将整个Spring创建的Bean的过程,通过这个系列,将Bean的创建过程给讲清楚,废 ...

  7. Hive创建表的过程详细过程

    Hive创建表的过程详细过程 Demo 第一个demo CREATE TABLE db.testTable(id string COMMENT 'id',name string COMMENT '姓名 ...

  8. C++类对象的创建与释放过程

    C++类对象的创建与释放过程 类的定义与实例化 类对象的创建方法 类对象的创建过程 类对象的释放过程 析构函数 缺省析构函数 类的定义与实例化 类对象的创建方法 1.在栈上创建 类名 对象; // 无 ...

  9. web服务器使用JSP创建网页的过程

    通过浏览器 调用.jsp文件 通过浏览器url调用 Servlet 文件 第一点: eclipse环境下,创建访问.jsp文件和创建访问servlet文件 参考http://www.runoob.co ...

  10. Cube和Kylin创建Cube的过程

    转载:http://www.aboutyun.com/thread-20757-1-1.html 简介 Kylin作为一个OLAP引擎,需要Cube模型支撑,在我们的工作过程中,在和用户以及相关的开发 ...

最新文章

  1. IssueVission的命令处理
  2. 想不到,那些让我半夜偷偷收藏的沙雕表情包,竟是出自 AI 之手
  3. 算法----------字符串的排列(Java版本)
  4. JAVA中使用FTPClient实现文件上传下载
  5. DATE_GET_WEEK
  6. 《几何与代数导引》习题1.36.2
  7. 在浏览器控制台执行以下代码,输入的结果是()
  8. Eclipse出现the type java.lang.CharSequence can't be resolved.
  9. NSString删除换行符号
  10. 前端与游戏前端unityUI比较
  11. Android Studio 应用目录结构说明
  12. 《Python 黑帽子》学习笔记 - 原书 netcat 代码分析 - Day 7
  13. 网管世界 网管生活 网管总结
  14. Timeline(时间线)
  15. 下拉列表—DropDownMenu的使用解析
  16. 正大国际期货:为什么外盘期货顺势交易这么难
  17. 人工智能在脑神经科学的应用创新与热点——脑机接口
  18. 适用场景:All kinds of GCs
  19. gethostbyname和struct hostent详解
  20. 巨头侵蚀下,社交电商的“蜂群”当如何生存?

热门文章

  1. 木子-后端-Java小知识点
  2. Spring 中 配置文件 加入 aspectj-autoproxy 项目报错
  3. Python+selenium实现医院自动挂号
  4. 分享109个PHP源码,总有一款适合您
  5. 新能源汽车的电池寿命
  6. Android源码阅读记录
  7. java 匿名函数_Java8学习系列之匿名函数Lambda
  8. 七夕 - 程序员表白代码
  9. 基于Yahoo网站性能优化的34条军规及自己的见解
  10. 应用宝shangjia安全评估报告_你的APP上架,遇到【安全评估报告】这道门槛了吗?...