zl程序教程

您现在的位置是:首页 >  其它

当前栏目

【目标检测】35、PISA: Prime Sample Attention in Object Detection

in 检测 object 目标 35 Detection ATTENTION Prime
2023-09-14 09:04:28 时间

在这里插入图片描述

论文:Prime Sample Attention in Object Detection

代码:https://github.com/open-mmlab/mmdetection/tree/master/configs/pisa

出处:CVPR2020

贡献点:

  • 提出了 PrIme Sample Attention (PISA),让网络更加关注 prime samples,prime samples 是指那些对检测效果很重要的样本(IoU 高的正样本和 Score 高的负样本),且证明了关注这些 prime 样本比单单关注 hard sample 更有效
  • 提出了新的 samples 排序方法,在每个 batch 中,使用 IoU-HLR 来对 positive samples 排序,使用 Score-HLR 来对 negative sample 排序,这样的排序方法能够把 IoU 大的正样本(prime),和分类得分高的负样本(难样本,因为是负样本,但分类得分却高,所以需要重点关注)排到前面,指导网络更关注这些样本。
  • 提出了一个 classification-aware 的回归 loss,来联合优化分类和回归分支,能够抑制回归 loss 高的样本,强化 prime 样本的贡献
  • 使用 COCO 数据集,在 Faster RCNN、Mask RCNN、RetinaNet 上分别提高 2.0%、1.5%、1.8% AP

一、背景

在这里插入图片描述

很多检测方法中,一般都是将所有 anchor 平等看待,对 loss 优化的贡献也相同,但我们可以直观想象到绝大部分的 anchor 其实是背景信息,所以就有一些方法来试图解决这些问题,如 OHEM 和 Focal loss。HOEM 挖掘了一些难样本,而Focal loss 是在 loss 函数中对样本进行了加强,让难样本对 loss 的贡献更大一些。

虽然这些方法能够对上述问题有所缓解,但没有从根本上回答这个问题:

到底那些样本对检测器来说是最重要的呢?

本文出发点:

  • 所有的 sample 不应该被独立且同等地对待(它们既不独立也不平等,它们是竞争关系,且高 IoU 的样本应该是更重要的)

    Region-based 目标检测方法其实是在一堆 sample 中选择极少数的几个 sample 来作为最终的检测结果,所以这些 sample 是竞争关系,不是完全独立的。

    对于检测器来说,更可取的做法是在每个对象周围的一个边界框上获得高分,同时确保所有感兴趣的对象都被充分覆盖,而不是试图为所有正样本(即那些与对象大量重叠的)产生高分。即关注那些 high IoU 的正样本,而非所有正样本。

  • 分类和定位的目标函数是相关的,而非独立的

    那些精确定位在地面真实物体周围的样本特别重要,即分类的目的与定位的目的密切相关,也就是说,定位良好的样本需要以高置信度进行良好分类。

二、方法

2.1 Hierarchical Local Rank(HLR)

1、计算正样本的 IoU-HLR(如图 3):

  • 首先,根据距离 gt 的距离,将所有的 samples 分成不同的 groups,也就是将 samples 分配到对应的 gt 上去,一个 gt 对应的一堆 samples 为一组,如图 3a 所示
  • 接着,在每个 group 里边对 sample 进行排序,排序的依据是按 IoU 的降序排列,得到 IoU Local Rank(IoU-LR)
  • 最后,将每个 group 的 top-1 中的值按 IoU 降序排列,后面跟着 top-2、top-3 … Samples

IoU-HLR 排序后,正样本是怎样的:

  • 每个 gt 对应的 IoU 最大的 sample 排在了最前面的序列中,后面是所有 gt 对应的 top-2 的 sample,以此类推

IoU-HLR 排序后的序列如何使用:

  • IoU-HLR 排序中越靠前的 sample,是越重要的 sample,对网络的贡献越大
  • 越靠前的样本,网络的关注越高

图 2 展示了 PR 曲线,不同颜色的实线是不同 IoU 阈值下的 PR 曲线,这些曲线说明,网络聚焦于那些 top samples,比平等的看待所有 samples 的效果好,因为 PR 曲线下面积越大,说明 mAP 越高。

在这里插入图片描述

2、计算负样本的 Score-HLR:

由于负样本一般出现在背景区域,也无法使用 gt 来对其进行聚类,所以:

  • 首先,使用 NMS 来将他们分组到不同的组,也就是把距离近的聚到一个 group,如图 3b 所示
  • 接着,在每个 group 内按照分类得分进行排序
  • 最后,提取每个 group 的 top-1,将分类得分最大的排在第一个,依此排列,然后将 top-2 的按照相同的方法排到 top-1 的后面,以此类推,得到最终的 HLR 序列。

在这里插入图片描述
Score-HLR 排序号的序列是怎样的:

  • 负样本中,分类得分越高的越靠前
  • 得分越靠前的样本,网络训练过程更关注

Score-HLR 排序后的序列怎么使用:

  • 排序后,那些得分高的负样本排在前面了,之后通过线性变换,会得到大的权重,排序越靠前权重越大,模型越关注这些假正的样本。

图 4 展示了 random、hard、prime samples 和 IoU vs. Classification score 的关系,第一行是 positive samples,第二行是 negative samples。

图 4 说明了什么?

  • Hard positive 样本一般 classification loss 很高,并且在 IoU 轴上很分散
  • Prime positive 样本一般有高 IoU 和 低 classification loss
  • Hard negative 样本一般是有高 classification loss 和高 IoU
  • Prime negative 样本分布很没有规律

在这里插入图片描述

不同 sampling method 的对比:

在这里插入图片描述

不同 sampling 的方法分别更喜欢哪种 sample?

  • positive samples:hard samples 的 loss 高但 IoU 低,prime samples 的 loss 低但 IoU 高,说明 prime samples 更喜欢易于分类的样本
  • negative saples:PISA 是在 random sampling 和 hard mining 中间,random sampling 区域喜欢低 IoU 的简单样本,hard mining 喜欢高 IoU 的难样本,PISA 会保留样本更多的多样性。
    在这里插入图片描述

2.2 PISA

PISA 的主要目的是让网络更关注 prime samples,包含以下两个模块:

  • Importance-based Sample Reweighting:在训练过程中偏向 prime samples,而非对所有 samples 同等对待,
  • Classification-Aware Regression Loss:分类和回归使用联合目标函数训练,有助于提高 positive prime samples 的得分

先看看 PISA 每个模块的作用:

在这里插入图片描述

1、Importance-based Sample Reweighting

一个分类器的效果和 sample 的分布往往有很大的关系,如果某些样本频繁的出现在训练数据中,那么就会取得较好的效果,hard sampling 和 soft sampling 是两个改变训练数据分布的方法:

  • Soft sampling 是给不同样本赋予不同的权重
  • Hard sampling 从候选样本中选择一部分来参与模型训练,可以看做 soft sampling 的一个特例,权重给 0/1

本文提出的 Importance-based Sample Reweighting (ISR) 就是一个 soft sampling 的方法,根据样本的重要程度,来给其分配不同的 loss 权重。

ISR 包含两个部分:

  • Positive sample reweighting:ISR-P,使用的“重要程度衡量标准”为 IoU-HLR
  • Negative sample reweighting:ISR-N,使用的“重要程度衡量标准”为 Score-HLR

能够衡量重要程度之后,就需要解决如何将重要程度转化为 loss weight:

  • 首先,使用线性方式来转换这些排序,由于 HLR 是根据不同的类别来分别计算的(N 个前景类,1 个背景类)。

    对于类别 j j j,假设共有 n j n_j nj 个 samples 进行排序,得到 r 1 , r 2 , . . . , r n j {r_1, r_2, ..., r_{nj}} r1,r2,...,rnj,则使用公式 1 的方式来进行线性转换。

    在这里插入图片描述

    • u i u_i ui 是第 j 个类中的第 i 个sample 的重要程度
    • n m a x n_{max} nmax 是所有类别中,最大的 n j n_j nj,该值能够保证不同类别中相同排序位置的 sample,都会被赋予相同的 u i u_i ui
  • 然后,使用如公式 2 所示的一个单调递增的函数,来将 importance u i u_i ui 投射为 loss weight w i w_i wi

在这里插入图片描述

  • γ \gamma γ 决定了将给该 sample 多大的偏爱

  • β \beta β 是一个偏置,决定了最低 sample weight

  • 最后,在 Reweighting 之后,交叉熵分类函数可以重写为公式 3。直接在 loss 函数上使用权重,会直接改变 loss 的值,也会改变 positive 和 negative sample 对 loss 的贡献比例,所以,作者使用将 w w w 规范化为 w ′ w' w,来保持 loss 的值不被改变。

在这里插入图片描述

  • n n n 是 positive sample 数量
  • m m m 是 negative sample 的数量
  • s s s 是预测分类得分, s ^ \hat{s} s^ 是类别真值

ISR 如何影响分类得分?

ISR 会给 prime samples 分配更大的权重,如图 7 展示了不同 HLR 对应的正负样本的分布情况。

  • 对于正样本,top-ranked samples 的得分高于 baseline,lower-ranked samples 的得分很低,说明 ISR-P 能够提高 prime 样本的分类得分,降低其他的样本的分类得分
  • 对于负样本,所有样本的分类得分都低于 baseline,尤其是 top-ranked samples,说明 ISR-N 能够很好的抑制假正

在这里插入图片描述

2、 Classification-Aware Regression Loss

对于一个分类器,期望的是其能够对重要的样本输出更高的得分,而回归器的输出又决定了一个样本是不是重要,所以,分类和回归是有一定的联系在里边的。

作者如何将分类和回归联合起来?

使用一个 classification-aware 回归函数,能够让回归分支的梯度传递到分类分支上去,具体公式如公式 4 所示:

在这里插入图片描述

  • p i p_i pi 是预测的类别置信度
  • d i d_i di 是回归输出的 offset
  • L L L 是 smooth L1 loss
  • k = 1.0 , b = 0.2 k=1.0, b=0.2 k=1.0,b=0.2

分析:

  • 回归 loss 越大,classification score 接收到的梯度越大,也就是会越抑制该分类得分
  • 回归 loss 越小,classification score 接收到的梯度越小,也就是不会抑制该分类得分
  • 有了 CARL,classification branch 就会被 regression loss 监督起来,不重要的样本的分类得分会被抑制,重要样本的分类得分会被增强。

超参数的验证:

在这里插入图片描述

CARL 如何影响分类得分?

CARL 通过在回归 loss 中引入分类得分的方法,将分类得分和回归分支联合起来,回归质量低的样本的分类得分会被抑制,回归质量高的样本的分类得分会被增强,如图 8 所示,相比 FPN,CARL 能够增强 high IoU 样本的分类得分,抑制 low IoU 样本的分类得分。

在这里插入图片描述

三、效果

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