(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

Training Region-based Object Detectors with Online Hard Example Mining论文阅读笔记2016

Abstract

目前标检测领域由于基于region的CNN的出现,取得了很大的进展。**但是它们的训练过程仍然包括了许多探索的方法(启发式)(heuristics)以及超参数,tune很耗时。**我们提出了一个简单然而非常有效的在线hard exanple mining(OHEM)算法来训练R-CNN。**我们受到的启发是:检测数据集中包含大量的easy example和一小部分hard examples。自动地选择这些hard examples可以使得训练更有效,且更有效率。**OHEM是一种简单直观的算法,它消除了一些常用的启发式(heuristics)和通常使用的超参数。更重要的是,在PSACAL VOC2007和2012中,它使得模型的检测表现获得提升,当使用MS COCO数据集时,效率提升以及表现提升更加明显。组合了一些其他的本领域进展,OHEM在PSACAL VOC 2007和2012分别取得了78.9%mAP和76.3%mAP,达到了SOTA。

1. Introduction

图像分类和目标检测是计算机视觉的两个基本任务。目标检测器通常通过“降维”训练,来将目标检测转化为图像分类问题。这种reduction就引入了一个新的挑战:**训练集的标注目标数量与背景examples的数量有着极大的不平衡。**在滑窗的目标检测器,比如DPM中,这种不平衡可能会达到100000个背景样本:一个目标。最近的proposal-based的方法一定程度上减轻了这种不平衡,但是仍有大概70:1。这个挑战为接下来更高更快的方法提供了解决的方向。

这不是一个新的挑战,一个标准的解决方法,原来叫做bootstrapping,现在叫做hard negative mining,已经存在超过20年了。Booststrapping最开始在1990s中期为了训练人脸检测模型而提出的。**关键的想法是通过选择那些使得检测器触发false alarm的样本来逐渐grow,or bootstrap背景样本的集合。**这种策略是==一种迭代的训练算法,交替进行下列更新:根据目前的示例集更新检测模型,使用更新后的模型找到新的false positives增加到bootstrapped训练集。==这个过程通常从一个包含所有目标样本和一小部分背景样本的训练集开始进行。

Bootstrapping在过去的研究中被广泛使用。Felzenszwalb等人发现,一种bootstrapping的形式可以使得SVMs收敛到整个数据集的全局最优解,他们的算法称为hard negative mining,之后广泛应用于目标检测的SVM的训练中,甚至R-CNN和SPPnet也使用了这种方法训练它们的SVM。

似乎很奇怪,目前最好的检测模型Fast R-CNN以及其变形,没有使用bootstrapping。其根本原因在于转向纯online 学习算法,尤其是使用SGD在数百万样本上训练的深度卷积网络带来的技术难题。Bootstrapping及其变体,依赖于上述提到的模板:

  • 一段时间中,固定的模型用来找到新的examples来添加到目前的训练集中。
  • 然后,一段时间,模型在当前固定的训练集中被训练更新。

使用SGD训练深度卷积网络需要上万次SGD迭代,仅仅冻结模型几个迭代也是一个很慢的过程。我们需要一个纯线上形式的hard example selection。

**本文提出了一种新的bootstrapping技术,叫做OHEM(online hard example mining),用来训练基于深度卷积网络的目标检测模型。**这个算法是对SGD的简单修正,SGD中训练的examples根据非均匀,非平稳分布进行采样,该分布取决于所考虑的每个示例的当前损失。**我们的方法利用针对检测的模型结构——每个SGD mini-batch只由一两张图片的上千个候选组成。候选examples按照一个有利于diverse和高损失的instances的分布进行采样,采样到更加hard的examples。**因为只处理一小部分候选,反向传播过程也很有效率。我们将OHEM应用到标准的Fast R-CNN方法中,并取得了三个优点:

  • 不再需要several heuristics and hyperparameters。
  • 在mAP上取得了稳定的有效的提升。
  • 随着训练集更大更复杂,它的效果更加提升。

OHEM同样可以和最近的一些进展tricks混合使用,比如多尺度检测,迭代bbox回归,取得了效果的提升。

2. Related work

目标检测是最古老、最基础的计算机视觉问题之一。最近使用bootstrapping,通常叫做hard negative mining对于使用SVM的检测网络的训练取得了很好的效果。Fast R-CNN以及Faster R-CNN等没有使用SVMs,只是使用SGD进行训练,现存的hard example mining技术不能够适配。我们提出一种OHEM算法来解决这个问题。

**Hard example mining。**通常有两种hard example mining算法。第一种用来优化SVM,维护一个示例集,通过训练SVM并同时根据特定规则,对示例集中的示例进行添加或删除来更新示例集,再继续训练…移除的示例就是easy示例,增加的是hard示例,最后的示例集通常是训练集的很小一部分。

第二种方法训练non-SVM,通常从一个包含正样本和随机数量的负样本的数据集开始。**然后训练机器学习模型以在该数据集上收敛,然后将其应用于更大的数据集以收获假阳性。**再把这些假阳性加入到训练集中继续训练模型,这个过程通常只迭代一次。

3. Overview of Fast R-CNN

本部分大部分与Fast R-CNN中内容相关,故大部分略过。
详细内容可参见:
Fast R-CNN论文阅读笔记
(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

我们选择Fast R-CNN的原因如下:首先它的这种结构与SPPnet、MR-CNN等类似,我们的方法可以更广泛的应用;第二,Fast R-CNN可以对conv进行fine-tune;最后,Fast R-CNN使用ROI pooling层来训练分类器,而没有使用SVM,有文章证明在这个整体系统中使用SVM是没有必要的。

3.1 Training

Fast R-CNN使用SGD训练,每个RoI的loss是分类和回归loss的组合。训练时,每个mini-batch是来自两张图像的128个RoI。

**Foreground RoIs.**与ground-truth的IoU不低于0.5才能当作正样本,为前景RoI(fg)。

**Background RoIs.**与ground-truth的IoU在区间[0.1,0.5)被当作负样本,背景RoI(bg),**在hard negative mining中,与ground-truth有一定重叠的bg更可能是hard examples。**我们的方法移除了下限阈值,把IoU小于0.5的都当做bg。

**Balancing fg-bg RoIs:**为了解决数据不平衡,Fast R-CNN中对bg进行随机下采样,使得fg:bg为1:3。这个超参数很重要,改变之后会导致mAP的下降,我们的方法在保证准确率的同时,移除了这个超参数。

4. Our approach

我们提出了一个简单而有效的OHEM算法来训练任意Fast R-CNN style的检测模型。我们认为现有的对SGD创建mini-batch的方式是低效率的,我们证明了我们的方法可以取得更好的训练效果(更低的loss)和更好的测试表现(mAP)。

4.1 Online hard example mining

首先回顾hard example mining算法的交替步骤:

  • a:一段时间使用固定模型来找到新的examples加入训练集
  • b:然后,使用固定的训练集训练模型。

对于训练SPPnet的SVM,步骤a使用一定数量的图像(几十到几百张)直到训练集增长到阈值尺寸,然后步骤b使用训练集训练到收敛。**这个过程不断重复直到训练集包含了所有的支持向量。**对于Fast R-CNN来说这种策略训练很慢,因为当从几十到几百张图像选择example时,没有模型更新。

我们主要的想法是如何将这些步骤整合到online SGD训练中。关键在于尽管每个SGD迭代仅仅从几张图像中取样,但是每张图像也包含了上千个examples来让我们选择hard examples。我们把交替策略应用到SGD上就是,在一个mini-batch上冻结SGD,更新模型,与之前的速度一样快。

具体来说OHEM算法按照下面流程处理。

  • 对于在SGD迭代t的一张输入图像,我们首先通过卷积网络计算出特征图。然后RoI网络使用特征图和所有的输入RoI®,而不是mini-batch的RoI,来做前向传播,这步只包含RoI池化,几个fc层和对每个RoI进行loss计算。每个RoI的loss就表示目前的网络对这个RoI的效果。
  • 我们将所有的RoI通过loss进行排序,然后选择最坏的一些(B/N个,batchsize/images)RoI作为hard examples。
  • 因为大部分的计算都通过卷积共享了,计算所有的RoI的前向传播也没有很多计算量。且,只有选择的这些hard examples用于反向传播更新模型,计算量与之前的反向传播大概相等。

然而上面有一点小漏洞,位置相似的RoI高度重叠,它们有着相近的loss。而且这些重叠的RoI可能映射到特征图中的同一个位置,导致被多次使用。我们使用标准NMS来解决这个问题,从最高loss的RoI开始,移除与它重叠超过某个阈值的RoI,直到所有的RoI都没有与它自己重叠超过这个阈值的RoI。实验中我们把这个阈值设置为0.7。

我们注意到上面的流程不需要设置一个fg-bg的比例来进行数据平衡,如果某个种类被忽略了,它的loss会一直上升,直到有更高几率采样到它,对网络进行更多针对该类的训练。

4.2 Implementation details

有很多方法来将OHEM应用到Fast R-CNN中,不同的方法有着不同的侧重平衡。**一种方法是修正loss层来实现example selection。loss层对所有的RoI计算loss,将这些RoI排序,然后选择hard RoI,将其他的简单RoI的loss置为0。尽管方便,但是这种方法不够有效率,因为RoI网络仍需要内存来计算所有RoI,将所有的RoI回传,**尽管大部分是0,因此没有梯度更新。

(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

为了克服这个问题,我们提出了图2中的结构。我们的结构包含两个RoI网络,其中一个是只读的。只读网络只对所有RoI进行forward计算,不进行回传。对于每个SGD迭代,只读网络对所有RoI计算loss,前向传播,然后第二个hard RoI网络使用上面描述的方式选择hard examples,然后只对这些hard样本进行标准的前向和反向传播计算过程。

我们发现这种结构比上面的第一种方法快2倍多。

5. Analyzing online hard example mining

在这部分,我们比较使用OHEM的FRCN模型和其他模型的效果。

5.1 Experimental setup

我们使用两种卷积结构进行实验,一种是VGGM(AlexNet的wider版本),另一种是VGG16。在PASCAL VOC2007上进行训练,使用FRCN的默认设置,训练80k SGD迭代,学习率初始为0.001,每30k迭代除以10。使用标准的FRCN的效果如表1所示。(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

5.2 OHEM vs. heuristic sampling

表1中的第一二行是使用heuristic sampling的结果,bg_lo是当作负样本的最低阈值0.1。三四行是移除这个参数的效果对比,我们发现,对于VGGM,下降了2.4%,但是对于VGG16,效果反而上升了

而与11-13行相比,我们的方法提升很大

5.3 Robust gradient estimates

有一种担心是,每个batch只使用N=2张图像,会导致不稳定的梯度以及收敛很慢,因为RoIs高度相关。**对比2和6行我们发现,当N降低到1,mAP降低了大概1%,而对比11行,我们的方法还是有很大提升。**这表明OHEM对N很小时也足够鲁棒。

5.4 Why just hard examples, when you can use all?

OHEM选择hard examples进行训练,如果我们使用全部的RoI呢?那些easy RoIs有着较小的loss,对梯度贡献不大,实际上网络还是关注在hard样本上。为了比较,我们使用更大的batch使用标准FRCN进行训练,结果如7-10行,为了适应更大的batchsize,我们使用了更大的学习率。可以看到是对mAP有大概1%的提升,但是仍然低于使用更小batchsize我们的方法,但是运算量大大增加。

5.5 Better optimization

最后我们分析上面不同的设置方法导致的训练loss的变化。如图3所示,我们计算的是所有的RoI的平均loss,我们的方法可以取得最低的loss。(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

5.6 Computational cost

OHEM的计算量和内存消耗都是可以接受的,如表2所示。OHEM使用VGGM网络时,每个SGD迭代仅花费0.09s,只需要1G内存,这使得网络更快,硬件要求也更能被用户接受。(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

6. PASCAL VOC and MS COCO results

下面展示OHEM在两个数据集上的效果,放两张图,就不详细介绍了。

(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

7. Adding bells and whistles

下面,我们验证OHEM对于现有的一些tricks是正交的,一起使用可以取得更好的准确率。我们使用下面的两个方法来提升。

**Multi-scale (M)。**我们使用SPPnet中的多尺度策略,尺度s为图像的短边长度。训练时,随机选择尺度,测试时在所有尺度上进行。对于VGG16,训练时尺度为{480,576,688,864,900},测试时尺度为{480,576,688,864,1000}。

**Iterative bounding-box regression (B)。**我们使用了迭代定位和bbox voting策略。网络对每个proposal RoI进行评价得到分数和bbox R1。高分数的boxes R1经过重新评分和重新定位得到R2,R1和R2的并集RF作为后续处理的boxes。再对RF上的每个box ri进行阈值0.3的NMS加上权值投票,权值使用RF中与ri的IoU大于0.5的数量计算,最后得到的就是彼此IoU小于0.3,且每个RoI带有一定权值的proposal集合。

(OHEM)论文阅读笔记——Training Region-based Object Detectors with Online Hard Example Mining

8. Conclusion

我们提出了OHEM,一个简单有效的训练基于区域的卷积检测器的方法。OHEM消除了几个heuristics和超参数,因此简化了训练。我们进行了实验来验证我们的算法的有效性,更容易收敛且有更好的效果。尽管我们使用Fsat R-CNN进行实验,OHEM可以部署在任意region-based的卷积检测器中。