用于快速图像检索的深度监督散列
(为了学习的渣翻,谢绝转载了)
摘要
本文提出了一种新的学习压缩二进制代码的散列方法,用于大规模数据集上的高效图像检索。针对复杂图像外观变化对可靠检索提出的挑战,针对卷积神经网络(CNNs)在学习各种视觉任务的鲁棒图像表示方面的最新进展,提出了一种新的深度监督散列(DSH)方法来学习庞大的图像数据的紧凑相似保持二进制代码。具体而言,我们设计了一种CNN架构,将图像对(相似/不相似)作为训练输入,并鼓励每个图像的输出接近离散值(例如+1/-1)。为此,通过对来自输入图像对的监督信息进行编码,并同时对实值输出施加正则化以近似期望的离散值,精心设计损失函数以最大化输出空间的可区分度。对于图像检索,新的查询图像可以很容易地通过网络传播,然后将网络输出量化为二进制代码表示。在CIFAR-10和NUS-WIDE两个大规模数据集上的实验表明,与现有的SOTA相比,该方法具有良好的性能。
1.导言
近年来,每天有数十万张图像上传到互联网,这使得根据不同用户的请求找到相关图像变得异常困难。例如,基于内容的图像检索要检索的是与给定查询图像相似的图像,其中“相似”可以指视觉上相似或语义上相似。假设数据库中的图像和查询图像都由实值特征表示,寻找相关图像的最简单方法是根据数据库图像在特征空间中与查询图像的距离对数据库图像进行排序,并返回最接近的图像。然而,对于现在相当普遍的具有数百万图像的数据库,即使在数据库中进行线性搜索也将花费大量的时间和内存。
为了解决实值特征的低效率,一些研究提出了哈希方法来将图像映射到近似保持原始空间中的数据结构的紧凑二进制码,如[27,9,17]。图像由二进制码而非实值特征表示,可以大大减少搜索的时间和内存成本。然而,现有的大多数哈希方法的检索性能很大程度上取决于它们所使用的特征,这些特征基本上是以无监督的方式提取的,因此更适合于处理视觉相似性搜索而不是语义相似性搜索。另一方面,最近,CNN在图像分类[12,25,8]、目标检测[26]、人脸识别[24]以及许多其他视觉任务[18,2]上展示了令人印象深刻的学习能力。在这些不同的任务中,CNN可以被视为专门为各个任务设计的目标函数所引导的特征提取器。CNN在各种任务中的成功应用表明,但CNN学习的特征能够很好地捕捉图像的潜在语义结构,尽管这些图像的外表各不相同。
受CNN特征鲁棒性的启发,我们提出了一种利用CNN结构的二进制代码学习框架,称为深度监督散列(DSH)。在我们的方法中,首先我们设计一个CNN模型,它将图像对连同指示两个图像是否相似的标签一起作为训练输入,并产生二进制代码作为输出,如图1所示。在实践中,我们在线生成图像对,使得更多的图像对可以在训练阶段被利用。设计损失函数将相似图像的网络输出拉到一起,将不相似图像的输出推远,使得学习到的Hamming空间能够很好地逼近图像的语义结构。为了避免优化汉明空间中的不可微分损失函数,将网络输出松弛为实值,同时施加正则化器以促使实值输出接近期望的离散值。在该框架下,图像通过首先通过网络传播,然后将网络输出量化为二进制代码表示,可以容易地对图像进行编码。
论文的其余部分组织如下:第2节讨论了与我们方法相关的工作。第3节详细介绍了DSH。第4节在两个大规模数据集上对本文所提出的方法进行了评估。第5节是结束语。
第2节省略
3.方法
3.1.损失函数
研究目标是学习图像的紧凑二进制码,以达到两个目的:(a)相似的图像被编码为汉明空间中的相似二进制码,反之亦然;(B)可以有效地计算二进制码。
尽管前人已经提出了一些方法来学习保留相似性的二进制码,但由于它们通常是手工特征或线性投影,因此有很多限制。CNN作为强大的非线性模型促进了最近计算机视觉在各种任务上的成功。为此,我们提出使用图1所示的CNN来同时学习区别性图像表示和紧凑二进制码,这可以打破手工特征和线性模型的限制。我们的方法首先使用图像对和相应的相似性标签来训练CNN。这里,损失函数被精心设计来学习保留相似性的图像表示。然后对CNN输出进行量化以新图像的二进制码。
令为RGB空间,我们的目标是学习从到 位二进制码的映射,使得相似(在视觉上相似或语义上相似)的图像被编码为相似的二进制码。为此,相似图像的编码应尽可能接近,而不同图像的代码应远离。基于这个目标,损失函数自然地被设计成将相似图像的二进制码拉到一起,并将不同图像的编码彼此推开。
具体而言,对于一对图像和它们的二进制网络输出,如果它们相似,我们定义,如果不相似定义。关于这一对图像的损失被定义为:
(1)
其中表示两个二进制矢量之间的汉明距离,并且是边际阈值参数。式子的第一项会对相似图像映射为不同二进制码进行惩罚,第二项会对不相似图像映射为接近的二进制码(二进制码的汉明距离小于边际阈值)进行惩罚。这里值得注意的是,为了避免崩溃解,我们的损失函数采用对比损失形式[7],其中只有那些距离在半径内的不同对才有资格对损失函数做出贡献。
假设有从训练图像中随机选择的个训练对,我们的目标是最小化整体损失函数:
(2)
3.2
我们首选的方案是直接优化 (2)式,然而这是不可行的,这是因为上的约束要求我们对网络输出进行阈值处理(例如用Signum函数),约束也使得用反向传播算法训练网络不可行(译者注:因为会导致梯度消失)。最近的一些研究[23,16]提出直接优化二进制码,然而,由于内存的限制,CNN模型只能用mini-batch来训练,当批量大小与整个训练集相比非常小时,所产生的二进制码的最优性值得怀疑。