APP下载

基于视觉一致性增强的细粒度图像检索

2022-12-11郎文溪

计算机技术与发展 2022年12期
关键词:细粒度哈希一致性

郎文溪,孙 涵

(南京航空航天大学 计算机科学与技术学院,江苏 南京 211106)

0 引 言

图像检索[1]一直是计算机视觉领域的热点问题,其基本目标是从海量图像数据库中查询和返回与检索内容相关的图像。随着深度学习的发展,图像检索任务的准确性和速度均取得突破[2-7]。然而,随着用户对搜索引擎检索结果的定制化和精细化,细粒度图像检索近年来逐渐受到学术界和工业界的广泛关注。对于给定的属于同一大类(如,狗)的图像,细粒度图像检索旨在进一步检索属于相同子类的图像(如,沃克猎犬和巴塞特犬)。相较于经典图像检索,细粒度图像检索的主要难点包括:(1)类间差异小。不同子类的图像高度相似,区分性的差异信息仅体现细微的局部区域;(2)类内差异大。相同子类的图像由于姿态、光照、背景和拍摄角度的不同,差异巨大难以区分。因此,将经典图像检索算法应用在细粒度图像数据集[8-11]上效果不佳,区分和检索细粒度图像仍然是目前具有挑战性的研究热点和难点。

细粒度图像较小的类间差异使得不同子类间的差异仅体现在目标局部,而这些细微差异在特征学习时易受目标其他区域的干扰,在最终用于分类和检索的特征图上常被淹没。针对这一问题,一些细粒度研究工作[12-17]致力于挖掘局部区域的判别特征。SCDA[18]使用预训练的CNN定位显著前景区域和无关的背景噪声,然后引入flood-fill算法过滤噪声获得更具判别性的特征编码。ExchNet[19]和WSDAN[20]均首先基于注意力机制获取目标的判别性局部区域,然后分别设计通道约束和数据增强策略进一步增强局部区域特征的判别性。虽然这些工作能够显著提升细粒度图像的识别和检索精度,但都忽略了细粒度任务中的另一个关键问题。如图1所示,对于姿态、光照、成像角度等因素变化而带来的巨大类内差异,属于相同子类的图像呈现出截然不同的像素分布。在只有图像类别标签时,卷积神经网络在训练过程中很难捕捉到这些不同因素间等变的通用模式。因此,模型对类内图像的视觉变换非常敏感,相同子类图像的识别和检索精度在收敛趋势差异巨大,严重制约了细粒度检索在实际应用中的性能。对于客观存在无法消除的类内图像变化,基于数据驱动的策略,一个简单的解决思路是增强训练数据中任一类别样本的数量。然而,搜集场景丰富的足够训练样本费时费力,且特征学习时模型依然无法高效地动态自适应这些类内变换。针对上述问题,本研究基于对比学习来增强类内图像的视觉一致性,提高模型对视觉变化的容忍度来提升最终的检索精度。具体而言,视觉一致性由两个隐式的正则化约束实现,其基本要求为:(1)同一子类不同图像的局部判别区域在特征空间中应该有相似的表示;(2)判别性特征应该在同一图像的不同视图间保持语义一致。

图1 细粒度图像特点示意

该文提出了一种基于对比学习和视觉一致性增强的细粒度图像检索框架(Contrastive Visual Consistency Strengthen,CVCS-Net),主要包括判别性特征挖掘、视觉一致性增强和语义哈希编码三个关键模块。对于低类间差异,CVCS-Net设计判别性特征挖掘模块,自适应地学习空间注意力图来定位其与类别最相关的M个判别性区域;其次,对于高类间差异,CVCS-Net受自监督算法[21-22]的启发,设计视觉一致性增强模块提升模型对差异巨大的类内图像的鲁棒性。视觉一致性增强模块由判别区域一致性增强和变换图像一致性增强构成,前者基于语义中心损失来为M个判别性区域构造语义一致的通用特征表达,而后者首先应用图像变换策略积极增强类内训练数据的丰富度,其次设计对比度损失惩罚变换后图像的M个判别性区域的特征与通用特征表达间的差异。语义哈希编码模块引入量化损失和比特平衡损失,为视觉一致性增强后的判别性特征学习紧凑且高语义的哈希码,最终实现对细粒度图像的准确检索。大量的实验结果表明,提出的CVCS-Net能够显著提升细粒度检索精度。主要贡献如下:

(1)提出了一种基于对比学习和视觉一致性增强的细粒度图像检索方法CVCS-Net,在挖掘判别性特征的同时通过增强网络对细粒度图像类内差异的学习容忍度来提升检索性能。

(2)分别设计语义中心损失和对比度损失来增强细粒度图像的视觉一致性。前者能够引导模型为同一子类的判别性区域构造语义一致的特征中心,而后者能够显著提升模型在检索同一子类差异巨大的不同图像时的鲁棒性。

(3)在三个代表性细粒度数据集上进行了详尽的对比和消融实验,验证了CVCS-Net的有效性。

1 相关工作

1.1 细粒度图像检索

早期的细粒度图像检索方法依赖于人工特征的使用[23]。然而人工特征在设计时依赖于大量精确的人工标注信息,无法满足仅使用图像标签作为监督信息的弱监督检索的精度需求。得益于深度学习的迅速发展,近年来越来越多的细粒度检索方法被提出。现有的工作致力于挖掘判别性特征来解决细粒度类间图像差异较小这一问题,主要包括有监督方法和无监督方法两类。SCDA[18]提出了一种无监督的选择性卷积描述符聚合方法,该方法首先定位细粒度图像中的对象,并保留有用的深度描述符以进行细粒度图像检索。对于有监督检索方法,CRL-WSL[24]使用中心排序损失和显著区域轮廓来学习目标的辨别特征,提出一个统一的细粒度检索框架。DCL-NC[25]进一步添加归一化尺度层和去相关排序损失来改进CRL-WSL。不同于已有工作,该文在挖掘判别性特征的基础上进一步考虑视觉一致性。挖掘判别性特征有利于为不同子类间高相似性的细粒度目标构建判别性的特征表达,从而实现准确检索;而视觉一致性通过增强网络对不同视觉变换的学习耐受力来解决类内图像差异较大这一问题。

1.2 对比学习

对比学习(Contrastive Learning,CL)[26]在无监督表示学习领域表现出巨大的潜力,其基本动机是使用InfoNCE loss[27]来估计模型从一组无关负样本中正确分类目标特征表示的能力。对比学习算法设计的关键是高质量正、负样本的构造。khoslet等[28]设计监督对比损失(SupCon)拉近特征空间中的同类特征之间的距离,同时拉远不同类特征的距离。Li等[29]提出了ProtoNCE损失,利用基于聚类的无监督表示方法促进对比学习精度。最近,Wang等[30]提出了一种基于像素级的密集对比学习方法,并将其用于多个视觉任务的预训练中。该文将对比学习引入细粒度图像检索任务中,设计一种新的对比度损失来增强细粒度图像的视觉一致性。

1.3 哈希编码

在大规模图像检索任务中,为判别性特征构建哈希编码被证明是高效的解决方案。通过哈希编码,属于相同或不同类别细粒度图像的判别性特征能够被嵌入到相同或不同的二进制码中,在降低存储成本的同时提升了查询速度。现有的哈希方法主要包括data-independent哈希和data-dependent哈希两类。前者通过随机投影或手工构建二进制哈希码,代表性工作是局部敏感的哈希函数[31](Locally Sensitive Hash,LSH)。相较于直接使用学习到的高维度判别性特征进行检索,LSH方法虽然提升了检索速度,但依然需要较长的哈希编码来保证检索性能。不同于data-independent哈希方法,data-dependent哈希方法充分挖掘数据内部的隐式内在联系自适应的学习哈希码。根据是否有额外的监督信息,data-dependent哈希方法又可以分为无监督和有监督的两类。尽管无监督方法[32-34]具有更实用和更广泛的应用前景,但目前绝大部分工作更多的基于有监督的框架,充分利用监督信息来获得更好的检索性能。代表性的有监督哈希算法包括卷积神经网络散列(CNNH)[35]和深度成对监督散列(DPSH)[36]两种。此外,最近的工作中,HashNet[37]提出用tanh激活函数不断逼近目标,大大提高了检索性能;DCH[38]提出了一种基于柯西分布的成对交叉熵损失,惩罚汉明距离大于给定阈值的相似图像对来学习哈希码。

2 方 法

该文提出了一种基于对比学习和视觉一致性增强的细粒度图像检索方法,能够实现端到端的模型训练。如图2所示,它由三个核心模块组成:判别性特征挖掘模块、视觉一致性增强模块和哈希编码模块。实现不同子类间图像的准确检索是细粒度图像检索任务的基础,为此,提出的CVCS-Net首先设计判别性特征挖掘模块,基于空间注意力机制定位目标的关键局部来捕捉不同类别细粒度图像间的差异性特征。其次,CVCS-Net设计视觉一致性增强模块提升模型对同一子类不同图像间显著差异的容忍度。视觉一致性增强模块由判别区域一致性增强和变换图像一致性增强构成,前者基于语义中心损失来为M个判别性区域构造语义一致的通用特征表达,而后者对输入图像随机进行颜色或空间变换,设计对比度损失来惩罚图像变换前后的特征差异。CVCS-Net为视觉一致性增强后的判别性特征学习紧凑的语义哈希码实现最终的检索。

图2 CVCS-Net算法流程

2.1 判别特征挖掘

对于细粒度图像分析,较小的类间差异使得捕捉不同类别间的判别性区域至关重要。在弱监督细粒度图像检索任务中,由于模型训练和测试时没有判别性区域对应的标注信息(如:bounding box),判别性特征挖掘模块通过计算目标不同局部的类别得分来学习判别性区域的空间注意力分布图;通过进一步抽取判别性区域对应的局部特征,最终为类内差异小的细粒度图像构造精细的特征表达。

2.1.1 判别区域定位

对于给定的任一训练图像X,通过特征提取网络首先生成一组特征图F∈RH×W×N。其中,H、W和N分别为特征图的长、宽和通道数。其次,特征图F被输入到一个额外的卷积模块中生成注意力图A∈RH×W×M,如公式(1)所示。

(1)

其中,f()表示卷积操作,由一个卷积核大小为1×1的卷积层和一个Relu激活层实现;Ak∈RH×W表示图像的第k个注意力图,描述了目标第k个局部区域的空间位置信息。

2.1.2 判别特征挖掘

进一步使用注意力图A计算这些局部区域对应的特征,计算方法如公式(2)所示:

ck=g(Ak⊙F),k=1,2,…,M

(2)

其中,fk是第k个局部区域对应的特征,⊙表示将特征图F和第k个注意力图对应位置元素相乘,g()表示全局平均池化操作。为了保证局部区域的判别性,这里简单却有效的假设是,如果一个局部区域是判别性的,那么其对应的特征fk在分类时一定能够高度响应其类别。因此,直接使用获得的M个局部特征预测目标的类别,计算方法如公式(3)和(4)所示:

(3)

Lcls=CE(P,Y)

(4)

P表示softmax分类器的预测结果。在类别标签的监督下,使用交叉熵损失CE()来约束预测结果P与其对应的真实类别Y趋向于一致。通过上述过程,模型不断寻找与类别最相关的M个局部区域,最终捕捉细粒度图像判别性特征。

2.2 视觉一致性增强

2.2.1 判别区域一致性增强

如图1(b)所示,受光照、姿态、成像角度等诸多因素的影响,相同子类的不同目标差异巨大。目标固有的这些多样性无法消除,对细粒度图像分析带来了极大的挑战。这里,本研究的解决思路是首先通过不同的图像变换模拟多样性,然后基于对比学习的思想增强模型对这些多样性变化的耐受性(称之为视觉一致性)。如图2所示,首先对原始图像X进行视觉变换,如公式(5)所示:

Xt=T(X)

(5)

在增强视觉一致性时,首先设计语义中心损失Lctr来保证相同子类不同图像的相似判别性区域在语义空间中有相近的特征表达(如所有沃克猎犬图像的第k个空间注意力图都感知其头部)。具体而言,为每一个子类的M个判别性区域分别构造特征中,惩罚属于同一判别性区域的局部特征间的变化,如公式(6)所示:

(6)

其中,ck是fk所对应的特征中心。ck初始化的值为0且在训练被更新,计算方法如公式(7)所示:

ck=(1-μ)ck+μfk

(7)

2.2.2 变换图像一致性增强

(i,j)∈ck

(8)

(i,j)∈ck

(9)

对比度损失Lcon计算M个特征中心上的所有像素点,如公式(10)所示:

(10)

2.3 语义哈希编码

在大多数深度哈希方法中,哈希层被设计来将目标特征编码为二进制的哈希码,其中“1”表示类别拥有某种特征,而“-1”表示它缺乏这种特征。CVCS-Net在分类层前设计并添加了一个语义哈希编码模块,将视觉增强后的特征ft映射为B位的哈希码,其基本计算方法如公式(11)所示:

(11)

其中,Hi∈RB是ft经过哈希层的输出;δH∈B和WH∈RM×B分别表示哈希层的偏差和权重;tanh()为激活函数,计算方法如公式(12)所示:

(12)

tanh()的取值范围为[-1,1]。由于sign函数在非零点处的梯度可能为零,出现梯度消失的问题,因此只有在测试模型时,将实值输出的Hi映射为二维哈希码。若Hi≥0,则Bi=1;否则,Bi=-1。

Bi=sign(Hi)

(13)

在优化sign函数时,为了避免梯度消失,CVCS-Net在训练阶段松弛了二进制哈希码。而对于测试阶段,将实值特征表示转换为二进制化的哈希码可能会导致量化误差。在这种情况下,添加量化损失Lq以鼓励实值尽可能地接近所期望的哈希码,如公式(14)所示。

(14)

其中,e是所有元素值均为1的B维向量,B为哈希码的长度。此外,还增加额外的位平衡损失Lb,以使哈希码的每一个比特位为1或-1的可能性相等,如公式(15)所示:

(15)

其中,mean()的计算方法如下:

(16)

其语义编码模块损失为:

Lhash=Lq+Lb

(17)

整体的损失函数如公式(18)所示:

(18)

3 实验结果与分析

3.1 数据集及评价指标

为了验证CVCS-Net的有效性,在CUB Birds、Stanford Cars和Stanford Dogs三个细粒度数据集上进行了实验。CUB Birds包含11 788张图像,共200个类别。数据集包括5 794张图像的训练集和5 994张图像的测试集。Stanford Cars数据集由8 144张训练图像和8 041张测试图像组成,属于196个类别。Stanford Dogs数据集由120个类别的20 580张图像组成,包括12 000张图像的训练集和8 580张图像的测试集。

使用平均检索精度(mAP)定量评估检索性能,计算方法如公式(19)所示:

(19)

其中,nq是需要检索的样本数;n是每次检索后返回的样本数,nj是返回的样本n中的正样本数量。如果返回的第j张是正样本,则pos(j)值为1,否则值为0。

3.2 参数设置

实验中,基于pytorch实现代码并使用CPU Intel i5,GPU RTX 2080ti 11 GB,32 G内存的硬件平台训练模型。缩放训练图像的尺寸为448×448像素,并使用ResNet-50作为主干来提取特征并选择Conv5层的输出作为特征图。对于注意力图的生成,M的默认值为32。

尽管所有数据集都标有边界框或零件位置,但提出的CVCS-Net仅使用类别标签作为监督信息。在训练阶段,模型使用随机梯度下降(SGD)训练160个epoch,batch size为12,初始学习率设置为0.001且每2个epoch后进行指数衰减,衰减系数为0.9。在推理阶段,遵循文献[39]中的设定,使用测试图像作为查询集,训练图像作为所有实验的检索数据库。

3.3 细粒度检索性能对比分析

3.3.1 与传统图像检索方法性能比较

为了验证该方法的有效性,首先比较了CVCS-Net与其他传统图像检索方法在细粒度数据集上的检索精度。为了保证比较的公平,对所有方法均使用Resnet-50作为特征提取网络,并使用不同长度的哈希码分别训练模型。

如表1所示,对于CUB数据集,CVCS-Net在12位、32位和48位哈希码时的mAP分别为79.23%、84.69%和85.91%,较性能第二的FPH提升均超24%。对于Dogs和Cars数据集,CVCS-Net提升的趋势依然明显。上述结果一方面表明了细粒度图像检索任务与普通图像检索任务的巨大差异,另一方面也证明了判别性特征挖掘对细粒度图像分析任务的重要性。此外,相较于使用全局图像特征构建哈希码的经典检索方法,CVCS-Net对哈希码长度的变化表现出更好的稳定性。例如,当哈希码从48位降低到12位时,在CUB 200-2011 数据集上CVCS-Net的mAP仅下降约6%,远小于FPH的11%。这一结果充分表明CVCS-Net设计判别性特征挖掘模块的有效性,也从侧面验证了语义哈希编码模块在量化损失和位平衡损失的约束下能够提升哈希码的紧凑性和语义性。

表1 CVCS-Net与传统图像检索方法在不同数据集上的mAP比较

3.3.2 与细粒度检索方法性能比较

进一步的,还比较了CVCS-Net与已有细粒度图像检索方法在CUB数据集上的检索精度。如表2所示,CVCS-Net在不同设定下均能够取得最佳的检索性能。

表2 CVCS-Net与细粒度图像检索方法在CUB数据集上的mAP比较

相较于没有哈希模块的细粒度检索方法SCDA、CRL-WSL和DCL-NS,即使其特征表示的维度远大于CVCS-Net,其精度仍然远低于提出的CVCS-Net。可能的原因是细粒度任务对特征质量的敏感。虽然高维图像特征包含了更多的物体信息,但在计算不同图像的相似度时,判别性特征可能无法起主导作用,使得最终检索结果更容易被相似的类间图像干扰。相较于基于哈希的细粒度检索方法ExchNet和FCAENet[40],在哈希码长度为48位时,CVCS-Net的mAP为85.91%,分别提升约14%和5%。此外,ExchNet和FCAENet的性能还随着哈希码长度的变化波动剧烈。当哈希码从12位增加到32位时,这两种方法的mAP提高约40%,而提出的CVCS-Net仅提升6%。当哈希码从32位增加到48位时,CVCS-Net的mAP仅增加约1%。上述的实验结果表明,视觉一致性增强能够显著提升模型的鲁棒性。

3.4 消融实验

3.4.1 不同模块有效性验证

如表3所示,该实验进一步验证了CVCS-Net每个部分的有效性。以48位哈希码为例,CVCS-Net简单的基线是仅使用判别性特征和语义哈希编码模块,其mAP为80.84%。在分别加入语义中心损失和对比度损失进行视觉一致性增强后,mAP能够提升2.05%和3.42%;而Lctr和Lcon共同作用下mAP为84.62%。上述的结果充分验证了语义中心损失和对比度损失的有效性。首先,通过构建语义中心,CVCS-Net能充分挖掘类内不同目标的相似判别性区域;其次,对比度损失在训练时能够极大地提高模型对类内图像变化的耐受性。类似的,当基线加入量化损失Lq和位平衡损失Lb后,其结果能够从80.84%分别提升到82.46%和81.58%。实验结果表明,量化损失和位平衡损失能够显著提升语义哈希编码的质量和检索性能。

表3 CUB数据集上不同设置时mAP的比较

3.4.2 判别性特征数量分析

对细粒度检索任务而言,判别性特征的数量将显著影响模型的性能。如表4所示,本小节在不同的细粒度数据集上进行了详尽的消融实验来分析判别性特征数据对CVCS-Net的性能影响。以最具挑战性的CUB 200-2011数据集为例,在简单挖掘4个判别性特征时,CVCS-Net的mAP为84.11%。这一结果随着特征数量的增加而不断提升,在特征数量为32和64时mAP分别为85.91%和86.52%。类似的上升趋势也显示在其他两个数据集上。在实验中,考虑计算开销和检索性能之间的平衡,最终选择将CVCS-Net挖掘的判别特征数设置为32。

表4 不同数据集上判别性特征数量与CVCS-Net结果比较

3.5 可视化效果分析

3.5.1 检索效果可视化

图3显示了CVCS-Net和HashNet在三个细粒度数据集上检索的前10个样本。可视化的结果表明,CVCS-Net能够取得比目前最先进方法更满足用户期望的检索结果。

图3 不同数据集上CSCV-Net与HashNet检索结果对比

3.5.2 哈希码边界可视化

为了分析哈希码的质量,在Stanford Cars数据集上使用t-SNE(t-distributed stochastic neighbor embedding)将生成的哈希码可视化。如图4所示,随机采样10个类别的结果表明,CSCV-Net得益于为细粒度对象特别设计的判别性特征提取模块和语义哈希编码模块,能够将哈希码在同类中生成的更清晰和紧凑,在不同子类间生成的边界更明显。

图4 Stanford Cars上CSCV-Net与HashNet哈希码可视化对比

4 结束语

针对细粒度图像类间差异小类内差异大的特点,在挖掘判别性特征的基础上基于对比学习进一步增强不同图像间的视觉一致性,提出了一种新颖的深度哈希细粒度图像检索方法CSCV-Net。CSCV-Net由判别性特征挖掘模块、视觉一致性增强模块和语义哈希编码模块构成。判别性特征挖掘模块学习空间注意力图,能够有效挖掘图像的判别性局部区域;而视觉一致性增强模块分别引入语义中心损失和对比度损失,增强模型训练时对不同类内图像相似判别区域语义一致性和对同一图像不同视觉变换的鲁棒性;CSCV-Net还基于量化损失和位平衡损失设计语义哈希编码模块,进一步提升检索速度。通过大量实验和消融研究,在3个常用细粒度图像数据集CUB-200-2011、Stanford Cars和Stanford Dogs验证了CVCS-Net的有效性。相较于当前其他检索方法,CVCS-Net能够取得更好的检索结果。

猜你喜欢

细粒度哈希一致性
融合判别性与细粒度特征的抗遮挡红外目标跟踪算法
关注减污降碳协同的一致性和整体性
基于特征选择的局部敏感哈希位选择算法
注重教、学、评一致性 提高一轮复习效率
IOl-master 700和Pentacam测量Kappa角一致性分析
哈希值处理 功能全面更易用
文件哈希值处理一条龙
基于SVM多分类的超分辨图像细粒度分类方法
基于web粒度可配的编辑锁设计
支持细粒度权限控制且可搜索的PHR云服务系统