lvs wrr权重是怎么算的 wls权重如何选择_Soft


文章目录

  • 一、背景
  • 二、方法
  • 2.1 Hard Label Assignment 和 Soft Label Assignment
  • 2.2 框架结构
  • 2.2.1 Positive Weighting Function
  • 2.2.2 Negative Weighting Function
  • 2.2.3 Box Refinement
  • 2.2.4 Loss Function
  • 三、效果


论文:A Dual Weighting Label Assignment Scheme for Object Detection

代码:https://github.com/strongwolf/DW

出处:CVPR 2022

一、背景

Label Assignment 的目标是给每个 anchor 分配其 loss weight 的正或负,现有的方法一般都主要设计正样本的权重函数,负样本的权重直接从在正样本的基础上获取。这种方法缺少了一些可学习的能力。

现有的 cls loss 如下:

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_02

  • lvs wrr权重是怎么算的 wls权重如何选择_目标检测_03lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04
  • lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_05

根据 lvs wrr权重是怎么算的 wls权重如何选择_权重_06lvs wrr权重是怎么算的 wls权重如何选择_Soft_07

  • Hard Label Assignment:认为每个 anchor 非负即正,也就是 lvs wrr权重是怎么算的 wls权重如何选择_权重_08, lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_09,且 lvs wrr权重是怎么算的 wls权重如何选择_Soft_10,中心思想是寻找一个分割边界来将 anchor 分为正样本和负样本,一般使用 IoU 或 anchor 距离 gt 中心点的距离来判定,但这样的规则忽略了一个问题,就是不同尺度和形状的目标的区分边界应该是不同的。
    此外,也有一些动态分配的方式,如 ATSS,基于 IoU 的分布情况,将 IoU 大于 [均值+方差] 的 anchor 划分为正样本。还有 prediction-aware 的分配方法,将预测的置信得分作为判定因子,来估计 anchor 的质量。
    这些方法没有考虑到 anchor 的重要程度应该是不同的,目标检测中的衡量方式应该同时考虑分类得分和定位质量,也就是说在训练的时候,分类头和回归头都是很重要的。
  • Soft Label Assignment:GFL 和 VFL 是两个典型的基于 IoU 的 soft label,TOOD 和 Mutual supervision 同时考虑回归得分和分类得分,计算得到了 anchor 的权重。
    这些方法主要考虑正样本权重函数的设计,缺失了负样本的设计,这种耦合的加权方式不能很细致的区分训练样本。
    图 1 展示了 4 种不同的预测结果,GFL 和 VFL 给 (B, D) 和 (C, D) 分配了很近似的 (pos, neg) 权重对儿。GFL 给 A 和 C 的 pos 和 neg 都分配了 0 权重,因为有相同的 cls score 和 IoU。
    因为现有的方法中,neg 权重函数是和 pos 权重函数强相关的,不同属性的 anchor 可能被分配近似的权重,会损坏检测器效果。

为了获得更具有区分性的信号,本文方法设计了一种新的权重策略,dual weighting(DW),来分别为正样本和负样本来分配权重,让它们互补。

  • pos weights:由分类得分和定位得分联合动态获取
    pos weights 反映了 cls head 和 reg head 的一致性程度,同时能够驱动那些一致性更高的 anchor 排到前面,在 infer 的时候,这些分类和定位得分都较好的 anchor 经过 NMS 后就能保留下来
    如图 1 所示,DW 能够通过给这 4 个不同的 anchor 分配不同的 (pos, neg) 权重对儿,来提供更细粒度的监督信号
    此外,为了得到更准确的 reg 得分,作者提出了一个 box refinement 操作
  • neg weight:解耦为两部分:① the probability that it is a neg sample;② its importance conditioned on being a neg sample

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_11

二、方法

2.1 Hard Label Assignment 和 Soft Label Assignment

Hard Label Assignment:

  • 如 FCOS 和 Foveabox 都是使用中心采样的方式,当 anchor 距离 GT 的中心点近,就判定为正样本,是一个静态的方式,并非最优的方式。
  • ATSS 是更进阶一些的方式,将 IoU > mean+std 的 top-k 个 anchor 作为正样本,PAA 将 cls 和 reg loss 联合写成极大似然的形式,使用分布来区分正负样本,OTA 将 label assignment 建模成了最优传输问题。
  • Hard Label Assignment 方法将所有 sample 同等对待,和目标检测的测评方式不是很兼容

Soft Label Assignment:

  • Focal loss 在 cross entropy 的基础上,降低了简单样本和负样本的权重,让检测器更关注难样本
  • GFL 给每个 anchor 分配一个 cls-localization 联合的 soft weight
  • Varifocal loss 使用 IoU-aware cls label 来训练 cls head
  • 上面的这几种方法都是先给正样本一个权重 lvs wrr权重是怎么算的 wls权重如何选择_目标检测_03,然后将负样本的权重简单的设置为 lvs wrr权重是怎么算的 wls权重如何选择_权重_13,本文方法给每个 anchor 分别计算其正/负的权重
  • 很多 soft 方法都在 loss 上加权,还有一些方法直接在得分上加权,lvs wrr权重是怎么算的 wls权重如何选择_Soft_14,如 FreeAnchor 和 Autoassign,且 Autoassign 的 lvs wrr权重是怎么算的 wls权重如何选择_目标检测_03lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04
  • 本文方法中,这两个权重的梯度是被截断的,和在 loss 上加权有相同的特点

2.2 框架结构

目标检测推理阶段一般都会使用 NMS 来处理预测框,所以,一个好的检测器的结果,应该同时具备高分类得分和高定位质量,但是,分类头和定位头是两个独立的头,会有高分类得分低定位质量,或高定位质量低分类得分的情况。

soft label assignment 方法中,使用 weighting loss 的方法,来加强两者的一致性,一般的 loss 如下:

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_17

  • s 是 cls score
  • b 是预测 box, b’ 是 GT box
  • reg loss 是 Smooth L1、IoU、GIoU 等 loss
  • 如果给那些具有较高一致性的 anchor 分配更大的 lvs wrr权重是怎么算的 wls权重如何选择_目标检测_03lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04

表 1 展示了不同方法对于一个 pos anchor 的 lvs wrr权重是怎么算的 wls权重如何选择_权重_06lvs wrr权重是怎么算的 wls权重如何选择_Soft_07 ,一般会使用 t 来表示两个 head 的一致性程度,然后将不一致性定义为 1-t,然后通过使用尺度因子 lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_22将其变为 pos、neg loss weights。

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_23

不同于表 1 中的具有高相关性的 lvs wrr权重是怎么算的 wls权重如何选择_权重_06lvs wrr权重是怎么算的 wls权重如何选择_Soft_07

  • pos weighting:将 cls score 和 IoU(预测的 box 和 gt 的 IoU)作为输入,通过估计 cls head 和 reg head 输出的一致性,来作为 pos weighting
  • neg weighting:将 cls score 和 IoU(预测的 box 和 gt 的 IoU)作为输入,然后将该 anchor 是 neg 的概率和该 anchor 是 neg 的重要程度相乘
  • 这样一来,那些具有相似 pos weights 的模棱两可的 anchor,就可以得到更细粒度的监督信号(有区分力的 neg weights),和现有方法不同

DW 的结构如图 2 所示:

  • 首先,给每个 GT 分配对应的 anchor(根据 center prior 选定参与训练的 anchor),然后给这些候选 anchor 分配 3 个 权重:lvs wrr权重是怎么算的 wls权重如何选择_目标检测_03lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_28
  • 在候选 anchor 之外的 anchor 被分为负样本,不会参与后面的过程,因为这些 anchor 的统计信息在训练早期很杂乱,如 IoU、cls score 等

lvs wrr权重是怎么算的 wls权重如何选择_权重_29

2.2.1 Positive Weighting Function

在 COCO 测评中,同一类别中的所有预测框会被排序后来决定去留。有些方法使用 cls score 作为排序标准,有些方法将 cls score 和预测 IoU 进行联合作为排序标准。

只有当一个 anchor 的 IoU>阈值且前面没有其他框排在前面的时候,这个预测结果会被认为是正确的

也就是说,对于一个 GT,只有排在第一个位置且 IoU>阈值的 box 会被认为是 pos,其他 box 都会被认为是该 GT 的假正例。

pos weight lvs wrr权重是怎么算的 wls权重如何选择_权重_06

lvs wrr权重是怎么算的 wls权重如何选择_深度学习_31

  • lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_32

为了让 pos weights 在不同 anchor 上有大的方差,作者添加了一个修正因子:

lvs wrr权重是怎么算的 wls权重如何选择_深度学习_33

  • lvs wrr权重是怎么算的 wls权重如何选择_Soft_34

最后,每个 anchor 的 pos weights 会使用加和进行归一化

2.2.2 Negative Weighting Function

如图 1 ,anchor D 有更细致的定位,但 cls score 更低,anchor B 定位粗糙,但 cls score 更高,这样的话,这两个 anchor 的一致性程度 t 就可能是很接近的,就没法反映出两个 anchor 的区别了。所以,作者使用下面两个数相乘的方式来获得更能区分开的 neg weights。

1、Probability of being a Negative Sample

根据 COCO 的测评标准,小于阈值的 IoU 的框被判定为错误,这说明就算一个预测框的 cls score 很高,如果 IoU 小于阈值,则会认为是错误的。也就是 IoU 是决定 neg sample 的 probability 唯一的因子,定义为 lvs wrr权重是怎么算的 wls权重如何选择_Soft_35

此外,COCO 使用 0.5~0.95,的 IoU 跨度来估计 AP,故 lvs wrr权重是怎么算的 wls权重如何选择_Soft_35

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_37

  • 任何单调递增的函数都满足 lvs wrr权重是怎么算的 wls权重如何选择_权重_38

为了简化,lvs wrr权重是怎么算的 wls权重如何选择_Soft_35

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_40

  • 一旦 lvs wrr权重是怎么算的 wls权重如何选择_权重_41 确定,k 和 b 也就可以获得,图 3 绘制了 lvs wrr权重是怎么算的 wls权重如何选择_权重_38-IoU 的曲线

lvs wrr权重是怎么算的 wls权重如何选择_权重_43

2、Importance Conditioned on being a Negative Sample

infer 的时候,neg prediction 在排序列表中不会影响 recall,但会影响 precision,所以,排序的时候 neg prediction 拍的越后越好。

所以,如果一个 neg prediction 有大的排序得分的话,网络更应该关注并降低其得分,也可以看做是网络优化中的难例。

作者使用 lvs wrr权重是怎么算的 wls权重如何选择_目标检测_44

lvs wrr权重是怎么算的 wls权重如何选择_权重_45

  • lvs wrr权重是怎么算的 wls权重如何选择_Soft_46

最后,neg weight lvs wrr权重是怎么算的 wls权重如何选择_目标检测_47

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_48

  • lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04
  • 假设两个 anchors 有相同的 pos weight,则 IoU 更小的 anchor 会有更大的 pos weight
  • lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_04
2.2.3 Box Refinement

由于 pos 和 neg weight function 都将 IoU 作为输入,故更加准确的 IoU 就能得到更好的权重,所以作者预测了一个 offset map lvs wrr权重是怎么算的 wls权重如何选择_目标检测_51,分别学习对左上右下的偏移修正,如图 4 所示。

由于距离目标边界更近的点预测的位置更准确,所示作者设计了可学习的预测模块,基于 coarse bounding box 来对每个边生成 boundary point,根据图 4,四个 boundary points 的坐标如下:

lvs wrr权重是怎么算的 wls权重如何选择_权重_52

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_53

2.2.4 Loss Function

本文提出的 DW 方法可以用于现有的狠毒哦检测器,作者在 FCOS 中嵌入了 DW,如图 2 所示,且作者仍然使用 centerness x classification 作为排序 cls score,loss 函数为:

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_54

  • lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_32

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_56

  • N 是在候选 bag 中的 anchor 个数
  • M 是不在候选 bag 中的 anchor 个数
  • FL 是 Focal Loss
  • s 是预测的 cls score
  • b 和 b’ 分别是预测和 gt 的框

三、效果

backbone:ResNet50 在 ImageNet 上预训练后,加上 FPN 作为 backbone

消融实验:

1、Hyper-parameters of Positive Weighting: lvs wrr权重是怎么算的 wls权重如何选择_Soft_57lvs wrr权重是怎么算的 wls权重如何选择_Soft_58

lvs wrr权重是怎么算的 wls权重如何选择_权重_59

2、Hyper-parameters of Negative Weighting:

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_60

3、Construction of Candidate Bag:

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_61

4、Design of Negative Weighting Function:

lvs wrr权重是怎么算的 wls权重如何选择_lvs wrr权重是怎么算的_62

5、Box Refinement

lvs wrr权重是怎么算的 wls权重如何选择_目标检测_63

和 SOTA 的对比:

lvs wrr权重是怎么算的 wls权重如何选择_Soft_64

DW 可视化:

如图 5 所示,可以看出 pos 和 neg weights 主要集中在 GT 的中间区域,GFL 和 VFL 分配权重区域会更宽一些,这种不同说明,DW 会更关注重要的样本,降低简单样本的贡献,如边界附近的,所以 DW 对 candidate bag 的选择方式更鲁棒一些。

此外,DW 集中区域的 anchor 的权重也有不同,GFL 和 VFL 的 neg weights 和 pos weights 相关度更高一些,尤其是橘色高亮区域,GFL 和 VFL pos weight 和 neg weight 很接近,DW 可以明显的区分开来。

lvs wrr权重是怎么算的 wls权重如何选择_Soft_65

DW 的局限:

尽管 DW 能够较好的区分 anchor 的重要性,但会同时降低训练样本的数量,如图 5,可能会对小目标造成影响,如表 7 所示,DW 对小目标的提升没有其他目标多,作者说,后面会根据目标的大小来进一步优化。