OHEM-在线困难样本挖掘算法

论文阅读笔记

Posted by baiyf on March 12, 2019

Training Region-based Object Detectors with Online Hard Example Mining

写在前面

目标检测任务的一个特点就是类别不平衡问题,常常会有非常多的背景样本,例如在deformable parts model(DPM)中背景与待检目标的比例就达到了100000:1

本文发表在CVPR-2016,是一种为了解决目标检测中类别不平衡问题引出的方法

基于Faster-RCNNOHEM最终在PASCAL VOC 20072012上分别取得了78.9%,76.3% mAP

主要思想

本文提出的对Faster-RCNN改进的OHEM算法如下图所示:

OHEM1

OHEM2

我们知道,基于SVM的检测器,在训练时,使用hard example mining来选择样本需要交替训练,先固定模型,选择样本,然后再用样本集更新模型, 这样反复交替训练直到模型收敛

作者认为可以把交替训练的步骤和SGD结合起来。之所以可以这样,作者认为虽然SGD每迭代一次只用到少量的图片,但每张图片都包含上千个RoI,可以从中选择hard examples,这样的策略可以只在一个mini-batch中固定模型,因此模型参数是一直在更新的。

更具体的,在第t次迭代时,输入图片到卷积网络中得到特征图,然后 把特征图和所有的RoIs输入到RoI网络中并计算所有RoIs的损失,把损失从高到低排序,然后选择B/N个RoIs。这里有个小问题,位置上相邻的RoIs通过RoI网络后会输出相近的损失,这样损失就翻倍。作者为了解决这个问题,使用了NMS(非最大值抑制)算法,先把损失按高到低排 序,然后选择最高的损失,并计算其他RoI这个RoI的IoU(交叉比),移除IoU大于一定阈值的RoI,然后反复上述流程直到选择了B/N个RoIs。

为了解决这个问题,作者提出了Figure 2这样的架构。这个架构有两个相同的RoI网络,不同的是其中一个只可读,另一个可读可写。我们看到(a)是只可读的,只对所有RoI做前向计算,所以只需分配内存给前向计算操作,(b)既可读也可写,对被选择的hard RoIs不仅做前向计算也做反向传播计算。

对于一次SGD迭代,计算过程如下:

  1. CNN先计算出特征图,可读RoI网络对所有RoI执行前向计算得到每个RoI的loss
  2. 选择hard RoIs。把这些hard RoIs输入到可读可写的RoI网络进行前向计算和反向传播更新网络
  3. 可读可写的RoI网络的参数赋值给只可读的网络,一次迭代就完成了。

开源代码

ohem

参考文献

  1. Training Region-based Object Detectors with Online Hard Example Mining
  2. OHEM论文解读