【目标检测】33、AutoAssign:Differentiable Label Assignment for Dense Object Detection

在这里插入图片描述

论文:AutoAssign: Differentiable Label Assignment for Dense Object Detection

代码:https://github.com/Megvii-BaseDetection/AutoAssign

出处:被 ECCV2020 拒

贡献点:

  • 提出了一种 category-wise 且对不同位置使用不同权重的 label assign 方法,能够同时优化空间和尺度的 label assignment。
  • 引入了两个加权系数:① Center weighting 用于学习不同类别的先验,让每个类别有自己的正样本采样方式;② confidence weighting 用于学习每个位置的前景权重和背景权重
  • AutoAssign 在 COCO 上达到了 SOTA

一、背景

密集目标检测任务中的 label assignment 是对预定义 anchor 或 point 进行正负样本的分配,对检测器的效果有很大的影响。

早期的方法中只考虑单个尺度的特征,所以只需要选择空间位置来进行分配,随着 FPN 的广泛使用,选择合适尺度的特征也成为一个需要考虑的问题。

每个特征图上的标签分配:spatial assignment

不同尺度的特征图上的标签分配:scale assignment

现有的标签分配方法:

  • Anchor-based 方法:在特征图上的每个位置平铺多个不同尺度和不同纵横比的 anchor,然后计算其和 gt 的 IoU,大于某个阈值(如 0.5)则为正样本,小于某个阈值(如0.3)则为负样本。
  • Anchor-free 方法:将落在 gt 中心点半径内的 center 作为正样本(如FCOSv2, 中心点的 3x3 邻域内的作为正样本)。

现有的标签分配方法的不足:

  • Anchor-free 方法中有些方法将落在 gt 中心点某个半径内的点看做正样本,也称为 center prior, 也就是认为距离中心点距离越近的点,越有可能是正样本。而这些前提都需要极强的先验知识,同时也是固定策略的正负样本,不能在训练过程中通过学习进行更改。
  • 有海量的超参数需要调整:例如,anchor 的 num,size,aspect ratios;或者 radius,top-k,IoU 阈值等等
  • 现有的 label assignment 方法对 spatial 和 scale 的 assign 是分别采用不同的方式解决的,没有同时解决。

其他方法是怎么解决上述问题的:

  • GuidedAnchoring 和 MetaAnchor 在 sampling 之前,动态的改变 anchor 的形状
  • 还有一些方法在空间维度(FreeAnchor、ATSS)和尺度维度(FSAF)动态修正采样的策略

上述的方法只能在数据维度添加动态的因子,还有需要人为设定的参数在里边。

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 框架为基础:

  • Classification score
  • Implict-Objectness score
  • Localization score

加权机制:

  • Center weighting module:class-aware,给每个类别学习一个正负样本分配方式,给正负样本加权,一般认为距离中心越近,是正样本的权重越大,但这里是对每个类别分别学习先验,可以调整中心点的位置和开口的尺度
  • Confidence weighting module:instance-aware,给每个位置分别学习正负样本的权重 w + w^+ w+ w − w^- w,作为权重控制最终的 loss。

从 label assignment 的角度来看,AutoAssign 究竟做了什么:

  • 能够从特征图中动态的找到 FPN 的合适的尺度,和空间位置

在这里插入图片描述

2.1 Prior-level: Center Weighting

在训练前期,数据的先验分布是 label assignment 的基础,也就是目标的分布是 center prior 的(即距离中心点越近的位置,越有可能是正样本点),但是,比如长颈鹿和人的分布不同,所以不同的类别应该有不同的先验分布,如果只在中心的位置来采样,则可能无法捕捉到最具有区分特征的特征。

所以作者提出了 Center weighting:category-wise 高斯形状的加权函数 G

  • 一般来说,距离 bbox 中心点越近,则权重越大,距离 bbox 中心点越远,则权重越小
  • 但甜甜圈、雨伞、香蕉等物体,中心点很可能不是物体的像素点,所以这里的高斯函数,可以通过学习 μ \mu μ σ \sigma σ 来根据不同类别数据的不同分布,动态调整形状

G 的公式如下:

在这里插入图片描述

给定一个目标,会使用 G 来在每个 FPN 特征层上计算位置的,然后将这些权重堆叠,后面使用。

2.2 Instance-level:Confidence Weighting

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

  • 对于正样本,定义其联合得分为: P i + = P i ( c l s ) ⋅ P i ( l o c ) P_i^+ = P_i(cls) \cdot P_i(loc) Pi+=Pi(cls)Pi(loc)
  • 对于负样本,定义其联合得分为: P i − = P i ( c l s ) P_i^- = P_i(cls) Pi=Pi(cls)(只有分类得分会生效,没有对应的定位得分)

3、Positive weights:每个位置都会计算其对应的正样本权重 w i + w_i^+ wi+

如果某个位置有高分类得分,则认为其是前景,所以针对前景得分 P i P_i Pi 的 “前景加权函数” 为 C ( P i + ) C(P_i^+) C(Pi+)为:

在这里插入图片描述

  • τ \tau τ 是控制不同得分的位置对 positive loss 的贡献程度的, τ = 1 3 \tau=\frac{1}{3} τ=31 效果最好
  • i ∈ S n i \in S_n iSn S n S_n Sn 是目标 n 在所有尺度层上的所有在 bbox 内的位置
  • 对于一个目标 i i i,应该关注的是其 bbox 内部的那些预测的准确率更高的位置,所以,将 C ( P i + ) C(P_i^+) C(Pi+) 和 category-specific prior G G G 进行结合,得到权重如下,:

在这里插入图片描述

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 越小则权重越大,:

在这里插入图片描述

  • f I o U i = 1 / ( 1 − I o U i ) f{IoU_i} = 1/(1-IoU_i) fIoUi=1/(1IoUi) I o U i IoU_i IoUi 是每个位置上产生的框的最大的 IoU
  • 这种加权会让权重分别更加集中,且能保证 IoU 最大的框的 negative loss = 0
  • 对于所有在 bbox 之外的位置, w i − = 1 w_i^-=1 wi=1,因为都确定为背景

总结:

  • 对于上述前景和背景的权重函数,都是单调递增的,也就是该位置是前景的得分越高,则前景的权重越大,该位置预测为背景的得分越高,则背景的权重越大
  • 对于一个前景的位置,在计算权重时,需要结合 Gaussian Center Weighting,而背景则不需要预设的先验。

2.3 Loss

在这里插入图片描述

  • S S S 是输出特征图中的所有尺度的所有位置
  • 为了保证至少一个位置 match 目标 n,将所有 positive weights 进行加权求和,得到最终的 positive confidence。
  • 对于所有出现在 bbox 内部的采样点(location),会同时计算其加权 positive loss 和加权 negative loss

三、效果

backbone:ResNet50+FPN

1、两个加权因子的效果

在这里插入图片描述

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

在这里插入图片描述

3、Center weighting 的效果

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

在这里插入图片描述
在这里插入图片描述

  • 对不同类别共享相同的可学习的高斯参数 μ \mu μ σ \sigma σ,比固定的参数低了 0.1% AP
  • 对不同类别使用不同的可学习参数(category-wise),比固定的参数高了 0.2% AP
  • 这是由于 COCO 有 80 个类别,目标很多,数据量很大,所以目标的分布基本上都趋于正态分布了,所以 category-wise 的参数看起来没有很大的作用,但当看那些分布独特的类别时(热狗、浆板等),就能看出其带来的提升了

4、Confidence weighting 的效果

ImpObj 可以带来约 1% 的有效提升(明显有效提升)

在这里插入图片描述

作者验证了分别使用 cls、 loc 和 ImpObj 的方法:

  • 只使用 cls 或 loc(第一和第二行),都没有最后一行效果好
  • explicit-obj:使用 label 来监督 objectness 的训练(1-前景,0-背景),作者发现使用 hard label 并没有很大的提升,但使用 ImpObj 可以带来约 1% 的提升。
  • 作者认为 ImpObj 带来提升的原因在于其能够过滤掉 noise candidates,让前景和背景实现很好的区分。

下表 10 也证明了 ImpObj 的效果:

在这里插入图片描述

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

在这里插入图片描述

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

  • 开始时,confidence weighting 对所有目标都很弱,对所有位置的权重是类似的
  • 随着训练的进行,confidence weighting 慢慢汇聚到目标区域,且不同 stage 关心的目标大小不同

在这里插入图片描述

5、和 SOTA 的对比

在这里插入图片描述

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

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

呆呆的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值