Swin Transformer是一种基于视觉任务的Transformer模型,它在图像识别等计算机视觉任务中取得了出色的性能。Swin Transformer-based Supervised Hashing是基于Swin Transformer模型的一种监督哈希方法。
在传统的哈希方法中,通常使用无监督学习或半监督学习的方式学习哈希函数,而Swin Transformer-based Supervised Hashing则利用监督信息来指导哈希函数的学习。
具体来说,Swin Transformer-based Supervised Hashing的方法包括以下几个步骤:
-
数据准备:准备一个包含图像和相应标签的有标记样本集。
-
特征提取:使用预训练的Swin Transformer模型提取图像的高维特征表示。Swin Transformer以自注意力机制为核心,能够有效地捕捉图像中的重要特征。
-
哈希编码:利用提取的特征构建哈希编码器,将高维特征映射到低维二进制码空间。常见的方法包括深度神经网络、传统哈希方法(如LSH、ITQ等)或基于降维技术(如PCA、PLS等)的方法。
-
监督学习:通过最小化哈希编码和图像标签之间的差异来学习哈希函数。可以使用分类损失函数(如交叉熵损失)或对比损失函数(如三元组损失)等。
-
哈希检索:利用学习到的哈希函数进行图像检索。给定一个查询图像,通过计算其哈希码与数据库中图像哈希码的相似性,找到最相似的图像。
Swin Transformer-based Supervised Hashing方法通过结合Swin Transformer的强大特征提取能力和监督信号进行哈希函数的学习,能够在图像检索任务中取得较好的性能。它适用于需要高效存储和快速检索大规模图像数据集的应用场景。
摘要
随着现代互联网的迅速发展,图像数据正在爆炸式增长。如何从这样的大数据中检索特定的图像已经成为一个紧急问题。常见解决方案是基于哈希的近似最近邻检索方法,它使用紧凑的二进制哈希码表示原始图像数据。在计算图像相似度时,可以通过位运算快速检索相似图像,并且只需要较小的内存空间来存储哈希码。
近年来,深度学习和哈希学习的结合已经引领了基于哈希的图像检索方法方面取得了突破性进展。特别是,在各种深度哈希方法中广泛使用卷积神经网络(CNNs)。然而,在提取图像特征时,CNN无法很好地捕获全局信息,这影响了哈希编码质量。因此,我们首先将Swin Transformer网络引入到哈希学习中,并提出基于Swin Transformer监督型哈希(SWTH)。使用Swin Transformer作为特征提取骨干网络,我们可以通过建立不同块之间关系来尽可能多地捕获一张图片的全局上下文信息。此外,Swin Transformer采用逐层下采样的分层结构,可以在提取全局信息的同时获得丰富的多尺度特征信息。在特征提取网络之后,我们添加一个哈希层进行哈希学习。通过优化哈希损失、分类损失和量化损失的组合来学习图像特征表示和哈希函数。广泛的实验结果表明,SWTH方法优于许多最先进的方法,并具有出色的检索性能。
1 简介
在大数据时代,数十亿张图片被上传到社交平台,因此如何从海量的图像数据库中高效地检索与给定查询相关的图像是一个紧迫的挑战。最近邻(NN)检索是数据检索中最常用的技术之一。具体来说,最近邻检索根据数据之间的相似性从海量图像数据库数据中找到与目标最相似的数据,并且这种相似度通常被量化为特征空间中数据之间的距离。可以认为,在特征空间中越接近的数据,其相似度就越高。然而由于不断增加的数据数量和维数,现有基于最近邻方法进行检索不能在可接受时间内获得所需结果。因此,注意力转向了具有高检索精度和低计算成本的近似最近邻(ANN)检索方法。
哈希-based 检索是一种典型的近似最近邻搜索方法,它不仅具有低存储成本还能实现快速搜索。它将图像高维特征转换为紧凑哈希码,并使用哈明距离表示图像之间的相似性。哈希码之间汉明距离越小,则说明两个图片越类似 。在以前的哈希方法中,输入数据通常由手工制作的特征描述符来表示,然后通过单独的投影和量化操作将其编码成哈希码。但是,由于这些描述符通常不能有效地表示原始数据,在实际应用中哈希码检索精度较低。
近年来,深度神经网络取得了巨大的成功,在视觉任务(如目标检测[17]和人脸识别[20])中展现出优秀的特征表示能力。因此,通过深度神经网络进行哈希学习已引起越来越多的关注。由于深度学习具有强大的表达能力,可以学习非常复杂的哈希函数,并且可以实现端到端哈希学习,在许多实际应用中非常有用。由于卷积神经网络(CNNs)在特征提取方面表现出色,基于CNNs的深层哈希[23, 28]已成为近年来重要的研究分支。它旨在将CNN提取出高维特征向量映射到低维向量,并通过学习哈希函数对其进行编码,与基于手工制作特征的传统哈希方法相比,具有更高的检索精度和性能。
然而,由于CNN受卷积核固定大小限制难以捕捉图像全局信息。它使用卷积核不断提取抽象高级特征,并理论上其感知领域应涵盖整个图像;但许多研究 [16,41] 表明,实际感知领域远小于理论感知领域,这不利于充分捕捉图像的全局信息。2020年,Google提出了Vision Transformer (ViT) [6] ,它将纯Transformer直接应用于一系列图像块以进行图像分类。Vision Transformer的优点在于使用注意机制来捕获全局上下文信息,并建立对图像区域的长程依赖关系以提取更强大的特征。然而,Vision Transformer产生单一低分辨率特征映射,并且由于自我注意力计算是全局性的,在输入图像大小方面具有二次计算复杂度。
针对以上问题,我们提出了基于Swin Transformer[14] 的监督式图片哈希方法,利用Swin Transformer进行特征提取和学习高效哈希码。与传统CNN相比,Swin Transformer可以完整地捕获全局上下文信息;与Vision Transformer不同之处在于采用逐层下采样的层状结构来逐渐增加视觉感受野,并通过四个阶段的特征提取获得不同尺寸(multiscale)功能图并执行基于窗口(self-attention calculation based on windows) 的自我关注计算,在视觉变换器中极大地减少了自我关注计算量。
本文的主要贡献可以总结如下:
- 我们首先开发了Swin Transformer来进行哈希学习,并利用其优秀的特征提取能力来捕获全局上下文信息并学习哈希函数。
- 我们提出了一种有效的损失函数,可以学习到更具辨别性的哈希表示。通过优化该损失函数,可以得到具有紧凑哈希码的高效图像特征表示。
- 在基准图像数据集上进行了大量实验,验证了所提出方法在图像检索方面胜过其他现有方法。
本文其余部分组织如下:第2节简要回顾相关工作;第3节描述所提出SWTH方法;第4节描述所提出的损失函数;第5节通过广泛实验展示所提出模型的有效性;第6节对我们的工作做出总结。
2 相关工作 2.1 视觉变换器 Transformer[26]和自注意模型在机器翻译和自然语言处理领域发挥了开创性的作用。在过去的两年中,越来越多的学者将Transformer应用于计算机视觉领域,提供了新的解决方案并取得了良好的结果。例如,Dosovitskiy等人提出的视觉变换器(ViT)[6]将每个图像视为一个固定长度的补丁序列,然后将其输入到多层感知机进行分类。这是第一个演示纯Transformer在具有足够训练数据的图像分类任务中可以达到最先进性能的例子。为了进一步提高图像的分类性能,最近的几种方法致力于改进ViT。Yuan等人提出的Tokensto-Token ViT[31]通过递归地将相邻的标记组合成单个标记,以减少标记长度并聚合空间上下文。 2.2 哈希学习 根据哈希学习过程中是否使用训练数据,现有的哈希方法可以分为数据无关和数据相关方法。在数据无关的哈希方法中,哈希函数通常是随机生成的,与训练数据无关。代表性的是由Gionis等人提出的局部敏感哈希(LSH)[8],它使用随机投影将相似的数据映射到相似的二进制编码中。然而,这种方法需要更长的哈希码才能获得更好的检索性能。为了缩短哈希码,随后提出了基于数据相关的哈希方法,通过从训练数据中学习哈希函数来实现。 随着深度学习的快速发展,深度卷积神经网络在许多计算机视觉任务中取得了突破性的成果,如目标检测[19]和语义分割[25],因此基于深度学习的哈希方法[4, 15]也引起了越来越多的关注。Xia等人提出了一个两阶段学习策略的卷积神经网络哈希(CNNH),其中在第一阶段通过构建基于图像差异的成对相似性矩阵来学习哈希码,然后在第二阶段利用哈希码学习基于深度网络的哈希函数。然而,这种方法学习到的图像特征表示不能反馈到哈希编码中,无法充分发挥深度学习的潜力。Lai等人改进了CNNH,并提出了深度神经网络哈希(DNNH),它同时进行特征学习和哈希编码,使图像表示和哈希码在联合学习过程中相互改进。为了减小由于独立量化步骤引起的量化误差,Zhu等人提出了一种深度哈希网络(DHN),通过同时优化成对交叉熵损失和量化损失来保留成对语义相似性并控制量化误差,以改进DNNH。Cao等人提出了HashNet,一种连续尺度策略,以近似逼近离散二进制码,考虑类别不平衡从类似数据对获得相似的二进制码。Cakir等人提出了一种基于深度神经网络和最小批随机梯度下降的优化互信息的哈希算法MIHash,用于优化学习的Hamming空间中诱导邻域结构的歧义性并实现高检索精度性能。为了提高生成二进制码的判别能力,Wang等人提出了一种新颖的深度语义重建哈希(DSRH),通过引入成对相似性保持量化约束来保留良好学习的成对相似性。Morgado等人提出了一种语义HCLM(sHCLM),它使用代理嵌入技术来学习高度区分的哈希码,并设计了一个语义哈希一致的大间隔代理算法来减小量化误差。Zhang等人提出了基于CapsNet的监督哈希(CSH),它将图像分类和检索任务结合到一个单一的学习模型中,充分利用数据分类信息来指导哈希学习。Yuan等人提出了基于隐藏多距离损失的全卷积哈希(HLFH),它是由全卷积组成的哈希网络,并设计了一个隐藏多距离损失来优化样本之间的汉明距离。Fan等人提出了深度极化网络(DPN),它设计了一个可微极化损失来限制哈希码的汉明距离,以最小化类内汉明距离和最大化类间汉明距离。Zhai等人提出了深度迁移哈希(DTH),它首次将哈希学习和知识蒸馏相结合,将知识从复杂的教师网络传递到小型的学生网络进行快速检索,并通过最小化教师模型和学生模型的哈希层之间的哈希码分布来改进检索性能。 近年来,交叉模态哈希方法受到越来越多的关注。Zhang等人提出了基于平滑矩阵分解和标签放松的两阶段离散跨媒体哈希方法(WATCH),通过分解跨媒体相似性搜索的离散平滑矩阵并扩大真实标签和错误标签之间的差距来减少量化损失。[36]提出了可扩展的离散矩阵分解和语义自编码器方法(SDMSA)。SDMSA采用两步策略。第一步,为了学习公共潜空间,不同模态的数据被集体矩阵分解,然后根据公共潜空间直接生成哈希码以减少量化损失。第二步,基于不同模态的编码器和解码器学习哈希函数。为了减小噪声和异常值的影响,[35]提出了鲁棒和离散矩阵分解哈希(RDMH),它使用l1,2范数来提高模型的鲁棒性。Zhang等人提出了离散不对称哈希(DAH),它采用不对称策略建立哈希码和潜空间之间的连接,并结合优化算法离散地学习哈希码,使不同数据模态可以编码成不同长度的哈希码。[40]提出了标签灵活矩阵分解哈希(LFMH),它在标签监督下为不同模态生成相似但不完全相同的语义空间,在跨模态检索中更加有效。Zhang等人提出了零样本跨模态检索(DMZCR),它首次使用双向矩阵分解来解决ZSCMR问题,并且可以学习去除冗余信息的低秩表示。DMZCR通过建模类别、特征和属性之间的关系进行知识传递,并结合离散方案学习哈希码以减少量化损失。
尽管上述的深度哈希方法利用CNNs实现了良好的检索结果,但由于卷积核的固定大小限制,很难对图像的全局信息进行建模。许多研究[16, 41]表明,CNNs的实际感受野无法覆盖整个图像,这不利于充分捕捉图像的全局信息。为了解决上述问题,我们提出了SWTH方法,以更好地提取图像的全局信息,并结合多尺度特征信息。
3 提出的SWTH方法 我们的目标是设计一个监督哈希方法,利用Swin Transformer [14] 有效地捕捉图像的全局背景信息和多尺度特征,从而生成高效的二进制编码。设X = {xi}N i=1表示具有相应类别标签Y = yiN i=1的N个训练图像。深度哈希用于图像检索的目标是学习一个非线性哈希函数F : X → {−1, +1}K×N,将原始图像xi∈{1,2,...N}映射到获得的K位哈希编码B = {bi} ∈ {−1, +1}K×N,并保持原始图像之间的相似性。在表1中,我们总结了本文中使用的符号表示。 3.1 网络架构 为了提取多尺度特征信息和捕获图像的全局背景信息,我们提出了基于Swin Transformer的哈希方法。Swin Transformer被用作特征提取网络,并基于提取的特征进行哈希学习,以提高图像检索的准确性。图1显示了所提出方法的架构。
Swin Transformer由四个阶段组成,用于生成不同尺寸的特征图。首先,将尺寸为224×224×3的RGB图像xi分割为不重叠的补丁块,每个补丁被视为一个“标记”,其特征被设置为原始像素RGB值的串联。在本文中,补丁的尺寸设置为4×4,因此每个补丁的特征维数为4×4×3 = 48。然后,应用线性嵌入层将原始特征维数映射到96维,并对这些补丁标记应用修改后的自注意力计算模块,即Swin Transformer块,输出特征图大小为56×56×96。上述操作统称为阶段1。类似于阶段1,阶段2也包含两个Swin Transformer块。为了产生分层特征表示,采用补丁合并模块来减少标记的数量,随着网络的加深。补丁合并模块类似于CNN中的汇聚操作,在每个阶段开始前进行降采样,以减小分辨率和调整通道数,形成分层结构。补丁合并模块将每组2×2相邻补丁的特征进行串联,并在最后一维上应用线性层,将串联特征映射到其维度的一半。经过Swin Transformer块后,输出特征图大小为28×28×192。阶段3包含六个Swin Transformer块,并且在开始时使用补丁合并模块。因此,在阶段3之后,输出特征图的大小为14×14×384。阶段4的结构与阶段2相同,因此在阶段4之后,输出特征图的大小为7×7×768。
通过Swin Transformer进行特征提取后,获得了一个尺寸为7×7×768的特征图,然后应用全局平均池化以获得具有768×1维度的特征向量fi。然后添加哈希层和分类层。哈希层包含K个神经元,对应于哈希码的K位长度,并使用双曲正切激活函数,将激活值限制在-1和1之间。分类层包含C个神经元,对应于类别数,并使用softmax激活函数,将激活值限制在0和1之间。然后,网络在哈希损失、量化损失和分类损失的联合监督下进行训练,并在三种损失的联合优化下进行哈希学习。
3.2 Swin Transformer模块 与传统的Transformer模块不同,Swin Transformer模块通过将标准Transformer模块中的多头自注意力(MSA)[26]模块替换为基于窗口的多头自注意力模块,并保持其他组件不变来构建。 如图2所示,Swin Transformer模块由一个基于窗口的MSA模块和一个具有高斯误差线性单元(GELU)非线性激活函数的2层MLP组成。在每个MSA模块和每个MLP之前都应用了层归一化(LN),并在每个模块之后应用了残差连接。基于窗口的MSA(W-MSA)模块和平移后的基于窗口的MSA(SW-MSA)模块分别应用于两个连续的Swin Transformer模块。Swin Transformer模块的计算公式如下:
3.3 W-MSA和SW-MSA 与传统视觉Transformer [6]中的MSA模块相比,Swin Transformer模块中的MSA模块在非重叠的窗口内计算局部自注意力。如图3所示,红色框表示窗口,灰色框表示补丁,窗口内的补丁相互进行自注意力计算,以减少网络的计算量。 图3中的左侧表示W-MSA的分区方法,采用滑动窗口进行分割操作。窗口之间没有重叠。因此,W-MSA缺乏窗口之间的连接,也缺乏窗口之间的有效信息交互。为了实现窗口间的通信,将图像向左上方平移半个窗口大小,生成一个新的窗口,如图3中的右侧所示,这是SW-MSA中的平移窗口分区方法。新窗口中的自注意力计算跨越了前一层的窗口边界,在Layer l中提供窗口之间的通信,学习全局特征信息。 4 整体损失 为了实现有效的哈希检索,原始图像的语义相似性应该在汉明空间中得到保留。我们设计了一个整体损失函数,由以下三个部分组成:哈希损失、量化损失和分类损失,以共同监督和训练网络,从而生成更好的哈希编码。
5个实验 5.1 数据集 为了评估所提出方法的性能,我们在两个广泛使用的基准数据集上进行了充分的实验,即CIFAR-10和ImageNet。
CIFAR-10数据集包含10个类别的60,000个32×32彩色图像,每个类别包含6,000个图像。按照[32]中的设置,我们从每个类别中选择了1,000个图像作为测试查询样本,剩下的50,000个图像被用作训练和检索数据库集。
ImageNet2是一个用于大规模视觉识别挑战的数据集,包含10,000个类别的训练集中超过1,200,000个图像和验证集中的50,000个图像。按照[32]中的设置,我们随机选择了100个类别,并使用验证集图像中这些类别的所有图像作为测试查询样本,使用训练集中的所有图像作为检索数据库集。此外,我们还从数据库集中每个类别中选择了130个图像,总共使用13,000个图像作为训练集。
5.2 评估指标 为了评估SWTH的性能,我们采用平均平均精度(mAP)[1]作为评估检索质量的指标。mAP是每个查询样本的平均精度的平均值,可以通过mAP = 1 / Q \sum_{q=1}^{Q} AP(q)来计算,其中Q是查询样本的数量,AP(q)是第q个样本查询结果的平均精度。AP(q)定义为AP(q) = 1 / Z_q \sum_{t=1}^{n}[(Precision@t)σ(t)],其中Z_q表示与查询样本x_q相似的样本在前n个返回样本中的数量,σ(t)是一个指示函数,如果查询样本x_q与第t个返回样本相似,则σ(t) = 1;否则,σ(t) = 0。Precision是返回样本中与查询样本相似的样本占返回样本的比例,Precision = N(T) / (N(T) + N(F)),其中N(T)表示查询样本和返回样本之间相似的样本数量,N(F)表示查询样本和返回样本之间不相似的样本数量。Precision@t表示返回样本数量为t时的精度得分,即N(T) + N(F) = t。
5.3 实验设置 对于CIFAR-10和ImageNet数据集,我们首先将图像调整为224×224×3的大小。在网络结构方面,我们使用Swin Transformer作为特征提取网络。首先,将图像分割为非重叠的补丁,补丁大小设置为4×4,图像尺寸改为56×56×48。然后,图像经过由Swin Transformer块组成的四个阶段,生成不同大小的特征图。这四个阶段分别由2个、2个、6个和2个Swin Transformer块组成,生成大小为56×56×96、28×28×192、14×14×384和7×7×768的特征图,其中Swin Transformer块中的窗口大小设置为7。特征提取和全局平均池化之后,得到一个768×1维的特征向量。全局平均池化之后是哈希层。哈希层的神经元数量与哈希码的长度一致,并使用tanh激活函数。然后,哈希层与分类层进行全连接。分类层的神经元数量与类别数量一致。对于CIFAR-10,类别数量为10,因此神经元数量也为10。对于ImageNet,神经元数量为100,并在分类层使用softmax激活函数输出每个类别的预测概率。在训练过程中,我们使用AdamW优化器进行优化,学习率设置为2 × 10^(-5),权重衰减设置为10^(-8),批大小设置为32。对于每个组件损失的权重系数,在参数敏感性分析部分,使用网格搜索方法在不同数据集上实验不同哈希码长度,以确定α和β的值。我们使用Python和开源深度学习框架PyTorch编写代码,并在配备NVIDIA Tesla A100 GPU的机器上运行算法。
6 结论 我们首先开发了Swin Transformer来进行哈希学习,并利用其良好的特征提取能力来捕捉全局上下文信息并学习哈希函数。我们还提出了一种有效的损失函数,可以学习到更具辨别性的哈希表示。通过同时优化哈希损失、分类损失和量化损失,我们可以从输入图像中同时学习特征表示和哈希函数。我们在CIFAR-10和ImageNet数据集上进行了大量实验,结果表明SWTH实现了卓越的检索性能,超过了许多最近的方法。
对于未来的工作,我们计划将SWTH迁移到无标签数据集上进行无监督的哈希学习,并改进SWTH方法以适用于跨模态数据集。