一种利用深度卷积网络生成用于图像检索的哈希码的方法与流程

文档序号:17763083发布日期:2019-05-24 21:52阅读:402来源:国知局
一种利用深度卷积网络生成用于图像检索的哈希码的方法与流程

本发明涉及一种利用深度卷积网络生成用于图像检索的哈希码的方法。



背景技术:

随着各种摄影设备和网络的普及,人们可以随时随地拍摄各种各样的图像和视频,并在网络上与朋友分享,由此带来的是网络上数字图像和视频的爆炸式增长。2013年,facebook上的总图像数已达2500亿张,并且用户平均每天上传3.5亿张。2016年,微信朋友圈每天上传图像10亿张。面对网络上飞速增长、规模庞大的数字图像,如何在海量的数据中实现快速准确的图像检索,是一项重要的研究。

在语义搜索中,能够构造保持相似性的二进制码(即哈希码),并能进行高效图像搜索的哈希算法受到了高度重视。哈希算法是一种最近邻算法,算法关键在于设计一个能将内容相似的图像映射到相似哈希码中,它首先需要抽取图像的高维特征向量,如颜色、形状、纹理等,再通过哈希函数将特征向量转换为一个固定长度的二进制哈希码(即将高维视觉特征映射到低维的汉明空间中),这个变换过程也称为哈希变换。将每一幅图像都用一串哈希码来表示,并且越相似的图像,它们对应的哈希码的汉明距离越小。因此,在图像检索时,可以通过计算图像哈希码之间的汉明距离即可实现近似最近邻(approximatenearestneighbor,ann)搜索。汉明距离的计算速度快于对图像直接进行相似度计算的速度,这使得检索算法能大幅提高匹配时的计算速度,同时也减小检索系统对存储空间的需求。但是传统的哈希算法是基于人工设计提取图像特征的,算法的性能很大程度上取决于所抽取的特征,这使得检索系统在进行图像检索时容易产生语义鸿沟和意图鸿沟。

近几年,各项研究显示深度卷积神经网络(deepconvolutionalneuralnetworks,dcnn)在图像分类,目标检测和人脸检测及其它计算机视觉任务中都取得了优异的性能,显示出深度卷积神经网络强大的特征提取能力。因此在图像检索中出现了深度卷积神经网络与哈希算法相结合的深度哈希算法。深度哈希算法首先通过卷积神经网络提取图像特征,所提取到的图像特征经过哈希函数获得的图像哈希码。xia,rongkai,etal."supervisedhashingforimageretrievalviaimagerepresentationlearning."aaai.vol.1.2014.公开了一种利用深度卷积神经网络生成哈希码的方法(convolutionalneuralnetworkshash,cnnh),相较于传统的哈希算法,该方法性能得到了很大的提升。li,wu-jun,shengwang,andwang-chengkang."featurelearningbaseddeepsupervisedhashingwithpairwiselabels."arxivpreprintarxiv:1511.03855(2015).公开了深度成对有监督哈希(deeppairwise-supervisedhashing,dpsh)方法,该方法使用图像对作为网络的输入,并建立图像对相似矩阵作为监督信息对网络进行训练。lin,kevin,etal."deeplearningofbinaryhashcodesforfastimageretrieval."proceedingsoftheieeeconferenceoncomputervisionandpatternrecognitionworkshops.2015.公开了深度学习生成图像哈希码(deeplearningofbinaryhashcodes,dlbhc)方法,该方法直接利用预训练好的分类网络模型获得图像特征,对特征直接二值化获得图像哈希码。上述这些基于深度卷积神经网络的方法相较于传统的图像哈希算法在性能上取得了很大的进步,但是,这些深度哈希算法还存在着量化误差较大、生成的哈希码用于图像检索时准确率不高等问题。



技术实现要素:

本发明的目的在于获得能使图像检索准确率更高的哈希码,提出了一种利用深度卷积网络生成用于图像检索的哈希码的方法。

本发明具体的构思是:

利用当前分类性能较好的网络结构去除最后的输出层作为基础模型。在基础模型后添加一个哈希层来获得图像哈希码,在哈希层后再接一个分类输出层。在训练模型时,将图像对作为输入,在分类损失函数的基础上增加图像对的相似信息损失。在设计哈希函数上,本方法提出了对哈希层输出的向量中的值进行排序、然后根据排序结果进行二值量化的哈希函数。

根据上述的构思,本发明采用下述技术方案:

一种利用深度卷积网络生成用于图像检索的哈希码的方法,具体步骤如下:

步骤1,建立图像对的相似信息矩阵s:将图像分类数据库中的同一类图像视为相似图像,以此建立图像对的相似信息矩阵s;

步骤2,设计整体网络模型:将googlenet去除最后的输出层作为基础网络模型提取图像特征,在基础网络模型后添加一个哈希层用以获得哈希码,哈希层后添加分类输出层用以获得图像分类信息;

步骤3,损失函数设计:为了使得相似图像哈希码相似,损失函数中包含有以下损失:根据分类信息获得的分类损失、图像对的相似信息损失、哈希变换过程中的量化损失;

步骤4,哈希函数设计:考虑哈希层的输出向量中位与位之间的关系,提出哈希函数,对哈希层输出的各位上的数字进行从大到小排序,如果特征向量某一位上的值在排序中靠前一半,则编码为1;若在排序中靠后一半,则编码为0;

步骤5,模型训练:采用两路的基础模型对输入图像对中的两幅图像同时提取图像特征,两路基础模型的权重共享,使用随机梯度下降优化算法对模型进行训练;

步骤6,获得图像哈希码:将图像输入到步骤5训练好的模型中,获得对应的哈希码。

本发明与现有技术相比较,具有如下显而易见的突出实质性特点和显著技术进步:

本方法选择当前性能较好的分类网络去除其最后的输出层作为基础模型,提取图像特征。在基础模型后添加一个哈希层,哈希层的输出有两个作用,一是经过哈希函数后获得图像的哈希码,二是在哈希层后再接一个分类输出层,即将哈希层的输出作为分类层的输入,对图像进行分类,获得分类损失。本发明方法中采用两个权重共享的基础网络,在训练模型时,将图像对作为输入,在损失函数中加入了图像的分类损失和图像对的相似损失,通过训练后使得相似图像的哈希码更加相似。并且,本发明方法还提出了一种新的哈希函数,将哈希层输出的每一位上的值进行排序,根据排序结果对哈希层的输出进行哈希变换,从而获得哈希码。本发明方法获得的哈希码用于图像检索时能有效地提高检索的平均准确率(meanaverageprecision,map)。本发明方法同时利用了图像的分类信息和图像对的相似信息,使得越相似图像对应的哈希码的汉明距离越小。

附图说明

图1为本发明方法的流程框图。

图2为整体网络模型。

图3为获得图像哈希码示意图。

图4为本发明方法的结果示意图。

具体实施方式

下面结合附图,对本发明的具体实施例做进一步的说明。

本发明实施例的整体网络模型如图2所示,本实施例在windo10以及pytorch环境编程仿真。首先,利用当前性能较好的卷积神经网络结构模型(densenet模型),去除最后的输出层作为基础模型提取图像特征。在基础模型后添加一个哈希层,哈希层的输出有两个作用,一个是经过哈希函数后获得图像哈希码,另一个是哈希层后再接一个分类输出层,哈希层的输出作为分类层的输入,对图像进行分类。本发明方法中采用两个权重共享的基础网络,在训练模型时,将图像对作为输入,在分类损失函数的基础上增加图像对的相似信息损失。

本实施例利用深度卷积网络生成用于图像检索的哈希码的方法,如图1所示,具体实施步骤如下:

步骤1,建立图像对的相似信息矩阵s:将图像分类数据库中的同一类图像视为相似图像,以此建立图像对的相似信息矩阵s。

步骤2,设计整体网络模型:将densenet去除最后的输出层作为基础网络模型提取图像特征,在基础网络模型后添加一个哈希层用以获得哈希码,哈希层后添加分类输出层用以获得图像分类信息。

步骤3,损失函数设计:为了使得相似图像哈希码相似,损失函数中包含有以下损失:根据分类信息获得的分类损失、图像对的相似信息损失、哈希变换过程中的量化损失。

步骤4,哈希函数设计:考虑哈希层的输出向量中位与位之间的关系,提出哈希函数,对哈希层输出的各位上的数字进行从大到小排序,如果特征向量某一位上的值在排序中靠前一半,则编码为1;若在排序中靠后一半,则编码为0。

步骤5,模型训练:采用两路的基础模型对输入图像对中的两幅图像同时提取图像特征,两路基础模型的权重共享,使用随机梯度下降优化算法对模型进行训练。

步骤6,获得图像哈希码:将图像输入到步骤5训练好的模型中,获得对应的哈希码。

在所述步骤1中,要建立图像对的相似信息矩阵s,遵循当前深度哈希方法中的设定,本实施例中将图像分类数据库中的同一类图像视为相似图像,当图像xi和图像xj相似时,其图像对的标签为sij=1;当图像xi和图像xj不相似时,其图像对的标签为sij=0。当前广泛使用的cifar-10数据库中共有十类图像,分别为飞机、汽车、鸟、猫、鹿、狗、青蛙、马、船、卡车,并且每一张图像只有对应一个类别。在建立s矩阵时,若图像xi和xj属于同一类(如均为飞机类),则为相似图像,其对应的标签sij=1,反之sij=0。再如nus-wide数据库中共有21类图像,数据库中的图像可能只属于一类或者同时属于两类或两类以上,此时,若图像xi和xj归属的类别中只要有一个是相同的,那么图像xi和xj也视为相似图像,其对应的相似标签sij=1,若图像xi和xj所属的类别中没有相同的,则视为不相似图像,其对应的相似标签sij=0。

在所述步骤3中,损失函数中包含有三项损失:根据分类信息获得的分类损失、图像对的相似信息损失、哈希变换过程中的量化损失,即损失函数有三项:

3.1根据分类信息获得的分类损失:

其中,图像分类任务中的分类损失,yn为输入图像在数据库中所属的分类,为网络对输入图像的预测分类,w是整个网络的权重,λ是正则项的系数,本实施例中为10-4

3.2哈希变换过程中的量化损失:

其中,bi为哈希层的输出,ui为bi经过哈希函数后的输出,即哈希码。

3.3图像对的相似信息损失:

其中,

则损失函数为:

在所述步骤4中,现有的深度哈希方法中的哈希函数大多直接使用sign函数或tanh函数,对哈希层的输出直接量化,这会带来较大的量化误差。本实施例提出了一种新颖的哈希函数,对哈希层的输出向量各位上的数字进行从大到小排序,如果数值在排序后序列的前半区,则编码为1,在后半区则编码为0。例如,如果要获得12bit的哈希码,则哈希层的输出为12维向量,假设有一输出向量为h=(h1,h2,h3,h4,h5,h6,h7,h8,h9,h10,h11,h12),如果排序后序列为h1>h3>h5>h7>h9>h11>h2>h4>h6>h8>h10>h12,那么经过哈希函数后获得对应的哈希码为b=(1,0,1,0,1,0,1,0,1,0,1,0)。公式如下:

式中,bi为哈希码第i位的值,hi为哈希层的输出向量h第i位的值,hmid为哈希层的输出向量h中的中位数。

在所述步骤5中,对模型进行训练,优化算法使用随机梯度下降法(stochasticgradientdescent,sgd),批大小设置为64,动量参数设置为0.9,权值衰减设置为10-4,学习率设置为0.05,并且在每50个迭代周期后下降10倍,模型训练完成后保存。

在所述步骤6中,将数据库中的中图像使用步骤5获得模型获得哈希码并保存下来。这里,因为训练时两路模型是网络模型共享的,因此两路模型是完全一样的,因此本实施例在这一步中使用其中任意一路模型来获得图像哈希码,这样网络可以使用单张图像作为输入,具体过程见图3。得到结果见图4,图中同一行的图像为相似图像,故得到的哈希码相同,不同行的图像不相识,故对应的哈希不同。在进行图像检索时,同样将待查询的图像通过模型获得对应的哈希码并与数据库中的哈希码进行比较,按照汉明距离的从小到大的顺序返回数据库中的图像。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1