关于度量学习已进行了许多研究,而度量学习已成为实例级图像检索的最佳执行方法中的关键要素。同时,对可以显著提高性能的预处理和后处理技巧的关注较少。此外,我们发现大多数以前的研究都使用小型数据集来简化处理。由于深度学习模型中特征表示的行为取决于领域和数据,因此使用适当的检索技巧组合时,了解模型在大规模环境中的行为非常重要。在本文中,我们广泛分析了众所周知的预处理,后处理技巧及其组合对于大规模图像检索的效果。我们发现正确使用这些技巧可以显著改善模型性能,而无需复杂的体系结构或造成损失,正如在2019年Google Landmark检索挑战赛上获得竞争性结果所证实的那样。
随着度量学习技术的最新发展,已经进行了积极的研究[26、14、19、42、36],旨在提高图像检索的模型性能。先前的大多数方法都集中在通过精心设计损失函数[35,46]和体系结构[22]来学习良好的表示方法,并针对诸如牛津5k [28]和巴黎6k [29]等相对较小规模的数据集评估其性能。这些数据集结构良好,可靠且足够小,易于处理。但是,在小型数据集上的高性能并不能保证对发现的模型进行泛化。尽管一些研究[25]尝试使用牛津105k [28]和巴黎106k [29]等数据集来研究大规模图像检索,但是我们发现大多数公共大规模数据集并不是真正的大。相反,它们通常由少量查询和索引图像以及大量不相关的图像用作干扰因素。此外,我们很少见有针对包含超过100K查询的数据集评估性能的工作,而该数据集实际上在查询和索引大小方面都是大规模的。原因很简单:从大量索引图像中查询超过100K图像非常耗时且计算量大。 另一方面,在预处理和后处理过程中使用的技巧[40、3、17、26]也对检索性能有重大影响。 F. Radenovic等。 [30]通过在主要处理之前和之后应用几种检索技巧,报告了性能的极大提高。尽管这些技巧很重要,但我们发现很少有论文讨论性能最佳的预处理和后处理技巧,尤其是在大型环境中。 在本文中,我们旨在分析当组合使用不同类型的预处理技巧和后处理技巧时,大规模数据集的检索性能如何变化。为此,我们设计了一个非常简单的模型,该模型不使用任何困难的工程(例如网络手术),并以逐步的方式分析了众所周知的检索技巧对性能的影响。如图1所示,针对技巧和模型的所有可能组合进行了广泛的实验,如图1所示。我们发现,即使使用简单的推理模型,正确使用众所周知的检索技巧也可以显着提高整体性能。主要贡献。我们的贡献有两个:(1)我们通过大量实验分析了预处理,后处理技巧及其组合对大规模图像检索的影响。 (2)我们证明,通过适当地结合众所周知的检索技巧可以实现竞争性改进。我们的流程在Google地标检索挑战赛[2019]中排名第8位
我们使用了两个大型数据集进行实验:分别来自2018年和2019年Google地标挑战的Google地标数据集(GLD)v1 [26]和GLD v2 [2]。表1中显示了数据集的详细统计信息。在处理大规模数据集时,可能会出现一些意外问题。第一个问题是如何从此类大规模数据集中消除噪声。当数据集变得更大时,可能会包含更多的噪音,这些噪音会起到干扰作用。因此,应仔细消除噪声,因为训练数据的质量会显着影响模型性能[13,14]。第二个问题是如何通过足够多的试验来快速评估模型性能以执行大量实验。与其他著名的地标数据集[30]不同,GLD数据集包含超过70万个索引图像和10万个查询图像。此数据量需要大量时间和内存才能进行单个评估。在本节中,我们描述如何通过去除噪声图像并构建小规模验证集来规避这些问题。
通过清除训练集中的噪声,我们旨在最大程度地增大类间的差异,并最大程度地减少类间的差异。 为了在没有监督的情况下解决这个问题,我们使用了一种聚类技术,即基于噪声应用的密度的空间聚类(DBSCAN)[11],可以用任何聚类算法[32,33]代替。 基于生成的集群,三种不同类型的干净数据集(TR1,TR2和TR3)已构建。 下面介绍了构造每个数据集的详细过程。TR1: 通过肉眼检查,我们注意到GLD v1的训练集是干净且可靠的,因此我们按原样使用数据集进行训练。 为了获得半监督学习效果[4,23],我们在训练集中添加了虚拟类。 这些虚拟类是GLD v1的测试集和索引集的集群。 首先,我们使用GLD v1训练了基线模型,并提取了GLD v1的测试和索引集的功能。 然后,将DBSCAN应用于生成集群,其中每个集群都被分配为新的虚拟类。 为了清楚起见,我们将结果称为TR1。TR2:在GLD v2的索引集中,有许多不是地标的干扰物图像,例如文档,肖像和自然场景。 我们旨在在训练阶段使用这些噪声,以便模型可以增加真实地标与嵌入空间中的噪声之间的距离。 为此,我们执行了相同的聚类过程,但还选择了几个干扰器聚类作为虚拟类。 这些干扰项类与TR1组合在一起,我们称之为组合数据集TR2。TR3:与GLD v1相比,GLD v2的训练集具有更多的类和图像。 同时,它包含大量噪声类别和图像。 为了解决这个问题,我们首先使用在Open Images数据集[21]和iNaturalists数据集[41]上训练的简单二进制分类器删除了自然场景。 然后,将每个类别中的图像聚类,以便可以将噪声排除为异常值。 当在一个类中找到多个群集时,我们选择最大的群集并丢弃其他群集。 此外,通过查询每个类的图像,也可以排除TR2中重复的GLD v2训练集中的类。
节省每次评估运行的时间很重要,因为它决定了我们可以运行多少次试验来验证我们的假设。 此外,验证集应尽可能反映测试数据的特征,以防止误导解释。 为了获得更小的数据集,我们从GLD v2中采样了约2%的训练图像,并将样本分为测试集和索引集。 因为GLD v2的测试集包含许多干扰项图像,所以我们包含了来自噪声群集的虚拟类。 这样,我们期望验证集的分布将类似于GLD v2的测试和索引集。 我们报告验证分数和提交分数,因为在验证分数的基础上探索了每个模型的最佳性能超参数。
图2显示了一个示例,说明聚类后有噪声的地标标签如何变得干净。 原始数据集包括从同一地标内部,外部甚至部分视点拍摄的图像。 这些类内部差异较大的数据集可能会干扰学习模型中的正确表示形式,尤其是在使用成对排名损失时。 此外,自然场景的图像也有一些迭代级别的变化,因此也使训练过程变得困难。 通过选择一个大的聚类并去除干扰项来完善原始数据集后,我们获得了一个干净的数据集。我们通过区分训练集和N-pair + Angular模型进行了实验,并验证了每种性能。训练阶段的输入大小为256×256 px,推理阶段的输入大小为416×416 px,并具有1024维嵌入。如表2所示,使用TR1进行训练,其中包含来自测试集和索引集的虚拟类,它通过使用未标记的标签来提高模型性能。原始训练集不再有用时的数据。用TR2训练的模型提供的性能类似于用TR1训练的模型,因为数据和类的数量没有明显的不同。由于GLD v2的训练集非常嘈杂,因此我们无法从原始数据集中训练模型。使用TR3(包括来自GLD v2的纯净训练集)可以进一步提高性能。总体而言,通过更精细地对数据进行聚类并包含更多图像,可以提高验证和提交性能。实验还表明,验证集适合用于验证和提交的性能类似的模式。
在许多情况下,通过使用新颖的体系结构或损失函数设计可以获得最先进的性能[10、20、22]。 尽管此类方法在GLD上可能显示出可比的结果,但我们有意设计了一个非常简单的模型,因为我们对预处理和后处理技巧对大规模数据集的影响比对推理模型本身更感兴趣。 尽管如此,找出常用的合并方法和目标的哪种组合最适合该任务仍然很有趣。 因此,我们用不同类型的合并方法和损失函数训练了多个模型,这些模型有望对后处理中的特征集合有所帮助。3.1池化 尽管实现起来很简单,但从最后一层开始的特征图上的合并方法对模型性能的影响仍然很大[5,38,31,39]。 由于这个原因,在[19]中进行了广泛的实验,以找到合并方法的最佳组合。 但是,在这里,我们发现最佳的池化方法取决于域。 最终,本文使用了三种不同的方法(SPoC [5],MAC [38]和GeM [31])进行训练3.2. Objectives 如表3所示,具有两个不同目标的模型在训练数据上具有相似的性能,但趋势不同。 与N-pair + Angular模型不同,Xent + Triplet模型在TR1上表现出最佳性能。 有了TR3,Xent + Triplet由于Xent损失的波动,无法正确训练模型。 这可能是因为Xent损失对数据集的质量敏感,因为Xent损失可能在优化过程中获得少量重复的类。输入大小。 我们通过更改特征提取步骤中的输入大小,对表3中的index-2模型进行了实验。 结果显示在图4(a)中。 它表明,随着输入大小的增加,性能会提高,因为较大的输入大小会在卷积神经网络(CNN)模型中生成较大的特征图,从而包含更丰富的信息。 但是,性能并不会无限期地提高,而是在某一点开始降低。
在本节中,我们研究了实例级图像检索的众所周知的后处理技巧,包括功能集合,数据库扩充(DBA),查询扩展(QE)和重新排序。 即使每个技巧本身的有效性在许多研究中都得到了充分证明,但我们发现很少有论文通过经验研究了这些技巧技术应相互结合以最大化性能。 我们旨在找出以不同方式组合技巧的相互影响,下面的部分将详细介绍。4.1. 多特征集成 特征集成是一种传统的方法,是在许多视觉任务中提高性能的最有代表性的技术[24、20、19]。 尽管特征集成可以看作是多个特征的简单串联,但是有一个值得考虑的观点:哪些特征最适合组合? 在单个模型的基础上,我们训练了各种不同的主干,池化方法,目标,提取了1024维特征,并连接了一组随机选择的特征。 我们研究了性能如何根据所连接功能的数量而变化。 此外,我们调查了通常使用的“最佳”策略(该策略首先选择性能最佳的功能)是否确实可以保证在实际测试中获得更好的结果。4.2. DBA and QE 数据库端增强用该点自身值及其前k个最近邻值(k-NN)的加权总和替换数据库中的每个特征点[40,3]。 DBA的目的是通过平均最近邻的特征点来获得更鲁棒和独特的图像表示。我们使用计算得出的权重W执行描述符的加权总和,其中logspace函数生成10a和10b之间的n个点。与DBA类似,由Chum等人介绍的查询扩展。 [9]是一种通过获取更丰富的查询表示来提高图像检索质量的流行方法。对于每个查询,它从数据库中检索前k个最近的邻居,并将检索到的邻居与原始查询。根据需要重复进行此过程,并使用最终的组合查询来生成已检索图像的排名列表。更准确地说,每个查询的加权和聚合是根据公式1计算得出的权重W执行的。4.3. PCA 白化在检索任务中,基于CNN的描述符的白化得到了提升[34,5],因为它们通过共同降低共权重来处理因共现过度计数而引起的问题[18]。 通常,生成模型通过独立数据集上的主成分分析(PCA)以无监督的方式学习美白。 我们进行了PCA白化(PCAw)通过使用Scikit-learn API中的实现,DBA和QE的4096维特征可以产生1024维特征[27]; 然后,我们再次应用l2归一化。4.4. 重排序 一旦检索到前k个候选者,重新排列检索到的候选者的顺序就可以提高性能。 与前面提到的技巧相比,重排序技巧的影响相对较小,因为只有在前k个候选中都找到了真实的图像时,重排序才有效。 但是,正确使用重新排名肯定会提高性能。 我们使用两种独特的方法进行了重新排序:基于全局描述符的图搜索和基于局部描述符的局部匹配。
图搜索。 扩散(DFS)[45,17]是一种在特征空间中捕获图像流形的机制。 它基于离线构造的数据集的邻域图有效地搜索流形。 此方法特别改善了对小对象和混乱场景的检索,这适合Google Landmark Challenge的数据集领域。 使用DFS可以提高性能巨大,许多最新的图像检索论文都将其用作最大化基准数据集得分的最后一步。
局部匹配。 我们使用图像的空间信息进行排序。 给定两个图像,提取出对应匹配,并使用RANSAC [12,8]来计算内部数。 由于对所有可能的查询和索引图像对执行几何验证对于大规模数据而言是昂贵的,因此我们仅对前kd个候选对象进行局部匹配,这是检索到的结果用于全局描述符。 我们使用了在地标数据集上经过预训练的DELF [26],并如本文所述,从每张图像中提取了1K局部特征。 在实验中,我们发现不相关的图像有时会获得10分以上的匹配分数,从而导致性能下降。 为了抑制这种情况,我们仅在比赛分数超过某个阈值(σ= 50)时才对候选图片重新排名。
基于受过训练的单一模型,我们检查了上述后处理方法的效果。 表4中列出了功能组合和每个后处理步骤的性能。图4显示了相应技巧的超参数的实验。
图4(a)显示了性能如何根据串联特征的数量而变化。 随着功能数量的增加,我们发现了更好的结果,但是随着功能的增加,增益会变小。 考虑到计算成本和性能增益,我们建议使用4到6个特征进行串联。 我们还调查了“仅最佳”策略是否是找到集成功能最佳组合的最佳方法。 为了对此进行测试,构造了1,400多个串联特征的组合,并在验证集上进行了评估,如图4(d)所示。 结果表明,模型的低性能变化与更好的性能(红线)之间存在相关性。 但是,我们不应该完全信任“仅最佳”策略,因为点(蓝线)的方差不可忽略。
对于使用DBA,QE和PCA处理功能,我们可以考虑两种方法,具体取决于首先使用哪种技巧:(i)对级联功能执行PCA,然后是DBA和QE。 或(ii)首先在每个功能上执行DBA和QE,连接功能,然后应用PCA。 我们选择后者是因为它始终可以取得更好的效果。 注意,表4中的结果基于这种方式的评估。 在实验中,我们发现了一个有趣的观点:这些技巧的工作方式有所不同,具体取决于之前是否将DBA和QE应用于该功能。表4显示,在DBA和QE之后应用PCA和白化时,所有串联功能的组合均显示出一致的性能提升。该结果与不应用图4(b)中的DBA和QE的结果不兼容,这意味着使用PCA和白化进行尺寸缩减会降低性能。同样,我们发现最佳特征维数的结果相互矛盾。对于使用DBA和QE的PCAw,输出的最佳尺寸为1024,但是当使用不带DBA和QE的功能时,相同的参数值会显着降低性能,如图4(c)所示。有趣的是,DBA和QE增强了特征表示的质量,这也使它们对降低维数具有鲁棒性。如表4所示,在所有技巧中,DBA和QE的收益最大。迭代DBA和QE执行k次增强,但由于DBA和QE的执行效果最佳,因此我们将k = 1。
最近,提出了“检测到检索” [37](D2R)的概念,我们使用[37]的界标检测器来检测和裁剪感兴趣的区域。裁剪区域用于DELF的局部特征提取[26],在表5中列为DELF Rerank + D2R。尽管DELF在Oxford5k和Paris6k数据集上取得了竞争性结果,但我们观察到性能略有提高甚至恶化在对DELF进行大规模排名后x数据集(例如GLD)。 我们还探索了DFS的排名。如图4(e)所示,使用DBA / QE进行DFS重排序可以通过超参数kq改善性能,而没有使用DBA / QE进行DFS重排序则无济于事。这表明通过应用DBA / QE发现的特征可以在特征空间中构建更好的图像流形,以进行图搜索。此外,我们通过将DFS与空间验证(SV)相结合进行了实验,这被称为DFS + SV。 DFS + SV将全局描述符之间的余弦相似性的成对相似性度量替换为通过DELF重排序获得的局部描述符的空间匹配分数。表5显示DFS可以提高性能,而SV则可以降低性能。随着k-NN图构造数k的增加,性能得到了改善,但是额外的计算却使该过程变了个权衡。
表6显示了2019年Google Landmark检索挑战赛的最终结果。对于最终提交,我们从表4中选择了组合J,并对每个要素应用了kA = 1的DBA和QE。 然后将这些特征连接起来,并以1024的输出维数应用PCAw。最后,使用DFS + SV(NN = 20K)对排名前100位的候选对象进行了排名,这比仅使用DFS时的性能更高。 通过将著名的检索技巧与简单的推理模型正确结合并正确使用超参数,我们的流程在排行榜上排名第8位。 我们没有使用任何复杂的架构或损失函数。 请注意,挑战后我们的最终提交分数有所提高,如表5和表6所示。
在本文中,我们研究了大型数据集上预处理和后处理技巧的有效性。 我们的流程使用了诸如数据集清理,特征集成,DBA / QE,PCAw以及通过图搜索和局部特征匹配进行重排序等技巧。 我们表明,学习良好的图像表示以及应用适当的预处理和后处理技巧都很重要,这些技巧可以显着提高整体性能。 最终,与基线模型相比,我们最多可以得到mAP @ 100增加10.24的结果。