发明内容
针对现有技术中存在的上述不足,本发明的目的是提出一种基于三元组量化损失函数的有监督深度哈希快速图片检索方法及***,以降低现有哈希方法的量化损失。
为实现上述目的,本发明是通过以下技术方案实现的:为实现快速图像检索,基于现有的深度神经网络架构,利用三元组标签数据进行图片特征表达的学习。区别于现有深度哈希方法,本发明设计了一种适合于特征量化的三元组量化损失函数,用于构建有监督深度哈希模型。该三元组量化损失函数在提取高表达能力的实值特征的同时,驱使网络在保留特征表达能力的基础上输出更适合于后续量化处理的实值特征,最终得到高表达能力的哈希码,从而实现既快速又精准的图片检索。
根据本发明的一个方面,提供了一种有监督哈希快速图片检索方法,包括:
S1:构建用于快速图像检索的深度卷积神经网络H″;
对于每张图片a,随机分配一张相似图片p与一张非相似图片n,构成一组三元组训练样本(a,p,n);
在已有的深度神经网络模型末端叠加低维哈希层,构成深度卷积神经网络H,深度卷积神经网络H经过三次复制得到三路并行且参数共享的深度卷积神经网络H′;
将所述三元组训练样本(a,p,n)输入到深度卷积神经网络H′开始训练,同时对该训练样本进行缩放与裁剪;
先采用优化三元组损失函数训练深度卷积神经网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新;
再采用优化三元组量化损失函数微调深度卷积神经网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新;
以上训练微调后的深度卷积神经网络H′中任意抽取一路网络即用于快速图像检索的深度卷积神经网络H″;
S2:将图库中的图片依次输入深度卷积神经网络H″后得到实值特征,经过量化操作后得到哈希码并储存在本地;
S3:将每一张查询图片q输入至深度卷积神经网络H″并量化得到哈希码h(q),再计算哈希码h(q)与所有存储在本地的哈希码之间的汉明距离,将汉明距离为小的认作相似度为高,以此进行排序,最终根据检索数量要求返回相应数量的最为相似的图片。
优选地,所述S1中,三元组训练样本(a,p,n)按照如下操作得到:
对于基准图片a,根据标签分配相似图片p与非相似图片n,其中标签相同则为相似图片,不相同则为非相似图片,构成三元组训练样本(a,p,n);每一张图片都作为基准图片并进行多次如上操作,每一组三元组训练样本都与其他组的成员不完全相同。
优选地,所述S1中,深度卷积神经网络H′按照如下步骤得到:
步骤Sa1,参考已有的深度卷积神经网络,省去网络末端损失层,形成可输出多维实值特征的结构;
步骤Sa2,构建低维的全连接层,配以激活函数后作为低维哈希层,并接在步骤S21得到的网络末端,得到深度卷积神经网络H;
步骤Sa3,复制三次深度卷积神经网络H,并行排列并设置为参数共享,构成深度卷积神经网络H′。
更优选地,步骤Sa2中,构建的全连接层中神经元的个数等于最终要求输出的哈希码比特数。
优选地,所述S1中,所述对该训练样本进行缩放与裁剪,是指:
将三元组训练样本(a,p,n)缩放至256像素×256像素,从中随机裁取227像素×227像素大小的部分。
优选地,所述S1中,采用优化三元组损失函数训练深度卷积神经网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新,是指:
步骤Sb1,三元组训练样本(a,p,n)经过深度卷积神经网络H′,得到三元组训练样本中的每张图片所对应的实值特征fa,fp,fn;
步骤Sb2,计算三元组损失函数loss(fa,fp,fn),向深度卷积神经网络H′反向传播梯度以更新网络参数,其中:
所述三元组损失函数loss(fa,fp,fn)为:
loss(fa,fp,fn)=max(α+‖fa-fp‖2-‖fa-fn‖2,0)
其中α用于控制相似图片间距离与非相似图片间距离的差。
更优选地,在步骤Sb2中:
利用三元组损失函数,使得相似图片a与p的特征之间距离尽量小,非相似图片a与n的特征之间距离尽量大,并用参数α控制后者比前者大出的程度。
优选地,所述S1,采用优化三元组量化损失函数微调深度卷积神经网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新,是指:
步骤Sc1,三元组训练样本(a,p,n)经过深度卷积神经网络H′,得到三元组训练样本中的每张图片所对应的实值特征fa,fp,fn;
步骤Sc2,计算三元组量化损失函数,向网络H′反向传播梯度以更新网络参数,其中:
所述三元组量化损失函数lossQ(fa,fp,fn)为:
其中αs用于控制相似图片的特征距离0.5的远近,αd用于控制非相似图片间特征的距离,δ用于控制非相似图片间每个维度上的距离,β与γ用于平衡两项。
更优选地,在步骤Sc2中:
利用三元组量化损失函数,使得相似图片a与p各维度特征值都同时大于设定阈值或同时小于设定阈值,促使通过门槛函数后各维度的哈希码值相同;同时控制非相似图片a与n之间距离足够大,促使通过门槛函数后存在部分维度上两者的哈希码值不同。
优选地,所述S2与S3中,量化的操作都是利用了门槛函数,将深度卷积神经网络H″输出的实值特征映射为哈希码,其中:
所述门槛函数为:
其中a表示输入网络的图片,fa表示其通过网络H输出的实值特征。
优选地,所述方法进一步包括以下至少一种特征:
所述S2中,将图库中的所有图片输入深度卷积神经网络H″,输出的实值特征经过门槛函数量化后得到哈希码,并将所有图片的哈希码存储在本地。
所述S3中,将查询图片q输入深度卷积神经网络H″得到图片特征,经过门槛函数量化得到哈希码h(q)。
根据本发明的第二方面,提供一种有监督深度哈希快速图片检索***,包括:
有监督训练数据模块:用于构建三元组训练样本;
卷积神经网络模块:用于构建可输出低维特征的深度卷积神经网络,构成深度卷积神经网络H,深度卷积神经网络H经过三次复制得到三路并行且参数共享的深度卷积神经网络H′;同时,对输入图像进行缩放与裁剪;
有监督学习模块:用于学习高检索精度且适合量化的实值特征,调用所述有监督训练数据模块产生的三元组训练样本,先后通过三元组损失模块与三元组量化损失模块优化深度卷积神经网络H′参数,得到用于快速图像检索的卷积神经网络H″;其中:所述三元组损失模块,利用三元组损失函数学习能有效判别图片相似与否的实值特征;所述三元组量化损失模块,利用三元组量化损失函数降低量化造成的图片语义信息损失;
哈希码提取模块:用于应用所述有监督学习模块得到的网卷积神经网络H″,对每一张输入图片提取哈希码并储存;
相似度计算模块:用于通过哈希码计算查询图片与图库中图片的相似度,排序之后得到最相似的图片。
本发明的原理是:先利用三元组损失函数训练深度卷积神经网络,使得网络H能够输出高表达能力的实值特征;再利用三元组量化损失函数微调之前得到的网络参数,使得网络H能够输出高表达能力且适合量化操作的实值特征。其中,优化三元组量化损失的效果等同于:1)使得相似图片的实值特征在各维度都同时大于0.5或小于0.5,继而通过门槛函数时各维度的哈希码值相同;2)非相似图片的实值特征保持足够大的距离,继而通过门槛函数时存在部分维度上的哈希码值不同。则微调后从网络提取到的哈希码值将具有接近实值特征的表达能力,继而有较高的检索精度。
与现有技术相比,本发明具有如下的有益效果:
1、相比于现有的训练单次网络的哈希方法,本发明先利用单纯的三元组损失函数训练网络再进行微调,这得以最小程度地干扰网络学习到高表达能力的实值特征,继而最大程度地挖掘哈希码的潜力。
2、现有的基于深度卷积神经网络的哈希方法,广泛应用了量化损失函数或具有相近形式的正则项,事实上是对量化损失的误读,导致网络无法学习到高表达能力的实值特征,继而降低哈希码的检索精度。本发明中设计的三元组量化损失函数从本质上解释了量化操作导致图片语义信息丢失的原因,并确实显著地提升了哈希码的检索精度。
具体实施方式
下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进。这些都属于本发明的保护范围。
本发明提供了基于深度卷积神经网络的有监督哈希快速图片检索***及方法,该***及方法利用现有的深度神经网络结构,设计了三元组量化损失函数以训练得到高效的有监督哈希模型用于快速图像检索领域。通过三元组量化损失函数微调已具备高表达能力的实值特征,驱使网络在保留表达能力的基础上输出更适合做量化处理的特征,最终得到同样高表达能力的哈希码以提高快速图片检索的准确性。本发明是一种能够利用三元组标签数据学习网络的哈希快速图片检索方法,利用设计的三元组量化损失,显著提升了快速图片检索的准确性。
如图1所示,一种有监督哈希快速图片检索***的实施例结构框图,包括如下模块:
有监督训练数据模块:用于构建三元组训练样本;
卷积神经网络模块:用于构建可输出低维特征的深度卷积神经网络,构成深度卷积神经网络H,深度卷积神经网络H经过三次复制得到三路并行且参数共享的深度卷积神经网络H′;同时,对输入图像进行缩放与裁剪;
有监督学习模块:用于学习高检索精度且适合量化的实值特征,调用所述有监督训练数据模块产生的三元组训练样本,先后通过三元组损失模块与三元组量化损失模块优化深度卷积神经网络H′参数,得到用于快速图像检索的卷积神经网络H″;其中:所述三元组损失模块,利用三元组损失函数学习能有效判别图片相似与否的实值特征;所述三元组量化损失模块,利用三元组量化损失函数降低量化造成的图片语义信息损失;
哈希码提取模块:用于应用所述有监督学习模块得到的网卷积神经网络H″,对每一张输入图片提取哈希码并储存;
相似度计算模块:用于通过哈希码计算查询图片与图库中图片的相似度,排序之后得到最相似的图片。
所述卷积神经网络模块应用已有的深度卷积神经网络的主体结构,加入到有监督学习模块中。为准备有监督学习,首先加入三元组损失模块,并在已有的深度卷积神经网络与三元组损失模块间***低维的哈希层,再通过有监督学习模块,训练得到高检索精度的实值特征,之后将三元组损失模块替换为最小三元组量化损失模块,继续通过有监督学习模块进行参数微调,在保证检索精度的前提下微调实值特征使其适合量化,整个训练过程均接收三元组训练样本作为输入。
如图2-3所示,结合上述***,提供一种有监督哈希快速图片检索方法实施例的描述,该方法包括如下步骤:
步骤S1,通过有监督训练数据模块,对于每张图片a,随机分配一张相似图片p与一张非相似图片n,构成一组三元组训练样本(a,p,n);
步骤S2,通过卷积神经网络模块,在已有的深度神经网络模型末端叠加低维哈希层,构成网络H,经过复制得到三路并行且参数共享的网络,构成网络H′;
步骤S3,通过有监督学习模块,将步骤S1中的三元组训练样本(a,p,n)输入到网络H′开始训练,同时卷积神经网络模块对该训练样本进行缩放与裁剪;
步骤S4,有监督学习模块调用三元组损失模块,三元组损失模块再通过优化三元组损失函数训练网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新;
步骤S5,将有监督学习模块中的三元组损失模块替换为三元组量化损失模块;
步骤S6,有监督学习模块调用三元组量化损失模块,三元组量化损失模块再通过优化三元组量化损失函数微调网络H′,以梯度回传的方式对深度卷积神经网络H′进行网络参数的更新;
步骤S7,通过哈希码提取模块,将图库中的图片依次输入网络H″后得到实值特征,经过量化操作后得到哈希码并储存在本地;
步骤S8,将每一张查询图片q输入至深度卷积神经网络H″并通过哈希码提取模块量化得到哈希码h(q),再通过相似度计算模块,计算哈希码h(q)与所有存储在本地的哈希码之间的汉明距离,将汉明距离为小的认作相似度为高,以此进行排序,最终根据检索数量要求返回相应数量的最为相似的图片。
进一步地,上述实施例中,步骤S1具体包括以下步骤:
对于基准图片a,根据标签分配相似图片p与非相似图片n,其中标签相同则为相似图片,不相同则为非相似图片,构成三元组训练样本(a,p,n);每一张图片都作为基准图片并进行20次如上操作,要求每一组三元组训练样本都与其他组的成员不尽相同。
进一步地,上述实施例中,步骤S2包括如下子步骤:
步骤S21,参考已有的深度卷积神经网络,省去网络末端损失层,形成可输出多维实值特征的结构;
步骤S22,构建低维的全连接层,配以激活函数后作为低维哈希层,并接在步骤S21得到的网络末端,得到深度卷积神经网络H;
步骤S23,复制三次网络H,并行排列并设置为参数共享,构成网络H′。
进一步地,上述实施例中,步骤S3具体包括如下步骤:
三元组训练样本(a,p,n)由有监督学习模块输入到网络H′中,卷积神经网络模块将其缩放至256像素×256像素,从中随机裁取227像素×227像素大小的部分。
进一步地,上述实施例中,步骤S4具体包括如下子步骤:
步骤S41,步骤S1中的三元组训练样本(a,p,n)经过网络H′,得到三元组训练样本中的每张图片所对应的实值特征fa,fp,fn;
步骤S42,计算三元组损失函数loss(fa,fp,fn),通过三元组损失模块向网络反向传播梯度以更新网络参数,其中:
所述三元组损失函数loss(fa,fp,fn)为:
loss(fa,fp,fn)=max(α+‖fa-fp‖2-‖fa-fn‖2,0)
其中α用于控制相似图片间距离与非相似图片间距离的差。
进一步地,上述实施例中,步骤S5中,将有监督学习模块中三元组损失模块替换为三元组量化损失模块,损失函数更替为三元组量化损失。
进一步地,上述实施例中,步骤S6具体包括如下子步骤:
步骤S61,步骤S1中的三元组训练样本(a,p,n)经过网络H′,得到三元组训练样本中的每张图片所对应的实值特征fa,fp,fn;
步骤S62,计算三元组量化损失函数,通过三元组量化损失模块向网络反向传播梯度以更新网络参数,其中:
所述三元组量化损失函数lossQ(fa,fp,fn)为:
其中αs用于控制相似图片的特征距离0.5的远近,αd用于控制非相似图片间特征的距离,δ用于控制非相似图片间每个维度上的距离,β与γ用于平衡两项。
进一步地,上述实施例中,步骤S7与S8中,量化的操作都是利用了门槛函数,将网络H输出的实值特征映射为哈希码,其中:
所述门槛函数为:
其中a表示输入网络的图片,fa表示其通过网络H输出的实值特征。
进一步地,上述实施例中,步骤S22中,构建的全连接层中神经元的个数等于最终要求输出的哈希码比特数。
进一步地,上述实施例中,在步骤S42中:
利用三元组损失函数,使得相似图片a与p的特征之间距离尽量小,非相似图片a与n的特征之间距离尽量大,并用参数α控制后者比前者大出的程度。
进一步地,上述实施例中,步骤S62中:
利用三元组量化损失函数,使得相似图片a与p各维度特征值都同时大于0.5或同时小于0.5,促使通过门槛函数后各维度的哈希码值相同;同时控制非相似图片a与n之间距离足够大,促使通过门槛函数后存在部分维度上两者的哈希码值不同。
进一步地,上述实施例中,步骤S7中:
网络H′中任意抽取一路网络即用于快速图像检索的深度卷积神经网络H″,将图库中的所有图片输入深度卷积神经网络H″,输出的特征经过门槛函数量化得到哈希码,并将所有图片的哈希码存储在本地。
进一步地,上述实施例中,步骤S8具体包括如下子步骤:
步骤S81,将查询图片q输入深度卷积神经网络H″得到图片特征,经过门槛函数量化得到哈希码h(q);
步骤S82,利用相似度计算模块计算h(q)与所有本地图片哈希码的汉明距离,判定汉明距离较小的较为相似,以此排序后按照对检索结果的数量要求返回相应数量的最为相似图片。
上述实施例通过哈希码h(q)与本地数据库中每个哈希码的汉明距离排序挑选出相似度最高的图片作为检索到的图片。
在上述实施例中:
1)有监督训练数据模块:采用In-shop数据集(Liu,Z.,Luo,P.,Qiu,S.,Wang,X.,&Tang,X.(2016).Deepfashion:Powering robust clothes recognition and retrievalwith rich annotations.In Proceedings of the IEEE Conference on ComputerVision and Pattern Recognition(pp.1096-1104)),对于基准图片a,根据标签分配相似图片p与非相似图片n,其中标签相同则为相似图片,不相同则为非相似图片,构成三元组训练样本(a,p,n)。每一张图片都作为基准图片并进行20次如上操作,要求每组三元组训练样本都与其他组的成员不同。
2)卷积神经网络模块:在已有的深度神经网络模型后依次叠加低维哈希层,构成网络H,经过复制得到三路并行且参数共享的网络H′,其中哈希层实为带激活函数的全连接层,神经元个数与哈希码比特数相同,设置为48。对于1)中得到的三元组训练样本(a,p,n),该模块对其进行缩放与裁剪后输入网络H′,输出对应的实值特征(fa,fp,fn)。
3)有监督学习模块:将1)中得到的三元组训练样本输入网络H′,先后利用三元组损失模块与三元组量化损失模块优化网络H′的参数。
4)三元组损失模块:利用三元组损失函数训练网络,输出损失函数值并反向传播梯度更新网络H′。三元组损失函数为:
loss(fa,fp,fn)=max(α+‖fa-fp‖2-‖fa-fn‖2,0)
其中,α在本实施例中取值为1.6。当然,在其他实施例中,也可以根据实际需要选取其他数值。
5)三元组量化损失模块:为通过实值特征得到二进制的哈希码,采用量化规则:
结合量化规则,为降低量化导致的信息丢失,设计三元组量化损失函数微调三元组损失模块训练过的网络模型H′,使得相似图片的实值特征在各维度都同时大于0.5或小于0.5,而非相似图片的实值特征保持足够大的距离,继而相似图片的哈希码各维度的值都相同,非相似图片的哈希码存在部分维度的值不同。设计的三元组量化损失函数为:
其中,在本实施例中β、γ、αs、αd与δ可以分别取值为8.00、1.00、0.16、12.00与0.64。当然,在其他实施例中,也可以根据实际需要选取其他数值。
7)哈希码提取模块:用于将所有图库中的图片及查询图片输入网络H″,得到特征后通过门槛函数量化得到哈希码,特别地,将图库中图片的哈希码保存在本地,为相似度计算模块做准备。
8)相似度计算模块:对于查询图片q,计算其哈希码h(q)与所有本地图片哈希码的汉明距离,判定汉明距离较小的较为相似,以此排序后按照对检索结果的数量要求返回相应数量的最为相似图片。
另外,在上面所述的2)中,包括:
将a,p,n三张图片缩放至256像素×256像素,从中随机裁取227像素×227像素大小的部分。
将剪裁过后的a,p,n输入到三路并行的结构完全相同的深度卷积神经网络H′中,三条通路的参数共享。
随着信息技术的高速发展,海量的数据不断生成,其中图片数据的规模更是以指数增长,极大的数据量使得直接检索相似图像带来极大的时间与空间开销。作为常见的解决方法之一,哈希方法由于能将任意图片映射为紧凑的二进制代码而获得广泛关注。然而,现有的哈希方法始终无法避免量化导致的图片语义信息丢失。本实施例提出了一种基于深度卷积神经网络的有监督哈希快速图片检索***及方法,利用三元组标签训练网络,在参数微调中解决了哈希中普遍存在的量化损失问题,使得网络能够提取到高表达能力的哈希码用于快速图像检索。
上述实施例提出的基于深度卷积神经网络的有监督哈希快速图片检索***及方法,参考了现有的深度卷积神经网络模型,首先通过三元组损失函数训练网络得到高表达能力的实值特征,继而通过三元组量化损失函数微调网络,使得网络能够提取到高质量实值特征的同时使其变得适合量化,进而得到高表达能力的哈希码,其检索精度与现有哈希方法相比有显著提升。
通过上述实施例,可以构建一个基于深度卷积神经网络的有监督哈希快速图片检索***及方法,先训练实值特征后在参数微调中专门降低量化导致的信息丢失,保证了网络对于图片有较高的辨识能力,同时能够提取到紧凑的哈希码,使得检索精度高且速度快。
本领域技术人员知道,除了以纯计算机可读程序代码方式实现本发明提供的***及其各个模块以外,完全可以通过将方法步骤进行逻辑编程来使得本发明提供的***及其各个模块以逻辑门、开关、专用集成电路、可编程逻辑控制器以及嵌入式微控制器等的形式来实现相同功能。所以,本发明提供的***及其各项模块可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的模块也可以视为硬件部件内的结构;也可以将用于实现各种功能的模块视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
以上对本发明的具体实施例进行了描述。需要理解的是,本发明并不局限于上述特定实施方式,本领域技术人员可以在权利要求的范围内做出各种变形或修改,这并不影响本发明的实质内容。