VLDeformer:用于快速跨模态检索的视觉语言分解transformer
跨模型检索已成为纯文本搜索引擎 (SE) 最重要的升级之一。 最近,通过早期交互对成对文本图像输入的强大表示,视觉语言 (VL) transformer的准确性优于现有的文本图像检索方法。 然而,当使用相同的范式进行推理时,VL transformer的效率仍然太低而无法应用于真正的跨模态 SE。 受人类学习机制和跨模态知识的启发,本文提出了一种新颖的视觉-语言分解transformer(VLDeformer),它在保持出色精度的同时大大提高了 VL transformer的效率。 通过所提出的方法,跨模型检索分为两个阶段:VL transformer学习阶段和 VL 分解阶段。 后一阶段起到单模态索引的作用,这在某种程度上类似于文本 SE 的术语索引。 该模型从早期交互预训练中学习跨模态知识,然后分解为单个编码器。 分解只需要小目标数据集进行监督,并实现 1000 倍以上的加速和小于 0.6% 的平均召回率下降。 VLDeformer 在 COCO 和 Flickr30k 上的表现也优于最先进的视觉语义嵌入方法。
跨模态检索对于搜索引擎、社交媒体和电子商务等现代应用程序很重要,这些应用程序涉及搜索语义上与来自另一个模态的查询相似的实例。 就像文本搜索引擎一样,跨模型检索不仅要求准确率高,还要求检索速度快。
视觉语言transformer(VL transformer)[12,14,16,19] 以其在跨模态检索中的卓越准确性而闻名。 这些模型通过 BERT 网络 [3] 学习跨模式匹配关系,其中特征与早期交互数据流融合。 与人类学习跨模态对齐的过程类似,大多数 VL transformer每次都会比较一对文本图像,并在预训练期间产生一个联合表示。这些模型显着优于传统的视觉语义嵌入方法,并证明了预训练和早期交互的有效性。
然而,VL transformer仍然保留了推理范式,其计算成本太高而无法应用于实际应用。 由于早期交互数据流,VL transformer必须为每个文本图像组合计算一个联合表示以进行匹配。 该范式导致文本图像数据的推理时间为 O(n2)。 在实践中,从 1k 个文本图像记录中找到最相似的对需要 500k 次推理,这在现代 V100 机器上大约需要 30 分钟。
视觉语义嵌入模型是另一种主流的跨模型检索方法。 他们使用双分支编码器进行单个图像和文本输入。 在这些模型中,后期交互数据流用于学习跨模态对齐,这有助于比 VL transformer更快的检索效率。 Dur1 arXiv:2110.11338v3 [cs.CV] 2021 年 11 月 25 日检索,嵌入可以被缓存并重用于其他比较,这导致 O(n) 推理时间。 这些模型的主要弱点是它们的准确性相对较低。 最近的工作试图通过预训练来解决准确性和速度之间的权衡问题。然而,如表 1 所示,这些模型在使用相似甚至更大的预训练数据时仍然不如 VL transformer有效。 到目前为止,据报道,两分支编码器仅使用数百倍大的预训练数据就优于 VL transformer。 因此,VL transformer仍然是跨模态检索最有效的方法,但在检索速度方面存在不足。
VL transformer的早期交互预训练类似于人类通过观察成对的语言和视觉输入来学习跨模态对齐。 然而,人类能够在学习后分别处理单个文本和图像信息,如图 1 所示,这是一种更快的检索范式。 从这个角度来看,现有的 VL transformer只能达到学习阶段。为了检查将 VL transformer转换为单独的文本和图像编码器的可行性,我们在试点实验中分析了 VinVL [28] 的数据流(第 3 节)。 令人惊讶的是,我们发现了一个有趣的现象:大多数跨模式交互不是点对点发生的,而是通过一些“路由节点”发生的,如图 2 所示。此外,特殊套接 [CLS] 和 [SEP] 大部分时间都是路由节点。 由于这些特殊标记不属于任何特定的模态,因此可以按模态划分数据流,而不会破坏学习到的数据流。 根据这些发现,我们证明了预训练的 VL transformer可以分解成一个单独的编码器,同时只用一个小的目标数据集作为监督来保持大部分的准确性。 我们还在实验中验证了“路由节点”在分解后被成功保留。
结合预训练阶段,所提出的视觉语言分解transformer(VLDeformer)提出了一种新的范式,该范式使用早期交互数据流预训练 VL 变压器,然后将其分解为单独的编码器。 使用这种范式,我们可以构建一个不仅精度高而且速度快的 VL 变压器。 在公开的 COCO 和 Flickr30k 基准测试中,VLDeformer 实现了 1000 倍以上的加速和 VL 转换器的平均召回率下降不到 0.6%。 VLDeformer 还优于最先进的视觉语义嵌入方法,同时使用相似甚至更小的预训练数据。
VL transformer的先导分析
为了研究 VL transformer内部的数据流,我们首先对预训练的 VinVL-base [28]2 的注意力计算进行可视化。 可视化样本来自 COCO 1k 测试集,由 VIG 工具 [25] 描述。
如图 2 中的注意力图案例所示,有四个节点获得了最多的注意力权重。 其中,三个节点属于特殊标记,即[CLS]或[SEP],它们不具有任何模态属性。 同时,“路由节点”在每一层都是固定的。 因此,可以分解视觉和语言输入,同时保持这些路径不中断。
我们收集了1k个样本,根据模态和路径记录注意百分比,以验证这一现象。为了区分,我们定义如下:
• 路由节点:与其他节点相比,显着占据更多注意力权重的前 k 个套接。
• 中性注意力:从不属于任何模态的特殊标记[CLS] 和[SEP] 开始或指向的注意力。
• 单模态注意力:从文本嵌入指向文本嵌入或从图像嵌入指向图像嵌入的注意力。
• 跨模态注意力:从图像嵌入指向文本嵌入的注意力,反之亦然。
如图 3 (a) 所示,69% 的注意力权重在路由节点上,一半的注意力权重由中性节点承担。 其他节点总共占 19% 的权重。 如果分解后保留路由节点,则很可能保留预训练知识。 从图 3 (b) 我们可以看到只有 11% 的注意力权重是直接的跨模态交互; 其余 89% 不用于即时跨模式交互。 如果剩下的 89% 的注意力数据流在分解后没有被破坏,我们只需要小数据来重构跨模态注意力并保持大部分的预训练知识。
表 2 显示了每一层中不同注意力类型的百分比。 我们可以看到,单模态注意力不断地比跨模态注意力权重占据更多的注意力权重。 [CLS] 在底层受到更多关注,而在中层和顶层,[SEP] 变得更加重要。 因此,使用 [SEP] 或层输出的平均值作为表示向量可能比使用 [CLS] 的常见做法更有效。
方法
VLDeformer 的范例如图 4 所示。
它包括早期交互预训练、视觉语言分解和检索阶段。 由于有很多方法可以实现预训练阶段,因此在本节中,我们主要阐述视觉语言分解的原理。
成对的图像和文本输入
成对的文本和图像输入包括位置嵌入、段嵌入和套接嵌入。 输入文本 T 被标记为标记序列 {w1, …wL},其中 L 是 WordPiece [9] 标记器输出的长度。 输入图像 I 由目标检测网络 [28] 进行预处理,以提取区域特征和标签。 对于段标记,我们分配[T]段标记来标记单词标记和对象标签,并分配[V]来表示区域特征。 文本和图像输入的最终嵌入是通过位置、段和套接嵌入的总和,然后是层归一化获得的。
文本和图像特征通过网络中的自注意力进行交互。 预训练目标是自我监督任务,即掩码语言建模和用于联合表示上的跨模态对齐的对比学习。 由于大多数现有的 VL transformer都是在这个预训练过程中构建的 [2, 12, 19, 28],因此 VLDeformer 可以应用于其中的任何一个。 在本节中,模型被训练为基于 VinVL 的 [28] 模型。
4.2. 视觉语言分解
单个图像和文本输入
将连接的文本和图像输入分开以进行单个编码。
在试验分析的指导下,格式有两个区别:特殊标记和位置嵌入。
特殊的 [CLS] 标记被添加到两种模式的开头,而 [SEP] 被添加到文本和标记标记的末尾。 标记、标签和对象的位置索引分别分配以区分模态。文本位置索引的范围从 0 到 L - 1,而对于图像输入,位置索引再次从 0 到 K - 1 开始,其中 K 是对象或标签的数量。
分解的 VL transformer
单独的图像和文本输入隔离了 VL transformer的跨模态交互。 为了尽可能地保持其他交互,网络共享文本和图像模态的权重。 根据试点实验的分析,[CLS]节点在VL Transformer的顶层获得的注意力权重较小,这与使用[CLS]作为表示的通常做法相冲突。 因此,我们尝试了三种表示形式:[CLS]、[SEP] 和所有输出的平均池化。 在实践中,我们发现平均池化和 [SEP] 表示比 [CLS] 向量表示更有效,而平均池化表示略好于 [SEP](详见第 5.4 节)。 最后,表示 rt 或 rv 由具有 tanh 激活的平均池化层获得。
分解损失分解的目的是重建破碎的跨模态交互并通过后期交互数据流学习跨模态相似性。
我们对 BCE 损失、Triplet 损失和 infoNCE 损失进行了实验,其中 infoNCE 损失最终达到了最佳性能(详见第 5.4 节)。 infoNCE 损失最小化语义对齐样本之间的余弦距离,并最大化不同样本之间的距离。 在具有 N 个文本图像对的 mini-batch 中,我们将对齐的对视为正样本,将其他组合视为负样本。 我们使用目标作为方程式。 1 将语义上接近的图像表示 rjv 拉到文本表示 rit 并将非接近样本分开:
其中τ是温度超参数,cos是余弦相似度
Ltc 术语也可以被视为优化小批量中的文本到图像检索。
与 Ltc 对称,我们使用等式中的损失项。 2 学习图像到文本的条件。
完整的对比学习损失是这两个术语的总结:
由于本文的主要目标是展示预训练和分解范式,我们发现简单的 infoNCE 损失足以保持与 VL transformer相当的性能。 其他自我监督也可能有用,这将留给未来的工作。
4.3. 基于 VLDeformer 的跨模式检索
VLDeformer 是一个单独的编码器,因此可以离线对检索内容进行编码。 例如,在文本到图像的检索中,图像被离线编码为嵌入,使得在线计算只包括查询编码和余弦相似度,这是实现检索速度加速的主要原因。
在这一部分中,我们以文本到图像的检索为例来介绍检索过程。 为了表述,图像集表示为{Ii}Ni=1,其中N是图像集大小。 查询表示为 T 。
在离线编码阶段,图像在 Sec4.2 之后处理得到位置、段和套接嵌入,然后传递给 VLDeformer 模型得到图像嵌入 {riv}Ni=1 。 可以重复使用图像嵌入来与每个文本查询进行比较。
在在线检索期间,查询文本首先被处理以定位、分割和标记嵌入,然后编码为查询嵌入 rt。 查询文本的前 1 个相关图像的索引计算为公式。 4:
可以从图像集中获得检索到的Top-1图像:In。
4.4. 实现细节
首先将所有处理后的图像调整为 256 × 256,然后提取 50 个感兴趣区域和对象标签。 文本标记的最大序列长度设置为 35。对比分解的批量大小设置为 1750,而温度设置为 0.005。采用 AdamW 优化器,学习率为 5e-5,权重衰减为 1e-4。 该模型在具有 Ubuntu 18.04 系统和 8 个 V100 GPU 的 NVIDIA DGX 上进行训练。
5.实验
5.1. 数据集和评估协议
数据集 预训练阶段使用 8.8M 文本图像对形成公共数据集,如 VinVL [28]。 COCO [15] 和 Flickr30k [18] 数据集用于分解阶段。 COCO 数据集包含 123K 图像,分为 114K 训练图像、5K 验证图像和 5K 测试图像。 我们还使用 1k 测试的通用拆分进行综合评估。Flickr30k 数据集包含 31K 图像,这些图像分为 29K/1K/1K 用于训练、验证和测试。 每张图片有 5 个标题文本。
评估 检索性能通过 topk 样本 (R@k) 的召回率来衡量。 报告了三个 k 值,R@1、R@5 和 R@10,用于文本到图像检索,反之亦然。 我们使用 1k、5k 和 10k 文本图像对评估文本到图像检索的检索速度。
5.2. 检索精度分析
5.2.1 与视觉语义嵌入的比较
表 3 显示了 VLDeformer 和视觉语义嵌入方法的比较结果。 VLDeformer 和其他预训练模型都大大优于没有像 CAAN 和 DIME 这样的预训练的模型。 值得注意的是,预训练的视觉语义嵌入的性能因预训练数据规模而异。 例如,在最大数据上训练的 *ALIGN 优于其他模型。 然而,*ALIGN 的预训练数据集比我们的预训练数据集大 204 倍,比 LightningDOT 大 189 倍,因此很难公平地判断这些模型。如果我们比较类似预训练数据规模的模型,在 180M 文本图像对上训练的较小的 ALIGN-small 模型随着数据规模的减小,性能急剧下降。
值得注意的是,与类似甚至更小的数据量相比,VLDeformer 优于所有最先进的视觉语义嵌入模型。 因此,我们可以得出结论,VLDeformer 是可比数据规模上最有效的视觉语义嵌入方法。
5.2.2 与 VL Transformers 的比较
表 4 显示了 VLDeformer 网络与 COCO 和 Flickr30k 1k 测试集上最先进的 VL transformer之间的检索分数和时间成本比较。 与基于 VinVL 的骨干模型相比,VLDeformer 实现了数千次加速,平均召回率下降不到 0.5%,甚至在 COCO 1k 文本检索集上的 R@5 和 R@10 水平上都优于它。 VLDeformer 的性能也优于其他 VL transformer,如 Unicoder-VL 和 Uniter。 与预训练的双分支transformer LightningDOT 相比,VLDeformer 在准确度和推理时间上都取得了更好的结果,并且在 Oscar Reranker 方面也优于 LightningDOT。
尽管如此,VLDeformer 和主干 VinVL 模型之间仍然存在性能差距,这在 R@1 图像检索分数上更为明显,即 COCO 为 2.3%,Flickr 为 1.8%。 但是,R@5 和 R@10 上的差异非常小,这意味着许多 ground truth 图像没有被 top1 结果命中,而是在 top5 记录中被召回。
5.2.3 定性案例分析
由于 R@1 度量仅计算一个对齐的地面实况图像的命中率,它可能会受到其他语义相似样本的影响。 因此,我们检查了 top1 的主干 VinVL 模型正确预测但被 VLDeformer 翻转的情况。 图 5 显示了此类案例中检索到的前 5 个图像。有趣的是,许多图像与查询文本共享相同的语义,尽管它们不是基本事实,例如,“杆子旁边的两只长颈鹿”或“四向停车标志”。 对于此类查询,top1 指标不适用于判断检索结果。 像第三种情况这样的一些查询具有粗略的语义,可以与各种图像对齐,例如“table with different food”,例如“table with different food”。 这些查询还降低了 top1 指标,因为很难回忆 top5 甚至 top10 记录的基本事实。 示例还显示了 VLDeformer 的一些局限性。 比如第四个案例,主要是“挂在户外柱子上的时钟”,却没能分辨出表盘上的“罗马数字”,说明以后的作品还需要更细致的搭配。
5.3. 检索效率分析
匹配所有文本-图像对的时间成本如图 6 所示。模型在同一台机器上使用一个 V100 GPU 和 400 批大小进行比较。 只记录推理时间,排除数据加载时间。 VinVL 使用了很长的时间 6(1k 大约 0.5 小时,更大的数据甚至更多),时间响应就像数据大小的二次函数。 在定量比较中,VLDeformer 在 1k 数据上比 VinVL 实现了 1k 倍以上的加速,在 5k 上实现了 9k 倍以上的加速。
随着数据量的增加,VLDeformer 和 LightningDOT 都显示线性时间成本曲线,但 LightningDOT 比 VLDeformer 花费更多时间,这可能是因为该模型建立在更大的 BERT 大型网络上。 值得注意的是,当 LightningDOT 使用 Oscar-large [14] reranker 以达到与 VLDeformer 兼容的精度时,其检索时间将增加一个数量级。
5.4. 消融研究
为了验证 VLDeformer 的设计,我们对 COCO 1k 测试集进行了消融研究。 比较的模型使用相同的超参数进行训练。 结果如表5所示。
表示选择。 使用 [CLS] 和 [SEP] 作为表示的结果显示在 VLDeformer-[CLS] 和 VLDeformer-[SEP] 中。 与平均池化表示相比,VLDeformer-[SEP] 在 R@5 和 R@10 上更高,但在 R@1 上更低,而 VLDeformer-[CLS] 在所有指标上均显着下降。 结果验证了表 2 中的观察结果,即 [CLS] 在顶层不如 [SEP] 重要
分解损失选择。 为了评估 infoNCE 损失对分解的有效性,我们比较了 BCE 的成对余弦相似度 VLDeformer-BCE 和三元组损失 VLDeformer-triplet。 结果,这两个目标的性能都比 infoNCE 损失差,并导致性能急剧下降,尤其是在 R@1 上。
VLDeformer 是否保留了预训练阶段的知识? (无预训练)使用随机初始化的权重从视觉语言分解阶段训练 VLDeformer。 VLDeformer 和(没有预训练)之间的比较是一个黑盒测试。 由于在没有预训练阶段的情况下性能显着下降,因此可以推断,分解后保留了一些预训练知识。
分解阶段是否重构了预训练模型? 由于预训练模型的跨模态注意力在 VLDeformer 中被打破,我们想知道分解在多大程度上重建了预训练模型。 (w/o decompose†) 展示了直接使用 VinVL 模型作为单独的嵌入编码器的性能。 令我们惊讶的是,分数非常低,表明分解阶段是维持性能所必需的。
5.5. 分解分析
我们进一步分析分解后VLDeformer的注意力,以验证第2节中的观察和假设。 3、在表6中,我们可以发现[CLS]和[SEP]仍然是重要的路由节点,具有很大比例的注意力权重。 相比之下,在没有预训练的 VLDeformer 中,这些节点不是路由节点。 在图 7 中,我们比较了与图 2 相同的样本 7 没有预训练的 VLDeformer。可以清楚地看到 VLDeformer 保留了路由节点 [CLS] 和 [SEP],但 VLDeformer 中没有明确的路由节点 无需预训练。
6.结论
VL transformer在跨模态检索中是有效的,但速度较慢。 我们观察到,VL transformer中的大多数交互都不是立即的跨模态注意力,而是高度依赖于中性节点。 因此,我们提出了一种新颖的视觉语言分解transformer (VLDeformer),它使用早期交互数据流预训练 VL transformer,然后将其分解为单独的编码器。 VLDeformer 实现了 1000 多倍的加速和低于 0.6% 的平均召回率下降,并且在 COCO 和 Flickr30k 数据集上优于最先进的视觉语义嵌入模型。