分析不同(anchor-based and anchor-free)
作者使用RetinaNet和FCOS作为对象,研究使用anchor和不使用anchor的一阶段目标检测器之间的差别, 作者认为,主要有以下3方面的不同:
- 每个网格中平铺的anchor的数量(Fcos相当于只平铺了一个anchor)。RetinaNet使用多尺度,不同比例的anchor平铺在一个网格上。
- 区分正负样本的方式。RetinaNet区分正负样本就比较暴力,直接利用IOU判断这个框是否是正样本.而Fcos相较于RetinaNet的正样本判别方式就比较复杂.Fcos在利用IOU的基础上,对每个特征层能预测的尺度进行了划分,比如Fcos使用 c1~c5特征层来预测.那么将预测框的大小也划分为5部分,对应为p1~p5.对于IOU大于阈值的物体,如果该预测框的大小落入区间p2,那么对于其他的特征层,即使IOU大小超过了阈值,也只能算作负样本.
- 回归开始状态.RetinaNet是对于anchor box而FCOS是对于anchor point(由于FOS预测该点相对于4条边的距离,所以也算是变相的预测anchor,不过它是以点的形式).
对比试验(FCOS和RetinaNet)
为了消除其他因素的影响,作者对RetinaNet的anchor的平铺进行了限制, 使用anchor个数为1,并且为方形, 大小为9(即固定所有的anchor)文中定义这样的网络为RetinaNet(#A=1). 进行了以下几个实验:
对比RetinaNet(#A=1)和FCOS的表现差异(消除anchor)
由于FCOS出现之后, 许多的作者对它进行了优化,使得FCOS的AP达到了37.1. 而RetinaNet(#A=1)仅仅只有 32.5. 但是作者认为, 这样的差距并不是使用anchor point所带来的. 而是由于基于FCOS的一些后续研究所带来的收益. 因此作者在RetinaNet(#A=1)上面也使用了相关的方法:
- 在head中添加GroupNorm(对特征图的通道进行分组, 对每一组分别进行正则化).
- 使用GIOU回归损失函数
- 限制真值框的正样本
- 引进中心度分支并且将它移动到回归分支上
- 为每一个特征层训练一个可以学习的标量(用来微调特征图到原图的映射).
最终二者的表现几乎相同, 所以得出结论: 使用anchor不是必要的.
对比二者定义正负样本的方式
如上面所说, 二者在不同特征层上面对正负样本的分类不相同. FCOS所使用的这种方式, 作者称为空间和尺度限制. 在分别他们区分正负样本的方式进行交叉实验得出了下面这一张图:
进一步证明了, 使用anchor对于网络的性能提升来说不是必要的. 同时作者也发现, 区分正负样本的方式不同可能会极大的影响网络的性能.
Adaptive Training Sample Selection
如上所说, 区分正样本和负样本的方式可能会决定一个网络的性能. 于是, 作者提出了基于统计的自适应样本选择, 算法的伪代码如下;
首先对于每一个真值框, 根据真值框中心和 预测框中心的L2 距离来挑选出k个候选框(每个特征层都需要挑选). 得到集合后, 计算集合中每个框和真值框的IOU, 对其求平均, 标准差. 之后对集合中的元素进行筛选. 如果满足: 这个预测框的中心在真值框中, 并且他们之间的IOU大于平均值加上标准差, 就认为这个框是正样本., 否则都是负样本.
最后得到优化后的结果:
ATTS为作者提出的方法. Center sampling为变种为ATTS的精简版本. 保留了FCOS的范围限制, 也就是每个框的大小限制, 但还是采用中心距离L2来挑选候选框.
作者还做了一些实验, 证明了有效性, 证明了K值的鲁棒性. 还有平铺数量的有效性. 感兴趣的可以自己阅读一下论文.