FSAF

FeatureSelectiveAnchor-FreeModuleforSingle-ShotObjectDetection
参考:
https://zhuanlan.zhihu.com/p/58782838
https://zhuanlan.zhihu.com/p/58508985

提出了一种简单有效的单镜头目标探测器的特征选择无锚(FSAF)模块。它可以插入具有特征金字塔结构的单热探测器。FSAF模块解决了传统基于锚点检测的两个局限性1)启发式引导特征选择;2
overlap-based锚抽样。在培训过程中,我们动态地将每个实例分配到最合适的特性级别。在推理时,FSAF模块可以通过并行输出预测与基于锚的分支协同工作。我们用无锚分支的简单实现和在线特性选择策略实例化了这个概念。
目标检测的一个难题是尺度变化。为了实现尺度不变性,最先进的探测器构建了特征金字塔或多级特征塔[24、8、21、22、19、38]。和多个尺度层次的特征映射生成并行的预测。此外,锚盒还可以进一步处理尺度变化[24,28]。锚盒用于将所有可能的实例盒的连续空间离散为有限数量的盒子,这些盒子具有预定义的位置、比例和纵横比。当与特征金字塔集成时,大型锚框通常与上部特征图相关联,而小型锚框则与下部特征图相关联,请参见图2。这是基于启发式的,上面的特征映射有更多的语义信息适合于检测大的实例,而较低的特征映射有更多的细节或细粒度的细节适合于检测小的实例[11]。结合锚盒的特征金字塔设计在目标检测基准上取得了良好的性能[7,23,9]。
在这里插入图片描述

然而,这种设计有两个局限性:1)启发式引导的特征选择;2)基于覆盖锚取样。
在训练过程中,每个实例总是根据IoU重叠匹配到最近的锚盒(es)。而锚框则通过人类定义的规则(如框的大小)与特定级别的功能映射相关联。因此,为每个实例选择的特性级别完全基于自组织启发式。例如,大小为5050像素的car实例和大小为6060像素的另一个类似的car实例可能被分配到两个不同的特性级别,而另一个40 40 car实例可能被分配到与5050实例相同的级别,如图2所示。换句话说,锚匹配机制本质上是启发式引导的。这将导致一个主要缺陷,即用于训练每个实例的所选特性级别可能不是最优的。
我们提出了一种简单有效的feature选择性无锚(FSAF)模块,同时解决了这两个限制。我们的动机是让每个实例自由地选择最佳级别的特性来优化网络,因此在我们的模块中不应该有锚框来约束特性的选择。相反,我们以无锚的方式对实例进行编码,以了解用于分类和回归的参数。每个层次的特征金字塔都构建一个无锚分支,独立于基于锚的分支。与基于锚的分支类似,它由分类子网和回归子网组成(如图所示)。可以将实例分配到无锚分支的任意级别。在培训过程中,我们根据实例内容动态地为每个实例选择最合适的特性级别,而不是仅仅根据实例框的大小。然后,所选的特性级别将学习检测所分配的实例。
在这里插入图片描述
从网络的角度来看,我们的FSAF模块非常简单。图4说明了带有FSAF模块的RetinaNet[22]的体系结构。简而言之,RetinaNet由一个主干网络(如图所示)和两个特定于任务的子网组成。特征金字塔由骨干网构造,层次为P3到P7,其中l为金字塔级,Pl为输入图像的1=2l分辨率。为此,Pl附加了一个分类子网和一个回归子网,它们都是小的全卷积网络。分类子网为每个A锚和K个对象类预测对象在每个空间位置的概率。如果存在,回归子网预测每个A锚到附近实例的4维类无关偏移量。

重点

在RetinaNet的顶部,我们的FSAF模块仅为每个金字塔层引入两个额外的conv层,如图4中虚线特征图所示。这两层分别负责无锚分支的分类和回归预测。更具体地说,分类子网中的feature map上附加了一个带有K个filter的33 conv层,后面跟着sigmoid函数,与基于anchor的分支中的feature map并行。它为K个对象类预测对象在每个空间位置的概率。类似地,回归子网中的feature map上附加了一个带有四个过滤器的33 conv层,然后是ReLU[26]函数。它负责预测以无锚定方式编码的框偏移量。为此,无锚和基于锚的分支以多任务的方式联合工作,共享每个金字塔级别的特性。
在这里插入图片描述
FSAF同样包含classification和box regression两个分支,分别得到predict box所属的类别和坐标值。

Ground-truth和loss的设计


在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
FSAF的设计就是为了达到自动选择最佳Feature的目的,最佳Feature是由各个feature level共同决定。再看这张图,哪一个 anchor-free branch 输出的 loss 最小,就把 ground-truth 分配去哪一个层:在训练阶段,它与 anchor-based 的分支进行加权训练,通过 λ = 0.5 进行权衡。在推理的时候,还需要进行这样的 selective 吗?当然不用了,不过要把 anchor-free branch 得到的 box 拿过来和 anchor-based branch 一起做 NMS。
在这里插入图片描述

  • 3
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值