
论文:AutoAssign: Differentiable Label Assignment for Dense Object Detection
代码:https://github.com/Megvii-BaseDetection/AutoAssign
出处:被 ECCV2020 拒
贡献点:
密集目标检测任务中的 label assignment 是对预定义 anchor 或 point 进行正负样本的分配,对检测器的效果有很大的影响。
早期的方法中只考虑单个尺度的特征,所以只需要选择空间位置来进行分配,随着 FPN 的广泛使用,选择合适尺度的特征也成为一个需要考虑的问题。
每个特征图上的标签分配:spatial assignment
不同尺度的特征图上的标签分配:scale assignment
现有的标签分配方法:
现有的标签分配方法的不足:
其他方法是怎么解决上述问题的:
上述的方法只能在数据维度添加动态的因子,还有需要人为设定的参数在里边。
AutoAssign 的出发点:如下图 1 所示,在真实目标上采样,肯定比在背景上采样效果更好, AutoAssign 的正负样本分配,可以看做把处于目标上的样本点看做正样本,把虽然在bbox 内但不属于目标本身的样本点看做负样本。
AutoAssign 这样做的优势:让标签的分配依赖于数据先验的同时,也能对不同的类别进行不同的自适应,避免了人为选定参数,如 IoU 阈值、anchor 分布、top-k 等。

AutoAssign 的两个特点:
1、将每个尺度的每个位置平等看待,不直接划分正负样本:AutoAssign 的框架是建立在 FCOS 之上的,对每个 location 都平等对待,每个 location 都有正样本属性和负样本属性(即体现在原文中的w+ 和w-)。
也就是说,在优化的过程中,有些样本会同时受到来自它为正样本的监督和负样本的监督,两者利用 w + w^+ w+ 和 w − w^- w− 来平衡配比,此外,不在任何 gt 框里的 location 其正样本属性 w+ 必然为0,也就是那些位置必然是background。
2、联合优化分类和回归(将回归函数也处理成了似然形式): L i ( θ ) = L i c l s ( θ ) + λ L i l o c ( θ ) = − l o g ( P i ( θ ) ) L_i(\theta) = L_i^{cls}(\theta)+\lambda L_i^{loc}(\theta) =-log(P_i(\theta)) Li(θ)=Licls(θ)+λLiloc(θ)=−log(Pi(θ))
在开始之前,作者提出了一个问题:label assignment 的哪一部分最重要?
从表 1 可以看出,动态规则是比较重要的。

如图 2 所示,上半部分是网络框架,以 FCOS 框架为基础:
加权机制:
从 label assignment 的角度来看,AutoAssign 究竟做了什么:

在训练前期,数据的先验分布是 label assignment 的基础,也就是目标的分布是 center prior 的(即距离中心点越近的位置,越有可能是正样本点),但是,比如长颈鹿和人的分布不同,所以不同的类别应该有不同的先验分布,如果只在中心的位置来采样,则可能无法捕捉到最具有区分特征的特征。
所以作者提出了 Center weighting:category-wise 高斯形状的加权函数 G
G 的公式如下:

给定一个目标,会使用 G 来在每个 FPN 特征层上计算位置的,然后将这些权重堆叠,后面使用。
1、Classification confidence:
为了避免两个问题:① 将很多背景设置为正样本;② 将很多前景设置为负样本
作者提出了 Implicit-Objectness(ImpObj)分支(类似于 FCOS 中的 centerness 分支),同时为了加强真正的正样本,过滤掉负样本,作者将 ImpObj 和 classification 得分相乘,来修正分类得分。
ImpObj 和分类共享监督信号,不需要额外的监督,且后面证明了这个分支对效果的提升作用很大。
在 Faster-RCNN 中有 RPN 网络,能够提前判断一个 anchor 是不是前景,能够有效的避免大量背景的引入,而单阶段网络无法提前过滤背景,所以这里使用 ImoObj 来重新定义分类得分:
一个 anchor 分类得分 = 这个anchor是一个前景的前提下,其最终的分类得分

2、Joint confidence indicator:得到一个能够综合衡量 cls 和 loc 的损失函数
为了在每个位置公平的生成正负样本,也就是将所有尺度的所有特征图上的位置都同等对待,需要同时考虑分类(上面的 1)和定位得分。
作者将定位 loss 转化为如下形式(本文定位 loss 使用 GIoU loss), λ \lambda λ 是平衡分类和定位的权重:


将分类和定位的似然函数形式进行联合,就得到了联合得分: P i P_i Pi
3、Positive weights:每个位置都会计算其对应的正样本权重 w i + w_i^+ wi+
如果某个位置有高分类得分,则认为其是前景,所以针对前景得分 P i P_i Pi 的 “前景加权函数” 为 C ( P i + ) C(P_i^+) C(Pi+)为:


4、Negative weights:每个位置都会计算其对应的负样本权重 w i − w_i^- wi−
由于一个 bbox 里边通常都会包含一些真正为背景的位置,所以也需要对 negative loss 进行加权来抑制这些位置产生错误的正样本。
由于负样本的置信度 P − P^- P− 不参与回归任务的梯度回传,所以 localization confidence P i ( l o c ) P_i(loc) Pi(loc) 无法对 negative loss 优化,所以作者使用 IoU 来生成负样本的权重,IoU 越小则权重越大,:

总结:

backbone:ResNet50+FPN
1、两个加权因子的效果

2、如何通过加权来解决空间和尺度的标签分配

3、Center weighting 的效果
Center weighting 带来了约 0.3% 的提升(不太明显)


4、Confidence weighting 的效果
ImpObj 可以带来约 1% 的有效提升(明显有效提升)

作者验证了分别使用 cls、 loc 和 ImpObj 的方法:
下表 10 也证明了 ImpObj 的效果:

下面对比了使用和不使用 ImpObj 的可视化图,发现使用后,能够同时提高 recall 和 precision。

下面可视化了 confidence weighting 的学习过程:

5、和 SOTA 的对比

其他 label assignment 的方法对不同的数据集的提升可能不太稳定,但 AutoAssign 可以根据不同的数据来动态调整,无需额外的手动调节和参数设置,就能达到约 1% 的提升。