论文是发表在 C V P R 2020 {\rm CVPR\ 2020} CVPR 2020上的一篇关于目标检测文章。我们知道,在训练目标检测模型过程中,为了增强模型的鲁棒性、减弱正负样本的极不平衡性,通常会对所有样本按一定比例(目标检测中通常设定为 1 : 3 {\rm 1:3} 1:3)采样正负样本。而采样样本的质量直接决定了训练模型的性能,甚至影响训练过程的收敛情况。根据前人工作,作者提出一种自适应采样方法, A T S S {\rm ATSS} ATSS。同时,实验证明了在 A n c h o r – B a s e d {\rm Anchor–Based} Anchor–Based和 A n c h o r – F r e e {\rm Anchor–Free} Anchor–Free方法上,使用 A T S S {\rm ATSS} ATSS较以前采样方法均有提升。最终在 C O C O {\rm COCO} COCO数据集上达到 S O T A {\rm SOTA} SOTA。
论文原文 源码
作者指出,影响无框检测方法和有框检测方法性能的因素是正负样本的采样方式。基于此,论文提出一种基于目标的统计特征的自适应采样方法, A T S S {\rm ATSS} ATSS。它同时提高了无框检测方法和有框检测方法的性能。此外,在论文中作者还讨论了在特征图上的每个位置铺设多个先验框的非必要性。
论文贡献:(一)指出影响有框检测方法和无框检测方法性能的主要因素是样本采样方式;(二)提出一种自适应样本的采样方法;(三)证明在目标检测中,特征图的同一位置设置多个先验框是非必要的;(四)基于 A T S S {\rm ATSS} ATSS的模型达到 S O T A {\rm SOTA} SOTA。
作者首先指出,由于两阶段算法相比于一阶段算法具有更多先验框的调整过程(即改变了训练过程中正负样本的比例),前者对应模型的精度往往高于后者,但后者对应的模型速度通常优于前者。与此同时,近期出现的无框检测方法不用预设先验框,从而避免了相关超参数的设置。
这里,作者拿 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS为例,对比上述两种方法的差异: ( 1 ) (1) (1)二者的先验框数目; ( 2 ) (2) (2)正负样本的定义方式; ( 3 ) (3) (3)回归方式。论文严格使用控制变量法寻找有框检测方法和无框检测方法性能差异的原因。最终实验证明,训练过程中正负样本的采样方法是主要因素。针对此问题,论文提出一种基于自适应采样方法,它根据数据特征自动采样正负样本。
由于后面实验大量使用这两个网络做对比,在进行下面部分前,我们就前面提到的三个方面大体介绍一下 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS。
如上图, R e t i n a N e t {\rm RetinaNet} RetinaNet由三部分组成:提取特征部分的 R e s N e t {\rm ResNet} ResNet,网络颈使用 F P N {\rm FPN} FPN,检测头使用一个分类分支和回归分支。对于先验框的设置和样本的采样, R e t i n a N e t {\rm RetinaNet} RetinaNet参考的是 R P N {\rm RPN} RPN:针对输出大小为 H × W H×W H×W的特征图,每个位置产生 k k k个先验框。考虑到 R e t i n a N e t {\rm RetinaNet} RetinaNet中有三种不同尺度的输出,这里使用三种框的比例为 { 1 : 2 , 1 : 1 , 2 : 1 } {\rm \{1:2,1:1,2:1\}} {1:2,1:1,2:1}、大小为 { 2 0 , 2 1 / 3 , 2 2 / 3 } {\rm \{2^0,2^{1/3},2^{2/3}\}} {20,21/3,22/3},即每个位置共产生九种相对大小的先验框。在样本采样方面根据先验框同标注框的 I o U {\rm IoU} IoU而定,如果 I o U ≥ 0.5 {\rm IoU≥0.5} IoU≥0.5,则视该先验框为正样本;如果 0 ≤ I o U < 0.4 {\rm 0≤IoU<0.4} 0≤IoU<0.4,则视其为负样本;其余先验框为忽略样本,在训练过程中不使用。 R e t i n a N e t {\rm RetinaNet} RetinaNet的回归方式参考 F a s t e r – {\rm Faster–} Faster– R C N N {\rm RCNN} RCNN,以先验框与标注框的相对偏移为回归目标。
如上图, F C O S {\rm FCOS} FCOS由三部分组成:提取特征部分的 B a c k b o n e {\rm Backbone} Backbone使用 R e s N e t {\rm ResNet} ResNet,网络颈使用 F P N {\rm FPN} FPN,检测头使用一个分类分支和回归分支,同时在分类分支处并上一个 C e n t e r – n e s s {\rm Center–ness} Center–ness分支用于实现无框检测。无框检测方法的出现是为了消除先验框参数需人为设计的弊端, F C O S {\rm FCOS} FCOS通过 C e n t e r – n e s s {\rm Center–ness} Center–ness分支达到直接回归边界框中心和宽高的目的。具体地,对于输出特征图 F F F上的每个位置 ( x , y ) (x,y) (x,y),通过 ( ⌊ s 2 ⌋ + x s , ⌊ s 2 ⌋ + y s ) (\lfloor\frac{s}{2}\rfloor+xs,\lfloor\frac{s}{2}\rfloor+ys) (⌊2s⌋+xs,⌊2s⌋+ys)映射回原图( s s s是当前特征图的下采样倍数,映射回原图的位置近似于该位置对应的感受野区域的中心)。如果该位置落入任何标注框内,则将其视为正样本,且将类别标签设置为与该标注框相同;否则,将其视为负样本。同时,将映射后的位置到该标注框的四个边界距离作为回归目标。为了保证多尺寸检测特性, F C O S {\rm FCOS} FCOS规定在某层输出上只回归特定范围尺寸的物体,如果超过规定的范围,满足上述映射条件的样本也将其视为负样本。我们可以观察到,根据 F C O S {\rm FCOS} FCOS的定义方式,最终会有较多正样本,所以作者在后续使用 C e n t e r – n e s s {\rm Center–ness} Center–ness改善样本的质量。
综合以上对 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS的简要介绍,下面就三个方面对二者进行比较:
图中 1 {\rm 1} 1表示正样本、 0 {\rm 0} 0表示负样本、 ? {\rm ?} ?表示 F C O S {\rm FCOS} FCOS中的候选正样本。在 R e t i n a N e t {\rm RetinaNet} RetinaNet中根据 I o U {\rm IoU} IoU判定样本性质,在 F C O S {\rm FCOS} FCOS中根据映射在原图中的位置确定候选的正样本,然后通过该层所设定的回归范围最后确定样本的性质。
图中蓝色边界框和点是标注信息,红色边界框和点是先验信息。在 R e t i n a N e t {\rm RetinaNet} RetinaNet中以先验框同标注的偏移作为回归目标,在 F C O S {\rm FCOS} FCOS中根据映射在原图中的位置与标注框各边界的距离为回归目标。
作者在相关工作部分总结了目标检测方法的两个大类:
为了寻找有框检测方法和无框检测方法的实质性差异,作者拿 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS为例,通过设置大量实验对比,最终得出结论:二者的差异主要来源于分类网络和回归网络。对于分类网络和回归网络,正如前面所提到的相关内容,作者得出如下实验结果:
上图中 B o x {\rm Box} Box表示 R e t i n a N e t {\rm RetinaNet} RetinaNet、 P o i n t {\rm Point} Point表示 F C O S {\rm FCOS} FCOS、 I n t e r s e c t i o n o v e r U n i o n {\rm Intersection\ over\ Union} Intersection over Union是 R e t i n a N e t {\rm RetinaNet} RetinaNet原本的采样方式, S p a t i a l a n d S c a l e C o n s t r a i n t {\rm Spatial\ and\ Scale\ Constraint} Spatial and Scale Constraint是 F C O S {\rm FCOS} FCOS原本的采样方式,数字代表在 C O C O {\rm COCO} COCO数据集上的 A P {\rm AP} AP值。
由以上实验结果可以得出:样本的采样方式是导致有框检测和无框检测方法之间差异的主要因素。就此问题,作者提出一种自适应的样本采样方法, A T S S {\rm ATSS} ATSS。
传统的样本采样方法基于超参数的设置,如有框检测方法中的 I o U {\rm IoU} IoU阈值、无框检测方法中的尺寸范围等(对应于上述的 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS)。论文提出的 A T S S {\rm ATSS} ATSS不设计超参数的设置,其算法流程如下:
算法解释为:输入包括 G G G表示输入图像上的标注框、 L L L表示特征层数目、 A i A_i Ai表示来自第 i i i特征层的先验框、 A A A表示所有先验框、 k = 9 k=9 k=9为超参数,输出包括 P P P表示正样本、 N N N表示负样本。第一行循环用于遍历标注框;第二行定义一个集合 C g C_g Cg用于存放候选正样本;第三行循环用于遍历特征层;第四行基于 L 2 {\rm L_2} L2距离从 A i A_i Ai中选择 k k k个与标注框的中心足够接近的先验框;第五行将上一步选择的先验框并入候选正样本集合 C g C_g Cg中;第六行结束第三行的循环;第七行计算 C g C_g Cg中的样本同标注框的 I o U {\rm IoU} IoU值为 D g D_g Dg;第八行计算上一步结果 D g D_g Dg的平均值 m g m_g mg;第九行计算 D g D_g Dg的标准差 v g v_g vg;第十行将均值 m g m_g mg与标准差 v g v_g vg的和作为候选进一步筛选正样本的 I o U {\rm IoU} IoU阈值 t g t_g tg;第十一行循环遍历上面得到的候选正样本集合 C g C_g Cg;第十二行和第十三行如果候选正样本与标注框的 I o U {\rm IoU} IoU大于阈值 t g t_g tg且其中心位于标注框内,则将该候选样本确定为正样本,并存入 P P P中;第十四行、第十五行和第十六行结束;第十七行定义负样本集合 N N N为所有样本 A A A减去正样本集合 P P P;第十八行结束程序。
对于以上算法需要注意几点: A T S S {\rm ATSS} ATSS确定正负样本的过程可以看作是将 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS结合。首先在筛选候选正样本时采用了 F C O S {\rm FCOS} FCOS中心点距离相近的原则,在最后确定正样本时参考了 R e t i n a N e t {\rm RetinaNet} RetinaNet中基于候选框和标注框 I o U {\rm IoU} IoU的方案;在确定 I o U {\rm IoU} IoU阈值时,考虑候选正样本 I o U {\rm IoU} IoU的均值可以反应其整体质量,候选正样本 I o U {\rm IoU} IoU的标准差可以反应当前特征层的选择是否合适。如下图是作者实验所得:
如横坐标表示特征层,纵坐标表示 I o U {\rm IoU} IoU阈值。由两图对比可知,首先均值 m g m_g mg用于调整候选正样本的集合。其次,标准差 v g v_g vg过高,则表示先验框集合与标注框的 I o U {\rm IoU} IoU值波动较大,即很多高质量的先验框集中在这一层,通过将二者求和增大 I o U {\rm IoU} IoU阈值可以过滤适合于其他层的先验框;标准差过低,则表示先验框集合与标注框的 I o U {\rm IoU} IoU值波动较小,即多个特征层的先验框均适合该标注框,通过将二者求和增大 I o U {\rm IoU} IoU阈值可以筛选出更适合该标注框的特征层。总之, A T S S {\rm ATSS} ATSS提供了一种为标注框选择最合适先验框的方案。
最后,根据统计结果表明每个目标标注框大概有 0.2 ∗ k L 0.2*kL 0.2∗kL个正样本,且该数据与先验框的比例、尺寸和位置无关。与之对比的是, R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS会采样更多的正样本, A T S S {\rm ATSS} ATSS的采样结果更加平衡。算法中使用的超参数 k k k值最最终实验结果影响甚微,论文中也有相应的实验佐证。
为了证明 A T S S {\rm ATSS} ATSS的有效性,作者将其与 R e t i n a N e t {\rm RetinaNet} RetinaNet和 F C O S {\rm FCOS} FCOS结合,实验结果如下:
其中# A = 1 {\rm A=1} A=1表示在 R e t i n a N e t {\rm RetinaNet} RetinaNet中特征图上的每个位置仅铺设一个先验框,设置的目的是为了和 F C O S {\rm FCOS} FCOS的对比实验更加严格( F C O S {\rm FCOS} FCOS中将每个位置作为一个样本,相当于每个位置预设一个先验框)。
# s c {\rm sc} sc表示先验框的尺寸、# s c {\rm sc} sc表示先验框的比例, I m p r s . {\rm Imprs.} Imprs.表示 G r o u p N o r m {\rm GroupNorm} GroupNorm、 G I o U L o s s {\rm GIoU\ Loss} GIoU Loss等一系列提高模型精度的方法。由实验结果可知,先验框的数量对最终的结果影响较小,而更重要的是对正负样本的采样的方法。
最后给出基于 A T S S {\rm ATSS} ATSS的模型同其他目标检测方法的对比:
论文首先指出有框检测算法和无框检测算法性能差异的主要因素是正负样本的采样方法。并以 R e t i n a {\rm Retina} Retina − N e t {\rm -Net} −Net和 F C O S {\rm FCOS} FCOS为例,分别分析其采样方法,最后综合二者思路提出基于统计特征的自适应采样方法。
根据论文的实验结果对比, A T S S {\rm ATSS} ATSS是一种有效的样本采样方法。在有框检测方法,如 R e t i n a N e t {\rm RetinaNet} RetinaNet类方法中, A T S S {\rm ATSS} ATSS可以直接替换原始的采样方法;在无框检测方法,如 F C O S {\rm FCOS} FCOS类方法中,可以由两种思路:第一,在 F C O S {\rm FCOS} FCOS中由候选正样本到正样本的过程中,由每层设定先验框尺寸范围后仅保留一个与标注框匹配的先验框,可以使用 A T S S {\rm ATSS} ATSS中 k k k个的思想以保留更多的选择性;第二,将特征图上的点改为边界框,同时基于 A T S S {\rm ATSS} ATSS采样样本,且保留 F C O S {\rm FCOS} FCOS中原始的回归方式。
由于没有阅读源码,本文只总结了 A T S S {\rm ATSS} ATSS的大体结构和信息,详细内容请阅读论文原文。