目录

  • 概述
  • 细节
  • 困难负样本挖掘(HEM)
  • 在线困难负样本挖掘(OHEM)


概述

目标检测任务重存在严重的正负样本不均衡问题,以往的解决方法是困难负样本挖掘方法(HEM),但是它不太适合端到端的网络训练,所以本文提出了一种在线的困难负样本挖掘方法(OHEM),用于Fast RCNN这一类的基于候选框的目标检测模型。关于Fast RCNN

细节

困难负样本挖掘(HEM)

HEM是什么:首先困难样本挖掘( hard Negative Mining)是为了得到更加优秀的负样本,让网络学习。比如一个没有包含任何物体的候选框,标签是负的,模型就很容易将它判别,所以他是简单负样本,而一个包含了1/3物体的候选框,我们打的标签仍然是负的,模型就很容易将它判别为正的,那么这个就困难负样本了。模型训练到后期,对于简单的负样本肯定很容易判别,但是对于困难的负样本,就没那么有力的。尤其是我们采样负样本的时候,如果随机采样,很可能采样到的就是简单的负样本,对这些样本的训练,不会给模型带来什么提高,所以我们需要困难样本挖掘。

HEM怎么做:传统的做法是用样本集训练模型,然后用模型对其他样本进行推理,将推理错的样本加入样本集中,然后迭代以上过程。常用于:SVM、决策树等算法中。

为什么不太适合端到端的网络训练:因为照上面的做法,训练一次网络,就进行一次推理找到hard negative加入样本集,然后再迭代,网络的训练速度会满很多很多。所以fast rcnn 和 faster rcnn都没有使用这个方式。

在线困难负样本挖掘(OHEM)

困难负样本挖掘的核心就是找困难负样本,而传统方法为了找它选择了训练一下,中断一下的做法,一个直观的想法就是能不能不中断训练流程,在训练的过程中找到困难负样本顺便将它加入样本集中。原因:虽然每次梯度下降用到的图片数n是很少的,比如n=2,但是每张图片都会包含很多的候选框,我们可以从中挑选困难负样本。

直观的想法:fast rcnn 中每次采样N张图片,在每张图片上选R/N个候选框进行训练,那么我们可以直接将loss最大的前p个候选框作为我们的目标,其他的候选框直接将梯度置为0就好了。看上去达到了我们的目的,但是哪怕很多的候选框梯度是0,依然会进行反向传播,所以还存在一些问题。

进一步的想法:就是再设计一个并行的检测模块,假设原先的模块是a,新增的模块是b。那么我们就可以让a模块进行推理并将loss最大的前p个候选框作为我们的目标,将这部分框送给b去进行推理和参数的更新,并把更新的参数同步给a。并且我们可以实现一个一级流水线,也就是a推理当前的batch的时候,b可以对上一个batch中挑选出来的候选框进行推理的参数的更新了,所以网络参数更新的频率没有下降。还有一点就是:前p个loss最大的候选框中,可能有部分框是临近的,这些框中挑一个就好了,所以排完序之后先进行一次NMS,然后再挑前p个。

负样本 nlp 负样本挖掘_目标检测