fg-bg Assignment & Imbalance problem

为什么会有正负样本不平衡问题

在目标检测网络里,通常会根据先验知识设置很多锚框(anchor-based)或先验点(anchor-free),通过对先验设置进行位置微调和类别预测得到网络的预测结果。而这些先验框/先验点中绝大多数为背景,只有很少的一部分会被匹配为fg,因而在计算损失并反向传播时,bg的计算结果占主导地位,fg由于数量过小而常常被忽略,导致网络难以收敛。

step1. 先验设置

为了覆盖尽可能多的检测结果以减少漏检,保证所有ground-truth目标都能被匹配到,通常会设置很多不同位置、不同大小、不同宽高比的锚框/先验点。例如Retinanet网络采用FPN结构会得到三个不同尺寸的特征图,根据特征图尺寸( N × N N\times N N×N)将目标图像划分为等大的 N × N N\times N N×N个网格,每个网格中定义9个不同尺寸、不同宽高比的锚框,即每层特征图会有 9 × N × N 9\times N\times N 9×N×N个先验框。

step2. 先验与真值的匹配方法

将微调后的先验框与ground-truth匹配方法主要有两类——Fixed Label AssignmentAdaptive Label Assignment

1. Fixed Label Assignment

Fixed Label Assignment根据IoU Matrix进行分配, 0.4 < I o U < 0.5 0.4<IoU<0.5 0.4<IoU<0.5定义为Ignore, I o U > 0.5 IoU>0.5 IoU>0.5时定义为正样本,其他情况为负样本,若一个先验框与多个gt相匹配,则定义为IoU最大的gt匹配项。这种暴力匹配方法容易导致目标密集情况下小尺寸目标的漏检。

2. Adaptive Training Sample Selection (ATSS)

ATSS 首先基于中心点的距离筛选候选正样本,再利用 IoU 的均值和方差自适应地决定阈值,对 GT 进行更第二次筛选分配,减少 Recall 指标对于 Anchor 数量的依赖,且第一步筛选可大幅度提升网络计算效率。

3. Optimal Transport Assignment (OTA)

OTA将标签分配问题等同于配货问题——每个gt为拥有k件标签的供货商(增加供货商background负责所有的bg标签),每个anchor为需要m个标签的客户,则需要解决的问题是,如何在损失最小化的前提下将所有标签分配到每一个anchor手中,原文采用Sinkhorn-Knopp迭代算法求解。
其中,配货损失由当前网络预测结果的分类损失和定位损失决定,即,该算法是一种动态算法,对于不同的训练过程,gt与anchor的匹配结果会存在差异。
除了动态分配之外,该算法的另一个优势是从全局信息考虑标签的分配(同样的还有采用匈牙利算法实现一对一匹配的DETR算法),而非ATSS等静态算法只根据anchor和gt的局部iou等信息分配标签。
Alt

4. SimOTA (from YOLOX)

SimOTA首先通过锚框和gt中心点位置确定候选集合。计算候选集合中所有样本对gt的损失值,并自动计算每个gt所需要的正样本数k,最后选取损失值最小的k个样本作为gt的正样本。
源自旷视公众号

解决方法

1. Sampling

sampling策略又分为hard sampling和soft sampling——hard sampling通过不同的采样策略实现fg-bg的均衡化,如bias sampling, OHEM等;soft sampling通过为不同样本分配不同的权重实现损失值主导能力均衡,如Focal loss等。hard sampling可以视为权重为0或1的soft sampling。

2. Ranking

由于fg-bg不平衡问题在分类任务中较为严峻,考虑将分类任务转化为排序任务,训练成对的样本而不是一个个独立的样本,具体实现如AP loss、DR loss等。

3. Control Gradient Magnitude

主流目标检测网络在训练时采用各种Label Assignment策略实现gt与anchors的匹配,而在推理过程中直接使用NMS进行结果筛选。Is Heuristic Sampling Necessary in Training Deep Object Detectors一文指出,由于网络推理过程中无法使用启发式采样策略,只在训练过程中使用启发式采样策略(不一致的策略)可能破坏fg-bg不平衡对训练、推理过程影响的一致性,因此训练时也不使用启发式采样策略能得到更好的分类效果。
该文章摒弃了上述Sampling方法,只采用标准的交叉熵损失,通过网络参数初始化限制损失值大小的方式解决fg-bg不平衡问题。

3-1 initialization

参考Retinanet将最后一个卷积层的偏移量初始化为 b = − l o g ( 1 − π π ) b=-log(\frac{1-\pi}{\pi}) b=log(π1π),其中 π \pi π为fg/bg的数量比,解释如下:网络最后一层输出 w x + b = − l o g p t − l o g ( 1 − π π ) = − l o g ( p t ∗ 1 − π π ) wx+b=-logp_t-log(\frac{1-\pi}{\pi})=-log(p_t*\frac{1-\pi}{\pi}) wx+b=logptlog(π1π)=log(ptπ1π),在训练初始阶段, p t p_t pt π \pi π近似抵消,对于bg样本来说网络输出 = − l o g ( 1 − π ) ≈ 0 =-log(1-\pi)\approx 0 =log(1π)0,能够避免造成较大数值的损失。且该参数会随着网络训练过程自我更新,比直接设定fg/bg的损失比例超参数效果更好。
本文令最后一个卷积层的偏置初始化满足分类损失值最小,即通过式(18)得到 π \pi π,进而通过式(19)计算出初始化偏置大小。
在这里插入图片描述

3-2 loss scaling

首先引入参数g^t,利用当前小批次的定位损失大小对分类损失进行标准化(因为定位损失只负责fg样本,受fg-bg比例影响小,更稳定)。
在这里插入图片描述
然后引入一个参数负责学习定位损失和分类损失的最佳比例,并为这个参数添加一个损失函数正则化项。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值