anchor_target_layer层其他部分解读

inds_inside = np.where(
            (all_anchors[:, 0] >= -self._allowed_border) &
            (all_anchors[:, 1] >= -self._allowed_border) &
            (all_anchors[:, 2] < im_info[1] + self._allowed_border) &  # width
            (all_anchors[:, 3] < im_info[0] + self._allowed_border)    # height
        )[0]

        # keep only inside anchors
        anchors = all_anchors[inds_inside, :]

这部分代码是把所有anchor中超过了图片边界部分的anchor去掉,即论文中说的cross-boundary anchors

        # fg label: for each gt, anchor with highest overlap
        labels[gt_argmax_overlaps] = 1

        # fg label: above threshold IOU
        labels[max_overlaps >= cfg.TRAIN.RPN_POSITIVE_OVERLAP] = 1

这部分代码是把和gt-roi有最大iou的anchor和与任何gt-roi iou大于0.7的anchor的label置为1,即前景。这和论文中所说的是一样的。

if cfg.TRAIN.RPN_CLOBBER_POSITIVES:
            # assign bg labels last so that negative labels can clobber positives
            labels[max_overlaps < cfg.TRAIN.RPN_NEGATIVE_OVERLAP] = 0

把和所有gt-roi iou都小于0.3的achor的label置为0

# label: 1 is positive, 0 is negative, -1 is dont care
        labels = np.empty((len(inds_inside), ), dtype=np.float32)
        labels.fill(-1)

这是label的初始化的代码,所有的label都置为-1

所以总的来看,label分为3类,一类是0,即背景label;一类是1,即前景label;另一类既不是前景也不是背景,置为-1。论文中说只有前景和背景对训练目标有用,这种-1的label对训练没用。

# subsample positive labels if we have too many
        num_fg = int(cfg.TRAIN.RPN_FG_FRACTION * cfg.TRAIN.RPN_BATCHSIZE)
        fg_inds = np.where(labels == 1)[0]
        if len(fg_inds) > num_fg:
            disable_inds = npr.choice(
                fg_inds, size=(len(fg_inds) - num_fg), replace=False)
            labels[disable_inds] = -1

        # subsample negative labels if we have too many
        num_bg = cfg.TRAIN.RPN_BATCHSIZE - np.sum(labels == 1)
        bg_inds = np.where(labels == 0)[0]
        if len(bg_inds) > num_bg:
            disable_inds = npr.choice(
                bg_inds, size=(len(bg_inds) - num_bg), replace=False)
            labels[disable_inds] = -1
            #print "was %s inds, disabling %s, now %s inds" % (
                #len(bg_inds), len(disable_inds), np.sum(labels == 0))

论文中说从所有anchor中随机选取256个anchor,前景128个,背景128个。注意:那种label为-1的不会当前景也不会当背景。

这两段代码是前一部分是在所有前景的anchor中选128个,后一部分是在所有的背景achor中选128个。如果前景的个数少于了128个,就把所有的anchor选出来,差的由背景部分补。这和fast rcnn选取roi一样。

时间: 2025-01-24 01:40:34

anchor_target_layer层其他部分解读的相关文章

OSI七层协议大白话解读

参考链接:https://www.cnblogs.com/zx125/p/11295985.html 国际标准化组织(ISO)制定了osi七层模型,iso规定了各种各样的协议,并且分了7层 应用层 应用进程 产生数据 表示层 对应用层来的数据进行压缩,格式化.解压缩,加密,解密 会话层 数据传输之前建立一个应用程序之间的会话,传输过程中维持一个会话,结束终止这个会话 传输层 标明上层是那些应用程序(流控) 建立,维护和终止虚拟的链路 确保数据传输的可靠性 通过错误检测和恢复 信息流控制来保障可靠

网络七层协议/五层协议

将网络各个层面比喻成一次深情的告白: 应用层: 规定"应用程序"的数据格式. http / ftp /email 等.   //纸条上写的是啥? 传输层: 建立"端口"到"端口"之间的通信. UDP/TCP 协议."端口". //我们帮你传纸条 网络层: 确定每一台计算机的位置,建立"主机"到"主机"之间的通信.IPv4协议,"IP地址".   // 女孩的位置 数据

Android系统各种类型的service刨根解读

Android存在3大类service, 处于android系统的不同框架层,具体解读如下: 1) init.rc中的service service servicemanager /system/bin/servicemanager class core user system group system critical onrestart restart healthd onrestart restart zygote onrestart restart media onrestart res

深度学习:从入门到放弃

https://zhuanlan.zhihu.com/p/22976342 首发于深度学习:从入门到放弃 写文章登录 FCN学习:Semantic Segmentation 余俊 1 年前 感谢@huangh12 @郑途 @麦田守望者对标签图像生成的研究和讨论,这几天研究了一下,补充如下. -----------------------------------------------------分割线------------------------------------------------

网络架构 :七层协议解读

七层协议: 物理层: 通过 网线/无线电波将计算机连接在一起,而物理设备只能传递电信号(高(1)低(0)电平! 例如: // 010101010000111010101010101010 (需要传递的数据) 数据链路层: 单纯的0和1没有实际意义的!必须将0 和 1 分组并且规定解读方式! 以太网协议:局域网协议!提出了 "数据包" 的概念! 网络层: 网络层主要就是:建立 "主机/IP" 到 "主机/IP" 之间的连接. 那么如果找到网络中唯一

数据分析的5层解读,报表仍是有效的落地实践!

文 | 船长 浙江天正电气股份有限公司(下文简称浙江天正),是中国工业电器行业规模最大的企业之一,是中国低压电器行业的领军企业.旗下有四处电气工业园:温州.嘉兴.上海.南京,低压电器行业业务以配电与工业控制为主. 2017年4月份,在温州,企业信息化交流会上,浙江天正电气控股的李书育谈起天正电气曾经面临的数据分析的挑战,分享了一年来的实践经验. 项目背景 浙江天正1999年成立,信息化也经历了近18年.浙江天正先后建设了大大小小十几套信息化系统(信息化应用简图如下),其中核心系统有四个:ERP(

mysql之show engine innodb status解读(转)

add by zhj: 我第一次知道这个命令是线上服务出了问题,然后同事用这个命令去查看死锁.但用这个命令看死锁有一定的局限性,它只能看到最后一次死锁, 而且只能看到死锁环中的两个事务所执行的最后一条语句(即被死锁卡住的那条语句),看不到整个死锁环,也看到不整个事务的语句.但是即使这亲,对我 们来说也非常有用,因为一般来说,数据库同时存在多个死锁环的可能性比较小,而且有了死锁环中的事务的最后一条语句,我们找到整个死锁环不是太难. "show engine innodb status"这

QCustomplot使用分享(二) 源码解读

一.头文件概述 从这篇文章开始,我们将正式的进入到QCustomPlot的实践学习中来,首先我们先来学习下QCustomPlot的类图,如果下载了QCustomPlot源码的同学可以自己去QCustomPlot的目录下documentation/qcustomplot下寻找一个名字叫做index.html的文件,将其在浏览器中打开,也是可以找到这个库的类图.如图1所示,是组成一个QCustomPlot类图的可能组成形式. 一个图表(QCustomPlot):包含一个或者多个图层.一个或多个ite

Ehcache详细解读

Ehcache详细解读 Ehcache  是现在最流行的纯Java开源缓存框架,配置简单.结构清晰.功能强大,最初知道它,是从Hibernate的缓存开始的.网上中文的EhCache材料以简单介绍和配置方法居多,如果你有这方面的问题,请自行google:对于API,官网上介绍已经非常清楚,请参见官网:但是很少见到特性说明和对实现原理的分析,因此在这篇文章里面,我会详细介绍和分析EhCache的特性,加上一些自己的理解和思考,希望对缓存感兴趣的朋友有所收获. 一.特性一览 ,来自官网,简单翻译一下