RefineDet

1 introduce
目标检测中类别不平衡是很常见的问题,无论在one-stage还是two-stage一二阶段negative bbox数量都远高于positive。这无法直接计算类别loss, 很常见的是使用negative hard mining挑选出一部分negative框进行计算。在RPN中我们使用随机挑选的方式,保证参与计算loss的正负样本比1:1,在SSD中(忘了再看一看),本文同样使用hard mining来避免不平衡。

RPN
在介绍一次RPN:我们把开始生成的基准叫anchor,RPN输出的框叫proposal。在conv5_3每个位置都有多个anchor,如果RPN输出为0那么可以认为proposal的初始值就是这些anchor。(论文把这些proposal直接叫成anchor容易引起混乱,注意理解,之后也把这部分叫anchor)。 根据proposal与gt的IOU将其分为正负样本,由于负样本数目多计算loss时有不平衡问题,所以做了抽样各取128个送入loss。那么问题来了,每次迭代时都使用128个positive anchor计算坐标误差产生梯度,不妨有离gt不太远的负样本根据不属于他们的梯度误打误撞拟合到gt附近,但是对于离得较远,与任何gt都没交集的proposal 他们永远不会拟合到gt附近。对于这部分proposal参数更新就是浪费计算资源了。如果滤除negative程度不高的proposal,他们之后可能会拟合到gt位置,滤除就会降低recall, 所以能做的是滤除negative程度很高的,本文就是这么做的。

2.网络结构
refineDet就是用FPN对SSD进行改进。SSD是直接在原始网络bottom-up部分做预测回归,而引入FPN后分类器和回归器应该和up-bottom部分连接。除此之外 RefineNet在bottom-up部分也没闲着,他在这一部分refine anchor主要作用还是回归了anchor的坐标,形成两步回归的结构。作者认为对one-stage方法都只对anchor回归一次, 很难将anchor拟合到精确位置。作者吧bottom-up部分叫refine部分用来微调anchor,up-bottom部分叫做目标检测部分,用的是refine后的anchor。

在这里插入图片描述

RefineNet生成anchor的方式和FPN结合RPN是一样的,在每一层配置单一尺度的anchor,不同层间anchor尺度不相同。在每一层上anchor比例都是1:1,1:2,2:1. 图中上面的部分就是FPN的bottom-up,在这一部分做了对negative anchor的滤除和对anchor分类回归。

滤除negative anchor:对于negative score大于阈值(0.99)的anchor直接滤掉,不再参与梯度更新,不会送入目标检测部分。但是滤除之后负样本数量还是远多于正样本的,还是用了hard mining才计算loss。 选取标准没看懂?在目标检测部分进行同样进行hard mining。

图中的迁移连接部分就是FPN的lateral connection。不过他的网络结构比FPN复杂。

3.Experiment
是唯一一个one-stage方法中AR过80的。虽然使用了FPN但输入分辨率仍然对性能影响很大,可见Refine320还是比Refine512性能要差的。Refine320+是指在测试阶段是用了多尺度测试。

4 亮点
FPN结合SSD对小目标检测效果改善应该很大,而且SSD在语义等级相差较大的特征图上做预测效果不好。
对anchor进行两步回归,由于在计算loss时还是得用hard mining,滤除anchor对精度影响并不大。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值