【目标检测】34、FSAF: Feature Selective Anchor-Free Module for Single-Shot Object Detection

在这里插入图片描述

论文:Feature Selective Anchor-Free Module for Single-Shot Object Detection

代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/fsaf

出处:CVPR2019

贡献:

  • 提出了一种根据 instance content 来自动选择最优尺度的模块 FSAF
  • FSAF 能够和单阶段 anchor-based 方法联合使用,两者的 loss 加权求和,共同指导模型训练

一、背景

在这里插入图片描述
目标检测方法面临的两个主要问题是:

  • 使用手工选择的超参数如尺寸、anchor、IoU 阈值等
  • 基于 overlap 来确定预定义 anchor 的去留和正负,这肯定不是最优的方式(如图 2)

FSAF 的 motivation:

  • 让每个实例都能落入最适合它的尺度的特征图上(这也表明了前提:该模块不能有 anchor)

在这里插入图片描述

二、方法

FSAF 总体概括:

  • 在每个尺度的特征图后面都接一个 anchor-free branch,每个实例会被分配到对应的最优层上去
  • 训练时,能够动态的给每个实例选择其最合适的尺度,然后该尺度的特征负责检测该实例
  • 推理时,FSAF 模型能够独立或和 anchor-based branch 联合使用

在这里插入图片描述

如图 4 展示了 RetinaNet+FSAF 的结构,RetinaNet 的 backbone 和其他尺度的层被折叠了,只展示了使用的三层,每层后面都分别使用了 cls 和 reg 子网络。

FSAF 如何在其中使用:

  • 如图 4 所示,有两个 anchor-free branch,分别实现分类和回归的预测
  • cls branch:1 个 3x3xK 的卷积,后面跟 sigmoid
  • reg branch:1个 3x3x4 的卷积,后面跟 ReLU

在这里插入图片描述

2.1 Ground-truth and loss

类似 GARPN

既然 FSAF 有两个分支,分类和回归,则需要给这两个分支构建对应的真值,来指导训练。

1、分类分支:

分类分支的 loss:Focal loss, α = 0.25 \alpha=0.25 α=0.25, γ = 2.0 \gamma=2.0 γ=2.0

分类分支构造的真值:K 个 map,每个 map 表示该类别的 mask 特征

分类分支的真值如何构造:真值是一个 mask 特征图,每个位置的像素值表示该位置为 positive、ignore、negative

将一个 instance 在某个层的真值 map 从 3 个方面来处理成最终的 gt mask:

  • effective box region:是 positive region,真值label 框的 0.2 倍 box 内为 positive,图 5 中白色区域,该区域的值为 1,只对effective region 进行训练,且如果两个目标的 effective 区域重合了,小的实例有更高的置信度。
  • Ignoring box region:是忽略的区域,图 5 中灰色区域,真值label 框的 0.2 倍 box 内为 ignore,此处梯度不回传
  • Negative box region:其他都为 negative box region,图 5 中黑色区域

2、回归分支

回归分支的 loss:IoU loss

回归分支的真值:4 个 offsets maps

回归分支只会影响 offset maps 上的 effective box region,对于每个位置 ( i , j ) (i, j) (i,j),对应的真值为该位置到该层对应的框的上、下、左、右的距离。

在这里插入图片描述

2.2 Online Feature Selection

FSAF 的设计是能够自己选择最优的层级,那么如何寻找最优的层级 P l P_l Pl 呢?

答案是:使用 instance content(而非 anchor-based 方法中使用的 box 大小)

给定一个 instance I I I,其在 P l P_l Pl 层上的分类和回归 loss 分别为 L F L L_{FL} LFL L I o U L_{IoU} LIoU,这两者是对所有 effective box region 求和后得到的:

在这里插入图片描述

如何选择呢?如图 6 所示

计算了上述公式并得到 loss 之后,选择 loss 最小的层 P l ∗ P_{l*} Pl 来作为最优层,对该 instance 进行预测。

online feature selection:

在这里插入图片描述

其他手动选择的方法( l 0 = 5 l_0=5 l0=5):

在这里插入图片描述

在这里插入图片描述

2.3 将 RetinaNet 和 FSAF 联合后如何训练和测试

训练阶段:完整的 loss 是由 anchor-based 和 anchor-free 部分共同组成的, L = L a b + λ ( L c l s a f + L r e g a f ) L = L^{ab}+\lambda(L_{cls}^{af}+L_{reg}^{af}) L=Lab+λ(Lclsaf+Lregaf),且设置 λ = 0.5 \lambda=0.5 λ=0.5

推理阶段:在每个 level 中选择前 1k 个框,保留大于 0.05 的框,和 anchor-based 得到的结果混合起来,使用阈值为 0.5 的 NMS 过滤,即为最终结果

三、效果

1、Anchor-free branches 的效果

表 1 的最后一行比第一行提高了约 1.5%AP

如图 7 所示,说明了 FSAF 模块能够更好的处理有挑战的实力,比如很细或者不能被很好的包裹的目标。

在这里插入图片描述

在这里插入图片描述

2、Online feature selection 的效果

下表也对比了使用手动选择特征图和自动选择特征层的效果,从最后两行来看,提升了约 1.1%AP。

在这里插入图片描述

3、最优层是如何选择的
在这里插入图片描述

4、FSAF 模块的鲁棒性

在这里插入图片描述

5、和 SOTA 的对比

Ours:RetinaNet + FSAF
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值