Online Hard Example Mining

来源:互联网 发布:java 对url encode 编辑:程序博客网 时间:2024/06/05 06:45
  1. Introduction
    hard example mining 是机器学习在训练时常见的步骤。总结起来,mining方法大概可以分为两类:一种是SVM中用到margin-based,即训练时将violate the current model’s margin 的样本认为是hard example,迭代直到收敛;另一种是在级联框架中的将false positive 认为是hard example的方法。
    而在CNN中目标检测根据分类前的patch选择策略的不同,可分为两类:sliding-window和proposal-based,但是在hard example mining方面算法还不成熟,已有的方法大多是基于loss来确定是否是hard的,且一般作为实验中的trick出现,并没有形成系统方法。
  2. OHEM
    简单来说就是从ROI中选择hard,而不是简单的采样。
    Forward: 全部的ROI通过网络,根据loss排序;
    Backward:根据排序,选择B/N个loss值最大的(worst)样本来后向传播更新model的weights.
    这里会有一个问题,即位置相近的ROI在map中可能对应的是同一个位置,loss值是相近的,所以针对这个问题,提出的解决方法是:对hard做nms,然后再选择B/N个ROI反向传播,这里nms选择的IoU=0.7。
    在后向传播时,直觉想到的方法就是将那些未被选中的ROI的loss直接设置为0即可,但这实际上还是将所有的ROI进行反向传播,时间和空间消耗都很大,所以作者在这里提出了本文的网络框架,用两隔网络,一个只用来前向传播,另一个则根据选择的ROIs进行后向传播,的确增加了空间消耗(1G),但是有效的减少了时间消耗,实际的实验结果也是可以接受的。
    为什么只用hard examples,用全部的ROIs不好么?用全部的ROIs一是带来时间上的消耗,而且在用全部ROIs时,权重的更新还是集中在hard examples上做优化。

    为什么要hard mining:
    1 减少fg和bg的ratio,而且不需要人为设计这个ratio;
    2 加速收敛,减少显存需要这些硬件的条件依赖;
    3 hard mining已经证实了是一种booststrapping的方式, 尤其当数据集较大而且较难的时候;
    4 eliminates several heuristics and hyperparameters in common use by automatically selecting hard examples, thus simplifying training。
    放宽了定义negative example的bg_lo threshold,即从[0.1, 0.5)变化到[0, 0.5)。
    取消了正负样本在mini-batch里的ratio(原Fast-RCNN的ratio为1:3)

阅读全文
0 0