当前位置: 代码迷 >> 综合 >> Soft Anchor-Point Object Dection
  详细解决方案

Soft Anchor-Point Object Dection

热度:41   发布时间:2024-02-09 13:31:10.0

论文地址V1

背景介绍

anchor based的检测模型,比如SSD,RetinaNet,YOLOv2之类,这类模型可以认为是一种box-to-box的形式。而现在比较热门的anchor free的检测模型,比如FSAF,本文的SAPD,FCOS,FoveaBox,CornnerNet,CenterNet之类,这类模型可以认为是一种points-to-box形式。

Anchor free模型的优势:

  1. 不需要手动调整关于anchor的超参数
  2. 检测的head常常更简单
  3. 大多在速度和精度上都比anchor based模型更好

而现在的anchor free的方法又可以细分为两类:

  1. Anchor point detector:FoveaBox,FSAF,FCOS等
  2. key point detector:ConnerNet,CenterNet等

这两种结构的主要区别是点是预测出来的?还是预先设定的位置?anchor point方法开始就确定好了大概哪些点用来负责做样本的分类,而key point需要预测点的同时做点的类别预测。

Key point方法的优点是输入尺寸比较小的图片也能够得到相对比较高的精度,但是模型的结构需要下采样和上采样,需要在比较大的feature map上进行预测,因此需要比较高的FLOPs和内存消耗。训练和测试都比较耗时。

而anchor point方法的优点是:1.网络结构更简单;2.训练和推理更快;3.可以得益于FPN的结构;4.灵活的feature层选择方案

本文的改进是基于SAPD进行的,主要解决attention biasfeature selection两个问题,通过对这两个部分的改进,提升模型的精度,使现在的精度可以超过key point方法。

从上图可以看到centernet的点,GPU time使300ms左右,精度使44.9,而本方法SAPD可以达到46,但是耗时只有100出头。CenterNet使用的使HG-104的backbone,SAPD使用的使R-101-DCN。CenterNet需要在大的feature map上做预测这点,确实让CenterNet的速度快不起来。

SAPD介绍

本文的改进是基于FASF进行的,先回顾一下FSAF的机构。

FSAF

Network architecture

网络结构包括一个backbone,一个FPN结构,每个FPN的feature map接一个预测头。

P_l代表FPN的第l层,相对输入尺寸WxH压缩到1/s_ls_l=2^l。一般情况下l会在3到7之间。

detection head有两个任务分支,一个分类分支,一个定位分支。分类分支预测K个类别的可能性,回归分支预测4个值表示点相对边界的偏移。

Supervision targets

P_{lij}表示特征金字塔的第l层,(i,j)位置。那么这个P_{lij}还原到原图的位置就是X_{lij}=s_l(i+0.5)Y_{lij}=s_l(j+0.5)。如果有一个box B=(c,x,y,w,h),c是类别,xy是中心点坐标,wh是长宽。B_v=(c,x,y,\epsilon w,\epsilon h)是一个向内缩小了范围的框。如果这个B分配到了这个P_l层,并且(X_{lij},Y_{lij})B_v内,那么就认为这个P_{lij}为正样本,否则就是负样本。这个点的分类目标是c,位置目标是经过归一化后的d=(d^l,d^t,d^r,d^b),代表着这个点与目标框的左上右下的距离。

这里z是一个归一化数。

如果是负样本,那么c=0,并且不用学习位置信息。

Loss function

使用focal loss做分类,使用iou loss做回归。那么每个位置loss可以表示如下:

P^+表示正样本,P^-表示负样本,最终所有像素点的loss加起来求平均就得到了最终的loss

Soft-Weighted Anchor Points

Attention bias

前面提到过,本文的改进主要针对两个问题,其中一个就是attention bias问题,那么什么是attention bias呢?

上图就是作者举例的attention bias的问题,查看上图b,大的目标由于需要关注的region很大,在很大的范围之外才是需要抑制的负样本,但是实际上很近的地方就有其他的目标,导致其他的目标被抑制。直白的解释就是由于前后景区域分配的不均衡,导致前景实例抑制了背景。

Our solution

使用soft weighting方案,对每个anchor point p_{lij}分配一个w_{lij}。对每个正样本的anchor point,它的权重是依赖于点的位置与它所属的目标的中心点之间的距离。如果远离中心点越远,权重越小,更依赖靠近中心点的区域。

看过FOCS的话,这个公式应该觉得很熟悉,跟Center-ness很像,Center-ness就是这个公式在\eta=1/2是的特殊情况。Figure 4中的C图就是增加这个权重后的效果,可以看到关注的区域更加集中了,这样对边界很近的样本的抑制会变小。

后面做过关于\eta的消融实验,实验发现\eta=1时精度最高,不过与0.5精度相差不多。

Soft-Selected Pyramid Levels

这部分是针对feature selection进行的改进。

Feature selection

原本的feature selection方案,理论上可以选择特征金字塔的任意一层进行预测,但是FSAF中也研究过,如果选择合适的层会对精度提升有很大的帮助。

不同特征金字塔的层,表现是非常相似的,尤其是临近的层,比如看下图

如果某一层对目标有比较大的反应,那么临近的层也会有类似的反应,只是反应会逐层衰减。这就说明不同的层可以一起对目标的检测做出贡献,但是每层的贡献度应该是不一样的。作者认为如果要选择到合适的层,有两个关键点:

  1. 应该根据feature map的反应来选择,而不是通过某种固定的算法直接分配,可以根据FSAF中做的,根据loss的大小来判断feature map是否适合这个目标的检测。
  2. 对某个目标而言,应该允许多层参与训练与测试,但是每层的贡献应该是不一样的。

Our solution

对特征金字塔的选择做权重是比较合适的方法,可以认为是一种soft selection的方法。如何做re-weighting呢?

作者设计了一个meta-selection network,使用一个简单的网络模型来进行feature map的re-weighting。

对目标在不同feature map层上的box进行ROIAlign,然后送入简单的backbone,最后进行softmax,backbone结构如下:

这个网络的ground truth是one-hot的形式,来自于FASF中让loss最小的layer为1,其他layers为0.

假设对于box B的每层的weight是w_l^B,那么w_{lij}可以更新如下

最终的loss也可以更新为

实验

这个消融实现展现了增加SW和SS后精度的提升,可以看到每个部分基本都有1个点的提升,效果还是不错的。

总结

我个人认为这篇文章不算有太多创新点,比如soft-weighted,其实和FCOS的center-ness基本一样,soft-select确实没有在其他文章中看到过,但是这种选择方式总感觉并不是太方便,还是需要进行ROIAlign,或许有更简便的方式进行feature select。Autoassign虽然在模型结构上改动也比较多,但是相对于而言我更不愿意使用ROIAlign的方式进行feature map的选择。只是个人看法而已。

  相关解决方案