本文主要讲了几种处理类别不平衡的方法的总结,详细的请参阅focal loss
OHEM
思想:
根据输入样本的损失进行筛选,找出hard example.表示对分类和检测影响较大的样本,然后将筛选得到的样本应用在随机梯度下降中训练。
优点:
- 对于数据不平衡问题不需要设置正负样本比例的方式来解决。这种在线选择的方式针对性更强。
- 随着数据集的增大,算法的提升更加明显。(COCO 比VOC提升明显)
详解:
hard example:
多样性和高损失的样本:根据每个ROI的损失来选择,选择损失最大的一些ROI.但是,重合率比较大的一些ROI之间的损失也比较相似。因此作者采用NMS去除一些重合率大的ROI,这里作者设的阈值为0.7.
注意作者没有采用设定背景和目标样本数比例方式来处理数据的类别不平衡问题。因为如果哪个类别不平衡,那么这个类别的损失就会比较大,这样被采样的概率也很大。
网络:
Fast RCNN.
不仅解决了正负样本类别不均衡问题,同时提高了算法准确率。
Hard Negative example
定义:negative
是负样本,hard
是难样本,也就是说在对负样本进行分类的时候loss
比较大的样本
hard negative:
- 是容易将负样本看出正样本的那些样本,即与背景的重叠率一般,bg得分不高
- 如果rois中二分之一是物体,标签仍为负样本,这时候分类器就容易把它看成正样本,这就是hard negative。
hard negative mining:
多找一些hard negative加入负样本集,进行训练,这样会比easy negative组成的负样本效果更好,这样虚检率更低。
Easy Negative
大多数负样本不在前景和背景的过渡区域,分类很明确,就是所谓的easy negative
.
easy negative:
- 是容易将负样本看成负样本的那些样本,即于背景的重叠率高,训练的时候bg得分高
- 例如,ROI中没有物体,全是背景,这时候分类器很容易正确分类成那个背景,也就是
easy negative
也就是说easy negative
的loss小,,则对参数收敛的作用有限。
OHNMvsOHEM vs Focal Loss
- focal loss, 直接在loss上进行变换,不需要像ohem样forward两遍,看起来即简洁又实用。
- Online Hard Example Mining,
OHEM
(2016)。将所有sample根据当前loss排序,选出loss最大的N个,其余的抛弃。这个方法就只处理easy sample
的问题 - Oline Hard Negative Mining,
OHNM
, SSD(2016)里使用的一个OHEM变种, 在Focal Loss里代号为OHEM 1:3
。在计算loss时, 使用所有的positive anchor, 使用OHEM选择3倍于positive anchor的negative anchor。同时考虑了类间平衡与easy sample Class Balanced Loss
。计算loss时,正负样本上的loss分别计算, 然后通过权重来平衡两者。暂时没找到是在哪提出来的,反正就这么被用起来了。它只考虑了类间平衡。Focal Loss
(2017), 最近提出来的。不会像OHEM那样抛弃一部分样本, 而是和Class Balance一样考虑了每个样本, 不同的是难易样本上的loss权重是根据样本难度计算出来的。