论文原址:https://arxiv.org/pdf/1811.05181.pdf

github:https://github.com/libuyu/GHM_Detection

摘要

尽管单阶段的检测器速度较快,但在训练时存在以下几点不足,正负样本之间的巨大差距,同样,easy,hard样本的巨大差距。本文从梯度角度出发,指出了上面两个不足带来的影响。然后,作者进一步提出了梯度协调机制(GHM)用于避开上面的不足。GHM的思想可以嵌入到用于分类的交叉熵损失或者用于回归的Smooth-L1损失中,最后,本文修改过的损失函数GHM-C与GHM-R用于平衡anchor分类及回归二者的梯度。

介绍

单阶段检测网络十分高效,但是与二阶段检测在准确率上仍存在一定的差距。单阶段检测训练过程最具挑战的难点在于easy 与hard 样本之间的不平衡以及正负样本的不平衡问题。大量的简单背景样本会占据训练的主导地位。而在两阶段网络中不存在样本不平衡的问题,这是因为在两阶段网络中存在这proposal-driven的机制。后来,出现了基于OHEM的样本挖掘技术,但这种方法舍弃了大部分样本,训练也不是很高效,后来Focal Loss通过修改损失函数来调整不平衡问题。但是Focal loss引入了两个超参数,需要进行大量的实验进行调试,同时,Focal loss是一种静态损失,对数据集的分布不敏感,而在训练过程中,数据集的分布是会发生变化的。

本文指出类别不平衡主要难点在于不平衡,而不平衡可以归结为,梯度正则分布的不平衡。如果一个负样本很容易被分类,则该样本为easy example同时模型从中得到的信息量较少,比如,通过这个样本,只产生了一点梯度信息。模型应该关注这个被分错的样本。从整体上来看,负样本易于被分类多为easy examples,而hard examples多为正样本。因此,两种不平衡可以归结为属性上的不平衡。

上面两种类型的不平衡(hard/easy , positive/negative)可以由gradient norm的分布表示。带有梯度正则的样本密度,被称为梯度密度,如下图左侧所示,由于存在大量的简单负样本,小梯度正则的样本的密度很大。虽然一个简单样本对整体的梯度贡献很小,但大量的简单样本作用后会占据训练的主导,使训练过程并不是很高效。

本文发现,带有较大梯度正则(very hard examples)的样本密度比medium examples略多一点。本文将这些very hard examples看作为异常点,因为即使模型收敛,但这些点仍稳定存在。同时,异常点的梯度与其他正常点的差异较大,进而会影响模型的稳定性。

本文分析了梯度正则分布后就提出了gradient harmonizing mechanism(GHM)算法用于对单阶段检测进行高效的训练,用于协调不同样本之间的梯度分布。GHM首先对具有相似属性(如梯度密度)样本的数量进行统计,然后根据密度在每个样本的梯度上附加一个调节参数。相比CE,FL,GHM的效果如上图右侧所示,带GHM的训练过程,由大量简单样本计算得到的梯度的权重被大幅度减少,同时异常点的权重也被相应的削弱。

通过修改损失函数可以对梯度进行修正,本文将GHM嵌入到分类损失中,得到GHM-C损失,该损失不需要参数调节。由于梯度密度是由minibatch中样本分布决定的统计变量,在每一轮batch中,GHM-C是可以更具数据分布变化进行调整进而更新模型的动态损失。为了表明GHM的一般性,在边界框的回归分支中应用GHM,代表GHM-R损失。

Gradient Harmonizing Mechanism

问题描述:本文的关注点在于单阶段检测中样本类别的极度不平衡问题。对于一个候选框,模型预测出的概率为p [0,1],P*代表对于特定类别的ground truth 标签取值0或1,其二分类的交叉熵损失如下所示

而后,令x作为模型的输出因此,p=sigmoid(x),对其求导如下,

定义了g等式如下所示,g与Lce对x的偏导值的正则相等,g代表一个样本的属性以及该样本对整体梯度的作用,本文将g称为梯度正则。

下图展示了一个收敛的单阶段检测模型的g的分布。由于简单负样本的体量较大,使用log坐标来表示样本的比例,进而展示不同属性样本变化细节。从图中可以看出简单样本的数量非常大,对整体的梯度造成了一定的影响。另外,稳定的模型仍然无法处理very hard examples,其数量要比medium的样本的数量还要多一些。这些样本可以被看作是异常点,其梯度方向与大部分其他样本的梯度方向差异很大。如果模型对这些异常点的学习较好,则其他大部分样本的准确率相对就会低一些。

梯度密度:为了解决梯度正则分布中的不平衡问题,引入了一个针对梯度密度的协调方法,训练样本的梯度密度函数如下所示

g的梯度密度表示位于以g为长度为的样本的数量,同时,基于区域的有效长度来对其进行正则化处理。梯度协调参数的定义如下所示,N表示样本数量的总数,

对上式进行变换,得到为一个正则项,代表与第i个样本其相邻梯度值的样本数所占的比例。如果样本服从均匀分布,则GD(gi)=N,对于任意gi及每个样本,其参数值都为1,表示不需要进行改变,否则,通过这个正则项,可以相对降低大密度样本的权重。

GHM-C Loss:损失函数如下,

如下图所示,大量的简单样本的权重被衰减,同时异常值的权重也被降低。同时,其梯度密度在每一轮迭代中会发生变化,样本的权重并不是固定的,因此GHM-C损失的动态属性可以使训练更加高效鲁棒。

Unit Region Approximation:复杂度分析:常规计算所有样本梯度值的算法复杂度为O(N^2),即使使用并行计算,每个计算节点仍有N的计算量。比较好的算法首先会以O(NlogN)的复杂度通过梯度正则对样本进行排序,然后使用一个队列来扫描样本,以O(N)的方式得到密度。由于单阶段检测中的N为1e5或者1e6,其梯度计算量仍很大,基于排序的算法比并行计算提升的幅度有限。本文提出了近似的获得样本梯度密度的方法。

Unit Region:将g的空间划以间隔分为独立的单元区域  ,因此有个单元区域。rj代表索引为j的区域,

令Rj代表落入rj区域的样本数量。定义用于获得g所在单元区域的索引。

定义近似梯度密度函数,

假设参数为1,只有一个单元,所有的样本都在此区域,其梯度不会发生变化。其损失函数如下所示。

根据等式9,可以返现,落在相同区域的样本的梯度密度值是相同的,可以利用直方图统计,所有样本梯度密度的计算的时间复杂度为O(MN),同时,可以应用并行计算,因此每个计算单元复杂度为M,e而M的值相对较小,因此损失的计算比较高效。

EMA:基于Mini-batch统计的方法存在一个问题:当一个mini-batch中存在大量的异常点时,统计结果为噪声,而且使训练变得不稳定。Exponential moving average(EMA)是解决此问题的常用方法,比如带动量的SGD及BN处理。由于梯度密度的近似计算中的样本来自于单元区域,因此可以在每个单元区域应用EMA,进而得到更多稳定的梯度密度。等式如下

GHM-R Loss:观察偏移参数量,由模型预测出的及目标偏移如下所示,

回归损失通常基于smooth L1损失函数,

当所有|d|>的样本,具有相同的梯度正则,,如果依赖于梯度密度,则无法区分不同属性的样本,相比直接使用|d|作为区分不同属性的评价标准,而|d|的理论值可以达到无限,单元区域近似无法应用到上面,为了简化GHM在回归损失上的应用,首先更改SL1的损失如下,

当d很小时,近似为一个方差函数(L2 loss),当d很大时近似一个线性损失(L1 loss),称该损失为Authentic Smooth L1损失,就有很好的平滑性,其偏导存在且连续。ASL1的偏导如下,梯度值的范围[0,1),单元区域中梯度的计算和CE损失的计算一样较为方便。令u=0.02

定义ASL1的梯度正则如下所示,

其梯度分布如下图所示,从图中可以看出存在大量的异常点。而回归损失只作用在正样本中,因此,分类与回归的分布是不同的。

应用GHM后的回归损失如下,

SL1损失,ASL1损失及GHM的ASL1损失的梯度贡献图如下所示

在边界回归损失中,不是所有的简单样本都是不重要的,在分类中,一个简单样本通常是一个概率很低的背景区域,而且最终会被排除在候选之外。这类样本的改进对于精度毫无作用,但是在边界框的回归过程中,一个简单样本仍然偏离ground truth位置。任何样本的更好的预测将会直接提高最终候选框的质量。另外,高级的数据集更多关注的是定位的准确率。GHM-R损失可以通过提升easy样本的重要部分的权重同时降低异常点的权重来协调边界框回归中easy及hard 样本。

 实验

Reference

[1][Chen et al. 2017] Chen, Z.; Badrinarayanan, V.; Lee, C.-Y.;and Rabinovich, A. 2017. Gradnorm: Gradient normalization for adaptive loss balancing in deep multitask networks.arXiv preprint arXiv:1711.02257.

          [2][Dai et al. 2016] Dai, J.; Li, Y.; He, K.; and Sun, J. 2016.R-fcn: Object detection via region-based fully convolutional
networks. In Advances in neural information processing systems,379–387.

          [3][Felzenszwalb, Girshick, and McAllester 2010]Felzenszwalb, P. F.; Girshick, R. B.; and McAllester,D. 2010. Cascade object detection with deformable part models. In Computer vision and pattern recognition (CVPR), 2010 IEEE conference on, 2241–2248. IEEE.
          [4][Fu et al. 2017] Fu, C.-Y.; Liu,W.; Ranga, A.; Tyagi, A.; and Berg, A. C. 2017. Dssd: Deconvolutional single shot detector.arXiv preprint arXiv:1701.06659.

论文阅读笔记五十四:Gradient Harmonized Single-stage Detector(CVPR2019)的更多相关文章

  1. 论文阅读笔记三十九:Accurate Single Stage Detector Using Recurrent Rolling Convolution(RRC CVPR2017)

    论文源址:https://arxiv.org/abs/1704.05776 开源代码:https://github.com/xiaohaoChen/rrc_detection 摘要 大多数目标检测及定 ...

  2. 论文阅读笔记五十八:FoveaBox: Beyond Anchor-based Object Detector(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.03797 摘要 FoveaBox属于anchor-free的目标检测网络,FoveaBox直接学习可能存在的图片种可能存在的目标,这期 ...

  3. 论文阅读笔记五十七:FCOS: Fully Convolutional One-Stage Object Detection(CVPR2019)

    论文原址:https://arxiv.org/abs/1904.01355 github: tinyurl.com/FCOSv1 摘要 本文提出了一个基于全卷积的单阶段检测网络,类似于语义分割,针对每 ...

  4. 论文阅读笔记二十九:SSD: Single Shot MultiBox Detector(ECCV2016)

    论文源址:https://arxiv.org/abs/1512.02325 tensorflow代码:https://github.com/balancap/SSD-Tensorflow 摘要 SSD ...

  5. 论文阅读笔记五十六:(ExtremeNet)Bottom-up Object Detection by Grouping Extreme and Center Points(CVPR2019)

    论文原址:https://arxiv.org/abs/1901.08043 github: https://github.com/xingyizhou/ExtremeNet 摘要 本文利用一个关键点检 ...

  6. 论文阅读笔记六十四: Architectures for deep neural network based acoustic models defined over windowed speech waveforms(INTERSPEECH 2015)

    论文原址:https://pdfs.semanticscholar.org/eeb7/c037e6685923c76cafc0a14c5e4b00bcf475.pdf 摘要 本文研究了利用深度神经网络 ...

  7. 论文阅读笔记五十五:DenseBox: Unifying Landmark Localization with End to End Object Detection(CVPR2015)

    论文原址:https://arxiv.org/abs/1509.04874 github:https://github.com/CaptainEven/DenseBox 摘要 本文先提出了一个问题:如 ...

  8. 论文阅读笔记五十:CornerNet: Detecting Objects as Paired Keypoints(ECCV2018)

    论文原址:https://arxiv.org/pdf/1808.01244.pdf github:https://github.com/princeton-vl/CornerNet 摘要 本文提出了目 ...

  9. 论文阅读笔记五十二:CornerNet-Lite: Efficient Keypoint Based Object Detection(CVPR2019)

    论文原址:https://arxiv.org/pdf/1904.08900.pdf github:https://github.com/princeton-vl/CornerNet-Lite 摘要 基 ...

随机推荐

  1. mac 重装系统

    Mac打算送人,现在退出自己的帐号恢复出厂设置. 协助工具下载:链接:https://pan.baidu.com/s/1vHt-Mk4otawEGidyz_WW2g 提取码:9ax6 用transma ...

  2. docker 镜像备份magento 2.2.3

    打包百度网盘: 链接:https://pan.baidu.com/s/1i_lSLt48RlxPonVA7qG5kg  密码:h1de 还原:docker load < (filename).t ...

  3. python学习日记(面向对象——继承)

    什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类 python中类的继承分为:单继承和多继承 class Par ...

  4. x86汇编语言实践(2)

    0 写在前面 为了更深入的了解程序的实现原理,近期我学习了IBM-PC相关原理,并手工编写了一些x86汇编程序. 在2017年的计算机组成原理中,曾对MIPS体系结构及其汇编语言有过一定的了解,考虑到 ...

  5. 如何快速上手Mac

    网络上关于Mac的教程很多,大部分问题通过百度和谷歌就能搞定了.对于技巧的细节,我将不再过多的重复,看了我的参考资料基本就能够全部了解,他们也比我讲得详细得很多.我这篇文章想做的,是以一个普通的win ...

  6. vue DES 加密

    安装crypto-js cnpm install crypto-js --save 封装一个des.js ECB模式 import cryptoJs from 'crypto-js' // DES加密 ...

  7. 【DirectX12】第六章-练习

    练习3. (a) //LINELIST std::array<VPosData, > posData = { VPosData({ XMFLOAT3(-2.0f, -1.0f, +1.0f ...

  8. THUWC2019 GG记

    所以要什么时候才不会出现像这样的滚粗记呢? Day-?~Day-4 我也不清楚具体干了什么 不过学了很多东西,至少相对于去年还是个小菜鸡,今年已经变成大菜鸡了 Day-3~Day-1 几乎就是复习前面 ...

  9. 【C#第一天】数据相关

    程序的基本任务:对数据进行处理. 数据分为常量和变量. 变量本质上是内存的空间,用来存储信息. 数据类型:本质上是数据的存储方式及其能参与运算的抽象. 数据类型分两大类:值类型(Value Type) ...

  10. eclipse快速查看工程代码行数

    1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expression),并在搜索文本框输入\n ;3.在文件名中输入*或*.jav ...