原文:https://blog.csdn.net/u013548568/article/details/79430512

主要是从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,固定为8
        scales wrt a reference (0, 0, base_size - 1, base_size - 1) window.
        """
        anchor = np.array([1, 1, base_size, base_size], dtype=np.float) - 1
        anchors = _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 targets
            if cfg.FPN.FPN_ON and cfg.FPN.MULTILEVEL_RPN:
                # RPN applied to many feature levels, as in the FPN paper
                rpn_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 level
                rpn_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中的blobs相关推荐

  1. 关于深度学习训练周期,训练时间表,训练时刻表,训练策略的说明——Training Schedules,Lr schd,1x,2x,mmDetection和Detectron中训练周期次数对比

    记录一下关于深度学习常用的训练策略说明: ID:wonyoungsen 通常的框架或者论文都会提到训练周期关于1x和2x,她的来历最初是从Detectron来的,在她的MODEL_ZOO.md介绍里面 ...

  2. Caffe源码中blob文件分析

    Caffe源码(caffe version commit: 09868ac , date: 2015.08.15)中有一些重要的头文件,这里介绍下include/caffe/blob.hpp文件的内容 ...

  3. 重磅!图森王乃岩团队最新工作—TridentNet:处理目标检测中尺度变化新思路

    欢迎关注微信公众号[计算机视觉联盟] 获取更多前沿AI.CV资讯 联盟很荣幸获得图森首席科学家王乃岩博士的授权发布图森最新成果! ----------------------------------- ...

  4. 【detectron】对输入样本如何产生anchor

    detectron中图片产生anchor的函数是get_field_of_anchors,它位于data_utils.py,要生成anchor需要下列参数,因此该函数主要输入就是以下几个参数,不做过多 ...

  5. caffe2及Detectron环境搭建

    1.安装CUDA+CUDNN,这个可以参考笔者的上一篇博客 2.安装caffe2笔者试过三种方法 1)conda安装 如果没有gpu则直接运行 conda install -c caffe2 caff ...

  6. overlay2 在打包发布流水线中的应用

    背景 自从去年五月份入职后一直在负责公司 PaaS toB 产品的打包发布及部署运维工作,工作性质上有点类似于 Kubernetes 社区的 SIG Release 团队[1].试用期的主要工作就是优 ...

  7. GNU Make 使用手册(于凤昌中译版)

    GNU Make 使用手册(中译版) 翻译:于凤昌 GNU make Version 3.79 April 2000 Richard M. Stallman and Roland McGrath 1 ...

  8. Facebook发布Detectron2,下一个万星目标检测新框架

    作者 | CV君 来源 | 我爱计算机视觉(ID:aicvml) Detectron是Facebook于2018年发布的专注于目标检测的深度学习框架,基于Caffe2深度学习框架,实现了众多state ...

  9. ImageNet时代将终结?何恺明新作:Rethinking ImageNet Pre-training

    译者 | 刘畅 林椿眄 整理 | Jane 出品 | AI科技大本营 Google 最新的研究成果 BERT 的热度还没褪去,大家都还在讨论是否 ImageNet 带来的预训练模型之风真的要进入 NL ...

  10. Azure 服务管理 Cmdlet(1)

    管理订阅 Get-AzurePublishSettingsFile 下载Azure订阅的发布设置文件. Get-AzureSubscription 从订阅数据文件保存在用户的配置文件获取有关Azure ...

最新文章

  1. 很遗憾,没有一篇文章能讲清楚ZooKeeper
  2. Java中的队列同步器AQS
  3. OpenCV学习笔记之 ( 三 ) MFC显示Mat图片
  4. 苦B的程序猿道路数据验证
  5. 利用原始套接字实现一个简单的采集网络数据包
  6. Java语法基础学习DayTwo
  7. 开发一款AirPods或者Beats耳机查看电量的软件
  8. 透过容抗来看电容量和频率的关系
  9. 微信无法连接服务器1-500,GIF表情超过500kb无法添加到微信的解决方法
  10. 双通道IPC如何RTSP取两个通道视频流?
  11. 利用python进行prosper贷款数据EDA分析(一)
  12. 量子计算机、康威扭结、奥数AI,这是2020年计算机、数学的重大突破
  13. 嵌入式开发--STM32上实现驱动注册initcall机制(类linux)
  14. RESTful介绍和使用教程
  15. STM32 串口 FIFO
  16. 如何导出、导入mysql数据
  17. 阿里的社区梦 能靠闲鱼完成吗?
  18. 计算机控制与自动化专业世界排名,2019ARWU软科世界大学自动化与控制专业排名TOP50...
  19. Stress Centrality (重力中心性)的计算方法
  20. torch各个版本镜像_Anaconda安装Pytorch镜像详细教程

热门文章

  1. 超酷flv网页播放器 CKplayer V5.7
  2. 我的木子走了,余生只剩下张长弓.....
  3. chrome打开链接隐私设置错误_解决用谷歌浏览器访问https网站遇到的“隐私设置错误 您的连接不是私密连接”问题...
  4. cout, endl的使用
  5. Vision Transformer | CVPR 2022 - Beyond Fixation: Dynamic Window Visual Transformer
  6. win10 自带卸载流氓软件工具
  7. Excel中Mac和Windows对绝对和相对引用的快速切换方式
  8. SNN综述(2):生物可解释的脉冲神经网络
  9. Self-Supervised Learning of Pretext-Invariant Representation
  10. #Geek Founders# 蒋涛的 CES 2016 感受 - Day 4 (总结版)