Hard Positive Generation via Adversary for Object Detection
最近做项目,在看一些数据增强的论文,欢迎感兴趣的同学多多留言交流。
摘要
我们如何学习对遮挡和形变不变的物体检测器?我们当前的解决方案是使用数据驱动策略 - 收集在不同条件下物体的大规模数据集。希望最终的分类器可以使用这些数据来学习不变性。但是真的可以看到数据集中的所有遮挡吗?我们认为这些类,遮挡和物体形变很罕见。一些遮挡和变形非常罕见以致于几乎不会发生;这也导致了我们很难学习到。在本文中,我们提出了一种替代解决方案。我们建议学习一种对抗网络,该网络生成具有遮挡和变形的示例。生成对抗网络的目标是生成物体检测器难以分类的示例。在我们的框架中,原始探测器和生成对抗网络都以联合方式学习。我们的实验结果表明,与Fast-RCNN相比,VOC07增加了2.3%,VOC2012的mAP增加2.6%。我们还发布了本文的代码:https://github.com/xiaolonw/adversarial-frcnn。
1、介绍
对象检测的目标是学习汽车等概念的可视化模型,并使用该模型在图像中定位这些概念。这需要能够鲁棒地模拟光照,变形,遮挡和其他类内变化的不变性。处理这些不变性的标准范例是收集在不同条件下具有该物体的大规模数据集。例如,COCO数据集在不同的遮挡和变形下有超过10K张汽车图片。希望这些数据能捕获到所有可能变化,然后分类器可以有效地模拟它们的不变性。我们相信这是CNN在对象检测任务中如此成功的主要原因之一:他们能够使用所有这些数据来学习不变性。(说明数据驱动的成功性原因)
然而,与对象类别一样,我们认为甚至遮挡和变形都遵循long-tail分布。也就是说,一些遮挡和变形是如此罕见,以至于它们在大规模数据集中出现的可能性很小。例如,下图所示的遮挡。我们注意到一些遮挡比其他遮挡更频繁地发生(例如,车库中其他车辆的遮挡比来自空调的遮挡更频繁)。类似地,动物中的一些形变是常见的(例如,坐姿/站立姿势),而其他变形是非常罕见的。
那么,我们如何才能学习这种罕见/不常见的遮挡和变形的不变性?虽然收集更大的数据集是一种可能的解决方案,但由于long-tail统计数据,它不太可能数量太多。
最近,在生成图像(或像素)方面已经做了很多工作[4,9,26]。学习这些罕见事件的一种可能方法是通过从尾部分布中采样来生成逼真的图像。然而,这不是一个可行的解决方案,因为图像生成需要这些稀有事件的训练示例才能开始。另一种解决方案是生成所有可能的遮挡和变形,并从中训练物体检测器。但是,由于变形和遮挡的空间很大,因此这不是一种可扩展的解决方案。已经表明,使用所有示例通常不是最佳解决方案[33,39],选择难的例子会更好。有没有办法可以生成具有不同遮挡和变形的“硬”正例(正例表示包含物体,),而不会自己生成像素?
如何训练另一个网络:通过在空间上阻挡某些特征图或通过操纵特征响应来创建空间变形来创建硬实例的对抗网络。这个网络将预测它认为对于Fast-RCNN探测很难的物体,反过来Fast-RCNN将自我调整以学习这些对抗性正例。这里的关键思想是在卷积特征空间中创建对抗性示例,而不是直接生成像素,因为后者是一个更难的问题。
在我们的实验中,与标准的Fast-RCNN相比,我们显示了对抗性Fast-RCNN(A-Fast-RCNN)的性能有了实质性的改进。
2、相关工作
近年来,在物体检测领域已经取得了显着的进步。这些最近的成功建立在从ImageNet分类的任务中学到的强大的深层特征的基础上。 R-CNN和OverFeat 物体检测系统在PASCAL VOC上引领了这一浪潮,取得了令人瞩目的成果;近年来,出现了计算效率更高的版本,可以有效地训练更大的数据集,如COCO 。例如,Fast-RCNN通过分享不同区域建议的卷积以提供加速,Faster-RCNN 和R-FCN 在框架中纳入区域提案生成,导致完全端到端版本。
在Overfeat探测器的滑动窗口范例的基础上,出现了其他计算效率高的方法,如YOLO [27],SSD [19]和DenseBox [13]。
在[12]中讨论了这些方法之间的彻底比较。
最近的研究集中在开发更好的物体检测系统的三个主要方向。第一个方向依赖于改变这些网络的基础架构。中心思想是,使用更深层次的网络不仅改善分类[3],还导致物体检测[5,18]效果的提升。最近在这方面的一些工作包括用于物体检测的ResNet [10],Inception-ResNet [38]和ResNetXt [43]。
第二个研究领域是使用上下文推理,推理代理任务和其他自上而下的机制来改进物体检测的表示[1,6,17,24,32,34,45]。例如,[32]使用分段作为上下文建立对象检测器并向初始层提供反馈的一种方式。 [1]使用skipnetwork架构,并结合上下文推理使用多层表示的特征。其他方法包括使用自上而下的特征来结合上下文和更精细的细节[17,24,34],这导致改进了检测。
改进检测系统的第三个方向是更好地利用数据本身。人们经常认为,物体检测最近的成功是更好的视觉表示和大规模学习数据的可用性的产物。因此,第三类方法试图探索如何更好地利用数据来提高性能。一个例子是将硬实例挖掘结合到一个有效和高效的设置中,用于训练基于区域的ConvNets [33]。
我们的工作遵循第三个研究方向,重点是以更好的方式利用数据。但是,我们尝试生成Fast-RCNN难以检测/分类的示例,而不是试图筛选数据来查找硬实例。我们向数据集中的当前存在的实例添加遮挡和变形来限制生成正例的实例空间。
具体来说,我们学习了对抗网络,这些网络试图预测会导致Fast-RCNN错误分类的遮挡和变形。因此,我们的工作与最近在对抗性学习方面的许多工作有关[4,9,14,21,22,23,26,29,37]。例如,已经提出了一些技术来改进用于图像生成的对抗性学习[26]以及用于训练更好的图像生成模型[29]。 [29]也强调对抗性学习可以改善半监督环境中的图像分类。然而,这些工作中的实验是在比物体检测数据集复杂度低的数据上进行的,其中图像生成结果明显较差。我们的工作还涉及最近关于机器人技术的对抗性训练的工作[25]。但是,我们不是使用对抗网络来进行更好的监督,而是使用该网络来生成硬正例。
3、对于物体检测的对抗性学习
我们的目标是学习一种对不同条件(如遮挡,变形和光照)具有鲁棒性的物体检测器。我们假设即使在大规模数据集中,也不可能涵盖所有潜在的遮挡和形变。我们采取另一种方法,而不是过度依赖数据集或筛选数据来查找硬正例。我们主动生成物体检测器难以识别的示例。然而,我们不是在像素空间中生成数据,而是专注于生成的受限空间:遮挡和变形。
在数学上,让我们假设原始对象检测器网络表示为F(X),其中X是物体建议之一。检测器给出两个输出Fc,其表示类输出,F1表示预测的边界框位置。让我们假设X的真实类标签是C,空间位置是L.我们的原始检测器损失可以写成,
其中第一项是SoftMax损失,第二项是基于预测的边界框位置和真实框位置的损失(仅限前景类)。
让我们假设对抗网络表示为A(X),其给出在图像I上计算的特征X,生成新的对抗性实例。检测器的损失函数保持不变,因为mini-batch现在包括较少的原始实例和一些对抗性示例。
但是,对抗性网络必须学会预测让检测器失效的特征。我们通过以下损失函数训练这种对抗网络。
因此,如果对抗网络生成的特征很容易被检测器分类(对这段话的理解,Lsoftmax很小,前面有负号则LA很大),我们就会对对抗网络造成很大的损失。另一方面,如果在对抗性特征生成之后对于检测器来说很困难,则对于检测器而言损失很大并且对抗网络的损失很小。所以对抗网络就是要多生成对检测来说,比较难分类的特征。
4、网络实践细节
我们现在描述我们框架的细节。我们首先简要概述一下我们的基础的检测网络Fast-RCNN。接下来描述对抗性生成的空间。特别是,我们专注于在本文中生成不同类型的遮挡和变形。最后,在第5节中,我们描述了我们的实验设置并显示了有所改进的结果。
4.1、Fast RCNN概述
我们建立在Fast-RCNN框架上进行目标检测。 Fast-RCNN由两部分组成:(i)用于特征提取的卷积网络; (ii)具有RoI池化层和几个全连接层的RoI网络,其输出对象类和边界框。
给定输入图像,Fast-RCNN的卷积网络将整个图像作为输入并输出卷积特征图。由于操作主要是卷积和最大池化,因此输出特征图的空间维度将根据输入图像大小而改变。给定特征图,RoI pooling层用于将区域建议投影到特征空间上。 RoI pooling裁剪并调整大小为每个区域建议生成固定大小的特征向量。然后,这些特征向量通过全连接层。全连接层的输出是:(i)每个对象类的概率,包括背景类; (ii)边界框坐标。
对于训练,SoftMax损失和回归损耗分别应用于这两个输出,并且梯度通过反向传播以执行端到端学习。
4.2、对抗网络设计
我们考虑通过对抗网络与Fast-RCNN(FRCN)检测竞争的生成两种类型特征。第一类生成是遮挡。在这里,我们提出Adversarial Spatial Dropout Network(ASDN),它学习如何遮挡给定的目标,使得FRCN难以分类。我们在本文中考虑的第二类生成是变形。在这种情况下,我们提出了Adversarial Spatial Transformer Network(ASTN),它学习如何旋转对象的“部分”并使它们难以被检测器识别。通过与这些网络竞争并克服障碍,FRCN学会以稳健的方式处理对象遮挡和变形。注意,在训练期间,所提出的网络ASDN和ASTN都与FRCN一起被同时学习。联合训练可防止检测过度拟合固定生成策略所产生的遮挡或变形。
具体网络实践细节可参考论文。https://arxiv.org/abs/1704.03414。下面看实验
5、实验
我们在PASCAL VOC 2007,PASCAL VOC 2012和MS COCO 数据集上进行了实验。作为标准实践,我们对PASCAL VOC 2007数据集进行了大部分消融研究()。我们还在PASCAL VOC 2012和COCO数据集上报告了我们的数据。最后,我们对我们的方法和在线硬实例挖掘(OHEM)[33]方法进行了比较。
5.1、实验设置
voc数据集。对于VOC数据集,我们使用“trainval”集进行训练,使用“test”进行测试。我们遵循标准Fast-RCNN [7]中的大部分设置进行训练。我们应用SGD迭代80K来训练我们的模型。学习速率从0.001开始,并在60K迭代后减小到0.0001。我们在训练期间使用选择性搜索[40]。
MS COCO。对于COCO数据集,我们使用'trainval35k'集进行训练,使用'minival'进行测试。在训练Fast-RCNN [7]期间,我们应用SGD进行320K迭代。学习速率从0.001开始,并在280K迭代后减小到0.0001。对于区域建议,我们使用DeepMask。在所有实验中,我们用于训练的批量大小是有2个图像,256个区域建议。我们遵循Fast-RCNN的Torch实现。使用这些设置,我们的效果略好于原文中[7]。为了防止Fast-RCNN过拟合到修改过的数据,我们在批处理中提供了一个图像,没有任何遮挡/变形,并将我们的方法应用于批处理中的另一个图像。
5.2、VOC 2007结果
我们在表1中报告了训练Fast-RCNN期间使用ASTN和ASDN的结果。对于AlexNet架构,我们baseline是57.0%mAP。基于此设置,我们的ASTN模型的联合学习达到了58.1%,与ASDN模型的联合学习提供了58.5%。由于两种方法相互补充,将ASDN和ASTN结合到我们的完整模型中可以进一步提高到58.9%。
对于VGG16结构,我们进行了同样的实验。首先,我们的baseline达到69.1%mAP,远远高于[7]报道的66.9%。基于此实现,使用我们的ASTN模型进行联合学习可提高69.9%mAP,ASDN模型达到71.0%mAP。我们的ASTN和ASDN完整模型将性能提高到71.4%。我们的最终结果有2.3%的提升。
为了表明我们的方法也适用于非常深的CNN,我们将ResNet-101结构应用于训练Fast-RCNN。如表1中的最后两行所示,使用ResNet-101的Fast-RCNN的性能为71.8%mAP。通过应用对抗训练,结果是73.6%mAP。我们可以看到,我们的方法始终如一地提高了不同结构的性能。
5.2.1、消融分析
(消融分析的意思是看模型中提出的一些结构是否有效。即去掉该结构的网络和加上该结构的网络所得到的结果进行对比。)
ASDN分析。我们使用AlexNet架构将我们的Advesarial Spatial Dropout Network与各种遮挡策略进行比较。我们尝试的第一个方法是在RoI-Pooling之后的特征上进行随机空间dropout。为了公平比较,我们掩盖了与ASDN网络中相同数量的神经元的激活值。如表2所示,随机丢失的mAP为57.3%,略好于baseline。我们比较的另一种策略是我们在ASDN预训练中应用的类似策略(图3)。
我们详尽地列举了不同类型的遮挡,并在每次训练迭代中选择最适合训练的遮挡,其mAP是57.7%,这比随机dropout略好。
由于我们发现hard dropout只能探索非常有限的遮挡空间,我们使用预先训练的ASDN网络来替换它。但是,当我们固定ASDN的参数时,我们发现性能是57.5%mAP,这不如hard dropout策略好。原因是固定的ASDN在穷举搜索时没有收到更新Fast-RCNN的任何反馈。如果我们共同学习ASDN和Fast-RCNN,我们可以获得58.5%的mAP,相比baseline提高1:5%。
这一证据表明,ASDN和FastRCNN的联合学习更有意义。
对上表的理解,FRCN*就是Fast RCNN利用自己训练方法得到的结果,random dropout是在经过ROI后的特征图上随机遮挡特征块,fixed SDN是使用预训练得到的对抗网络,不与FRCN同时更新网络参数,从表里可知,这种方法还不如随机丢失效果好,原因是对抗网络没有得到FRCN的反馈结果,所以生成的遮挡对整体网络提升不大。最后是联合训练得到的结果,可以看到,效果最好。
ASTN分析。我们比较了Adversarial Spatial Transformer Network与随机抖动区域建议。增强包括在训练Fast-RCNN期间随机改变比例,长宽比和旋转。使用AlexNet,使用随机抖动得到的mAP为57.3%,而我们的ASTN结果为58.1%。使用VGG16,随机抖动为68.6%,ASTN为69.9%。对于这两种方法,ASTN的模型比随机抖动更好。
5.2.2、基于类别的分析
图5显示了每个类别随着遮挡和变形效果变化的图表。有趣的是,ASTN和ASDN似乎都有助于帮助相似的类别。通过对抗训练,plant和bottle的性能都得到了提高。然而,将两个变换结合在一起似乎可以改善某些对于遮挡和形变效果不好的类别。具体而言,通过结合两个对抗过程,有助于car和aeroplane等类别。
5.2.3、定性分析
图6显示了我们使用诊断代码[11]的方法的一些假阳性。这些例子是精心挑选的,因此它们只出现在对抗性学习的误报列表中,而不是原始的FastRCNN出现的错误。这些结果表明了对抗性学习的一些缺点。在某些情况下,该网络会创建与其他对象类别类似的变形或遮挡,从而导致过度泛化。例如,我们的方法隐藏了自行车的车轮,导致轮椅被归类为自行车。
5.4、与OHEM比较
我们的方法也与在线硬实例挖掘(OHEM)方法相关。我们的方法允许我们对数据集中可能不存在的数据点进行采样,而OHEM则受数据集的约束。然而,OHEM具有更逼真的特征,因为它们是从真实图像中提取的。对于比较,在VOC2007中,我们的方法(71.4%)优于OHEM(69.9%)。但是,在VOC2012中,我们的结果(69.0%)不如OHEM(69.8%)。
由于这两种方法在训练中产生或选择不同类型的特征,我们认为它们应该是互补的。为了证明这一点,我们使用这两种方法的集合,并将其与OHEM和我们的方法在VOC 2012上进行比较。结果,两种方法的集合达到71.7%mAP,而两个OHEM模型的集合(71.2%)或两个模型(70.2%)都不太好,表明两种方法的互补性。
6、结论
目标检测的长期目标之一是学习对遮挡和形变不变的对象模型。目前的方法着重于通过使用大规模数据集来学习这些不变性。在本文中,我们认为像类别一样,遮挡和变形也遵循long-tail分布:其中一些非常罕见,即使在大规模数据集中也很难采样。我们建议使用对抗性学习策略来学习这些不变性。关键的想法是与原始检测结合在一起学习对抗性。该网络在运行中创建具有不同遮挡和变形的示例,使得这些遮挡/变形使得原始目标检测器难以分类。我们的对抗网络不是在像素空间中生成示例,而是在特征空间中修改特征以模仿遮挡和变形。
我们在实验中表明,这种对抗性学习策略可以显着提高在VOC和COCO数据集上的检测性能。