开始之前学习一个单词热热身:
dissect 英[dɪˈsekt]
v. 解剖(人或动植物); 仔细研究; 详细评论; 剖析; 把…分成小块;
[例句]Her latest novel was dissected by the critics.
评论家对她最近出版的一部小说作了详细剖析。
Bridging the Gap Between Anchor-based and Anchor-free Detection via Adaptive Training Sample Selection.
作者的这篇论文是用于解决什么样的问题呢?
首先作者发现,在anchor-based 方法和 anchor-Free方法的三点区别中,正负样本的定义是导致网络表现结果不同的关键:
" If they select the same positive and negative samples during training, there is no obvious gap in the final performance, no matter regressing from a box or a point."
之后作者以RetinaNet
为代表的 anchor-based 方法与以 FCOS
为代表的 anchor-Free方法讨论两者的最关键的差异所在。
" These are only two differences between the anchor-based RetinaNet (#A=1) and the anchor-free FCOS. One is about the classification sub-task in detection, i.e., the way to define positive and negative samples. Another one is about the regression sub-task, i.e., the regression starting from an anchor box or an anchor point."
两个最关键的差异是:
接下来首先讨论 anchor-based 方法和 anchor-Free方法定义正负样本的差异,其次证明在边界框回归任务中无论是anchor回归还是点回归影响不大,最后总结如何进行ATSS计算。
RetinaNet
和 FCOS
分别采取了两种不同的策略去产生不同的正负样本。
对于RetinaNet
,使用IoU阈值来区分正负anchor bbox,在所有的尺度当中(FPN)选择anchor与真实框的IoU大于设定阈值的为正样本,IoU小于设定阈值(往往比正样本的设定阈值小)的为负样本,中间部分的anchor不参与训练过程。
对于 FCOS
,FCOS使用空间限制和尺寸限制来区分正负anchor point。还记得FCOS
中采用multi-level FPN prediction,来避免同一anchor点落入两个真实物体的公共区域以至于不知道该将其划分为是哪个类别的情况。
FCOS使用了{P3, P4, P5, P6, P7}这五个尺度的特征图进行预测。为了能够更好的利用这种多尺度特征,在每一个尺度的特征层上都限定了边界框回归的范围,不让其野蛮生长。更具体地说,首先计算所有不同尺度的特征图上每个位置的回归目标:
其中五个预测层的mi值设置为[32, 64,128, 256, 512]
所以对于 FCOS
中的正样本定义,首先必须在GT box内,其次需要是GT尺寸对应的层,其余均为负样本。
对于RetinaNet
和 FCOS
两种方法的边界框坐标回顾回归差异,就很明显了:
对于RetinaNet
,预测anchor中心点与真实框中心点的偏差以及长宽偏差;
对于 FCOS
,预测正样本点到真实框的上下左右距离。
作者通过实验发现,对于两种方法的差异,正负样本定义问题才是导致模型结果不同的关键所在,而在边界框回归任务中无论是anchor回归还是点回归对结果的影响不大。
" we indicate that the essential difference between one-stage anchor-based detectors and center-based anchorfree detectors is actually how to define positive and negative training samples, which is important for current object detection and deserves further study."
作者提出一个更好定义训练过程中的正负样本的方法,来实现无痛涨点;ATSS可以根据数据特性来定义正负样本,具体是怎么做的呢?
L×K
个anchor;L×K
个anchor,如果其IoU大于tg,则标记为正样本,否则标记为负样本。总结一下首先是极大的减少了anchor的数量(YOLO中每个网格都会产生9个anchor),这里假定在每个网格中仅设置1个anchor,最后会提到,结合ATSS,每个网格中 anchor 的数量不会对网络表现产生影响;其次是根据真实框的特征来给定自适应IoU阈值,使其更加适应与不同的数据集;最后极大的减少了正负样本间的不平衡,有利于模型的收敛。
由于这篇论文是按照RetinaNet
和 FCOS
之间的对比来展开的,所以我这里贴两个论文中的对比数据以证明ATSS方法的有效性以及一些参数设置的无关性。
上面表格为RetinaNet
和 FCOS
用/不用ATSS的AP值,显然ATSS仅仅通过改变定义训练过程中正负样本的方式,AP实现了2个点左右的提升;
K
是影响不大的。下图表示K在7-17之间均是OK的;这篇论文中最大的贡献是,重新考虑了训练过程中对于正负样本的定义方式。
" we delve into the most basic issue in object detection: how to define positive and negative training samples, and propose an Adaptive Training Sample Selection (ATSS). "
会想起【目标检测】Anchor Free —— OneNet(不需要NMS)中同样是针对于改变定义训练过程中正负样本的问题,其定义的方式是计算每个网格对应的minimum cost
,还记得计算公式为:
通过计算出来的cost
值的大小来判定正负样本的,最小的cost
值对应的网格点即为正样本,其余均为负样本(基于FOCS,不涉及anchor的超参数)。OneNet的最大特点是在Anchor-Free方法基础上,针对一个真实框仅仅选择一个正样本,以至于消除了NMS后处理;而ATSS的最大特点是在Anchor-Based方法基础上,使得判定anchor是否为正样本的IoU阈值变成自适应阈值,实现了无痛涨点。
欢迎关注【OAOA】