Abstract
作为“自底向上”关注[2],基于边界框(或区域)的视觉特征最近已经超过了普通的基于网格的卷积特征,成为视觉和语言任务(如视觉问题回答(VQA))的事实标准。然而,还不清楚地区的区域(例如更好的定位)是否是自下而上注意力成功的关键原因。在这篇文章中,我们重新审视了VQA的网格特性,发现它们可以非常好地工作——以同样的精度运行速度快一个数量级以上(例如,如果以类似的方式预先训练)。通过大量的实验,我们验证了这一观察结果在不同的VQA模型(报告了vqa2.0测试标准72.71的最新精度)、数据集上都是正确的,并很好地推广到其他任务,如图像字幕。由于网格特性使模型设计和训练过程变得更加简单,这使我们能够对其进行端到端的培训,并且还可以使用更灵活的网络设计。我们学习了端到端的VQA模型,从像素直接到答案,并证明了在预训练中不使用任何区域注释就可以获得很好的性能。我们希望我们的发现有助于进一步提高对VQA的科学理解和实际应用。代码和功能将可用。
1. Introduction
目前主流的视觉特征是“bottom-up”特征,作者提出问题是什么导致“bottom-up”特征比传统的网格特征更好的,一种最可能的说法是更好地定位单个对象,因为区域是检测器直接输出的边界框。另一种答案说许多区域可以很容易地捕获图像中的粗级别信息和细粒度细节,即使区域间存在重叠。
但是作者的实验发现,从相同层数的预训练的检测器提取的网格特征可以与以区域为基础的特征达到相似的效果,如果在训练中调整参数甚至可能达到更好的效果。消融实验发现,“bottom-up”特征能达到很好效果的作用主要来自于以下两点
- 在视觉基因组(VG)数据集中收集的用于预训练的大规模对象和属性注释
- 用于计算特征的输入图像的高空间分辨率。
网格特征与“bottom-up”特征有相同的效果,但是网格特征推理的速度更快,省去了提取图像中区域的时间,例如,使用ResNet-50[15]主干网,我们发现每幅图像的总运行时间从0.89s下降到0.02s–速度快了40多倍,精确度稍有提高!并且网格特征不需要额外的注释,探索更有效的VQA设计(例如金字塔池模块[52])。
2. Related Work
VQA模型的预训练:作者提出最近的研究热点是将视觉和语言任务在同一个模型上进行预训练,这类方法的一个常见方案是将区域和单词视为各自领域的“tokens”,并预训练BERT的一个变体,用于“masked”令牌预测。作为对这一方向的补充,作者的工作特别深入研究视觉标记的“格式”,并可能与这些方法结合以实现互利(例如,在速度和准确性之间进行权衡)。
3. From Regions to Grids
3.1. Bottom-Up Attention with Regions
自下而上的注意方法[2]使用了更快的R-CNN[31]检测模型。检测器在一个干净版本的视觉基因组数据集上训练,有数千个对象类别和数百个带有边界框(区域)注释的属性。需要如下两个步骤
Region selection.由于Faster R-CNN是一个两级检测器,因此区域选择在流水线中发生两次。第一种方法是通过区域建议网络,该网络变形并选择突出的候选“锚”作为感兴趣的区域(roi)。另一个选择作为后处理来以每个类的方式聚合前N个框。在这两个步骤中,采用非最大抑制(NMS)方法,保持分类得分最高的区域,并去除局部邻域中的其他近似重复项。
Region feature computation.
给定第一阶段的区域(最多数千个),RoIPool操作[31]用于提取初始区域级特征。然后,附加的网络层分别计算区域的输出表示。最后,经过两轮选择的区域特征被叠放在一起,作为自下而上的特征来表示图像。
需要注意的是,由于VG数据集(例如数千个类)的复杂性以及使用的faster R-CNN检测器(下面将介绍),这两个步骤都是计算密集型的。相反,直接使用网格特性可以跳过或加速这些步骤,并提供潜在的显著的加速。
3.2. Grid Features from the Same Layer
将区域特征转换为网格的最简单方法是看是否可以直接计算同一网络层的输出,但要以共享的、完全卷积的方式。为此,我们将更仔细地观察最初自下而上关注使用的faster R-CNN架构。
faster R-CNN是c4模型的变体,它有一个用于属性分类的额外分支。它将ResNet的权重分成两个独立的集合:给定一个输入图像,它首先使用ResNet的较低块计算特征映射,直到C4。此特征图在所有区域之间共享。然后,分别通过对14×14 roipooled特征应用C5块来执行每个区域的特征计算。然后,C5的输出被平均化为每个区域的最终矢量,作为自下而上的特征[2]。由于所有的最终区域特征都来自C5,所以很容易将检测器转换回ResNet分类器,并将C5层作为我们的输出网格特征。图2(左)说明了我们的转换过程。
正如我们的实验所显示的,直接使用转换后的C5输出已经非常有效。这样做的任何性能下降都可能是因为Faster R-CNN对于基于区域的目标检测进行了高度优化,而对于网格来说可能没有那么多。因此,我们下一步看看是否可以对模型进行一些最小的调整来改进网格特性
3.3. 1×1 RoIPool for Improved Grid Features
我们的想法是简单地使用1×1 RoIPool。这意味着用一个向量来表示每个区域,而不是用Faster R-CNN中的三维张量。乍一看,这似乎有悖常理,因为两个额外的空间维度(高度和宽度)有助于在2D中描述对象的不同部分——事实上,我们发现这种修改会对VG上的对象检测性能产生负面影响。但重要的是,使用1×1roipool区域也意味着网格特征地图上的每个向量都必须单独覆盖一个空间区域的所有信息,这可能会导致更强的网格特征。
然而,直接在原始模型上应用1×1 RoIPool是有问题的,可能是因为C5由几个ImageNet预训练的卷积层组成,这些卷积层最适合于特定空间维度的输入。为了解决这一问题,我们跟踪最近在目标检测方面的发展,并使用整个ResNet直到C5作为共享特征计算的主干;对于区域级计算,在顶部放置两个1024D完全连接(FC)层,默认情况下,这些层接受矢量作为输入。
为了减少低分辨率的影响,在训练融合了C5特征的检测器时(C5有32个步幅,而C4有16个步幅),stride-2层被替换为stride-1层,剩下的层以2倍的系数进行扩张[54]。对于网格特征提取,我们去除了这种膨胀,并将其转换回正常的ResNet。
图2(右)总结了我们对改进的网格所做的更改。请注意,与原始模型(左)相比,我们只在训练期间对与区域相关的组件进行了必要的修改。由于所有这些计算都在特征提取过程中被移除,我们的网格特征抽取器在推理过程中保持不变。
4. Main Comparison: Regions vs. Grids
4.1. Experimental Setup
Faster R-CNN:对于分析,我们使用Faster R-CNN 在ImageNet上预先训练的ResNet-50的主干。参考自下而上的注意,检测器随后在VG数据集上进行训练,并为1600个对象类别和400个属性类提供区域级注释。对于属性,将添加一个附加分支,其中“损失权重”(loss weight)为0.5。模型采用“1x”计划进行训练。值得注意的是,当保持宽高比固定时,输入图像的大小被调整为具有600像素(最长1000像素)的最短边。对于区域特征,我们设置N=100。
VQA split.原来的训练集仍为训练集,测试集分为验证集和测试集。
VQA model 使用Beyond bilinear: Generalized multimodal factorized high-order pooling for visual question answering.中的模型,
4.2. Main Results
表1总结了我们的主要结果。我们有两个观察结果:首先,与广泛使用的自底向上区域特征(第1行)相比,使用相同模型(第3行)直接从C5中提取输出结果的效果令人惊讶(准确率为64.29比63.64)。相比之下,在ImageNet上预先训练过的标准ResNet-50模型的性能要差得多,精度为60.76,与自下而上的特性相差超过3%。
第二,虽然我们基于1×1 RoIPool的变体损害了目标检测性能(VG的平均精度[25]从4.07下降到2.90),但它有助于VQA–将精度提高0.73%(第3和第4行),结果略微优于基于区域的原始特征。另一方面,我们提出的基于RoI的变体并没有帮助区域特征的提取,区域特征的准确率下降到63.94。这表明自下而上注意力使用的原始模型更倾向于区域;而我们的设计更适合网格。因此,我们使用第一行(最适合区域)的设置来表示“R”,第四行(最适合网格)来表示“G”,以便通过本文的其余部分对二者进行更深入的研究和公平的比较。
4.3. Number of Regions
除了训练中的架构差异外,影响VQA精度的另一个因素是用于表示图像的特征向量N的数量。Pythia[16]的区域模型有一个默认设置,使用前100个框来表示区域特征,在[2]中最初的36个框基础上增加了它以提高精度。另一方面,由于网格特征是预设层的卷积特征映射,特征的数量由网络的输入大小决定。由于我们最大的输入尺寸是600×1000,32步长的特征映射(C5)会产生608个网格特征——远远大于区域特征的数量。为了了解这些不同数量的区域特征如何影响精度,我们使用不同数量的特征N进行了实验,并在图3中显示了结果。
对于区域特征,我们观察到随着区域数量从30个增加到200个,精度会饱和,从而提高精度。有趣的是,我们的网格特性甚至比最高数量的区域要好。因此,与基线区域方法相比,网格方法中使用的特征向量数量更多,并不是其提高VQA精度的原因。
可以从下图中看出两种特征从准确率上看差别不大,甚至网格特征的准确率更高,即使区域特征的数量与网格特征的数量相同
从下图可以看出,两种特征都能捕捉到图片中重要的区域,(为了得到注意映射,我们将每个区域或网格的注意值传播到相应的像素,然后平均每个像素的注意值(将它们单独归一化为[0,1])
作者提出网格特征能够work的原因有以下两点:
- Input Image Size
在ImageNet预训练模型的特征提取过程中使用的标准图像大小为448×448[10],丢弃了纵横比;而对于自下而上注意力[2]中的VG检测,默认尺寸为600×1000,同时保持纵横比不变。因此,我们对不同的组合进行了实验,并在表4中报告了所有这些组合的结果。我们注意到,对于网格特性,更大的输入大小意味着VQA模型有更多的特性。
从表中,我们发现网格特征受益于作为输入的大图像,这表明这一因素确实很重要。然而,输入大小对于在ImageNet和VG上预先训练的模型有不同的影响。对于在较小图像上预先训练的ImageNet模型,性能饱和在600×1000左右。有趣的是,VG模型的性能随着输入大小的增加而提高,甚至在800×1333的情况下仍在继续提高。剩下的纸我们还是用600×1000。
- Pre-Training Task
我们现在研究在ImageNet(分类)和VG(detection)中由于预训练任务而导致的VQA精确度的差异。为了更好地理解这些差异,我们在每个环境中引入了一个额外的预训练模型。对于分类,我们包括了一个在YFCC[38]上训练过的模型,它有92M张带有图像标签的图像。对于检测,我们包括一个来自COCO[25]的标准模型,它只有对象注释(没有属性)。所有型号都使用ResNet-50主干网进行公平比较。
结果见表5。在图像分类预训练设置中,YFCC模型(训练在弱图像级别标记上)比ImageNet模型性能更好,可能是因为它训练的数据量多了两个数量级。对于基于检测的预训练,VG模型(使用对象和属性进行训练)的结果比表5所示的结果更好。在图像分类预训练设置中,YFCC模型(训练在弱图像级别标记上)比ImageNet模型性能更好,可能是因为它训练的数据量多了两个数量级。对于基于检测的预训练,VG模型(用对象和属性进行训练)比COCO模型有更好的效果。与COCO(1600 vs.80)相比,VG中的类别数量更多,或者它具有额外的属性注释,这是性能提高的两个可能原因。接下来我们研究属性的影响。属性。
图5显示了属性损失权重对VQA精度的影响。在VG的预训练期间将属性损失权重设置为零,会导致VQA性能下降。事实上,这种情况下的VQA精度与预先训练的COCO模型的精度相匹配,这表明预训练任务中的属性是VG模型性能更好的主要原因。我们还注意到,对于属性损失权重的所有值,网格特征始终优于区域特征。
从不同的提取特征网络训练、和不同的VQA模型、不同的数据集以及图像字幕上分析网格特征的泛化能力。
在本文中,我们重新讨论网格特征,作为视觉和语言任务中广泛使用的自下而上区域特征的替代方法。我们展示了他们实际上可以在不同的VQA任务和模型上,甚至在字幕方面达到不相上下的结果。由于跳过了管道中与区域相关的计算成本高昂的瓶颈,我们看到依赖区域的现有系统的速度显著提高(通常超过一个数量级)。我们的实验表明,相对于特征的“格式”(区域与网格),特征所代表的语义内容对其有效性更为关键。根据我们的实验,这种有效的表示可以通过对对象和属性数据集(如VG)的预训练来实现,或者更重要的是,通过直接针对最终任务的网格特征进行端到端的训练来实现。请注意,虽然网格特性很简单,但是端到端的培训对于区域来说并不简单。即使在这个方向上进行了有限的探索,我们已经发现,在一个更灵活的设计空间中,没有任何区域级注释的网格特性实际上可以在VQA上获得强大的性能。虽然我们意识到,对于像引用表达式这样的任务(输出本身是一个区域),建模区域可能是不可避免的,但是我们希望我们的网格特性能够为视觉和语言研究提供新的视角。