anchor free 目标检测_目标检测Anchor-free :FCOS

论文地址:https://arxiv.org/abs/1904.01355

源码地址:https://github.com/tianzhi0549/FCOS

最近目标检测的一个热门方向,主流目标检测方法:Faster R-CNN,SSD等都依赖于事先设置Anchor,来回归预测 box 的大小。文章提到了Anchor的几个缺陷:

  1. anchor 的大小和长宽比的设置对目标检测方法的性能影响很大(直观上,不同任务中目标的大小、长宽比相差很大,统计长宽大小,设置和目标相近的anchor更有利于目标的检测)。
  2. anchor 的固定设置不利于泛化(如果以后的 test 数据集由于拍摄等原因,尺度发生了一些变化,性能可能会下降)
  3. 为了提高召回率,往往需要更多的 anchor(对于不是特别大的目标来说,anchor不够稠密的话,目标 box 和 anchor 的 iou 太小,在 Faster R-CNN 中会影响正样本的数量,会降低召回率)。太多的 anchor 也会造成正样本和负样本的失衡。
  4. 过多的 anchor 会增加内存负担(这个在小目标检测中特别严重,有些小目标下采样 8、16 倍基本就检测不到了,但如果要在 4x 的 feature map 上检测, feature map 又太大,那 anchor 多一点内存就不够了)

be65e89d3e9035bf61542ae39c21ecee.png
网络结构

从 FCOS 的网络结构来看,使用了 FPN 结构来优化不同尺度大小的目标检测,这里还有个作用,处理同一个区域不同目标的 box 检测。

简单说一下 FCOS 的主要思想:根据 feature map ,使用两个卷积分别预测目标的类别和到 box 边框的4 个距离。

5a7dbb0c06faf255ff96ac3a150b4a68.png

直观的来感受一下可能存在问题:

  1. 虽然 feature map 的感受野随着下采样的的次数会增大以及FPN结合更丰富的 context,可能依然不够,上图中,在头部区域预测人的高度,由于看不到脚不能很好的预测。
  2. 多个目标之间存在重叠区域现象,那重叠的区域该如何预测类别和 box?

论文对于以上两个问题使用了 Center-ness 和 FPN 结构来处理,结合网络结构来看一下源码实现。因为需要预测类别和 4 个距离,中间加了 NUM_CONVS 个过度卷积,然后进行类别、 box 和 centerness 预测,不同的 feature map 共用后面的预测卷积。

  1. 不同层 P3、P4、P5、P6、P7 分别预测不同大小的 box,因为 box 的尺度大小不一致,这里使用 exp(si·x) 来预测,si 是可学习的。
self.scale = nn.Parameter(torch.FloatTensor([init_value]))

2. loss 的设计,网络结构中 P3~P7 的 box 预测输出是 4 维的, feature map 中的点 (x,y) ,box 预测的输出表示 (x+stride//2,y+stride//2) 到各个 target 边框的距离。这里需要考虑的是不同层上回归的 box 大小被限定了的,还需要考虑同一个点上多个 target 的情况,当这个点上存在多个 target 时候,指定最小面积的目标作为类别和 box 回归预测。

说一下网络的设计思路和技巧:使用不同层预测不同大小的 box ,传统的 FPN 结构也是这么做的,不过这里很巧妙。因为要抛弃 anchor ,那自然而然就要考虑每个 feature map 中的点预测不能用于 Anchor 与 box 的回归预测了。如果还是只考虑点的分类,那就跟文本检测 SegLink 差不多了,文章是采样回归预测 box,那可以预测到 box 边缘的距离也可以直接预测 box 大小。然后是为了解决直接预测 box 可能存在的前面说的两个问题,文章采用 Center-ness 是一个重大创新,还可以采用 FSAF 中的策略,只考虑中心小块区域的回归能减少 box 预测中正样本的数据量。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值