In Defense of Grid Features for Visual Question Answering
一句话总结
网格特征不仅准确度不输给区域特征,推理速度上又快出一个量级。
导论
本文主要探讨了在VQA等视觉语言任务中,使用什么类型的图像特征可以达到更好的效果。区域特征(Regions)还是网格特征(Grids)?
在以VQA为代表的一系列视觉语言任务中,Bottom-Up注意力方法得到了广泛应用,并取得了优异的效果。这种方法将图像表示为一组基于Bounding box的区域特征,人们也许会认为这归功于对单个目标更好的定位 或者 多个区域可以轻松地捕获图像中的粗粒度信息和细粒度细节。
然而作者发现,依旧使用Bottom-Up方法的目标检测器,利用 从目标检测器与区域特征同一层的输出提取到的网格特征 可以达到与区域特征相近的准确率,而运行速度却会快出一个量级。
那么或许其成功之处便不在于所谓 区域特征能更好的定位 等因素了,因此作者进一步进行了消解实验,认为高准确率的关键因素在于:
- 大规模标注:用于预训练的VG数据集所收集到的大规模目标和属性标注
- 高分辨率:用于计算特征的输入图像的高空间分辨率
也就是说,与图像特征的形式本身是几乎无关的,而使用网格特征的推理速度要远远快于区域特征,且由于提取区域特征过于耗时,所以目前大多数SOTA模型的做法是直接使用提前提取好的视觉特征,但是这会为模型设计施加不必要的约束,也会限制视觉语言系统的潜在应用。
最后一点在于,以往我们往往使用目标检测器预生成区域特征,再输入到VQA模型中进行训练。而若是使用网格特征的话,我们得以端到端训练VQA模型,从像素直接得到答案。
作者借此文为一直以来被区域特征压在身下的网格特征打了一个翻身仗。
From Regions to Grids
本节介绍作者是如何获取网格特征的,这里的前提是均使用了在同一任务上进行预训练的目标检测器。
网格特征——直接使用同层输出
作者首先直接用ResNet C 5 C_5 C5层的输出作为网格特征,已经取得了不错的效果。但是由于Faster R-CNN是专门为基于区域的目标检测所设计的,所以作者又对其进行了一些调整来提高网格特征的表现。
网格特征——1*1 RoIPool
作者的改进思路很简单,使用1*1 RolPool,即每一个区域用一个张量表示。虽然这一修改在VG上进行目标检测的效果有所下降,但是这意味着网格特征图上的每个向量都必须单独覆盖一个空间区域的所有信息,从而潜在地得到了更强大的网格特征。
在原模型上应用1*1 RoIPool时添加了两个全连接层,并将
C
5
C_5
C5层扩张了两倍。
这些改变都仅限于训练时,在推理时依旧使用原来的目标检测器。
实验
实验结果如上图所示,大致可以观察到两个现象。
- 和广为应用的Bottom-Up区域特征(第一行)相比,直接从 C 5 C_5 C5输出提取网格特征(第三行)也能得到不错的效果,均要好于使用在ImageNet上预训练的ResNet-50模型。
- 基于1*1RoIPool的变体方法虽然伤害了模型的目标检测效果,但却提升了VQA效果(第四行),并优于原始区域特征的结果(第一行)。而这种方法并不能帮助到区域特征方法(第二行),表示原模型更倾向于区域,而本文所提出的方法更适合网格。
作者对网格特征起作用的原因进行了探究,最后认为主要有两个因素:
- 输入图像的尺寸
- 网格特征受益于大尺寸图像作为输入
- 预训练任务
- VG数据集的目标类别、属性标注充足
接着作者也验证了使用网格特征作为输入要比区域特征快48倍,而且这种方法可以泛化到不同的backbones网络、不同的VQA模型、不同的VQA任务(数据集)、甚至到图像描述等其他任务上。
最后作者也认为这是迈向端到端VQA的一小步,并对未来进行了展望。
参考
ReadPaper-In Defense of Grid Features for Visual Question Answering