Training Region-based Object Detectors with Online Hard Example Mining
code: https://github.com/abhi2610/ohem
本文针对 Fast R-CNN 检测系统,从样本训练的策略提出改进方法。
首先来看一下 Fast R-CNN
3 Overview of Fast R-CNN
FRCN(Fast R-CNN)的输入是图像和对应的一组候选区域,FRCN 网络可以分为两个子网络:一个是卷积子网络(由卷积层和最大池化层构成),另一个是 RoI 网络(由 RoI-pooling层,全链接层,两个误差损失层)。
在推理阶段,卷积子网络对输入图像进行卷积,得到一个卷积特征图,其尺寸依赖于输入图像尺寸。对于每个候选区域,RoI-pooling 层 将该候选区域映射到卷积特征图上面对应的区域,提取出一个固定长度的特征向量。每个特征向量输入到全链接层,给出两个输出:1)含有物体及物体类别的概率,2)包含物体的矩形框回归坐标。
3.1. Training
FRCN 和大多数深度网络一样,使用 SGD 随机梯度下降算法训练。每个样本的 RoI 的损失函数是分类log误差 加上 定位误差。
为了实现在 RoI 之间 共享卷积网络计算,SGD 最小批通过分等级创建。对每个最小批,N幅图像从数据库中采样,然后 B/N 个 RoI 从每个图像中采样。 这里设定 N=2, B=128。在 RoI 采样过程中使用了几个探索方法。本文主要的贡献就是取消了它们中的一些。
4 Our approach
the online hard example mining algorithm (OHEM) proceeds as follows:
对于一幅图像在 SGD t 步 迭代中,我们使用卷积子网络计算得到 卷积特征图,然后 RoI 网络使用这个特征图和该图像对应所有的候选区域进行前向计算,主要这一步主要涉及 RoI 池化, 几个全链接层, 每个RoI损失函数计算。这个损失误差表示当前网络对每个RoI 的处理能力。 难得样本可以通过对 所有 RoI 的损失误差进行排序,取当前网络表现最差的 前 B/N 个 RoI 样本。因为大部分前向计算通过卷积图共享计算。所以额外增加的计算很少。然后我们对这些难得样本进行后向计算,调整网络参数,使整个网络可以更好的处理这些难样本。