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

Feature Selective Anchor-Free Module for Single-Shot Object Detection
论文地址 : https://arxiv.org/abs/1903.00621
一、背景
在这里插入图片描述
对于目标检测任务,比如上图,我们希望可以检测出不同种类的目标,同时还希望检测出同一种目标的不同实例,如后面的人和骑在马背上的人,但检测目标通常存在“尺度差异性”。在这张图中,骑在马背上的人和马是比较大的目标,车和狗是中等大小的目标,站在后面的人是比较小的目标,所以尺度的变化很影响算法的表现,为了解决这个问题,可以有2种思路:
(1)建立图像金字塔。既然会面对不同大小的目标,那就可以把图片缩放到不同大小,然后每一个尺度都去做检测,最后把所有结果都合在一起,就变成最终的结果。但是这个方法比较耗时间。
在这里插入图片描述
(2)建立特征金字塔。一张图进入到cnn以后,从底到顶产生一系列特征层,然后从最顶上的特征层向底部传播,每一层的特征由上一层的特征和cnn中平行的特征组合得到。基于anchor的检测算法正是采用了特征金字塔,即使用anchor box将所有的目标离散化为不同的尺寸、长宽比的有限个boxes,然后用这些boxes去密铺整个空间,有选择地调整某些box,使其更加接近目标的真实位置。
在这里插入图片描述
二、动机

将特征金字塔与anchor box结合在一起,低层特征包含很多小的特征,适合用来检测小目标,高层特征包含语义信息,适合检测大目标。在这篇论文中,作者认为存在两个问题,一是人启发式的特征选择;二是基于重叠的anchor分类。
如下图,有一个5050的小汽车,它跟其中一个小的anchor产生了比较高的重叠,所以被分配到低层的特征上,6060的小汽车跟中等大小的anchor产生了比较高的重叠,所以分到了中层特征上,4040的也分到了低层特征上。从语义上来讲,它们都是很相似的物体,为什么有的分到了相同的特征,有的分到了不同的特征,所以作者认为这样的分配不合理,它意味着特征层的选择不一定是最优化的,所以认为由anchor引导的特征选择是人工设计出来的。
我们的动机是让每个实例自由选择最佳功能级别来优化网络,因此在我们的模块中不应有锚框来限制功能选择。相反,我们以无锚的方式对实例进行编码,以学习用于分类和回归的参数。*
在这里插入图片描述
problem:由anchor box匹配机制选择的特征不是最优的。
question:如何根据语义信息而不是框的大小来选择特征。
answer:不能依赖anchor,让目标能自由地分配到任意一个特征。
solution: Feature Selective Anchor-Free (FSAF) Module,基于Anchor-free特征选择模块的单阶目标检测。
三、FSAF
(1)概念
假定有一个特征金字塔,给每一层都分配一个anchor-free分支,独立于anchor-based分支, 它由一个分类子网和一个回归子网组成,在训练的时候通过设计的feature selection的模块,对每个目标都选择一个合适的分支。这个模块可以插入到任意的特征金字塔,只要有一个金字塔形状的特征层,就可以使用它。anchor-free分支可以独立的使用,也可与anchor-based分支一起使用。
从这张图,我们可以清楚的看到,RetinaNet的原始结构是被全部保留的了的,只是把“FPN”每一路输出的Feature map增加了一个岔路,虽然图中只画了3层FPN,但是只是为了简单的可视化效果,少画了几层。
在这里插入图片描述
图是内部结构,可以看到 “anchor-based ” 和 “anchor-free” 是相互不影响的,只不过有共同的base feature。对于anchor-free 这部分,作者采用了 focal loss(分类) + IoU loss(回归)
以RetinaNet的特
征金字塔为例,它的每一层都接了分类加回归的子网,每个子网有两个分支。上面的分支经过四层卷积,产生一个WHKA的用于分类的输出,下面的分支产生一个WH4A的输出,这两个输出就是RetinaNet中anchor-based的部分。anchor-free是在此基础上在最后一层卷积上添加了一个卷积层,比anchor-based的输出少了A倍的参数,A就是anchor的数量。保留了原有RetinaNet中卷积的形式,只在每一层中引入了两个新的卷积,计算量小。
(3)anchor-free分支的监督信号
在这里插入图片描述
定义每一个目标的矩形框是b,x、y是框的中心位置,w、h是框的高和宽。
b(l,p)是把b投影到第L个特征层上的框。
b(l,e)是指有效的box,把投影的box缩小一定比例的高和宽。
指被忽视的box,把投影的box缩小一定比例的高和宽。
b(l,i)对于每一个有效box中的像素i、j,定义这个像素到投影框上下左右四个边界的距离是一个向量。
对于每一个有效box中的像素i、j,定义这个像素到投影框上下左右四个边界的距离是一个向量。
在这里插入图片描述
class output:白色的框是有效区域,把它都设为1,说明目标存在于这个位置,灰色区域是忽视区域, 这意味着该区域中的梯度不会传播回网络。黑色区域就是没有目标出现。
box output: 回归输出的真值是4个偏置值, 实例仅仅会影响偏移特征图的 区域。
用focal loss来监督class的输出,IOU loss来监督box的输出。

(4)在线特征选择
先把目标通过金字塔的所有层,每一层都可以算出分类和回归的loss,然后把这两个loss相加,找出其中最小的loss,再找出其对应的特征层。只有最底层的特征得到了优化,其它层相当于没有看见这个目标。先用anchor-free方法在特征图上大概检测一下,看看哪层效果好(损失函数最小),就将instance交给那层特征对应的anchor-based来处理。anchor-free branch预测是基于特征点的,不用anchor。 这里还需要解释一下,为什么称作为Online呢,因为在每一次参数更新的时候,需要将所有的目标分配到最优的特征层。也就是说,每一个特征层的参数,只学习对应的groundtruth目标。
在这里插入图片描述
在anchor-based算法中,通常是基于目标的尺寸分配到指定的特征层,而FSAF模块是基于目标的内容选择最优特征层。记目标II分配到第ll个特征层的分类损失和定位损失分别如下,
那么,最优特征层的定义如下,
在这里插入图片描述在这里插入图片描述
FSAF的设计就是为了达到自动选择最佳Feature的目的,最佳Feature是由各个feature level共同决定。再看这张图,哪一个 anchor-free branch 输出的 loss 最小,就把 ground-truth 分配去哪一个层:在训练阶段,它与 anchor-based 的分支进行加权训练,通过 λ = 0.5 进行权衡。在推理的时候,还需要进行这样的 selective 吗?当然不用了,不过要把 anchor-free branch 得到的 box 拿过来和 anchor-based branch 一起做 NMS。

论文的重点是基于语义信息的选择特征,采用anchor-free来做特征选择
FSAF-既有根据先验设定的anchor-based分支,也有anchor-free分支增强对异常ratio目标的检测能力
四、实验结果
在这里插入图片描述
上表给出了比较结果。使用ResNet-101,我们的探测器能够在单尺度和多尺度两种情况下实现竞争性能。插入ResNeXt-101-64x4d后,AP进一步提高到44.6%,这比以前最先进的单点探测器有很大的优势。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值