[0005] 针对现有图像检索算法中存在的问题,本发明提出了一种基于多尺度NetVLAD和深度哈希的图像检索方法。该方法具有以下优点:1)具有卷积神经网络(Convolutional Neural Network,CNN)对图像强大的表达能力;2)通过NetVLAD层,能够在单纯的CNN基础上,提取更加高级且具有更强鲁棒能力的图像特征;3)通过融合不同卷积层的输出,使得学习到的特征对图像具有更完整的表示;4)通过哈希编码层,使得特征维度和复杂度降低,显著减少了后续的存储开销和计算复杂度。相比较于目前存在的图像检索技术,本发明提出的方法具有更高的检索速度以及更加准确的检索性能。
[0006] 本发明具体包括以下步骤:
[0007] 步骤一、训练流程:对网络参数进行训练,以获得最佳的网络参数。首先将训练集分为查询集和数据库,将数据库中的数据按照与查询集的相似程度,从高到低进行排序,选取前m1个相对相似为正类,后m2个相对不相似为负类,构成三元组,并输入到提出的基于多尺度NetVLAD的深度哈希算法网络中进行网络训练。
[0008] 具体步骤如下:
[0009] 步骤1、获得训练样本数据:
[0010] 训练样本数据分为查询集和数据库,数据库中图片标签为与查询集中图片的近似程度,由相似度判别算法获得,一般采用直方图匹配,像素平均值向量匹配等。
[0011] 步骤2、根据训练样本数据,分别对查询集中的每一个样本 qj,j=1,2,...,Q,其中Q为查询集样本数量,取图像数据库中的m1个与qj最相似的图片构成 i=1,2,...,m1,取m2个与qj最不相似的图片构成 k=1,2,...,m2,从而得到三元组 j=1,2,...,Q。
[0012] 步骤3、将步骤二得到的三元组 j=1,2,...,Q作为输入,输入到多尺度卷积网络中,将输出的特征进行融合,得到融合的特征,具体步骤如下:
[0013] 3‑1、将训练样本输入到多尺度卷积网络,获得 l=1,2,...,L, 总共P个卷积网络的中间层特征输出,其中x为卷积网络的中间层输出特征矩阵,L为训练样本总数量,P为任意大于等于2的整数值。
[0014] 3‑2、对特征进行融合: l=1,2,...,L,Xl为融合后输出特征矩阵,f表示基于深度学习的特征融合算法,一般采用多卷积层特征矩阵拼接,以及多规格卷积核滤波方法。
[0015] 步骤4、用K均值聚类算法获得初始化簇中心,具体步骤如下:
[0016] 4‑1、选取聚类的簇数为K,最大迭代次数为nmax;
[0017] 4‑2、以步骤3所得的融合后特征{X1,X2,...,XL}为输入,并从中随机选取K个值作为初始化质心{μ1,μ2,...,μK},μ为簇中心矩阵。
[0018] 4‑3、将簇划分为C,并初始化为Ct=φ,t=1,2,...,K,其中C表示聚类簇群集合,t表示类别标号,总共有K个,φ为空集;
[0019] 4‑4、计算所有样本特征{X1,X2,...,XL}与质心{μ1,μ2,...,μK}的距离l=1,2,...,L;k=1,2,...,K,将Xl归入距离最小的对应的类别t 类,更新Ct=Ct∪Xl。
[0020] 4‑5、重新计算出新的质心
[0021] 4‑6、重复4‑4,4‑5操作,直至质心不再发生改变或达到最大迭代次数,输出最终质心为所求簇中心c={μ1”,μ2”,...,μK”};
[0022] 步骤5、对步骤3所得融合特征进行VLAD池化,具体步骤如下:
[0023] 5‑1、用K个空间大小为1*1,参数矩阵为Wk,偏置矩阵为bk的滤波器对特征矩阵Xl进行卷积操作获得输出 其中Sk表示卷积后输出矩阵。
[0024] 5‑2、卷积后结果Sk(Xl)再经过Soft‑max函数,获得连续化后的权重ak(Xl),见式(1):
[0025]
[0026] 其中,k'=1,2,...,k。
[0027] 5‑3、将图片特征矩阵Xl作为输入,步骤4中得出的k个簇中心、 5‑2中所得的ak(Xl)作为VLAD的参数,得到D*K维VLAD特征矩阵Vl,见式(2):
[0028]
[0029] 其中Vl(g,k)表示池化后特征矩阵Vl的第g行第k列元素,Xl(g)表示第l个样本特征的第g维,ck(g)表示第k个簇中心的第g维。
[0030] 5‑4、将5‑3获得的VLAD特征矩阵Vl进行对列进行L2范数内部正则化,获得一个D*K维的矩阵Vl',见式(3):
[0031]
[0032] 5‑5、对5‑4获得的Vl'再次进行整体L2范数正则化,见式(4):
[0033]
[0034] 步骤6、进行哈希编码:
[0035] 6‑1、将步骤5所得的D*K的列向量Vl”,降维为N维向量VN,见式 (5):
[0036] VN=Vl”*wH+bH (5);
[0037] 其中wH为(D*K)*N维权重矩阵,bH为N维偏差。
[0038] 6‑2、对N维向量VN进行二进制编码,见式(6):
[0039]
[0040] 其中 表示激活函数,我们采用的是sigmoid函数,其表达式为 z(‑z)
表示函数 的输入,e 表示以自然常数e为底,‑z为指数的指数函数;sgn(.)为阶跃函数。
[0041] 步骤7、损失函数求取,见式(7)‑(10):
[0042]
[0043]
[0044]
[0045] L=αE1‑βE2+γE3 (10);
[0046] 其中,d表示欧式距离;m为阈值;α、β、γ为权值;t取值为{1, 2};mean(.)用来计算向量中元素的平均值;E1、E2、E3分别表示三个损失函数,通过最小化查询图像与相似图像集的欧式距离,最大化与不相似图像集之间的欧式距离,即E1,来获得更好的图像特征表示;通过最大化哈希编码与0.5之间的平方误差,即E2,来实现尽可能多的激活结点;通过最小化哈希编码向量均值与0.5之间的误差,即E3,使得哈希编码的离散分布的熵最大;L表示网络总的损失函数;
[0047] 步骤8、使用反向传播算法,对步骤7所得损失函数进行求导优化以上步骤出现过的可学习参数。
[0048] 步骤二、测试流程:用新的图片数据集对步骤一训练得到的网络进行检索测试,观察其效果。具体步骤如下:
[0049] 1.1、将新的样本输入已经训练好的网络中,得到查询图片的最后输出特征哈希码和对应的数据集的最后输出特征
[0050] 1.2、取 对应的图片为最后检索结果,其中, 距离计算为汉明距离,汉明距离定义为,两个等长字符串,将其中一个变换成另一个所需要的最小替换数。取最小距离对应的数据库图像为检索结果。
[0051] 本发明采用的是基于多尺度卷积神经网络的局部聚合描述符向量(Multiscale‑NetVLAD)方法来对图像检索中的图片进行特征提取,该方法是一种比普通NetVLAD更全面的特征提取方法。它将原始的只采用最后一层卷积层输出特征,优化为采用多层卷积层的输出特征融合后的特征。融合后的特征不仅包含高层语义特征,同时也包含了低层图片细节信息。低层和高层特征的互补性可以提高查询图像与其他候选图像之间的相似性度量,对于图像检索,核心是需要找到与之最为相似而并非同类的图片这一特性。相对于直接将NetVLAD网络输出的图片特征表示直接进行计算损失函数,在NetVlAD后面加一个哈希层进行特征编码,特征变得更加简洁,通过哈希编码层,使得特征维度和复杂度降低,显著减少了后续的存储开销和计算复杂度。加快了图像检索时的速度。是一种实用高效的大规模图像检索算法,实现在大规模数据集中快速精确的检索到相似图片。附图说明:
[0052] 图1为本发明训练流程图;
[0053] 图2为用于提取CNN特征的多尺度卷积神经网络的示例结构;
[0054] 图3为NetVLAD层结构;
[0055] 图4为哈希层输入与输出的特征结构;
[0056] 图5为本发明测试流程图。