困难样本挖掘之OHEM

abstract

  • 论文地址:Training Region-based Object Detectors with Online Hard Example Mining
  • 在目标检测中,使用SS或者滑动窗口等方法得到的proposal中,正负样本的个数比例差距很大,之前的方法都是选择若干个负样本的proposal,使得正负比为1:3,论文中使用OHEM,对正负样本个数比例没有限制。
  • OHEM在每次训练的过程中,选取那些loss更大的roi,对其进行bp,这个思想与bootstrapping类似。
  • 基于OHEM的fastRCNN提升了几个mAP的点。

introduction

  • 在目标检测中类别不均衡的情况一直很严重,即使引入region proposal,这种情况依然存在。
  • bootstrapping之前在机器学习中应用得较多,主要是在每次迭代过程中,更加关注那些误分的样本,从而提升模型的精度。
  • 本文中的OHEM主要以下几个优势
    • 移除了之前的一些假设与超参数。
    • 提升了检测任务的mAP。
    • 当检测任务更加复杂的时候,OHEM的有效性更加明显。

fast RCNN overview

  • fast RCNN主要流程图如下

20181017-ohem-fastRCNN

  • 在训练的过程中,因为每张图像上都有大量的proposal,因此基于一些假设,对其进行随机采样,最后每张图像中只取B/N个proposal给后面的RoI net进行运算。我们使用
  • 在proposal中,任何与gt box的IOU大于一定阈值的都被视为foreground roi,任何在IOU在[bg_lo,0.5)范围内的roi都被视为background roi,因为希望模型能够学习到更多的东西,因此在这里设置bg_lo=0.1,因为与gtbox有部分重叠的box在检测过程中可能更加困难。
  • 针对正负样本个数差距太大的问题,对负样本进行采样,使得最终正负样本在1:3左右。

our approach

  • 之前是随机选择ROI进行之后roi net的操作,论文中则可以通过OHEM选择那些检测困难的样本,并进行之后的roi net。
  • 在OHEM中,所有的proposal都先通过roi net进行forward操作,在backward的过程中,因为只对那些loss很大的roi进行了bp,因此计算量没有增加太多。
  • 在使proposal经过roi net之前,使用NMS去除重叠的bbox。
  • 在这里因为只使用那些loss很大的roi做bp,因此不需要设置fg-bg ratio,因为那些被忽视的正例的loss会越来越高,在之后样本选择的过程中会有更大的概率被选中进行bp。

implementation details

  • 在实现的过程中,我们可以将所有non-hard roi的loss修改为0,但是这种方法仍然会对所有的roi进行bp的运算,这回造成大量的内存损耗。
  • 针对以上问题,使用下列解决方案:使用2个RoI network,它们之间共享参数,一个roi network只用于forward,它是只读的,计算loss之后,选取hard example之后,将其作为另外一个roi network的输入,这个network是用于forward与backward的,整体的流程图如下

20181017-ohem-流程图

experiment and results

  • 主要是在VOC和coco数据集上做了很多实验,并进行大量对比实验与调参(显卡要多才能做完这些啊。。。),具体的内容可以参考论文。

conclusion

  • 主要就是介绍了OHEM这种困难样本挖掘的方法,可以提升检测任务的baseline。
  • 论文中的方法是针对所有的类别进行的实验分析,之后的工作中,也可以研究在单一类别的性能上,不同训练方法的影响。