李彦霖作者萝卜兔编辑整理

Gradient Harmonized Single-stage Detector | 论文分享

目标检测方法分为两大阵营,一类是以Faster RCNN为代表的两阶段检测的方法,一类是以SSD为代表的单阶段检测方法。两阶段方法在检测精度更出色,单阶段检测方法的Pipline则更简洁,速度更快,但是精度不如两阶段检测方法,一个原因是单阶段的检测方法受限于正负样本和简单困难样本的不均衡问题,导致训练效果不佳。

为了解决这种不均衡的问题,有研究者提出了在线困难样本挖掘的方法(OHEM),但是这个方法一方面不够高效,另一方面它只选择topN而丢弃了太多样本。后来,何凯明等提出了Focal Loss来改进cross-entropy loss, 取得了不错的效果,但是focal loss 的选择相对麻烦,因为它引入了两个参数需要细致选择。

本文在前面研究的基础上,从梯度分布的角度,进一步指出了单阶段检测中不均衡性的本质,提出了梯度均衡化的策略来改善训练过程。

对于一个样本,如果它能很容易地被正确分类,那么这个样本对模型来说就是一个简单样本,模型很难从这个样本中得到更多的信息,从梯度的角度来说,这个样本产生的梯度幅值相对较小。而对于一个分错的样本来说,它产生的梯度信息则会更丰富,它更能指导模型优化的方向。对于单阶段分类器来说,存在着大量的负样本,可以很容易地正确分类,少量的正样本通常是困难样本。因此正负样本的不均衡性本质是简单困难样本的不均衡性。

更进一步,单个简单样本的梯度对于整个梯度的贡献很小,但是当存在大量的简单样本时,它们对梯度的贡献就不可忽略,甚至可以大于困难样本的贡献,因此导致训练过程不高效,模型没法学习到有用的信息。

基于此,作者指出难度不同样本的不均衡性可以在梯度模长的分布上体现出来。通过对梯度分布的研究,作者提出了一种梯度均衡策略可以有效地改进单阶段检测器的性能。

Gradient Harmonizing Mechanism

问题描述

对于一个候选框,它的真实标签是 , 预测的概率是,采用二元交叉熵损失: 

假设是模型输出,使得 , 那么上述的交叉熵损失对导数是:

那么梯度的模定义为:

g的值代表了这个样本的困难程度和它对整体梯度的贡献。

下图是一个收敛模型的梯度模长的分布,可以看出简单样本的数量很大,使得它对梯度的整个贡献很大,另一个需要的地方是,在梯度模较大的地方仍然存在着一定数量的分布,说明模型很难正确处理这些样本,作者把这类样本归为离群样本,因为他们的梯度模与整体的梯度模的分布差异太大,并且模型很难处理,如果让模型强行去学习这些离群样本,反而会导致整体性能下降。

均衡化策略

Gradient Density 
为了解决上述的梯度分布不均匀的问题,作者提出了一种均衡化的策略。大概的思路是对于梯度分布切bin,统计每一个bin内的样本数量,得到每个bin的分布,进行分布的均衡化。具体地,基于这个bin内的样本数量和这个bin的长度,可以定义梯度密度,它表示某个单位区间内样本的数量: 

要归一化整个梯度的分布,可以使用梯度密度的导数作为归一化的参数。所有对梯度进行的调整,都可以等价地变换到损失函数上,具体地,使用对样本的损失进行加权。 

GHM-C Loss
基于归一化的参数,改进cross-entropy 得到新的分类损失GHM-C Loss:

下图对比了不同损失函数下的梯度模长的分布。可以看出,之前提到的简单样本的权重得到了较大幅度地降低,离群样本也得到了一定程度的降权。使用经过改善之后的损失函数使得训练过程更加高效和鲁棒。

GHM-R Loss 

对于检测框的回归,通常都是使用 smooth L1损失: 

其中,smooth L1 损失对的梯度为:

注意到所有有较大∣d∣的样本的梯度,这会带来一个问题就是对于这些样本来说没有区分度,基于此作者提出了一个改进的smooth L1 loss, 称为ASL1:

这个损失函数处处可导:

定义梯度的模长为:

那么沿着上面关于分类损失的均衡化策略,同样可以得到GHM-R Loss:


实验

作者通过系统的实验验证了梯度均衡化策略的有效性。

1. COCO数据集测试结果

2. 与OHEM, Focal Loss的对比

3. 不同回归损失的对比(Smooth L1, ASL1, GHM-R)

原文链接:https://arxiv.org/abs/1811.05181
代码链接:https://github.com/libuyu/GHM-Detection


极验
极验

极验是全球顶尖的交互安全技术服务商,于2012年在武汉成立。全球首创 “行为式验证技术” ,利用生物特征与人工智能技术解决交互安全问题,为企业抵御恶意攻击防止资产损失提供一站式解决方案。

理论梯度分布损失函数目标检测论文
3
相关数据
权重技术

线性模型中特征的系数,或深度网络中的边。训练线性模型的目标是确定每个特征的理想权重。如果权重为 0,则相应的特征对模型来说没有任何贡献。

交叉熵技术

交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

收敛技术

在数学,计算机科学和逻辑学中,收敛指的是不同的变换序列在有限的时间内达到一个结论(变换终止),并且得出的结论是独立于达到它的路径(他们是融合的)。 通俗来说,收敛通常是指在训练期间达到的一种状态,即经过一定次数的迭代之后,训练损失和验证损失在每次迭代中的变化都非常小或根本没有变化。也就是说,如果采用当前数据进行额外的训练将无法改进模型,模型即达到收敛状态。在深度学习中,损失值有时会在最终下降之前的多次迭代中保持不变或几乎保持不变,暂时形成收敛的假象。

SSD技术

一种计算机视觉模型。论文发表于 2015 年(Wei Liu et al.)

损失函数技术

在数学优化,统计学,计量经济学,决策理论,机器学习和计算神经科学等领域,损失函数或成本函数是将一或多个变量的一个事件或值映射为可以直观地表示某种与之相关“成本”的实数的函数。

超参数技术

在机器学习中,超参数是在学习过程开始之前设置其值的参数。 相反,其他参数的值是通过训练得出的。 不同的模型训练算法需要不同的超参数,一些简单的算法(如普通最小二乘回归)不需要。 给定这些超参数,训练算法从数据中学习参数。相同种类的机器学习模型可能需要不同的超参数来适应不同的数据模式,并且必须对其进行调整以便模型能够最优地解决机器学习问题。 在实际应用中一般需要对超参数进行优化,以找到一个超参数元组(tuple),由这些超参数元组形成一个最优化模型,该模型可以将在给定的独立数据上预定义的损失函数最小化。

导数技术

导数(Derivative)是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x_0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x_0) 或 df(x_0)/dx。

推荐文章
暂无评论
暂无评论~