论文地址:Deep Image Retrieval: A Survey
本文是2021年最新的关于图像检索的综述,介绍了基于内容的图像检索( content based image retrieval, CBIR)在深度学习技术上的进展。
目录
0、摘要
1、引言
1.1、2012年以来的发展综述
(1)网络结构的改进
(2)深度特征提取
(3)深度特征增强
(4)用于学习表征的网络微调
1.2、关键的挑战
1.2.1、降低语义鸿沟
1.2.2、改善检索的伸缩性
1.2.3、平衡检索精度及效率
2、流行的DCNN backbone
3、利用现成DCNN模型进行检索
3.1、深度特征提取
3.1.1、网络前馈方案
3.1.2、深度特征选择
3.1.3、特征融合策略
3.2、深度特征增强
3.2.1、特征聚合
3.2.2、特征嵌入
3.2.3、注意力机制
3.2.4、深度哈希嵌入
4、使用学习DCNN架构进行检索
4.1、有监督微调
4.1.1、基于分类的微调
4.1.2、基于验证的模型微调
4.2、无监督微调
4.2.1、通过流形学习挖掘样例
4.2.2、基于AutoEncoder的框架
5、SOTA性能
5.1、数据集
5.2、评估指标
5.3、性能对比和分析
6、总结及未来趋势
近年来,社交媒体平台、医学图像、机器人等各个领域产生并分享了大量的视觉内容。这种丰富的内容创造和共享带来了新的挑战。特别是类似内容的数据库搜索,即基于内容的图像检索(CBIR),这是一个由来已久的研究领域,需要更高效、准确的方法来实现实时检索。人工智能在CBIR方面取得了进展,极大地促进了智能搜索的进程。在这个调查中,我们组织和回顾了最近基于深度学习算法和技术开发的CBIR工作,包括最近论文中的见解和技术。我们确定并提出了该领域常用的基准和评价方法。我们总结了一些常见的挑战,并提出有希望的未来方向。更具体地说,我们专注于深度学习的图像检索,并根据深度网络结构类型、深度特征、特征增强方法和网络微调策略罗列出最新的方法。我们的综述考虑了各种各样的新方法,旨在促进基于实例的CBIR领域的全局视野。
基于内容的图像检索( content based image retrieval, CBIR)问题定义:给出一张描述了用户需求的查询图像(query),通过分析视觉内容,在一个很大的图像库(gallery)中搜索语义上匹配的或者相似的图像。CBIR是计算机视觉和多媒体领域的一个长期研究课题。随着目前图像和视频数据的数量呈指数级增长,开发适当的信息系统,有效地管理如此庞大的图像集是至关重要的,而图像搜索是其中必不可少的技术之一。因此,CBIR的应用潜力几乎是无限的,如人再识别、遥感、医学图像搜索、在线购物推荐等等。
CBIR方法的一个宽泛的分类方法是依赖于检索级别的,即:实例级别和种类级别。在实例级别的图像检索中,给出一个特定对象或者场景(如:埃菲尔铁塔)的查询图像,而目标是找出那些可能是在不同条件下获取的与之具有相同对象或者场景的图像。相反地,种类级别的图像检索则是找出与查询图像同一类的图像(如:猫、狗等)。实例级别的检索更具挑战性且更有前途,因为其满足需要应用中对特定目标检索的需求。注意,我们将本文的重点限制在实例级图像检索上,在下文如果没有进一步说明,“图像检索”和“实例检索”被认为是等价的。
找到想要的图像可能需要在成千上万、数百万甚至数十亿的图像中进行搜索。因此,有效地搜索和准确地搜索同样重要。为在大规模图像集中进行有效且高效的检索,“紧凑且丰富的特征表示”就成了CBIR的核心。
在过去的20年里,图像特征表示取得了显著的进展,主要包括两个重要的阶段:特征工程和特征学习(特别是深度学习)。在特征工程时代(即前深度学习时代),该领域被里程碑式的手工工程特征描述符所主导,如尺度不变特征变换(SIFT)。特征学习阶段,也即深度学习时代是从2012年的人工神经网络(特别是突破性的ImageNet和深度卷积神经网络 AlexNet)开始的。从那时起,深度学习影响了很多研究领域,因为DCNN可以直接从数据学习具有多层抽象的强大特征表示。深度学习技术已经引起了人们的极大关注,并在许多计算机视觉任务中带来了重大突破,如图像分类、目标检测、图像检索等。
本文主要专注于深度学习时代的图像检索,与其他综述的对比如表1:
深度学习图像检索由图1所示的几个关键阶段组成,为了提高检索精度和效率,也有很多专注于其中一个或多个阶段的方法被提出。本篇综述,概括了这些方法的整体细节,包括特征融合方法和网络微调策略等,以下几个问题一直在驱动该领域的研究:
自AlexNet在图像分类上大获成功之后,DCNNS在图像检索上的应用得以大量探索,大致遵循了上面所提到的三个方面。DCNNs的方法分为:(1)现成的模型;(2)图2所示的微调模型;(3)有效的特征。DCNN是现成的还是微调的取决于DCNN参数是更新的还是基于固定参数的。至于如何有效的利用这些特征,研究人员已经提出了很多编码和聚合的方法,如:R-MAC、CroW、SPoC等。
近期关于改进图像检索的进展可以分为网络级别和特征级别,详细的划分如图3所示:网络级别包括网络结构的改进和网络微调策略;特征级别包括特征提取和特征增强的方法。大体上,本综述将包括以下四个内容。
由于使用了堆叠的线性滤波器(如卷积)和非线性的激活函数(ReLU等),不同深度的深度神经网络可以获取不同级别的特征。更深的网络带有更多的层,提供了更强大的学习能力,因此可以提取高级别的、抽象的语义级别的特征。还可以结合并行的多个尺度特征,如GoogleNet中的Inception模块。
全连接层和卷积层的神经元具有不同的感受野,因此特征提取包括了三种方式:从卷积层提取局部特征、从全连接层提取全局特征以及两种方式的融合,融合方式包括层级别和模型级别。深度特征可以是从整幅图像提取的,也可以是从图像patches中提取的,分别对应了单通(single pass)、多通(multiple pass)前馈机制。
特征增强的目的是提高深度特征的区别能力。可以直接地在训练网络的同时进行特征聚合,也可以利用特征嵌入方法,如BoW、VLAD、FV等,将局部特征嵌入到全局特征中。这些方法可以通过深度网络分别(codebook-based)或者联合(codebook-free)训练。进一步地,可以通过hash方法将真值特征编码到二值特征,以提高检索效率。特征增强策略可以显著地影响图像检索的效率。
在源数据集撒花姑娘预训练的图像分类深度网络,能够迁移到新的数据集上进行检索任务。然而,检索性能会受到两个数据集间的域迁移影响。因此,有必要对深度网络进行微调,使其适应于特定任务,这可以通过监督微调的方法来实现。然而在大多数情况下,图像的标注是费时且困难的,因此有必要开发无监督的网络微调方法。
深度学习在学习强有力的特征方面是成功的,不过还是有几个方面存在挑战:
关于这些挑战,下面分别进行简单介绍:
语义鸿沟(gap)描述了在任何应用中都存在的一种现象:人类高级概念和由图像直接衍生的低级特征之间存在着不同。为了更好的保存图像的相似性,从而人们对学习高级的、语义级别的深度特征非常感兴趣。再过去的几年里,图像检索领域提出了多种学习策略,如特征融合、特征增强的方法。然而,该领域仍然是一个需要努力攻克的挑战。
数据集的巨大数量和多样性导致了现有检索系统不能适应域迁移。近期的一些深度网络一开始都是为了图像分类而训练,这给特征提取带来了挑战。因为分类模型得到的特征缺少伸缩性(PS:这里理解的伸缩性,应该是特征的适用范围,也即分类特征直接用于其他任务可能不太合适),且在检索任务上性能较差。因此,要解决这个问题,在检索数据集上对深度网络进行微调就变得至关重要。当前的一个痛点是:检索数据集的增加,同时增大了数据标注的难度。这使得无监督的微调方法得以优先发展。
为了得到更高的精度,深度特征通常是高维的且包含了语义级别的信息,故而,这种高精度往往以牺牲效率为代价。特征增强方法,如hash学习,就是一种解决方案。然而,hash学习需要认真考虑损失函数的设计,如量化损失,以获取高准确率的优化编码。
DCNNs的分层架构及其海量参数,使得其在成功地完成了各种各样的计算机视觉任务。对于图像检索,主要有四种模型作为特征提取的网络,包括:AlexNet、VGG、GoogleNet、ResNet。
AlexNet是首个在ILSVRC 2012上显著超越传统方法的DCNN,其包括了5个卷积层、3个全连接层。在训练和测试阶段,输入图像通常缩放到固定尺寸。
受AlexNet的启发,VGGNet有着两个流行版本:VGG-16、VGG-19,分别包含了13、16个卷积层,且每个卷积层的卷积核都是3*3。VGGNet采用多尺度的方式进行训练,对训练图像进行裁剪和缩放,这提高了检索任务的特征不变性。
与AlexNet、VGG相比,GoogleNet是一个更深、更宽,具有22层但参数量却更少的网络,这使其具有更高的学习效率。GoogleNet重复使用多个Inception模块,每个Inception模块由四个分支组成,使用5*5、3*3、1*1三种卷积核。每个分支的输出在空间上连接起来,组成一个Inception模块的最终输出。已经证明,更深层次的架构有利于学习更高层次的抽象特性,以减少语义差距。
最后一个ResNet,添加了更多卷积层,以提取更抽象的特征。在卷积层上增加了跳跃连接,以解决训练过程中的梯度消失问题。
DCNN架构在过去几年里发展迅猛,本文重点介绍了以基于DCNN的主干进行图像检索的相关技术,包括特征融合、特征增强、网络微调等。
由于DCNN模型通常比较大,其往往需要在特别大的数据集上进行训练,而那些可用的大规模数据集都是用于图像分类和识别的。一个可能的策略是:针对分类和识别训练出深度模型,然后直接将其保存为现成的(off-the-shelf)特征提取器来进行图像检索任务。也即:可以将分类模型的预训练权重冻结,然后在此基础上进行图像检索。
这种方法有一些限制,如:深度特征可能不会有余手工特征。根本问题在于,两个任务间存在着模型迁移或者域变化的问题,也就是说,在分类任务上训练的模型不一定能提取出非常适合图像检索的特征。特别的,只要特征在分类边界内,就可以做出分类决策,因此当特征匹配比最终的分类概率更重要的时候,这些分类模型中的层不足以胜任检索任务。本节将总结一些为了提高特征表示而研究的策略,特别是在特征提取/融合以及特征增强方面。
a. Single Feedforward Pass Methods
单前馈方法将整个图像送入已有的模型中来提取特征,该方面相当高效,因为图像只喂给模型一次。对于这些方法,全连接层和卷积层都可用作特征提取器。
全连接层具有全局感受野,当其提取的特征经过标准化和降维之后,就可以直接用于相似度计算,而不用进一步处理,也不用考虑一些高效的索引策略。
不过,使用全连接层会缺乏几何不变性以及空间信息,因此,可以考虑使用最后一个卷积层来代替。使用卷积特征的研究重点是提高其判别能力,其代表性策略如图4所示。例如,一个方向是:将feature maps中的不同区域视为不同的子向量,因此将所有feature maps中的子向量联合起来就可以表示整个图像。
b. Multiple Feedforward Pass Methods
与单通方案相比多通方法更耗费时间,因为一幅图像会被分解为多个patches,然后每个patch都要喂给网络,最后才能编码为一个全局特征。
多通策略能够达到更高的检索精度,因为其表征是由两个阶段生成的:patch检测、patch描述。使用滑窗或者空间金字塔模型,可以获取多尺度图像patches,如图5所示。举个例子:Xu等人在一幅图像中,随机采样得到不同尺度、不同位置的窗口,然后计算“边缘度”得分来表示窗口内的边缘密度。
这些patch检测方法在大规模数据集上的检索效率非常低,因为不相干的patches也会被喂到网络中。因此,有必要对patch进行分析。例如,Cao等人提出将图像patch合并成具有不同超参数的更大区域,然后将超参数的选择视为一个以查询特征与候选特征相似性最大化为目标优化问题。
region proposal方法在处理图像目标时,引入了一个目的程度,而不是随机或密集的生成多尺度图像patches。 Region proposals可以利用目标检测器生成,如选择性搜索、边缘盒等。除了使用目标检测器外, Region proposals也可以通过一个深度网络来学习得到,如RPNs、卷积核网络(CKNs),然后在端到端的微调脚本中利用这些深度网络来学习相似性。
a. 从全连接层提取特征
使用全连接层作为特征提取器是比较直截了当的方法。使用PCA降维以及标准化之后,图像的相似性就可以被度量了。不过,只用全连接层可能会限制检索的精度,Jun等人连接了多个全连接层的特征,而Song等人指出在第一个完全连接的层和最后一层之间建立直接连接可以实现由粗到细的提升。
如前所述,全连接层具有全局感受野,其中每个神经元都和前一层所有神经元相连接,这一特性导致了图像检索中的两个明显限制:缺乏空间信息以及缺乏几何不变性。
对于第一个限制,研究人员从网络输入着手解决,也即:使用多前馈方法。和将整幅图像作为输入相比,这种方式获取的特征更具区别力。
对于第二个限制,缺乏几何不变性会影响图像变换(如:裁剪、遮挡)时的鲁棒性。关于这一点,也有很多研究提出使用中间卷积层来解决。
b. 从卷积层提取特征
卷积层(通常是最后一层)的特征维持了更多结构细节,这对实力级别的检索尤为有利。卷积层中的神经元仅和输入feature map中的一个局部区域相连,这种较小的感受野确保了所生成的特征包含更多局部结构信息,而且对于图像变换(像裁剪、遮挡)更为鲁棒。通常,卷积特征经过池化之后其鲁棒性更强。
卷积层对空间信息的安排较为合理,且能产生局部自适应的特征。很多像检索方法都是使用的卷积特征,如:Razavian等人第一次尝试在现有DCNN模型生成的feature maps之后应用空间MaxPooling、Babenko等人提出sum-pooling卷积特征 (SPoC)以获取经过高斯中心先验预处理之后的紧凑描述子、Ng等人探索了在feature maps上不同位置激活值之间的相关性从而改善了最终的特征描述子、Kulkarni等人使用BoW模型对多个卷积特征分别间嵌入映射、Yue等人利用VLAD代替BoW且首次将局部特征编码进VLAD特征。这些思想启发了另一个里程碑式的研究,其首次将VLAD作为一个层附加到最后一个卷积层之后,而这种附加的层是可以通过反向传播端到端训练的。
a. 层级融合
融合来自不同层的特征是为了在特征提取器中融合不同的特征属性。融合同一个模型的多个全连接层的特征是有可能的,如:Yu等人探索了不同的方法来融合来自不同全连接层的激活值,并引入性能最佳的Pi融合策略来聚合具有不同平衡权重的特征、Jun等人在ResNet主干网的顶部并行构建多个全连接层,然后将这些层的全局特征连接起来,得到组合的全局特征。
来自全连接层的特征(全局特征)和来自卷积层的特征(局部特征)在度量语义相似度时可以相互补充,在一定程度上保证了检索性能。
全局特征和局部特征可以直接连接起来,不过在连接之前,需要使用滑窗或者RPNs对卷积特征进行过滤。基于池化的方法也可用于特征融合,如:Li等人提出了一种多层无阶融合(MOF)方法来进行图像检索,该方法是受到多层无阶池化的启发。然而,局部特征不能在区分微妙特征的不同时扮演决定性角色,因为局部特征和全局特征在这里是等同对待的。针对这个限制,Yu等人提出利用映射函数来充分利用局部特征,然后用于细化返回的排序列表。在他们的工作中,指数映射函数是利用卷积层和全连接层互补优势的关键。类似地,Cao等人将全局和局部描述子统一起来用于两阶段图像检索,仔细选择局部特征来细化使用全局特征获得的结果。
考虑到特征提取的差异性,有必要引入一种融合方案来探讨哪一层组合更适合融合。例如,Chatfield等人演示了融合卷积层和全连接层的方法比只融合卷积层的方法性能更好。最后,将两个卷积层与一个全连接层融合得到了最佳的性能。
b. 模型级融合
结合不同模型的特征是可行的;这种融合专注于模型的互补性以提高性能,分类两类:intra-model(模型内)、inter-model(模型间)。
通常来说,针对intra-model融合方式,建议使用多个具有相似性或者结构上高度兼容的模型,而inter-model融合方式则使用结构上具有很大不同的模型。例如,在AlexNet中广泛使用的dropout策略可以看作是模型内融合:不同的神经元在两个全连接层之间随机连接,每个epoch可以看作是不同模型的组合。第二个例子,Simonyan等人提出了一种卷积融合策略,融合了VGG-16和VGG-19来改进VGG中特征学习能力。这种intra-model融合策略,使其在图像分类中比较单一网络,top-5错误率降低了2.7%。类似的,Liu等人混合了不同的VGG变种来强化细粒度车辆检索的学习。Ding等人提出了一种选择性深度集成框架,将ResNet-26和ResNet-50结合起来,提高了细粒度实例检索的准确性。为了关注图像中物体的不同部分,Kim等人训练了包含了三个注意力模块的集合来学习具有不同多样性的特征,每个模块都基于GoogleNet中不同的Inception块。
鉴于不同的深层网络有不同的接受域,模型间融合可认为是一种结合不同特征的方法。例如,two-stream attention network提出了一种图像检索的方式:mainstream网络使用VGG-16做语义预测,辅助stream网络使用DeepFixNet做注意力map的预测。类似的,考虑到模型间融合的重要性和必要性,以弥合中层与高层feature直接的差距,Liu、Zhang等人结合VGG-19和AlexNet来学习特征的合并,而Ozaki等人制作一个集成来连接来自六个不同模型的描述符,以提高检索性能。为了说明模型集成中不同参数选择的影响,Xuan等人结合了ResNet和Inception V1进行检索,主要关注嵌入的大小和嵌入特征的数量。
模型间和模型内融合与模型选择有关,已有一些方法来确定如何结合两个模型的特征。直接从候选模型中融合所有类型的特征,然后根据连接的特征学习一个度量,这是一种“早期融合”策略。或者,也可以对每个模型的特征分别学习最优度量,然后为最终的检索排名统一组合这些度量,这是一种“后期融合”策略。
讨论:层级融合与模型级融合的条件是所涉及的组件(层或整个网络)具有不同的特征描述能力。对于这两种融合策略,关键问题是什么特征是最好的组合?在现有的深度模型的基础上,已经对回答这个问题进行了一些探索。例如,Xuan等说明了组合不同数量的特征和不同大小的集合的效果。Chen等人分析了图像分类和目标检测模型中嵌入的特征在图像检索方面的性能。他们研究了不同现有模型的特征嵌入的区分,这在一定程度上含蓄地指导模型选择时进行模型间层次融合的特征学习。
特征增强方法用于聚合或者嵌入特征,以提升深度特征的判别力。关于特征聚合,sum/average Pooling和MaxPooling是两种常用与卷积feature maps上的方法。实际使用中,sum/average Pooling的区别性较低,因为它考虑了所有来自卷积层的激活输出,因此,其削弱了高激活特征。相反的,MaxPooling特别适合于具有低激活概率的稀疏特征。如果输出的特征映射不再稀疏,那么MaxPooling可能不如sum/average Pooling。
卷积特征可通过池化来直接聚合,产生全局特征。例如,Raza- vian等人在卷积特征上应用最大池化进行检索;Babenko等人利用高斯加权方案的和池化来聚合卷积特征(即SPoC)。注意,这个操作之后通常是L2归一化和PCA降维。
作为整体方法的另一种选择,也可以对feature map某一块区域进行pool,如R-MAC所做的那样。此外,在最后一个卷积层中使用池化策略通常比其他较浅的卷积层甚至全连接层获得更高的精度。
除了直接池化、区域池化以外,还可以将卷积特征嵌入到高位空间,以获取紧凑的特征。广泛使用的嵌入方法有:BoW、VLAD、FV。嵌入特征可通过PCA降维。注意到,BoW和VLAD可通过其他度量方法进行扩展,如汉明距离。这里,我们以欧氏距离度量为例,简单描述下嵌入方法的原理。
BoW是一个常用的编码方法,其生成一个稀疏向量。令表示局部特征集,其中没一个特征都是D维。BoW需要一个预定义的codebook ,具有K个聚类中心,用于对局部特征集进行聚类,将每个特征描述符映射到最近的一个中心上。对于每个聚类中心,可以计数和归一化实例个数:
因此,BoW考虑到了属于每个codebook的特征描述子数量,然后,所有映射向量合并后的BoW表示为:
(3)
BoW表示是分配给每个视觉元素的局部描述符数量的直方图,因此它的维数等于聚类个数。该方法对于局部描述子,如卷积特征,是比较易于实现的。然而,嵌入向量是高维且稀疏的,这在效率方面不适用于大规模数据集。
VLAD存储的是每个视觉元素的残差之和,具体的,类似于BoW,其生成K个视觉元素中心,然后每个特征分配到相邻的中心,并就散其差异( - ):
其中,是公式(2)的定义。最终,VLAD表示就由所有中心的残差堆叠而成:
VLAD捕获一阶特征统计数据,即( - )。与BoW类似,VLAD的性能受簇数的影响,因此较大的质心产生较大的难以索引的向量。对于图像检索,Ng等人首次从最后一个卷积层将feature map嵌入到VLAD表示中,并得到了比BoW更高的效率。
FV方法通过编码一阶和二阶统计量来扩展BoW。FV通过一个高斯混合模型对局部描述子进行聚类,生成一个字典,分别表示权重、均值向量、第k个高斯分量的协方差矩阵。协方差矩阵可以通过只保留对角元素来简化,也即:。对于每个局部特征,GMM表示为:
其中,。所有局部特征都分配给字典中的每个成分K,计算为:
(7)
FV表示则通过组合K个成分的向量而得:
FV表示从生成过程中定义一个内核,并捕获比BoW和VLAD更多的统计数据。FV向量不会显著增加计算成本,但需要更多的内存。在没有内存控制的情况下使用FV可能会导致性能不佳。
讨论:传统上, sum pooling 和max pooling直接插入到深度网络中,整个模型以端到端的方式使用,而包括BoW、VLAD和FV在内的嵌入方法最初是用预先定义的词汇分别进行训练的。对于这三种方法,在选择其中一种嵌入深度特征之前,需要注意它们的属性。例如, BoW和VLAD是在刚性欧几里得空间中计算的,在刚性欧几里得空间中,其性能与质心的数量密切相关。FV嵌入方法可以捕获比BoW或VLAD更高阶的统计量,从而提高了特征增强的有效性,但牺牲了较高的内存代价。此外,当使用这些方法中的任何一种时,都需要将它们集成为一个深层网络的“层”,以保证训练和测试的效率。例如,将VLAD方法集成到深度网络中,利用每个空间列特征通过k-means构造聚类。这种思想就产生了另一种方法——NetVLAD,这时深度网络需使用VLAD向量进行微调。
注意力机制的核心在于通过计算一个注意力map,来强调最相关的特征,并避免不相关特征的干扰。获取注意力map的方法可分为两类:无参数、有参数,如图6所示,主要的区别在于注意图中的重要性权重是否可学习:
无参数化加权是一种直接提取特征重要性的方法,对应的注意力map可以通过逐通道或空间池化来获取,如图6(a、b)。对于图6(b)所示的空间池化,Babenko等人利用高斯中心先验方案对卷积层在聚合前的激活进行空间加权;Kalantidis等人提出了一种更有效的对feature maps进行权重和池化的CroW方法。这些空间方法只关注不同空间位置激活的权重,而没有考虑这些激活之间的关系。相反,Ng等人探索了卷积特征地图上不同空间位置激活之间的相关性。除了空间方向的注意机制,图6(a)的通道方向加权方法也是流行的非参数注意机制。Xu等人[30]对加权特征地图进行排序,构建“概率proposals”,进一步选择区域特征。类似地,Jimenez等人结合CroW和R-MAC提出类激活地图(Classes Activation Maps, CAM)来为每个类加权特征地图。Qi等介绍截断空间加权FV (TSWVF)以增强Fisher向量的表示。
注意力map也可以从深度网络学习,如图6(c,d)所示,其中输入可以是图像patches,也可以是之前卷积层的feature maps。参数化注意力方法具有更好的适应性,且通常在有监督度量学习中使用。例如,Li等人提出了堆叠的全连接层来学习多尺度图像斑块的注意力模型。类似地,Noh等人设计了一个带有软加输出层的2层CNN来计算表明不同图像区域重要性的分数。受R-MAC的启发,Kim等人使用预先训练的ResNet101使用多尺度feature map来训练上下文感知的注意力网络。
除了使用feature maps作为输入,整个图像可以用来学习特征的重要性,为此需要特定的网络。例如,Mohedano探索了不同的显著性模型,包括DeepFixNet和Saliency Attentive Model (SAM) ,以学习输入图像的显著区域。类似地,Yang等人引入了一种用于图像检索的双流网络,其中辅助stream——DeepFixNet用于预测注意力maps。
简而言之,注意力机制为深度网络提供了突出给定图像中最重要区域的能力,这种能力在计算机视觉中广泛使用。特别是对于图像检索,注意机制可以与监督度量学习相结合。
从深度网络提取的真值特征通常是高维的,因此其检索效率通常不高。因此,需要将深度特征转换为更紧凑的编码。哈希算法广泛用于大规模图像检索,是因为其计算和存储上的高效性。
哈希函数可以作为深度网络的附加层,因此哈希编码可与深度网络一同被训练与优化。在哈希函数的训练期间,相似图像的哈希编码被嵌入地尽可能紧凑,而不相似图像的哈希编码则尽可能分离。对于图像x,一个二值特征哈希函数h(·)可表示为:
(9)
然后,一幅图像就可以通过生成的哈希编码来表示。由于哈希码是不可微的,它们的优化是困难的,所以h(·)可以通过使用tanh或sigmoid函数被放宽为可微的。
在对实值特征进行二值化时,(1)保持图像的相似性(2)提高哈希码质量至关重要,这两个方面是最大化检索精度的哈希算法的核心。
a. 维持图像相似性的哈希函数
保持相似度是为了减少实值特征和对应的哈希码之间的不一致,为此采用了各种策略。
损失函数的设计对相似性保持有重要影响,包括有监督和无监督两种方法。有了类标签,许多损失函数被设计用来学习汉明空间中的哈希码。作为一种简单的方法,可以优化二进制代码和它们的监督标签计算矩阵之间的差异。其他研究用中心向量来规范哈希码,例如设计了类特定的中心丢失,以鼓励图像的哈希码靠近相应的中心,减少类内变化。类似的,Kang等人[106]引入了最大边际t分布损失,将更多类似的数据集中到一种以查询项为中心的汉明球,这样对球内的数据点施加降低了的惩罚,该方法在监督标签可能不准确时提高哈希码的鲁棒性。此外,度量学习,包括Siamese loss、triple loss以及对学习,以保持语义相似性,而不相似的pairs则将距离保持在一个边界内。在无监督哈希学习中,捕获样本之间的一些相关性是非常重要的,这已经通过使用贝叶斯分类器、KNN图、k-means算法以及像AutoEncoder、GAN等网络结构来实现了。
除了损失函数之外,设计用于学习的深度网络框架也很重要。例如, Long等人在两个数据集上应用了未共享权重的cnn,其中一个triple损失和一个对抗损失被用来处理域转移。考虑到标签信息的缺乏,Cao等人提出了Pair Conditional WGAN是Wasserstein生成对抗网络(WGAN)的一种新的扩展,它可以根据相似度信息生成更多的样本。
b. 提升哈希函数质量
提高哈希函数质量的目的是使二进制码均匀分布,即最大限度地填充和使用哈希码空间,通常是在位不相关和位平衡的基础上进行。位不相关意味着不同的位尽可能独立,信息冗余很少,因此给定的位集可以在给定的编码长度内聚合更多的信息。原则上,比特不相关可以表示为,其中I为独立矩阵,尺寸为K。例如,可以通过正则化术语,如正交性和互信息来激励它。位平衡意味着每个位应该有50%的机会是+1或-1,从而最大化编码方差和信息。数学上,这个条件通过使用这个正则项b·1 = 0来约束,其中1是一个所有元素都等于1的K维向量。
在第3节,介绍了仅将现成的模型作为特征提取器来进行特征融合与增强。然而,在大多案例中,即使使用了上面讨论的一些策略,所得到的深度特征仍不能达到很高的准确率。为了使模型更具扩展性以及使检索更为有效,通常会进行网络微调,也即:更新预训练好的参数。不过,微调和第3节的特征处理方法并不矛盾,实际上,这些策略是互补的,都可以作为网络微调的一部分。
本节将专注于有监督和无监督的微调方法,以更新网络参数。
当一个新数据集的类标签可用时,最好从一个以前训练过的DCNN开始,在一个单独的数据集上训练,骨干DCNN通常从AlexNet、VGG、GoogLeNet或ResNet中选择一个。然后,如图7(a)所示,该DCNN就会在交叉熵损失的基础上通过优化参数进行微调:
这里的和是GT和预测结果的逻辑值,c为总类别数。
基于分类的微调方法提高了模型对新数据集的适应性,在一定程度上缓解了图像检索中模型迁移的问题。然而,基于分类的监督学习仍有改进的空间。一方面,微调网络对类间差异具有较强的鲁棒性,但在学习区分特定物体的类内差异方面存在一定的困难; 另一方面,类标签注释对于一些实际应用程序来说是耗时且劳动密集的。为此,将基于验证的微调方法与分类方法相结合,可以进一步提高网络容量。
通过指示相似和不相似对的亲和信息,基于验证的微调方法学习一个最优度量,该度量可以最小化或最大化对的距离,以验证和保持它们的相似性。与基于分类的学习相比,基于验证的学习既关注类间样本,也关注类内样本。基于验证的学习涉及两种类型的信息:
这些基于验证的学习方法被分为全局监督方法(图7(c,d))和局部监督方法(图7(g,h)),其中前者通过满足所有约束来学习关于全局特征的度量,而后者只关注局部特征,只需满足给定的局部限制(例如region proposals)。
具体来说,设一个mini batch中存在一个triplet集,其中表示表示相似的对,而表示不相似的对。为参数为的网络f(·)从图像中提取的特征,我们可以将每个相似或不相似对的亲和信息表示为:
(11)
a. 用变换矩阵细化
学习输入样本之间的相似性可以通过优化一个线性变换矩阵的权值来实现。它利用变换矩阵将连接的特征对转换为公共的潜在空间,其中d为特征维度。这些对的相似性得分可以通过一个子网络来预测,换句话说,子网络预测了特征对的相似程度。给出特征对的亲和信息,二进制标签0和1代表了相似或不相似对。函数的训练可通过回归损失来进行:
(12)
其中,可以使cosine函数。深度网络通过优化回归损失和更新变换矩阵W,使相似对的相似度最大化,不相似对的相似度最小化。值得注意的是,在优化W时,深度模型中预先存储的参数被冻结。这种方法如图7(b)所示,其中两个dcnn的权值不一定是共享的。
b. 使用 Siamese网络进行微调
Siamese网络代表了用于微调的度量学习的重要选项,如图7(c)所示。它是一个由两个分支组成的结构,它们在各个层之间共享相同的权重。Siamese网络的输入是成对的,由相似性的图像对组成。Siamese损失函数,如图8(a)所示,可以公式化为:
(13)
标准的Siamese网络和Siamese损失是用来来学习不同场景下语义相关样本之间的相似性的。例如,Simo等引入了Siamese网络来学习成对图像补丁之间的相似性,该网络更关注图像中特定的区域。Ong等人利用Siamese网络学习图像特征,然后输入Fisher向量模型进一步编码。此外,Siamese网络还可以应用于其中的哈希学习,只需将公式13中的欧几里德距离D(·)替换为汉明距离。
c. 使用Triplet网络进行微调
Triplet网络同时优化相似和不相似的对,如图7(d)和图8(b)所示,普通Triplet网络采用ranking loss进行训练:
(14)
这表明,在一定的边界m上,负anchor对之间的距离应该大于正anchor对之间的距离。Triplet损失被用于学习细粒度图像特征和用于约束哈希码学习。为了专注于特定的区域或对象,相关工作研究了局部监督度量学习。在这些方法中,使用RPN提取部分区域或对象,然后将RPN插入到深度网络中,进行端到端训练,如图7(g)所示,其中Faster R-CNN针对实例搜索进行了微调。RPNs生成回归的目标包围盒坐标,并通过多类分类损失进行训练。最终的网络通过RoI Pooling提取更好的区域特征,并为实例检索执行空间排序。
RPNs使得深度模型能够为特定的实例或目标学习区域化特征。RPNs在Triplet网络中的应用如图7(h)所示。在训练过程中,根据感兴趣的ground-truth区域,除了Triplet损失,回归损失(RPNs loss)也可用来最小化回归的边界框。在某些情况下,联合训练RPN损失和三元组损失会导致不稳定的结果。有方法是先用刚性网格训练CNN生成R-MAC,然后固定卷积层中的参数,然后训练rpn替换刚性网格。
注意机制还可以与度量学习相结合进行微调,如图7(e)所示,其中注意模块通常是端到端可训练的,并将卷积特征映射作为输入。例如Song等人引入了卷积注意层来挖掘空间语义信息,突出显示图像中的区域,显著提高了图像检索中类间和类内特征的分辨能力。
最近有研究联合优化了三重损失和分类损失函数,如图7(f)所示。对于类似的实例,只使用三元组约束的微调模型可能具有较低的分类精度,这是因为分类损失并不预测类内相似性,而是在不同的层次上定位相关图像。考虑到这些因素,将三元组约束和分类损失联合优化是很自然的选择。整体联合函数的表达式为:
(15)
其中交叉熵损失(CE损失)定义于式(10),triplet损失定义于式(14)中;α和β是超参数的平衡,以调整两个损失函数。
式13中Siamese损失的一个隐性缺点是,它可能会惩罚相似的图像对,即使这些图像对之间的边界很小或为零,这可能会降低性能,因为约束太强且不平衡。同时,当图像包含复杂内容或场景时,很难将相似对的特征映射到同一点。为了解决这一限制,Cao等人采用了双边界Siamese损失,如图8(c)所示,以放松对相似对的惩罚。具体来说,相似对之间的阈值被设置为边界m1而不是零。在这种情况下,原始的单一边际连体亏损被重新表述为:
(16)
式中,m1 >0和m2 >0分别为影响相似对和不相似对的边距。因此,双边际Siamese损失仅在相似对的距离大于m1时起作用。当使用双边缘Siamese损失时,检索的mAP度量得到了改进。
讨论:
大多数基于验证的监督学习方法依赖于基本的Siamese或triplet网络。后续研究的重点是探索进一步提高其鲁棒特征相似度估计能力的方法。一般来说,网络结构、损失函数和样本选择是验证方法成功的重要因素。
最近人们提出了各种各样的损失函数,其中一些使用更多样本或者额外约束。例如,Chen等人将Quadruplet样本用于anchor、正例、负例和相似图像之间的约束关系。N-pairs损失和提升的结构损失甚至对所有图像都定义了约束,并在小批量中利用样本的结构信息。
采样策略对特征学习和训练收敛速度有很大影响。迄今为止,已经引入了许多抽样策略,如聚类,其中12种在图8中有详细说明。除了在小批处理中采样外,其他工作甚至从整个数据集中挖掘小批处理之外的样本。由于数据多样性较大,训练信息更丰富,这可能有利于稳定优化。例如,Wang等人提出了一种跨batch记忆(XBM)机制,它记忆过去迭代的嵌入,允许模型跨多个mini-batches收集足够的难负例对。Harwood等提供了一个名为智能挖掘的框架,从整个训练集中收集难例,当使用更多的样本对网络进行微调时,实现更好的性能是合理的。然而,训练期间可能增加的计算成本是一个需要解决的核心问题。
使用listwise AP损失直接优化平均精度(AP)指标是同时考虑大量图像的一种方法。在这种情况下进行训练已经被证明可以提高检索性能,然而AP作为度量,通常是不可微的和非光滑的。为了直接优化AP损失,需要使用soft-binning近似或sigmoid函数等方法放宽AP度量。
监督网络的微调在没有足够的监督信息时变得不可行,因为这样的信息是昂贵或不可用的。鉴于这些限制,无监督的微调图像检索方法是非常必要的,但研究较少。
对于无监督的微调,两个大的方向是通过流形学习挖掘特征之间的相关性,以获得排序信息,以及设计新的无监督框架(例如自动编码器),在下文将逐个讨论。
流形学习侧重于捕捉流形结构上的内在关联,挖掘或推导相关性,如图9所示。提取的原始特征之间的初始相似点被用来构造一个亲和矩阵,然后用流形学习对其进行重新评估和更新。根据更新的亲和矩阵中的流形相似性,选择正样本和难负样本进行度量学习,使用基于验证的损失函数,如pair loss、triplet loss或N-pair loss等。注意,这与上述基于验证的微调方法不同,在上述方法中,根据给定的亲和信息从有序数据集中显式地选择难正例和负例。
捕获深度特征流形的几何形状是很重要的,通常涉及两个步骤,称为扩散过程。首先,亲和矩阵(图9)被解释为一个加权的kNN图,其中每个向量用一个节点表示,而边则通过两个连通节点逐对的亲和关系来定义。然后,通过在图中扩散相似值,在所有其他元素的背景下重新评估成对的亲和力。最近提出了一些新的相似扩散方法,如正则化扩散过程(RDP)和区域扩散机制。
大多数现有的算法遵循类似的原理(例如随机漫步)。方法之间的区别主要体现在三个方面:
扩散过程算法对于无监督的微调是必不可少的,通过初始化(例如区域相似度)改进图像的相似度,可以保证更好的图像相似度或高阶信息。然而,由于迭代方案,扩散过程需要更多的计算和搜索,这一局限性不能满足图像检索的效率要求。为了缓解这种情况,Nicolas等人在每个小批处理中应用随机游走的封闭收敛解来估计流形相似度,而不是运行多次迭代。一些研究用扩散网络代替kNN图上的扩散过程,这是由图卷积网络推导出来的。他们的端到端框架允许在训练和测试阶段进行有效的计算。
一旦学习了流形空间,就可以根据flodwarshall算法计算测地距离或比较集差来挖掘样本,将所选样本被送入深度网络进行微调。
也可以探索邻近信息,聚类在欧几里德空间里,将训练集分成不同的组。例如,Tzelepi等人探索了完全无人监督的微调方法,其通过聚类,使用kNN算法计算k个最接近的特征,然后微调,使每个查询特征和它的k个最接近的特征之间的平方距离最小化。第二个例子是Radenovic等人使用Structure-from-Motion (SfM)进行聚类,探索样本重建,使用triplet 损失选择图像。聚类方法依赖于欧几里德距离,难以揭示对象之间的内在关系。
自动编码器是一种神经网络,其目的是重构其输出尽可能接近其输入。原则上,输入图像被编码为潜在空间的特征,然后使用解码器将这些特征重建为原始输入图像。编码器和解码器都可以是卷积神经网络。
在AutoEncoder中,存在不同的重建级别(例如像素级或实例级)。这些不同的重构影响AutoEncoder的有效性,因为像素级的重构可能会通过关注重构图像中的琐碎变化而降低编码器的学习特征,因为自然图像通常包含位置、颜色和姿势等许多细节因素。
AutoEncoder是支持其他方法的可选框架,例如非监督哈希学习的实现。除了重建损失,挖掘特征相关性是非常必要的,以探索其他目标函数。这通常是通过使用聚类算法实现的,因为现有网络的特征最初包含丰富的语义信息,以保持其语义结构。例如,Gu等人引入了一种改进的基于k-means聚类算法的交叉熵,其中深度模型学习迭代聚类并生成二进制码,同时保留输入数据分布的结构。Zhou等人和Deng等人提出了一种自学哈希算法,使用kNN图构造来生成伪标签,这些标签用于分析和指导网络训练。其他技术如Bayes Nets也被用于预测样本相似度,如Yang等人的工作中,采用Bayes最优分类器为具有较高相似概率的数据对分配语义相似标签。
AutoEncoders还可以集成到其他框架工作中,如图卷积网络和目标检测模型,以更好地学习二进制潜在变量。例如,Shen等人结合了图卷积网络,从AutoEncoder学习哈希码。该方法利用编码器的二值潜变量计算图学习的相似度矩阵。生成式对抗网络(GANs)也在无监督哈希框架。gan中的对抗性损失是经典的使用目标,通过优化这种损失,由哈希码生成的合成图像逐渐保持与原始图像的语义相似度一致。此外,像素级和特征级内容丢失被用来提高生成的图像质量。在gan中还使用了其他一些损耗来增强哈希码学习。例如,使用距离匹配正则化器传播高维实值特征和低维散列码之间的相关性,或两个旨在提高二进制码独立性的损失函数。总之,使用gan进行无监督哈希学习是很有前途的,但仍有很大的探索空间。
为了证明方法的有效性,我们选择了四个常用的数据集进行性能比较: Holidays, Oxford-5k (including the extended Oxford-105k), Paris6k (including the extended Paris-106k) 以及 UKBench。
UKBench(UKB):由10200个物体的图像组成。整个数据集有2550组图像,每组有4张来自不同视点或光照条件下的相同物体的图像。数据集中的每个图像都可以用作查询图像。
Holidays:由1491张图片收集自个人假日相册,大多数图像都与场景相关。该数据集由500组相似的图像组成,每组有一个查询图像。在每一组中,第一个图像用作性能评估的查询图像。
Oxford-5k:由11座牛津建筑的5062幅图像组成。每个图像由5个手绘边界框表示,总共有55个查询感兴趣区域(RoI)。另外添加了10万张不相交的干扰物图像,获得Oxford-100k。
Paris-6k:包括从Flickr收集的6412张图片。它被分为12组具体的巴黎建筑。该数据集有500个用于评估的查询图像,以及55个带有边界框的查询。图像使用与Oxford-5k数据集中使用的相同的四种标签进行注释。
注意,Oxford-5k和Paris-6k中的标注和评估协议已经更新;额外的查询和干扰图像被添加到两个数据集中,产生Revisited Oxford和Revisited Paris数据集。由于最常用的还是原版Oxford-5k和Paris-6k,我们主要对原始数据集进行性能评估。
AP为precision-recall曲线下的覆盖区域。AP越大,查全率曲线越高,检索精度越高。AP可以计算为:
其中R表示从图像总数N中查询图像相关结果的个数。P(k)是检索到的前k个图像的精度,rel(k)是一个指标函数,如果第k位内的项是相关图像,则rel(k)等于1,否则为0。对所有查询图像采用平均精度(Mean average precision, mAP)评估:
其中Q是查询图像的数量。
此外,N-S评分是UKBench使用的指标。在这个数据集中,每个查询有4个相关图像。N-S得分是数据集前四位精度的平均值的四倍。
本文综述了图像检索的深度学习方法,并根据深度网络的参数更新情况,将其分为现有模型和微调模型。具体来说,现成模型是通过冻结预先存储的参数来获得高质量的特征,其中提出了网络前馈方案、层选择和特征融合方法。而基于微调的方法通过参数优化更新网络,以进行特征学习,分为了监督方法还是无监督方法。对于每一组,我们给出了相应的方法,并比较了它们的差异。收集并分析了所有分类作品的实验结果。
深度学习已经显示了显著的进展,并突出了其图像检索能力。尽管取得了巨大的成功,但仍有许多未解决的问题。在此,我们介绍了一些有前景的研究方向。希望本研究不仅能加深对图像检索的理解,也能促进该领域未来的研究和应用发展。
1)零样本学习进行图像检索。媒体平台的普及和新技术的快速发展使得人们很方便地分享他们的图片。结果,图像的数量大大增加。在这种情况下,通常存在“看不见的”图像或类别。然而,大多数数据集是静态的,为特征学习提供的对象和类别数量有限。
因此,检索算法或系统可能会遇到缺乏针对这些不可见图像的适当训练数据的问题。因此,我们需要将传统的图像检索方法扩展到零样本学习场景,我们可以从系统中检索看到的和看不见的类别。此外,结合无监督方法,零样本学习算法可以显著提高图像检索系统的灵活性和泛化能力。
2)端到端无监督检索。使用监督信息、网络训练或微调更有可能减轻语义差距。然而,复杂的监督学习算法在大多数情况下并不是很通用,因为通常没有足够的监督信息可用。因此,有必要对研究较少的无监督图像检索进行探索。而前面提到的流形学习是一种利用关联上下文信息挖掘样本的方法。在流形空间中,基于图发现学习自监督信息。然而,整个训练过程还不是端到端的。目前,图卷积网络已被用于替换扩散过程,从而进行端到端训练。
3)增量图像检索。目前的图像检索集中于静态数据集,不适合增量场景。也就是说,大多数这些方法都假设所有类别的图像在训练过程中都是可用的。这种假设在现实世界的应用中可能会受到限制,因为新的类别不断涌现。对新老图像进行重复的微调既费时又低效,而只对新图像进行微调可能导致灾难性的遗忘,从而导致对旧类别图像的检索性能严重下降。因此,一个实际的方向将是构建一个最新的检索模型来处理新类别的增量流,同时在现有类别上保留以前的性能而不遗忘。
4)为实际应用部署图像检索。现有的图像检索技术在Oxford和Paris数据集等标准基准上进行了训练和评估,并探索了在细粒度数据集上检索的各种度量学习方法。然而,这些技术与现实生活中的人脸搜索、时尚搜索、人物再识别、购物推荐系统、医学图像检索等应用还相去甚远。在这些实际应用中,图像检索的目的可能不仅仅是检索标准基准上的一般内容的图像,还可以检索更精确的信息。针对特定场景部署图像检索是一项具有挑战性的工作。例如,作为一个特定的实例搜索主题,人员再识别系统可能会遇到由于光照不足导致的低分辨率或低质量的图像。现有的技术,如注意机制和RPN等,可用于保证性能。另一方面,在实际应用中探索多模态检索是有价值的。也就是说,图像检索还可以与词语、短语、句子等其他辅助形式相结合,以满足用户不同的检索需求。