RPN网络解读

RPN网络解读RPN网络源码解读在高层的featuremap初次计算anchorbox点数值604099代表一个特征维度生成9个anchorbox,但特征层w,h为啥是60,40不应该是相等的?毕竟backbone网络一系列操作(下采样),w,h同时缩小的。下不管了,不是今天主要问题。step1:也就是说原始生成大约20000boxs,再进行2k排序(每个boxs得分为目标或背景的概率,不管是背景还是目标都要得分高的)设定阈值为12000,也就是说最多保留12000,也有的源码设定2000。step2

大家好,又见面了,我是你们的朋友全栈君。

RPN网络源码解读

在高层的feature map初次计算anchor box点数值 60x40x9。9代表一个特征维度生成9个anchor box, 但特征层w,h为啥是60,40不应该是相等的?毕竟backbone网络一系列操作,w,h同时缩小的?解读源码之后才明白,原来图像预处理并不是对原图像简单的resize操作,因为这样的话迫使原图变形了,源码上给出的处理是:一个batch中最大原图的W作为该batch的W;一个batch中最大原图的H作为该batch的H,遍历整个batch进行0填充,使batch内的原图都一样大。那么问题来了,每个batch的W,H都不一样了啊,对,就是不一样,以至于经过backbone后feature map的w,h都不一样,生成的anchor也都不一样多,但是batch内的一定是一样的。

step1:原始生成大约20000boxs,再进行2k排序(每个boxs得分为目标或背景的概率,不管是背景还是目标都要得分高的)设定阈值为12000,也就是说最多保留12000,也有的源码设定2000。

step2:score排序完保留12000个,再进行NMS非极大抑制,这里的非极大抑制要设定阈值,注意下面的话是关键:先选出score打分最高的,根据这个得分框剔除重合度高的,何为重合度高?就是IOU值大的。其实我们知道得分就够了,并不需要知道它是背景还是目标(我之前的解读就是错误的,我以为是利用GT的IOU值,你想想如果利用GT的话,剔除的更多的岂不是正样本?负样本怎么剔除,负样本本来就与GT的IOU重合度低)这样的话就保留2000个boxs,这2000个就是属于那种最可能是目标或者最可能是背景的框了。
step3:上面生成的anchor boxs(2000个)是用来训练fastrcnn网络?不,在源码中还是进行了进一步的筛选(进一步筛选就是计算与GTBOX的IOU值,这一条件作为判断,IOU值大的自然就保留下来,很遗憾一开始的RPN网络选出大多数都是背景,难道就让fastrcnn计算一堆背景么,实际处理有个技巧,就是把GT加进出充当正样本),最终一张图片剩余的是512个proposal,然后将这512个boxs映射到feature map上,然后进行ROI pooling操作,输入全连接层+交叉熵损失层或者smooth损失函数进行各个目标和背景的分类,并同时进行框的回归参数修正,损失目标函数是一个联合损失,有目标的要回归,背景就不必计算回归损失了,没必要,也没有GTBOXS作为参考。
总结:以上所述操作就是RPN网络筛选proposal用于训练fastrcnn网络的内容(ps:这绝不是用于训练RPN网络的anchorboxs框),你觉得RPN网络的sore得分选出来的框再来训练自己还有意思么,这就好比,我自己出题给自己做,然后再打分,这也违背了监督式学习
下面再写RPN网络的训练过程,以及RPN训练的监督框是怎么来的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/152306.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 一张图解释TDD和FDD的区别

    一张图解释TDD和FDD的区别转载自:http://iphonebbs.cnmo.com/thread-14714263-1-1.html如图和明显TDD是这一秒上行,下一秒下行FDD是两个通道再详细点就是TDD就是这一个时段进,下一个时段出,所以叫做时分双工,速度越快,衰落变换频率越高,衰落深度越深,因此必须要求移动速度不能太高。而FDD是双向通道,是两个频段,所以叫做频分双工,FDD模

    2022年6月12日
    46
  • 面向对象设计要遵循哪些原则_java面向对象的概念

    面向对象设计要遵循哪些原则_java面向对象的概念我们在应用程序开发中,一般要求尽量两做到可维护性和可复用性。应用程序的复用可以提高应用程序的开发效率和质量,节约开发成本,恰当的复用还可以改善系统的可维护性。而在面向对象的设计里面,可维护性复用都是以面向对象设计原则为基础的,这些设计原则首先都是复用的原则,遵循这些设计原则可以有效地提高系统的复用性,同时提高系统的可维护性。面向对象设计原则和设计模式也是对系统………

    2025年8月24日
    2
  • mybatis一级缓存和二级缓存失效_mybatis二级缓存默认开启吗

    mybatis一级缓存和二级缓存失效_mybatis二级缓存默认开启吗1.缓存介绍Mybatis提供查询缓存,如果缓存中有数据就不用从数据库中获取,用于减轻数据压力,提高系统性能。Mybatis的查询缓存总共有两级,我们称之为一级缓存和二级缓存,如图:一级缓存是SqlSession级别的缓存。在操作数据库时需要构造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相…

    2026年2月5日
    4
  • SQL批量更新操作[转载]

    SQL批量更新操作[转载]

    2021年8月9日
    70
  • 数据库设计工具—–PD

    数据库设计工具—–PD数据库设计工具—–PDPowerDesign是一款功能强大的建模软件,提供强大的元数据管理功能,可以帮助用户构建关键信息的全方位视图,创建多种类型的模型,包括数据模型,物理模型,面向对象模型等等。同时继承了数据管理、BL、数据集成和数据整合多种功能。这是一款收费软件安装完成后,就来介绍一下基本使用。注意:这是一款功能非常非常非常强大的软件,我们只是介绍一下一小部分我们数据库用到的功能。进入软件后界面如下:我们点击file->然后创建一个model(模型)。然后创建一个物理

    2022年7月11日
    30
  • 新浪微博API错误代码说明对照表 http://open.weibo.com/wiki/Error_code

    新浪微博API错误代码说明对照表 http://open.weibo.com/wiki/Error_code

    2021年10月25日
    93

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号