一种快速优化深度哈希图像编码方法及目标图像检索方法与流程

文档序号:19155766发布日期:2019-11-16 00:44阅读:438来源:国知局
一种快速优化深度哈希图像编码方法及目标图像检索方法与流程

本发明属于信息检索技术领域,涉及图像处理与图像快速检索技术,尤其涉及一种基于贪心策略的快速优化深度哈希图像编码方法及其目标图像检索方法。



背景技术:

随着大数据时代的到来,各领域的数据呈爆发式增长,在如此之大的数据浪潮中,如何检索出自己需要的信息成为了一个重要且紧急的研究课题。哈希算法就是一种针对在大型图像数据集上快速完成目标图像检索的算法,其主要思想是将图像都编码成一串二值码(即每幅图像都用一串有限位的二值码来作为该图像的特征表示),通过二值码之间快速的异或操作得到其汉明距离,从而排序后完成近似最近邻图像检索(即从图像数据库中找出和查询图像最相近的图像)。这种二值图像特征的表示方式能带来非常低的存储要求(二进制)以及非常快的检索速度(通过计算机中最简单的逐位异或操作即可得特征间汉明距离从而判断两张图像的相似程度),因此具备很大的研究潜力和应用范围。

近几年深度学习特别是其代表作——卷积神经网络的快速发展,使得各大与图像相关的应用在性能上得到了质的提升(如分类、物体检测、图像检索等)。深度神经网络主要应用随机梯度下降法进行训练,简而言之,就是通过输入图像到网络,网络正向传播后得到图像特征,计算相应的损失函数(也可称为目标函数,如检索的目标是同一类的图像应该具有相近的图像特征),再将损失反向传播,计算各层神经元的梯度(得到朝着减少损失函数的方向),从而完成参数更新和网络训练,使损失函数降到最低(如图1所示)。深度学习之强大促使哈希研究人员提出将哈希算法和深度网络结合,即深度哈希算法,进一步提高图像编码的检索性能。

深度哈希算法解决快速图像检索任务的思路分两步,一是利用卷积神经网络强大的特征学习能力,去学习图像数据库中各张图像的深度特征表达,以求相对于用原图各像素值或用传统特征提取算法提取的特征作为图像的表示,深度网络能输出更能表征输入图像特点的图像特征。二是利用哈希算法将上述连续值图像特征进一步编码为二进制特征,从而极大地降低了存储要求和迅速提高检索效率,真正达到了快速且准确的检索需求。深度哈希算法通过有效地融合上述两个步骤到同一个深度网络框架,使深度特征学习和哈希编码两部分能相互促进学习和训练,从而得到最优的图像二值编码及相应编码网络。

但是,实际上要实现真正网络端到端训练的深度哈希算法依然是个极具挑战性的问题,主要难点在将图像编码成二值码所用到的符号函数(如图2所示),其梯度(导数)处处为零,这对于用梯度下降法进行训练的深度神经网络是致命的,在符号函数前层的网络无法得到任何梯度更新信息而导致训练失败。

哈希算法通过将图像编码成一串紧凑的二值码,从而能在大型图像数据集上快速完成目标图像检索的任务(即给定一张查询图像,算法在大型图像数据库中找出相似的同类图像并返回给用户),具备非常广泛的应用范围——如以图搜图、人脸认证等技术应用。而深度哈希算法则希望结合当下强大的深度学习和哈希算法两者,进一步提高图像检索系统的性能。深度哈希研究领域面临的一个很棘手的问题是,将图像编码成二值码所用到的符号函数(输入大于0的值输出+1,输入小于0的值输出-1),其梯度处处为零,这对于用梯度下降法进行训练的深度神经网络是致命的,这种梯度消失问题会使得网络前层无法得到任何更新信息,最终训练失败从而图像得不到有效的编码。

已有的大部分深度哈希算法提出先对原问题进行放松,不要求在训练阶段就严格生成二值码{-1,+1},放松为可以取-1到+1之间的连续值(相应生成函数处处可导),从而使得网络可以完成训练,然后在最后测试阶段再量化上述连续值特征,得到真正的二值码。该方法虽然可以解决梯度消失问题,但这种放松策略又会引入量化误差的问题,体现为测试阶段强制生成的真正二值码和训练阶段生成的图像特征有所不同,从而造成性能下降的现象。

尽管hashnet和dsdh能避免深度哈希中的梯度消失和量化误差等障碍完成网络训练,但他们暴露出的问题也较为明显。一方面,他们都需要迭代训练很多次,因为dsdh每次只更新二值编码中的一位,因此需要循环更新不同的编码位置,而hashnet需要不断收紧约束β后再次训练,因而需要更多的训练迭代,训练成本高。另一方面,对于dsdh,其使用的离散循环坐标下降法只能应用在离散二次规划问题,应用范围受限,而hashnet由于β不能增长到无穷大,所以结果依然会存在部分量化误差导致性能不是最佳。

大部分深度哈希算法应用放松策略来解决梯度消失问题,如文献[1]使用tanh函数(导数不为0)来输出[-1,+1]之间的连续值来代替符号函数的离散取值{-1,+1},然后在训练完成后再将得到的图像特征严格二值化,得到真正的二值图像特征。这种方法虽然可以解决梯度消失问题,但其应用的放松策略会引入量化误差,体现为测试阶段生成的真正二值码和训练阶段生成的连续值图像特征有所不同,从而导致所生成的图像二值编码及编码网络是次优的。针对量化误差问题,文献[2]和[3]展示了各自的解决方案并取得了目前该领域较优的性能表现。文献[2]提出hashnet算法,其通过首先使用放松的y=tanh(βx)编码函数,然后在训练过程逐渐增大β来逼近原始的符号函数y=sgn(x)从而减少量化误差,训练难度的逐级增加使网络不至于一开始就训练失败。文献[3]则提出dsdh算法,其使用离散循环坐标下降法来解哈希离散编码优化问题,整个求解和训练阶段都可以维持离散取值约束不放松,从而避免引入量化误差。尽管检索性能得到提升,hashnet和dsdh依然存在网络训练慢、应用范围受限等问题。

参考文献:

[1]zhaof,huangy,wangl,etal.deepsemanticrankingbasedhashingformulti-labelimageretrieval[c]//proceedingsoftheieeeconferenceoncomputervisionandpatternrecognition.2015:1556-1564.

[2]caoz,longm,wangj,etal.hashnet:deeplearningtohashbycontinuation[c]//iccv.2017:5609-5618.

[3]liq,sunz,her,etal.deepsuperviseddiscretehashing[c]//advancesinneuralinformationprocessingsystems.2017:2482-2491.

[4]goodfellowi,bengioy,courvillea,etal.deeplearning[m].cambridge:mitpress,2016.

[5]liwj,wangs,kangwc.featurelearningbaseddeepsupervisedhashingwithpairwiselabels[j].arxivpreprintarxiv:1511.03855,2015.

[6]zhuh,longm,wangj,etal.deephashingnetworkforefficientsimilarityretrieval[c]//aaai.2016:2415-2421.

[7]laih,pany,liuy,etal.simultaneousfeaturelearningandhashcodingwithdeepneuralnetworks[c]//proceedingsoftheieeeconferenceoncomputervisionandpatternrecognition.2015:3270-3278.

[8]xiar,pany,laih,etal.supervisedhashingforimageretrievalviaimagerepresentationlearning[c]//aaai.2014,1(2014):2.



技术实现要素:

为了克服上述现有技术的不足,本发明提供一种基于贪心策略的快速优化深度哈希图像编码方法及目标图像检索方法,结合神经网络更好地解决了梯度消失和量化误差问题,编码性能更优;用更少的迭代次数完成深度网络的训练过程,训练速度更快;能应用于各种带离散约束的问题,应用范围更广;进一步提高深度神经网络的优化速度和所生成图像编码的检索性能,有效提高了大型图像数据库的检索精度。

本发明提供的技术方案是:

一种快速优化深度哈希编码的目标图像检索方法,包括:基于贪心策略的快速优化深度哈希图像编码方法及目标图像检索方法。基于贪心策略,针对大型图像数据集,建立哈希图像编码模型,通过优化后得到的深度哈希编码网络生成所有图像的二值编码。在进行目标图像检索时,可通过计算查询图像编码和数据库图像编码之间的汉明距离,迅速得到查询图像的同类相似图像。包括如下步骤:

1)哈希图像编码问题建模,得到哈希图像编码模型;

哈希图像编码问题建模,得到优化问题即哈希图像编码模型,表示为式(1):

s.t.b∈{-1,+1}k式(1)

其中,b表示本发明利用深度网络对输入图像进行前向传播而生成的二值编码,而约束条件则约束了该编码b的每一位都只能从{-1,+1}中选择,一共有k位(即每幅图像都编码为k位二值码)。l(b)表示对b进行损失函数计算,因为本发明提出的算法不像dsdh限制了l必须是二次规划形式,因此在本发明的模型中,上式的l可以具体为深度学习领域各种常用的损失函数,如均方误差函数、交叉熵函数等。

2)使用贪心策略求解哈希图像编码模型(式(1)),得到最优的二值编码b;包括如下操作:

21)求解过程中,在不考虑离散约束b∈{-1,+1}k的情况下,可以先计算出l关于b的梯度然后使用下式的梯度下降法进行迭代更新,表示为式(2):

其中,t表示训练过程中的第t轮更新,lr表示算法提前设定好的学习率;bt表示第t轮更新后的编码b;bt+1表示第t+1轮更新后的编码b;l表示模型的损失函数。

用梯度更新式(2)求出来的bt+1是l(b)在不考虑离散约束情况下选出的当前迭代的最优更新方向;

22)得到离该连续值bt+1最近的且满足离散取值约束的解,即sgn(bt+1),sgn()表示逐元素地使用符号函数;

23)向该解sgn(bt+1)的方向进行参数更新,也就是利用式(3)求解哈希编码优化问题式(1):

3)在深度网络中设计深度哈希编码模块,训练哈希图像编码模型,实现式(3)的更新方式;包括如下操作:

31)使用卷积神经网络将输入图像表示为一串取连续值的图像特征h;

32)在卷积神经网络的最后一层设计一个全新的深度哈希图像编码模块,其输入是连续值图像特征h,输出就是编码的b;在深度哈希图像编码模块中实现式(3)的更新方式;模块前向传播中对h逐位的使用符号函数,得到严格取二值的编码b;模块反向传播时将编码b得到的梯度信息直接赋值给h,即令h的梯度信息等于b的梯度信息,使梯度顺利回传到前层网络;

深度哈希图像编码模块能够解决深度哈希算法中的梯度消失和量化误差问题,并实现快速优化和准确编码。深度哈希图像编码模块完成如下操作:

321)首先将变量h引入公式(3),可以得到式(4):

其中,ht+1表示第t+1轮更新后的变量h;

322)此时为实现式(4a),在深度哈希图像编码模块的前向传播中对输入h使用符号函数,表示为式(5):

b=sgn(h)式(5)

323)为实现式(4b),在网络训练的目标函数中添加一项惩罚项来辅助深度哈希图像编码模块;

对于(4b),需要先在损失函数l中添加一惩罚项使得网络在训练过程近似满足h≈sgn(h)=b;对于h变量,其更新公式变为式(6):

其中,ht表示第t轮更新后的变量h;

对比式(6)和式(4b)可得,实现(4b)的方法是在深度哈希编码模块的反向传播时实现直接赋值回传,表示为式(7):

式(7)代表了在新设计的编码模块的反向传播过程中,损失函数关于b的梯度可以直接完整地回传给前层h,并最终回传到网络前端,完成参数学习和网络更新。

在上述的网络训练过程中,正向传播时严格使用符号函数以保持离散约束一直成立;反向传播时梯度完整回传到前层网络,在解决梯度消失问题的同时,同步更新各编码位,以迅速完成有效的神经网络训练和收敛;

4)训练完成后,得到训练好的图像深度哈希编码网络;

5)利用训练好的深度哈希编码网络,对所有数据库图像进行编码,生成数据库图像编码;

通过上述过程,实现基于贪心策略的快速优化深度哈希图像编码。

在进行目标图像检索时,执行如下操作:

6)每当用户提供查询图像,先用上述深度哈希编码网络对查询图像进行编码,生成查询图像编码;

7)然后通过计算查询图像编码与所有数据库图像编码之间的汉明距离,排序后返回距离最小的前m(由用户设置的返回图像数量)个数据库图像,即为查询图像的相似图像检索结果;

通过上述过程,实现目标图像与查询图像相似的数据库图像的快速检索。

与现有技术相比,本发明的有益效果是:

本发明提供一种基于贪心策略的快速优化深度哈希编码的目标图像检索方法,使用贪心策略来求解深度哈希离散优化问题,通过迭代地向当前情况下满足离散约束的近似最优解来更新网络从而完成快速和有效的训练。具体实施中设计了一个全新的深度哈希编码模块,其正向传播时严格使用符号函数以保持离散约束一直成立,避免了量化误差问题,而在其反向传播时梯度完整回传到前层网络,解决梯度消失问题的同时,同步更新了各编码位,以迅速完成有效的神经网络训练和收敛。另外,本发明在网络训练的目标函数中添加了一项惩罚项来辅助所提出的编码模块,有效地减少编码模块反向传播中产生的梯度偏差,保证了参数更新方向的准确性和网络优化的稳定性,使得所生成的图像编码更加精准与鲁棒。实验部分证明了本发明所提出的深度哈希编码方法相比于以往的算法拥有更快的训练速度和更优的检索性能,充分说明了本发明在大型图像数据库检索问题上的应用潜力。

本发明方法的技术优势具体体现为:

(一)基于贪心策略提出了一个全新的深度哈希编码模块,该编码模块在正向传播时严格保持使用符号函数来维持离散约束,从而避免引入量化误差,随后在反向传播中将梯度完整回传,避免梯度消失问题并实现了各个编码位同步更新,帮助网络完成快速的训练和编码性能提升。对于大型图像检索应用,该模块能有效地降低训练成本以及明显提高检索精度。

(二)在网络训练的目标函数中添加了一项惩罚项来辅助本发明所提出的编码模块,其作用使连续变量h的取值更接近离散编码变量b,从而使得编码模块的反向传播中梯度偏差减少,保证了参数更新方向的准确性和网络优化的稳定性,使得所生成的图像编码更加精准与鲁棒。

附图说明

图1为现有神经网络梯度下降法的示意图;

其中,横坐标为网络的参数w;纵坐标为训练网络的损失函数。

图2为符号函数示意图。

图3为本发明提供的目标图像检索方法的流程框图。

图4为本发明具体实施时采用的网络模型的结构示意图;

其中,网络的前层基础框架选用alexnet结构,图像经过alexnet后得到特征h,经过本发明提出的哈希编码模块得到编码b。

图5为本发明具体实施时采用本发明方法与其他现有方法的快速优化性能的比较。

具体实施方式

下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范围。

本发明提供一种基于贪心策略的快速优化深度哈希图像编码方法及目标图像检索方法,使用贪心策略来求解深度哈希离散优化问题,通过迭代地向当前情况下满足离散约束的近似最优解来更新网络从而完成快速和有效的训练。通过设计一个全新的深度哈希编码模块,正向传播时严格使用符号函数以保持离散约束一直成立,避免了量化误差问题,而在其反向传播时梯度完整回传到前层网络,在解决梯度消失问题的同时,同步更新了各编码位,以迅速完成有效的神经网络训练和收敛。另外,本发明在网络训练的目标函数中添加了一项惩罚项来辅助所提出的编码模块,有效地减少编码模块反向传播中产生的梯度偏差,保证了参数更新方向的准确性和网络优化的稳定性,使得所生成的图像编码更加精准与鲁棒。

本发明方法的流程如图3所示。网络的整体结构如图4所示。

具体实施时,本发明针对所有查询图像和数据库图像生成图像编码,包括如下步骤:

第一,哈希编码问题建模,得到如下优化问题:

s.t.b∈{-1,+1}k式(1)

其中,b表示本发明利用深度网络对输入图像进行前向传播而生成的二值编码,而约束条件则约束了该编码b的每一位都只能从{-1,+1}中选择,一共有k位(即每幅图像都编码为k位二值码)。l(b)表示对b进行损失函数计算,因为本发明提出的算法不像dsdh限制了l必须是二次规划形式,因此在本发明的模型中,上式的l可以具体为深度学习领域各种常用的损失函数,如均方误差函数、交叉熵函数等。

要解这个优化问题,得到最优的二值编码b。在不考虑离散约束b∈{-1,+1}k的情况下,可以先计算出l关于b的梯度然后使用下式的梯度下降法进行迭代更新:

其中,t表示训练过程中的第t轮更新,lr表示算法提前设定好的学习率;bt表示第t轮更新后的编码b;bt+1表示第t+1轮更新后的编码b;l表示模型的损失函数。然而用此式计算出来的b几乎不可能满足约束b∈{-1,+1}k,而一旦考虑上离散取值约束后,(1)就变成了一个np难问题。一个快速且有效求解np难问题的算法就是贪心算法,其通过每次迭代更新都选择当前情况下的最优选择,最终可以得到一个与全局最优解十分接近的可行解。如果用梯度更新(2)式求出来的bt+1是l(b)在不考虑离散约束情况下选出的当前迭代的最优更新方向,那么应用贪心原则,离该连续值bt+1最近的且满足离散取值约束的解,即sgn(bt+1),很有可能是本次迭代中最优的离散解,因此本发明“贪心”地向着该解sgn(bt+1)的方向进行参数更新,也就是利用下式来求解(1)中问题:

尽管(3)式可能不是单独解离散优化问题中最有效的方法,但却是最能和神经网络相互融合来求解离散优化问题的方式之一,原因有以下三点:

1.深度神经网络是通过随机梯度下降法来完成参数更新和学习的,而梯度下降本身就是一种贪心策略,其通过迭代地向当前情况的最速下降方向更新一步从而完成最终收敛。可见在神经网络中贪心策略的可行性很高,因此用该思想去解决深度网络中的离散取值优化问题也是十分合理和可期的。

2.等式(3)的更新形式其实就是神经网络梯度更新公式的变体(同样是计算参数梯度然后进行参数更新),两者相近的更新模式为在神经网络中实现(3)式奠定了坚实的基础(见4.2节)。

3.正如文献[4]所指出的,随机梯度下降算法(用部分样本计算梯度)本来就相当于在真实梯度信息(用所有训练样本计算得到)中加入了噪声,梯度中适当的噪声除了能为神经网络带来一些正则化的效果,还能让神经网络在优化中逃离大部分的局部极小值点和鞍点。而观察(3)式可以发现,其作用相当于通过符号函数sgn()对原本的(2)式引入了“噪声”。因此在神经网络中使用(3)式不仅有助于网络解决离散取值优化难题,还在一定程度上提升了网络的优化过程性能。

基于贪心策略的(3)式来解决神经网络中的离散编码优化问题,以下将具体叙述本发明所提出的深度哈希编码模块,以在深度网络中实现(3)式更新方式。

正如背景部分所介绍的深度哈希算法的基本流程,首先将使用卷积神经网络(可使用任何常见的深度网络,如alexnet、resnet等)将输入图像表示为一串取连续值的图像特征,将这串特征记为h。然后将设计一个全新的哈希编码模块,其输入是连续值图像特征h,输出就是编码的b。需要在这模块中实现4.1节的等式(3)更新方式,并从该模块的构造方式来直观地阐明其如何解决深度哈希算法中的梯度消失和量化误差问题并实现快速优化和准确编码的目标。

首先将变量h引入公式(3),可以得到:

ht+1表示第t+1轮更新后的变量h;

那么任务就变成了怎么实现(4a)以及(4b)。观察(4a)式可以很快发现,实现它的方式十分直接,就是在新设计的编码模块的前向传播中对输入h使用符号函数:

b=sgn(h)式(5)

而对于(4b),需要先在损失函数l中添加一惩罚项有了这项惩罚项,可以使网络在训练过程近似满足h≈sgn(h)=b,那么对于h变量,其更新公式将变为:

ht表示第t轮更新后的变量h;

对比式(4b)和式(6),可以找到实现(4b)的方法,就是在新设计的深度哈希编码模块的反向传播时实现:

上式代表了在新设计的编码模块的反向传播过程中,损失函数关于b的梯度可以直接完整地回传给前层h,并最终回传到网络前端完成参数学习和网络更新。

直观上看,哈希编码模块的实现中最为关键的两部分(公式5和7)分别解决了深度哈希领域面临的梯度消失和量化误差两大难题。首先,哈希编码模块在前向传播过程中使用了等式(5),意味着将在整个训练过程中严格保持编码的离散取值特性不进行任何放松,因此也就从根本上杜绝了量化误差的问题。而在反向传播过程中,编码层使用了公式(7),使损失函数关于b的梯度直接完整回传给变量h,一方面解决了由于正向传播使用符号函数sgn()而导致的梯度消失问题,另一方面各个编码位能同时得到梯度并更新,使网络完成快速训练和学习。

另外,本发明还在网络训练的目标函数中添加了一项惩罚项来辅助所提出的编码模块,其作用直观上可以理解为使变量h的取值更接近变量b,从而使得梯度偏差减少(即令(6)式尽量相等),保证了参数更新方向的准确性和网络优化的稳定性。

因此,公式(7)的使用使得本发明的算法能相比于其他算法得到更快的优化速度,而公式(5)(7)和惩罚项的相互配合使得本发明的哈希编码层和深度神经网络更好地融合在一起,从而拥有更优的编码性能。

以下是对本发明方法的验证:

首先阐明实验细节,本发明将在pytorch框架上来完成本发明算法的代码实现。本发明选择了alexnet作为本发明的卷积神经网络基础,即用其完成提取图像的连续值特征操作,接着在alexnet的输出h后接上本发明的哈希编码层,以生成图像二值编码b,之后将使用最常见的交叉熵损失来对编码b进行分类,计算错分类的损失之和并开始反向传播,参数更新并完成网络的训练。本发明将采用批样本处理的更新方式,批的大小是32。同时本发明使用带动量形式的随机梯度下降优化器,学习率lr设置为0.001,动量参数设置为0.9。

首先展示本发明算法的快速优化性能,本发明和能一直保持离散约束的dsdh算法以及一些常见的放松策略哈希编码方法进行比较(图中ours是本发明提出的算法;tanh是指使用放松的tanh函数代替sgn函数;penalty是指用惩罚的方式约束网络尽可能输出-1和+1值,但不进行强行约束;数字12表示用12bits进行编码,48则表示使用48bits),结果如图5所示。

本发明从图中可以清晰看出,本发明提出的算法能用更少的训练迭代次数(epoch)来完成更快更好的检索性能(map)提升,从而训练成本比以往算法更低。

接下来展示本发明在大型图像数据集上的优异检索性能。本发明和几个目前在该领域拥有顶尖表现的深度哈希算法进行比较,结果如表1(在数据集cifar10上测试)和表2(在数据集imagenet上测试)所示。

表1cifar10数据集上的检索性能map比较

表2imagenet数据集上的检索性能map比较

从表格中可以明显看出,相比于dsdh和hashnet等以往的深度哈希算法,本发明拥有更好的编码性能,意味着本发明生成的图像二值码能达到更好的检索性能,十分适合在大型图像检索系统中应用。

需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求书界定的范围为准。

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