【深度学习】Pythia v0.1: the Winning Entry to the VQA Challenge 2018

Posted by ShawnD on April 30, 2022
# Abstract 这篇文章描述了 Facebook 人工智能研究(FAIR)的A-STAR团队在2018年VQA挑战赛中获胜的作品——Pythia v0.1。 这篇文章出发点是自底向上自顶向下(up-down)模型的模块化重新实现。 我们演示了通 过对模型架构和学习率调度进行细微但重要的更改,微调图像特征,并添加数据增强,我们可以显著提高VQA v2.0数据集上的 up-down 模型的性能,从65.67%提高到70.24%。 此外,通过使用不同特征和不同数据集训练的模型的不同集成,能够比标准的集成方式(即使用不同随机种子的相同模型)显著提高1.31%。总的来说,其在VQA v2.0数据集的测试标准上实现了72.27%。 # Introduction Pythia的动机来自以下观察:当今大多数视觉问答(VQA)模型适合特定的设计范式,具有问题编码、图像特征提取、两者融合(通常需要注意力)和答案空间分类的模块。 # Bottom-Up and Top-Down Attention 我们对 up-down 模型[1]的基线系统进行了消融和增强,这是2017年VQA挑战赛获胜的基础。up-down的关键思想是使用一个对象检测器Faster RCNN[12]在Visual Genome数据集[9]上预先训练,提取具有自下而上注意的图像特征,即视觉前馈注意。具体来说,我们选择ResNet-101作为骨干网,将其整个Res-5 block 作为第二阶段区域分类器进行检测。训练结束后,每个区域在7 - 7网格中平均池化后由2048D特征表示。 然后用问题文本计算自顶向下的注意力,即任务特定的注意力,对图像中的每个对象。多模态融合是通过一个简单的Hadamard产品,然后使用一个sigmoid激活函数预测答案分数的多标签分类器来完成的。用30个不同种子训练的模型进行VQA 2.0测试标准,其性能达到70.34% ## Model Architecture 相比于使用门控双曲正切激活[1],我们使用权值归一化[13]再加上ReLU来减少计算。在计算 top-down 注意力时, 将来自视觉和文本模态的特征concatenation 替换为按元素相乘。为了计算问题表征,我们使用300D GloVe[11]向量初始化单词嵌入,然后传递给GRU网络和问题注意力模块,提取注意力文本特征[16]。为了融合图像和文本信息,我们发现最佳的 hidden size 为5000。通过这些修改,我们能够在VQA v2.0测试开发中将模型的性能从65.32%提高到66.91%。 ## Learning Schedule 我们的模型由Adamax优化,它是Adam的一个变种,具有无穷范数[8]。在一个流行的 up-down 的实现中,学习速率设置为0.002,批大小为512。我们发现,减少批处理大小可以提高性能,这表明通过提高学习率有提高性能的潜力。然而,单纯地提高学习率会导致发散。为了提高学习率,我们部署了网络大学习率训练中常用的 warmup 策略[5]。具体来说,我们从0.002的学习速率开始,在每次迭代时线性增加,直到在迭代1000时达到0.01。接下来,我们首先在5K时降低学习速率0.1倍,然后每2K次迭代降低学习速率,在12K时停止训练。这样,我们在 test-dev 上的性能从66.91%提高到68.05%。 ## Fine-Tuning Bottom-Up Features 微调预训练的特征是一种众所周知的技术,以更好地定制特征,以满足手头的任务,从而提高模型性能[12]。 与原始论文不同, 们比使用来自 Detectron 的基于 FPN SOTA 检测器, 其使用 ResNeXt 作为主干, 并且有两个全连接层(fc6 和 fc7) 作为区域分类。这使我们提取 2048D fc6 特征, 并且微调 fc7 的 参数, 与原始 up-down 相反, 在 7 x 7 x 2048 卷积特征图上微调之前的层需要更多的 存储/IO 和计算。 与up-down类似,我们还使用带有目标和属性标签的Visual Genome (VG)[9]来训练检测器。 我们将微调学习率设置为整体学习率的0.1倍。通过这种微调,我们能够在 test-dev 中达到68.49%的性能。 ## Data Augmentation 我们从Visual Genome[9]和Visual Dialog (VisDial v0.9)[3]数据集添加了额外的训练数据。在VisDial中,我们将对话中的10个回合转换为10个独立的问答对。由于VG和VisDial数据集都只有一个答案,而VQA有10个,所以我们简单地将每个问题的答案在VG和VisDial中复制10次,以使数据格式与VQA评估协议兼容。 我们还通过镜像图像对VQA数据集进行了额外的数据增强。通过在包含问题和答案的问题和答案中左右交换标记,我们对镜像映像的问题和答案进行一些基本处理。当添加这些额外的数据集时,我们首先在第2.2节中描述的15K迭代时分别降低学习速率,并在22K迭代时停止训练。作为数据扩展的结果,我们能够将我们的单个模型在 test-dev 中的性能从68.49%提高到69.24%。 ## Post-Challenge Improvements Anderson等人[1]只使用来自目标提议的特征(称为自底向上的特征)来表示图像。我们的假设是,这种表示不能完全捕获关于图像的整体空间信息,以及提议未涵盖的图像区域的视觉表示。为了测试这种假设, 我们结合了 grid-level 图像特征和 bottom-up 特征。我们遵循与[4]相同的过程从ResNet152[7]中提取网格级特征。将目标级特征和网格级特征分别与问题的特征融合,然后串联起来进行分类。在挑战之后,我们进行了更全面的实验,发现添加网格级别的特性有助于将性能进一步提高到69.81%。 与[14]中使用自适应协议来选择每个图像的目标提议数(在10到100之间)不同,我们还尝试了一种更简单(但更慢)的策略,即对所有图像使用100个目标提议。 ## Model Ensembling 首先,我们选择最优的单一模型,用不同的种子训练同一网络,最后平均每个模型的预测结果。 其次, 我们选择使用不同的设置训练模型, 例如在 VQA 上训练 up-down 模型时是否使用数据增强, 使用不同的 Detectron 模型提取图像特征等