AutoAssign: Differentiable Label Assignment for Dense Object Detection论文翻译
论文下载地址:点击此链接跳转.
这是博主自己在github整理的目标检测方向论文的合集,应该算比较全,目前已更新至2020ECCV,持续更新中,欢迎下载…
部分参考于: 大白话 《AutoAssign》by Face++。
推荐各位阅读,大神写的很棒,最近很火的Generalized Focal Loss的作者。
一、Abstract
本文提出了一种新的标签分配策略AutoAssign,通过生成正负权重图来动态地修改每个位置的预测,从而自动地确定正负样本。具体来说,作者提出了一个中心加权模块来调整特定类别的先验分布,并用了一个置信度加权模块来适应每个实例特定的分配策略。整个标签分配过程不需要额外的修改即可在不同数据集和任务上使用。在COCO上的大量实验表明作者的方法在各种backbone下能超越其他采样策略大约一个点,达到52.1ap,优于所有一阶检测器。
二、Introduction
目前SOTA的CNN目标检测器通常是进行密集预测,在特征图上每一个位置以一种规则密集的采样方式来预测具有不同尺度、宽高比和类别的目标。这种密集检测会产生一个标签分配的问题,此外,基于CNN的检测器通常是采用多尺度特征(FPN)来缓解尺度差异问题,因此标签分配不仅需要在空间特征图中选择位置,还需要选择合适的特征图尺度。
现有检测器对正负位置采样主要是根据的人工先验: (1)基于anchor的检测器如RetinaNet是在每个位置预置几个不同尺度和高宽比的anchor,根据IoU值在不同空间和尺度特征图进行正负样本采样。(2) FCOS等anchor-free检测器是选取固定比例的中心区域作为每个目标的空间正位置,并根据预定义的尺度约束选取FPN的某一层级。这些检测器都是根据目标的先验分布来设计的分配策略。
但是在现实世界中,目标外观在不同类别和场景之间差异很大。固定的中心采样策略可能会导致目标外部位置分为正值,因为在目标上采样会比在背景采样更容易得到高分类置信度。另一方面,尽管CNN可以学习偏移,但是当将背景标为正样本时,特征移动带来的干扰可能会降低性能。
因此,固定的采样策略可能并不能在空间和尺度维度上选到最合适的位置。除了人工设计的分配策略,一些papers也提出了与数据相关的动态标签分配策略。Guided Anchoring和MetaAnchor在采样前动态更改anchor形状的先验,其他方法针对空间或尺度维度中的每个目标自适应地修改采样策略。这些分配策略只是将标签分配的一部分过程变成了数据驱动,而其他部分仍受手工设计的约束,阻止了标签分配的进一步优化。
作者提出了一种新的标签分配策略。首先遵循FCOS等anchor free方法不使用人工设计的anchor,直接预测每个位置上的目标。为了保留足够多的位置用于进一步的优化,先处理所有尺度层级的边界框(正样本+负样本)中的所有位置。然后生成正负权重图来修正训练损失中的预测。为适应不同类别和域的分布,作者提出了一个类别加权模块,center weighting,用来学习数据中每个类别的分布。为适应每个实例的外观和比例,作者又提出一个置信度加权模块,在空间和尺度维度上修改各个位置的正、负置信度。然后将两个模块结合起来,生成所有位置的正、负权重图进行加权,加权过程是可微的,可通过反向传播进行优化。
本文的贡献:
1. 提出了一种新的标签分配策略AutoAssign,用于密集目标检测,该策略能够自动为每个实例分配正负标签,无需任何修改即可迁移到不同数据集和任务上。
2. 提出了两个加权模块,中心加权和置信度加权模块,在空间和尺度维度上自适应地调整特定类别的分布以及特定实例的采样策略。
3. 在coco、pascal voc、object65,widerface上取得了SOTA的结果,证明了AutoAssign的有效性和广泛的适用性。
三、AutoAssign
3.1 Overview
AutoAssign以数据驱动的方式来处理标签分配。它不需要一些传统的部件,如anchor,IoU阈值,top-k或尺度范围,直接使用网络预测来动态调整每个位置的正负样本置信度。
为了优化整个标签分配过程,作者提出了一种动态调整空间和尺度维度上特定类别和特定实例的采样的标签分配策略。下图是作者提出的标签分配策略的框架,首先遵循anchor free的方式,不使用预定义的anchor,直接预测每个特征位置上的目标。对于每个实例,作者将其所有尺度的边界框内的所有位置都保留,然后生成正负权重图w+和w-来修改训练中正负样本的预测。因此作者将整个分配步骤转换为两个权重图。
为适应不同类别的分布,作者提出了一个类别级数据依赖加权模块,center weights。它从标准中心先验开始,从数据中学习每个类别的分布。
为适应每个实例的外观和尺度,作者又提出了一个实例级加权模块,confidence weights。它根据每个目标预测的置信度来动态地对每个位置加权,最后将两个加权模块结合起来,得到所有位置正负权重。给定一个目标n,在应用作者提出的加权机制后训练损失Ln(θ)公式化为:
其中Sn表示所有尺度层级中的bbox中的所有位置,对每一个位置i∈Sn,它属于正负样本的概率由网络预测得到,记为Pi+和Pi-。Wi+和wi-是由中心加权模块和置信度加权模块得到的权重图。
3.2 Center Weighting
先验分布是标签分配的基本要素,尤其是在训练早期。通常目标的分布会倾向于中心先验,但不同类别的目标可能会有不同的分布。保持采样中心无法去更好地捕捉现实世界中不同实例的不同分布。对不同类别的目标,更需要一种自适应的中心分布。
因此基于中心先验作者提出了一种带可学习参数的高斯形状的类别级加权函数G,每一类别都有其独有的参数(μ,σ),相同类别的目标共享这一组参数。定义G为
d
⃗
\vec{d}
d表示目标内部中心位置与预测框中心在x轴、y轴上的偏移,
μ
⃗
\vec{μ}
μ和
σ
⃗
\vec{σ}
σ是可学习的参数,大小为(K,2),K为数据集中的类别数,每个类别都有沿x轴和y轴的两个参数。由于G会产生训练损失,因此可以通过反向传播来优化参数。
μ
⃗
\vec{μ}
μ控制每个类别目标预测框中心的中心偏移。
σ
⃗
\vec{σ}
σ则是根据类别特征来评估每个位置的重要性,因此可以确定有多少个位置会以合理的权重对正损失做贡献。G应用于FPN所有层,由于相同类别的目标大小或长宽比不定,因此其合适的检测位置可能位于任一FPN阶段。此外为了弥补FPN各层不同的下采样率带来的干扰,作者根据各层下采样率对距离
d
⃗
\vec{d}
d做归一化。
3.3 Confidence Weighting
现有的动态标签分配策略是根据网络可以很轻松地对合适的样本学到高置信度,同时对较差的样本做出低置信度预测设计的。置信度指标在尺度选择和空间分配都被证明是有效的。在置信度加权中,作者提出了一个联合分类和定位的置信度指标来引导空间和尺度维度上的加权策略。
3.3.1 Classification confidence
给定空间位置i,其分类置信度定义为Pi(cls|θ),目标类别概率由网络直接预测,θ表示模型参数。为确保有考虑到所有合适的位置,作者先考虑了框内所有空间位置。由于一个目标很难完全占满预测框,所以初始正集中往往会包含一部分背景。如果一个位置实际是背景,那么该位置所有的类别预测都是不合理的,将这些背景位作为正样本会有损检测性能。
为了抑制来自劣质位的false positives,作者引入了一个Implicit-Obiectness分支。它的工作原理类似于RPN 和YOLO中的Objectness,主要进行前景、背景的二分类任务,但是其存在缺少显式标签的问题。RPN和YOLO采用预定义分配方式,分配一致的正标签,而Autoassign需要动态地去找到并强调那些合适的positive。Implicit-Obiectness分支会和分类分支一起去优化Objectness,因此它不需要显式标签,其实也就是用一个隐式的前景背景二分类对分类预测做一个相乘,这个分支没有额外监督,就只是单纯地去放缩一下分类的预测。对于一个位置(i∈Sn)在ImpObj后被采用,其分类置信度Pi(cls|θ)被定义为:
提出的ImpObj被记为Pi(obj|θ),表示位置i作为前景(目标)或背景的概率。Pi(cls|obj, θ)是分类分支的输出,表示一个已知为前景或背景的位置i,其属于某一特定类别的概率。手工选择前景的标签分配策略中,positive的Pi(obj) =1,negative的为0,且Pi(cls|θ) =Pi(cls|obj, θ) ,而在Autoassign中,Pi(obj|θ)根据网络动态确定。
3.3.2 Joint confidence modeling
为了生成每个位置的正负无偏估计,除了分类外,还应该考虑到定位置信度。定位分支的输出是框的偏移量,这很难直接用于度量回归置信度。因此作者将定位损失
L
i
c
l
s
L_i^{cls}
Licls(θ)转换为回归似然Pi(loc|θ),然后将分类和回归似然结合起来得到联合置信度Pi(θ),联合置信度可由损失转换得到。为了不失泛化性,作者使用二元交叉篇损失(BCE)用于分类,λ用来平衡两个损失。
这样一方面可以简化表示,统一优化,另一方面在生成正样本置信度(即w+)的时候可以综合考虑到分类和定位的情况。
3.4 Weighting function
基于联合置信度表示Pi(θ),作者提出置信度权重函数C(Pi),以指数形式强调包含高置信度目标的位置,与(8)式成正相关,这样分类得分高、框预测的又准确的位置拥有较大w+值的概率会高一些:
3.4.1 Positive weights
对于一个目标i,应该只关注其边界框内合适的位置做出更精准的预测。但是在训练刚开始网络参数是随机初始化的,其预测的置信度值可能并不合理。因此来自先验的指导信息也很重要。对于位置i∈Sn,作者结合了置信度权重模块C(Pi)以及中心加权模块中特定类别的先验G(
d
i
⃗
\vec{di}
di)来生成positive weights wi+。
如果一开始质量较差的位置的分类和回归置信度预测出来都不错,那么它的w+就会很高,也就是它权重会较大,监督训练对它的关照会不断增大,这样会导致一些好的位置没有机会翻盘,让网络学成了一个过拟合的模样。所以作者引入了G(d),由于大部分情况下质量较高的正样本都会在框的中心,作者为每个大类学习了一个公共的高斯先验,形状基本是从物体的大致中心区域向外渐渐变弱。引入这一项可学习先验后,那些更有潜力的位置就可能能翻盘。不过这个可学习的先验仅与类别有关,可能会造成对旋转目标的不匹配。为保证竞争和合理的数值范围,还有一个类似softmax的操作,因为本来一个gt框里面也只有一部分是真正地落在物体上的,这些位置应当对应那些较大的w+值。
3.4.2 Negative weights
边界框内通常会包含一定数量的背景位置,因此我们需要使用加权的negative loss来抑制这些位置,消除false positive。此外,由于边界框内的位置一般会预测得到较高的positive置信度,作者倾向于使用定位置信度来生成false positives的无偏指标。但是负分类并没有参与回归,也就是不应该对其定位置信度做进一步优化。因此作者使用每个位置预测的proposal和GT之间的IoUs来生成负权值wi-
ioui表示位置i的propos与所有GT的IOU最大值。为作为有效权重使用,作者通过函数f归一化1/(1-ioui)到0-1之间。这种转换锐化了权值分布,并确保了IoU最高值位置的负损失为0,边界框以外所有位置的wi-设置为1,因为是背景。
3.5 Loss function
通过生成正负权重图,作者实现了为每个实例动态分配更合适的空间位置且自动选择合适的FPN层级。由于权重图会对训练损失做贡献,AutoAssign以可微的方式处理标签分配,损失函数为:
P-=1-P(cls|θ), n表示第n个GT。为确保至少有一个位置与目标n匹配,作者用所有正权值的加权和来获得最终的正置信度。S表示所有尺度上的所有位置。因此对于边界框内的某个位置,正负损失是以不同权重进行的计算。为了处理正负位置间的不平衡问题,采用Focal loss。
四、Experiments
五、个人总结
本文主要是提出了一种新的标签分配策略AutoAssign,通过生成正负权重图来动态地修改每个位置的预测,从而自动地划分正负样本。首先是引入了一个Implicit-Obiectness分支,进行前景背景的二分类任务,然后将其结果与分类分支的分类预测相乘,也就是用一个隐式的前景背景二分类值对分类预测结果做缩放。为适应不同类别的分布,作者提出了中心加权模块center weights。它从标准中心先验开始,从数据中学习每个类别的分布。为适应每个实例的外观和尺度,作者提出了置信度加权模块confidence weights。它根据每个目标预测的置信度(结合分类和定位置信度)来动态地对每个位置加权。最后将两个加权模块结合起来,得到所有位置的正负权重。损失中正负权重分开计算。