Gradient Harmonized single-stage Detector
One-stage object detection在模型训练过程中之中面临着样本分布严重不均衡的问题。梯度分布上看待样本数量和难易不均衡。直接把cross entropy产生的gradient distribution标准化到uniform就可以轻松训练单阶段物体检测模型。
Introduction
Focal loss指出one-stage 检测器中样本类别(前景和背景)严重不均衡的问题, 并通过设计一个新的损失函数来抑制大量的简单背景样本对模型训练的影响。本文,对样本不均衡的本质影响进行了进一步的探讨,找到了梯度分布这个更为深入的角度。
不同类别数不同不是影响one-stage训练的本质问题,产生本质影响的问题是不同难度样本的分布不均衡。更进一步,每个样本对模型训练的实质作用是产生一个梯度用以更新模型的参数,不同样本对参数更新会产生不同的贡献。在one-stage检测器的训练中,简单样本的数量非常大,他们产生的累计贡献就在模型更新中有巨大的影响力甚至占据主导作用,而由于他们本身已经被模型很好的判别,所以这部分的参数更新并不会改善模型的判断能力,也就使整个训练变得低效。
对样本梯度进行统计(因为每次更新回来的样本梯度的贡献是可以通过加权改变的),并根据这个分布设计了一个梯度均衡机制(Gradient Harmonizing mechanism)
梯度均衡机制
梯度模长(gradient norm)
Binary cross entropy loss(交叉熵损失函数,这个公式我还推过)
P = sigmoid(x) 为模型所预测的样本类别的概率,p*是对应的监督。则其对x的梯度为:
定义了梯度模长:
对一个交叉熵损失函数收敛的one-stage检测模型,样本梯度模型的分布统计如下图:
大多数是很容易被分类的,但是g接近1的时候,样本比例也比较大,可能是一些离群样本(outlier),可能是由于数据标注本身不够准确或是样本比较特殊极难学习而造成的。对于一个已经收敛的模型来说,强行学好这些离群样本可能会导致模型参数的较大偏差,反而会影响大多数已经可以较好识别的样本的判断准确率。
梯度均衡机制,即根据样本梯度模长分布的比例,进行一个相应的标准化,使得各种类型的样本对模型参数更新有更均衡的贡献。
由于梯度均衡本质上是对不同样本产生的梯度进行一个加权,进而改变他们的贡献量,而这个权重加载损失函数上也可以达到同样的效果,是可以通过重构损失函数实现。
梯度密度(gradient density)
单位取值区域内分布的样本数量
将梯度模长的取值范围划分为若干个单位区域,对于一个样本,若它的梯度模长为g,它的密度就定义为处于它所在的单位区域内的样本数量除以这个单位区域的长度(单位体积内的质量)
而梯度密度的倒数就是样本计算loss后要乘的权值
GHM-C Loss,为分类设计。与传统交叉熵和Focal loss比较
左图为样本梯度模长的分布。中图为不同损失函数对样本梯度产生的作用,横坐标为在交叉熵(CE)损失函数下样本的梯度模长,纵坐标为新的损失函数下同样的样本新的梯度模长。
Focal loss本质上是对简单样本进行相对的抑制,越简单的样本受抑制的程度越大,和GHM-C所做的均衡是相似的,此外,GHM-C还对一些离群样本进行了相对的抑制,训练更加稳定。
右图为不同损失函数下,各种难度样本的累计贡献大小。由此可以看出,梯度均衡机制的作用就是让各种难度类型的样本有均衡的累计贡献。
对候选框的回归问题进行了类似的统计并设计了相应的GHM-R Loss。
但是Smooth L1 loss是个分段函数,引入 ASL1 loss
实验结果:
Coco的minival集
GHM-C loss 和 标准 Cross Entropy loss 和 OHEM采样下Cross Entropy 以及Focal loss
Baseline GMM-R 与 Smooth l1 loss 以及 ASL1 loss
讨论:
此研究对梯度模长的分布进行统计并划分单位区域的方式,实际上可以看作是依据梯度贡献大小对样本进行聚类的过程。
而这里的梯度知识模型顶部获得的偏导数的大小,并不是全部参数对应梯度向量。
样本贡献不均:Focal loss 和 Gradient Harmonizing Mechanism
Two-stage: 首先生成候选集合,该候选集合过滤了绝大多数的负样本,然后使用分类器进行分类。在分类中可以固定前景和背景的比例。
One-stage: 直接生成大量图像区域然后直接进行分类。训练过程中容易被区分的background占了大多数。
通过使用loss function来解决类别不平衡问题。
Focal loss