1.解决的问题
图像分类和目标检测是计算视觉领域的两个基础任务,Region-based ConvNet将目标检测问题转化为图像分类问题,使得目标检测领域出现了巨大的技术突破,同时也引入了难以处理的heuristics和hyperparameters问题。OHEM(Online Hard Example Mining)算法的思想很简单:在训练数据集中往往存在大量的简单样本(easy examples)和少量的困难样本(hard examples),easy examples对于模型的训练贡献较小,hard examples更加有助于提升模型训练的效率和效果,OHEM算法将hard examples自动化的筛选出来运用到模型训练中去,从而获得较好的模型效果。
在RCNN、Fast RCNN算法中,训练集标注数据和背景数据之间存在极大的不平衡状况(负样本数量远远大于正样本数量, 即背景数据大于标注数据)。在sliding-window object detectors(如deformable parts model,DPM)中,负正样本比例大约在10000:1;在object-proposal-based detectors中,负正样本比例大约在70:1。如何处理样本类别不平衡,并且得到更快的训练速度和更高的训练精度是一个技术领域的一个开放问题。
但是处理样本不均衡的问题不是一个新的挑战,20年前就存在一个标准的解决方法叫bootstrapping或者hard negative mining,该方法的核心思想如下:
Their key idea was to gradually grow, or bootstrap, the set of background examples by selecting those examples for which the detector triggers a false alarm. This strategy leads to an iterative training algorithm that alternates between updating the detection model given the current set of examples, and then using the updated model to find new false positives to add to the bootstrapped training set.
Bootstrapping的方法广泛用于目标检测领域,经常用于训练目标检测的SVM,也成功应用于浅层神经网络、boosted决策树等。甚至基于深度神经网络的R-CNN和 SPPnet也采用hard negative mining训练的SVM。
然而目前最新的Object Detector(比如Fast R-CNN以及变体)并没有使用Bootstrapping,可能的原因是将Bootstrapping技术转换为纯在线学习算法是困难的,尤其是在几百万个样本中进行SGD训练深度卷积网络的情况下。Bootstrapping有时需要固定模型寻找新样本,有时需要固定样本训练模型,SGD训练深度卷积网络需要几十万次SGD迭代,在迭代中固定模型会极大的减慢训练速度。
本文中提出了一种在线的bootstrapping算法online hard example mining(OHEM)用来训练基于深度神经网络的目标检测模型。本文将OHEM应用于Fast RCNN,得到以下收益: 1) 移除了几个region-based ConvNets常用的heuristics和hyperparameters;2) 稳定、显著的提升了目标检测的mAP; 3) 数据集越大,数据难度越大,效果提升越明显。如MS COCO数据集;OHEM结合其它目标检测改进策略(比如multiscale testing、iterative bounding-box regression等),OHEM在PASCAL VOC 2007和PASCAL VOC 2012上分别给出了78.9% and 76.3%的mAP。
2.Fast RCNN OverView
如下图所示,Fast RCNN分为两部分:Convolutional Network和ROI Network。Convolutional Network由许多Convolution Layer和Max Pooling Layer组成;ROI Network由一个RoI Pooling Layer、多个Fully Connected Layer和两个Loss Layer组成。
在inference过程中,对Input Image使用Convolutional Network得到Feature Map;RoI-pooling层将每一个Object Proposal投影到Feature Map,然后提一个fixed-length的Feature Vector,将Feature Vector输入给FC Layer,最终得到两个输入结果:1)softmax,所有类别和背景的概率分布;2) bounding-box重定位的回归坐标。
有许多原因使得我们把Fast RCNN作为base object detector:1)Fast RCNN是一个快速的端到端的系统;2)Conv and RoI两个网络的基础设置也广泛应用于其它detectors(比如SPPnet、MR-CNN);3) FRCN允许Trainning整个Conv Network,而SPPnet、MR-CNN需要fix Conv Network;4)SPPnet和MR-CNN需要缓存RoI network输出的Feature,用来训练SVM分类器;FRCN使用ROI Network本身来训练期望的分类器,后文会证明在统一系统中使用SVM分类器是没必要的。
2.1 Fast RCNN Training
FRCN采用SGD(stochastic gradient descent)的方法进行训练。每个ROI的loss是classification log loss和localization loss和总和。classification log loss用于鼓励准确预测目标的类别;localization loss用于预测精确的bounding box位置。
在训练过程中,对于每一个mini-batch,首先从Dataset中选取N副图片,每一幅图片选取B/N个ROI,在实践中,N=2,B=128。ROI采样过程使用了许多heuristics,本文的重要贡献是去除一些heuristics和hyperparameters。
Foreground RoIs:与Ground Truth Bounding Box的IOU>0.5的ROI被标记为Foreground;这是PASCAL VOC目标检测基准数据集的评估标准,相同的标准也用在R-CNN、SPPnet、MR-CNN等模型中SVM的hard mining,本文也同样使用该标准设置。
Background RoIs:与Ground Truth Bounding Box的IOU介于[bg_lo, 0.5]的ROI被标记为Background;在FRCN和SPPnet中,bg_lo=0.1。尽管这个heuristic可以提升Object检测精度,但是它是次优的,因为它忽略了一些低频、重要的、困难的背景区域。本文中的方法移除了该heuristic。
Balancing fg-bg RoIs:为了解决数据分类不平衡的问题,在每个mini-batch中,通过对background patches进行随机采样balance foreground-to-background ratio来保证Foreground RoIs的比率大于25%。foreground-to-background ratio是Fast RCNN中的一个重要的heuristic,移除或者修改foreground-to-background ratio,都会导致Fast RCNN的精度下降约3%。使用本论文中的方法,可以移除该heuristic,并且不会带来网络精度的下降。
3.Online Hard Example Mining Approach
原始的hard example mining algorithm流程如下:
a) for some period of time a fixed model is used to find new examples to add to the active training set; b) then, for some period of time the model is trained on the fixed active training set;
在SVM-based object detectors(如R-CNN、SPPnet)中,Hard Example Mining算法的流程如下: a) 筛选图像到active training set直到达到阈值上限;b) 在active training set上训练SVM直至收敛;a)和b)重复交替进行,直至active training set包含所有的support vectors。由于筛选样本数据的过程并不会更新模型,因此整个过程降低了模型的训练速度。
OHEM(online hard example mining)的过程如下: 1.针对input image运用卷积神经网络,得到Feature Map;2.ROI Network使用Feature Map和所有的ROI作为输入,所有ROI经过RoI Pooling、FC Layer、Loss Computation得到Loss值;3.对所有的ROI按照Loss排序,然后选择前B/N个样本作为Hard Example;由于只选择了一部分ROI更新模型,反向传播的成本也相对降低了;
通常情况下,Overlap较大的ROI的Loss也比较相似,它们往往是同一个Object,所以论文中采用NMS(non-maximum suppresison)移除Overlap较大的ROI:选取Loss最大的ROI,然后剔除所有与选择区域Overlap>0.7的ROI。
OHEM的过程不需要设置fg-bg比率,因为任何一个类别被遗漏,它的Loss就会不断增加,然后该类别被采样的概率就越大。
3.1 实现细节
OHEM的实现方法很多,一种最直接的方式就是修改Loss Layer实现Hard Example Selection。Loss Layer计算所有ROI的Loss值,按照Loss排序选取Hard ROI,然后将Non-hard Example的Loss设置为0。这种方法的缺陷在于虽然Loss=0的Example对于模型更新没有任何作用,ROI Network仍然需要对所有的ROI进行内存分配和反向传播。
为了解决上述问题,论文中提出了两份ROI Network,其中一份是Readonly的。在一次的SGD迭代中,Readonly RoI Network只负责前向传播,计算所有ROI的Loss(如上图绿色箭头所示)。Hard RoI Sampling模块负责选择Hard Example,然后作为另一个ROI Network的输入,进行前向反向传播和梯度更新(如红色箭头所示)。
记Input image数量为N,Readonly ROI Network的输入ROI的数量为R,有效的ROI数量为|R|,Hard Example的数量为B。论文中,N=2,|R|≈4000,B=128。
4.online hard example mining实验分析
4.1 PASCAL VOC07数据集上的测试效果:
表中1~2行: Standard Fast R-CNN with bg_lo=0.1的效果;
表中3~4行: 为了验证heuristic的重要性,设置bg_lo =0,结果表明,VGGM模型的mAP降低2.4个点,VGG16模型mAP几乎保持不变;
表中11~13行: Fast R-CNN with OHEM相对于Standard Fast R-CNN with bg_lo=0.1的mAP提升了2.4个点,相对于Standard Fast R-CNN with bg_lo=0的mAP提升4.8个点。表明OHEM消除了heuristic的影响。
N=1时,单张图片的ROI可能相关性较大;当N=2时,由于相关性问题,可能引发梯度不稳定和收敛减缓的问题。5~6行可以看出当N=2时,Standard Fast R-CNN的mAP降低了约1个点;而Fast R-CNN with OHEM几乎没有收到影响。
OHEM选择Hard Example作为训练样本,但是如果用所有的Examples作为训练样本时,是否会因为Easy Examples的Loss较小,对梯度的贡献较少,从而使得Training过程自动聚焦在Hard Examples上。6~7行表明即使经过精心的参数调整,采用所有Example训练的效果仍比OHEM低1个点以上。
上图表明,OHEM方法在所有的方法中获得的Taining Loss最小。
4.2 PASCAL VOC and MS COCO数据集上的测试效果
4.3 Multi-scale与Iterative bounding-box regression
OHEM结合Multi-scale和Iterative bounding-box reg策略,在VOC07数据集上得到了State-Of-Art的75.1%的结果。
尽管论文中一直在使用Fast R-CNN,但是OHEM可以用来Train任何Region-Based的卷积网络检测算法。