Hashing based Efficient Inference for Image-Text Matching (ACL-IJCNLP 2021)
1 Introduction
虽然现有的基于注意机制的方法取得了较好的性能,但它们没有考虑到推理效率。具体来说,对于大规模数据库,由于注意机制耗时,在推理过程中,查询(文本/图像)和每个候选数据点(图像/文本)之间执行如此复杂的注意机制是不可接受的。因此,提高这些方法的推理速度是至关重要的。直观地说,如果可以快速选择一个包含positive数据点的小候选集,图像-文本匹配模型可以通过只针对此小的候选集而不是对整个检索集进行精细排序来大大加快速度。
因此,本文提出了一种基于哈希的高效推理模块HEI,它可以插入到现有的基于注意机制的图像-文本匹配框架中,在不降低检索性能的情况下加快推理步骤。
具体来说,是一种基于匹配分数的哈希损失,其中由两项组成:一项是使匹配数据对的哈希码之间的汉明相似性尽可能大;另一项是使不匹配数据对的哈希码之间的汉明相似性不大于对应的匹配分数。通过最小化所提出的哈希损失,对HEI模块进行了优化,将原始数据点映射到短的二进制哈希码中,并粗略地保持数据点之间的异源匹配关系。因此,训练后的HEI模块可以在不降低检索性能的情况下加快推理步骤。
2 Methodology
2.1 Cross-modal Feature Representation
视觉特征 V i = [ v 1 i , . . . , v m i ] V_i=[v_1^{i},...,v_m^{i}] Vi=[v1i,...,vmi],利用Fast-CNN提取每张图像最显著的m个区块的特征,再经过一层线性层。
文本特征则是通过双向GRU提取。
实验中使用的特征都是前人事先提取好的特征。
2.2 General Attention Framework
利用cross modal attention来计算 V i V_i Vi和 T i T_i Ti的相似度。
为了使得最大化匹配对的得分和最小化非匹配对的得分,使用了三元损失
最后,在优化匹配模型后,给定一个查询数据点,计算检索集中每个数据点的匹配得分,通过交叉注意机制找到最匹配的数据点。然而,交叉注意机制非常耗时,这意味着在推理过程中不能使用注意机制计算查询与检索集中每个点之间的匹配分数。因此,本文提出了一种基于哈希的高效推理模块来提高推理速度。
2.3 Hashing based Efficient Inference module
先整合fragment-level的特征为instance-level的特征:
然后将其映射到哈希层通过sgn函数转化为2进制编码。
此外,基于哈希的高效推理模块的核心是学习两个特定于模式的哈希层,将数据点映射到二进制哈希代码中,二进制哈希代码用于从检索集中为查询选择几个候选数据点。为了实现这一目标,学习到的哈希码应该粗略地保持数据点之间的异源匹配关系,即如果两个数据点匹配,那么它们对应的二进制哈希码之间的汉明距离应该很小,否则应该很大。
通过汉明距离来监督哈希编码相似度的学习:
<img src=“https://i.loli.net/2021/10/24/R6qtf8Cm9dsbVlE.png” alt=“image-20211024163735343” style=“zoom:50%;” align='center/>
L1的第一项是为了让 1 k b i v b j t \frac{1}{k}b_i^vb_j^t k1bivbjt更接近1,即让哈希码间的汉明距离更小;第二项是为了惩罚不匹配的数据对,因为它们的汉明相似度比 s i j s_{ij} sij要大。由于sgn函数可能会有梯度消失的情况,所以采用tanh函数代替之。
3 Conclusion
本文在检索精度上较之前的文章并没有多大提升,但是其效率较之前的工作有较大的提升,关键就是其抛弃了费时的attention模型。
跨模态检索如今充斥着各种模块,能凑出不少种排列组合,但是大多是费时费力,收益甚微,另辟蹊径,优化检索效率也是一条路线,但是行文难以找到立足点,要想创新,得从数学角度出发优化图文匹配机制等,此前看的JDSH的数学模型有一定借鉴意义。