正负样本不平衡问题

正负样本不平衡带来的问题:

由于大多数都是简单易分的负样本(属于背景的样本),使得训练过程不能充分学习到属于那些有类别样本的信息;其次简单易分的负样本太多,可能掩盖了其他有类别样本的作用(这些简单易分的负样本仍产生一定幅度的loss,数量多会对loss起主要贡献作用,因此就主导了梯度的更新方向,掩盖了重要的信息)

  1. 训练效率低下(因为大多数位置都是负样本,没有提供有用的学习信息)
  2. 模型精度变低(过多的负样本会主导训练,使模型退化)

解决方法:

  1. 正负样本采样器:
    固定的前景背景比(正负样本-随机采样)、在线难样本挖掘(OHEM-2016)、yolov5的增加网格扩展正样本等、
  2. 平衡loss(平衡分类、边框、置信度损失)
    Focal Loss(2017-平衡分类损失):认为基于回归的one-stage的检测框架不能达到two-stage的精度的核心原因是正负样本不平衡
    平衡化L1损失(balanced L1 Loss–2019Libra R-CNN):目标检测损失中包含分类损失和位置损失。平衡两类损失,最普遍的做法是给位置损失加一个权重。但这种做法会有一个潜在的问题:对于训练中的少数困难样本,预测的结果和实际的位置往往偏差较大,此时权重会将大的损失放大,从而产生更大的梯度信息,严重时可能会破坏模型的收敛过程,同时弱化多数简单样本产生的梯度信息。因此,为了平衡不同难度的样本带来的位置损失,论文基于smooth L1损失,提出了balanced L1损失。参考Libra R-CNN

1.正负样本划分策略

a.anchor-based:

1.基于anchor和GT(真值框)的宽高比(yolov5)
2.基于anchor和GT的IOU(交并比)(yolov2、v3、v4、retinet等)

b.anchor-free:

1.将真实框内的锚点视为候选正样本,然后根据为每个金字塔等级定义的比例范围从候选中选择最终的正样本,最后那些未选择的锚点为负样本(FCOS等)
2.基于center的paper和FCOS有些相似,也是用中心点和宽高来表示一个物体,最大区别在于CenterNet使用的是物体的中心点。以及在实现正负样本分配的时候,引入高斯热图确定正负样本(CenterNet)

c.同时适用于Anchor_based和Anchor_free的正负样本定义方式:

自适应训练样本选择(ATSS-2020):根据目标的统计特征(方差和均值)自动划分正训练样本和负训练样本,弥合了基于锚的探测器与无锚探测器之间的差距,具体步骤如下:

1.对于每个输出的检测层,选计算每个anchor的中心点和目标的中心点的L2距离,选取K(mmdetection的topK是9)个anchor中心点离目标中心点最近的anchor为候选正样本(candidate positive samples)

2.计算每个候选正样本和groundtruth之间的IOU,计算这组IOU的均值和方差
根据方差和均值,设置选取正样本的阈值:t=m+g ;m为均值,g为方差

3.根据每一层的t从其候选正样本中选出真正需要加入训练的正样本
然后进行训练

ATSS:认为基于anchor-free和anchor-based目标检测的本质区别是正负样本的定义

SAPD(ECCV-2020):本文可以认为是anchor-free论文的改进。其首先指出目前anchor-free算法存在的问题:
1.attention bias(注意力偏差),
2.feature selection(特征选择),并提出了相应的soft策略。由于其主要是修改了正负样本定义策略。
attention bias说的是对于特定输出层内的正负样本定义问题
feature selection说的则是不同输出层间的正负样本定义问题,我们以前说的正负样本定义都是hard,这里解决办法都是soft 论文笔记:
Soft Anchor-Point Object Detection
SAPD-Soft Anchor-Point Object Detection

总结:本文主要有两个点:
1.正样本应根据与GT中心点的距离分配不同的权重。
2.正样本应当分配到特征金字塔的多层

新的标签分配策略——Optimal Transport Assignment (OTA-2021):该策略将gt和bg的标签分配给anchor的过程转变成一个最优化的问题,使用SinkhornIter迭代求解得到最小的分配代价矩阵c,解码该分配代价矩阵c后得到最佳分配方案。

2.正负样本采样策略

faster-rcnn(2016):使用随机采样器(RandomSampler)来解决样本不平衡-固定的前景背景比1:3,RPN层正负样本1:1(毕竟正负样本不可能刚好1:3,所以应该是随机取的正负样本)

OHEM(2016):传统的Hard Negative Mining Method 需要迭代训练,如果我们将他使用到 end-to-end 的卷积神经网络,需要每次将网络冻结一段时间用来生成 hard negative。而这对于使用线上优化的算法来说是不可能的,例如 SGD (随机梯度下降算法)。使用 SGD 来训练网络需要上万次更新网络,如果每迭代几次就固定模型一次,这样的速度会慢得不可想象。

OHEM的过程:两个相同 的RoI网络,不同的是其中一个只可读,另一个可读可写。可读的,只对所有RoI做前向计算,所以只需分配内存给前向计算 操作,既可读也可写的对被选择的hard RoIs不仅做前向计算也做反向 传播计算。对于一次SGD迭代,计算过程如下:先计算出特征图**,可读RoI网络对所 有RoI执行前向计算并计算每个RoI的损失,然后选择hard RoIs。把这 些hard RoIs输入到可读可写的RoI网络中执行前向前向计算和反向传播更新网络,并把可读可写的RoI网络的参数赋值给只可读的网络**,一次 迭代就完成了。OHEM 详解

Libra R-CNN(CVPR2019):使用IOU平衡化采样(IoU-balanced Sampling),也可称为分层采样,根据IOU划分区间,将负样本随机放入其中,从而增大困难负样本的比例。(参考:Libra R-CNN 这篇论文主要针对的就是目标检测中的不平衡:采样、特征、损失)

猜你喜欢

转载自blog.csdn.net/qq_41318914/article/details/127476752