论文地址V1
背景介绍
anchor based的检测模型,比如SSD,RetinaNet,YOLOv2之类,这类模型可以认为是一种box-to-box的形式。而现在比较热门的anchor free的检测模型,比如FSAF,本文的SAPD,FCOS,FoveaBox,CornnerNet,CenterNet之类,这类模型可以认为是一种points-to-box形式。
Anchor free模型的优势:
- 不需要手动调整关于anchor的超参数
- 检测的head常常更简单
- 大多在速度和精度上都比anchor based模型更好
而现在的anchor free的方法又可以细分为两类:
- Anchor point detector:FoveaBox,FSAF,FCOS等
- key point detector:ConnerNet,CenterNet等
这两种结构的主要区别是点是预测出来的?还是预先设定的位置?anchor point方法开始就确定好了大概哪些点用来负责做样本的分类,而key point需要预测点的同时做点的类别预测。
Key point方法的优点是输入尺寸比较小的图片也能够得到相对比较高的精度,但是模型的结构需要下采样和上采样,需要在比较大的feature map上进行预测,因此需要比较高的FLOPs和内存消耗。训练和测试都比较耗时。
而anchor point方法的优点是:1.网络结构更简单;2.训练和推理更快;3.可以得益于FPN的结构;4.灵活的feature层选择方案
本文的改进是基于SAPD进行的,主要解决attention bias和feature 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接一个预测头。
代表FPN的第层,相对输入尺寸WxH压缩到,。一般情况下会在3到7之间。
detection head有两个任务分支,一个分类分支,一个定位分支。分类分支预测K个类别的可能性,回归分支预测4个值表示点相对边界的偏移。
Supervision targets
表示特征金字塔的第层,()位置。那么这个还原到原图的位置就是,。如果有一个box ,c是类别,xy是中心点坐标,wh是长宽。是一个向内缩小了范围的框。如果这个B分配到了这个层,并且在内,那么就认为这个为正样本,否则就是负样本。这个点的分类目标是c,位置目标是经过归一化后的,代表着这个点与目标框的左上右下的距离。
这里z是一个归一化数。
如果是负样本,那么c=0,并且不用学习位置信息。
Loss function
使用focal loss做分类,使用iou loss做回归。那么每个位置loss可以表示如下:
表示正样本,表示负样本,最终所有像素点的loss加起来求平均就得到了最终的loss
Soft-Weighted Anchor Points
Attention bias
前面提到过,本文的改进主要针对两个问题,其中一个就是attention bias问题,那么什么是attention bias呢?
上图就是作者举例的attention bias的问题,查看上图b,大的目标由于需要关注的region很大,在很大的范围之外才是需要抑制的负样本,但是实际上很近的地方就有其他的目标,导致其他的目标被抑制。直白的解释就是由于前后景区域分配的不均衡,导致前景实例抑制了背景。
Our solution
使用soft weighting方案,对每个anchor point 分配一个。对每个正样本的anchor point,它的权重是依赖于点的位置与它所属的目标的中心点之间的距离。如果远离中心点越远,权重越小,更依赖靠近中心点的区域。
看过FOCS的话,这个公式应该觉得很熟悉,跟Center-ness很像,Center-ness就是这个公式在是的特殊情况。Figure 4中的C图就是增加这个权重后的效果,可以看到关注的区域更加集中了,这样对边界很近的样本的抑制会变小。
后面做过关于的消融实验,实验发现时精度最高,不过与0.5精度相差不多。
Soft-Selected Pyramid Levels
这部分是针对feature selection进行的改进。
Feature selection
原本的feature selection方案,理论上可以选择特征金字塔的任意一层进行预测,但是FSAF中也研究过,如果选择合适的层会对精度提升有很大的帮助。
不同特征金字塔的层,表现是非常相似的,尤其是临近的层,比如看下图
如果某一层对目标有比较大的反应,那么临近的层也会有类似的反应,只是反应会逐层衰减。这就说明不同的层可以一起对目标的检测做出贡献,但是每层的贡献度应该是不一样的。作者认为如果要选择到合适的层,有两个关键点:
- 应该根据feature map的反应来选择,而不是通过某种固定的算法直接分配,可以根据FSAF中做的,根据loss的大小来判断feature map是否适合这个目标的检测。
- 对某个目标而言,应该允许多层参与训练与测试,但是每层的贡献应该是不一样的。
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是,那么可以更新如下
最终的loss也可以更新为
实验
这个消融实现展现了增加SW和SS后精度的提升,可以看到每个部分基本都有1个点的提升,效果还是不错的。
总结
我个人认为这篇文章不算有太多创新点,比如soft-weighted,其实和FCOS的center-ness基本一样,soft-select确实没有在其他文章中看到过,但是这种选择方式总感觉并不是太方便,还是需要进行ROIAlign,或许有更简便的方式进行feature select。Autoassign虽然在模型结构上改动也比较多,但是相对于而言我更不愿意使用ROIAlign的方式进行feature map的选择。只是个人看法而已。