Learning from Noisy Anchors for One-stage Object Detection 论文笔记

前言

在基于anchor的目标检测器中,通常是根据阈值来选择正负样本——anchor与gt的IoU如果高于阈值,那么就是正样本,否则就是负样本。由于一些anchor与gt是部分重叠的,也即该anchor只包含目标的部分信息,因此基于这样的IoU来确定anchor是正样本还是负样本是不太合理的。看下图,蓝框是正样本,红框是负样本,绿框是gt。长颈鹿的头由于IoU过低,因此被作为负样本,但它对于分类与定位来说包含着很丰富的语义信息,毕竟看到这个头就知道是长颈鹿了嘛;在狗狗这张图中,gt是后面的屏幕,虽然正样本与gt的IoU较高,但正样本包含了一部分其它目标(狗狗)的信息。这就是noisy sample问题。
Learning from Noisy Anchors for One-stage Object Detection 论文笔记
为了降低noisy sample对分类与定位的影响,本文为每个anchor设置了一个cleanliness score,以自适应地调整训练时每个anchor的重要性,也就是说明anchor的质量。这个cleanliness score有以下作用:

  1. 可以自动做出决定,而不是基于启发式的方法(设置阈值);
  2. anchor不会根据阈值被强制性的分为正负样本;
  3. 能够反映anchor被成功分类与定位的概率。

实验证明网络的输出可以说明样本的噪声水平,因此将cleanliness score定义为定位精度和分类分数的结合,这样就能使分类分支与其对应的回归分支相关联,通过将定位信息注入到分类子网中,从而减少训练和测试时的差异。那么cleanliness就可以作为soft anchor来监督分类分支的训练,由于它比之前的正/负标签包含了更丰富的信息,因此它可以避免网络从noisy sample得到不正确的预测结果。另外,cleanliness score通过非线性转换可以被用作sample re-weighting factor,以规定不同的anchor对网络损失的贡献,这使得模型倾向于选择那些cleanliness score较高的样本,而忽略那些noisy sample。


方法实现

对于分类分支来说,网络的置信度分数通常能够反映样本的noise level,也就是说,网络能够很轻松地从高置信度的easy sample进行学习,而对于hard&noisy样本,网络只能得到不确定的预测结果,因此将置信度分数作为cleanliness score的一项。

而对于回归分支来说,由于回归分支和分类分支是平行的,因此分类和回归是不相关的,通过将IoU加入作为cleanliness的一项,可以使分类分支与对应的回归分支相关联。

由此,本文使用分类分支和回归分支学到的知识来定义cleanliness score:
Learning from Noisy Anchors for One-stage Object Detection 论文笔记
bb是anchor,loc_a和cls_c分别是定位精度和分类置信度,AposA_{pos}AnegA_{neg}分别是正样本和负样本。只有正样本有cleanliness score,而其它的都是0。 cls_c是分类分支的直接输出,而loc_a是regressed anchor与gt之间的IoU(注意并不是原始anchor)。这样做感觉是为了保持分类与回归之间的一致性,毕竟分类分支贡献的是输出的置信度,那么回归分支也应该提供经过回归之后的anchor。

1. soft lable

cleanliness score就可以用作是soft lable,由于cleanliness score是基于loc_a和cls_c进行动态估计的,因此网络能够更关注clean sample,也就是cc较大的anchor。此外,这种soft lable还能使网络更好的对检测结果的反馈作出反应,现在不单单根据分类置信度进行NMS,还有regressed anchor的IoU。soft lable能够避免网络产生一些over-confident的预测,同时能够减少分类与回归之间的misalignment。

2. sample re-weighting

one-stage目标检测器的正负样本间通常存在极端的不平衡——负样本数量远远大于正样本,focal loss的提出缓解了这种问题,它减少了easy样本的损失,更关注hard&noise样本的损失。但是,对于noisy sample来说,他们在训练中可能会受到压力。因此,本文基于cleanliness score来重新设置样本的权重,但是由于loc_a和cls_c进行了归一化,因此不同anchor之间的cleanliness score的差异不会很大。为了得到较大的方差,将loc_a和cls_c通过一个非线性转化f(x)=11xf(x)=\frac{1}{1-x},那么每个anchor的re-weighting因子rr就为:
Learning from Noisy Anchors for One-stage Object Detection 论文笔记
以这种方式对anchor进行重新加权,不仅模糊了网络难以建模的hard sample的作用,同时有助于重新利用被认为分类正确的clean sample,从而增强了分类分支的区分能力。

那么通过基于cleanliness score的soft lable和sample re-weighting factor,分类分支和回归分支的损失函数就可以被写为:

Learning from Noisy Anchors for One-stage Object Detection 论文笔记
上述方法的整体算法如下:
Learning from Noisy Anchors for One-stage Object Detection 论文笔记


结论

本文主要解决anchor中的noise问题。提出cleanliness score来调整每个anchor在训练中的重要性,它结合了分类和回归分支的输出,衡量anchor能够被成功分类和回归的概率,值越大,说明这个anchor是clean sample,网络也更倾向于从clean sample进行学习。然后进一步利用cleanliness score作为soft lable来监督分类分支的训练,并且利用cleanliness score对anchor进行重新加权以优化分类损失和回归损失。也就是利用网络的输出来进一步对网络进行优化。