基于深度卷积神经网络与哈希的图像检索

2020-04-24 03:07冯兴杰程毅玮
计算机工程与设计 2020年3期
关键词:哈希检索卷积

冯兴杰,程毅玮

(中国民航大学 计算机科学与技术学院,天津 300300)

0 引 言

随着图像数量急剧增加,从海量图像中检索所需信息变得越来越困难,基于内容的图像检索算法是解决该问题的重要手段。基于内容的图像检索依赖于两个关键技术:图像特征提取和匹配。

在图像特征提取环节,传统方式是基于人工提取的图像底层特征,但底层视觉描述符存在表达能力不够强的问题。而与人工提取特征相比,深度卷积神经网络更能获得图像的内在特征,提取的特征也更准确[1,2]。在匹配环节,传统的线性扫描通过与数据库中各数据点逐个进行相似性计算来实现。随着数据库规模变大以及特征向量维度变高,计算量变得巨大,搜索成本也逐步提升。而基于哈希的图像检索方法可以降低搜索的空间复杂度与时间复杂度,其将图像的高维的特征表示映射为紧致的二维码,实现了数据降维并能在低维空间内进行度量运算[3]。

本文提出了一种基于深度卷积神经网络来学习二进制哈希编码的模型,它结合了深度卷积神经网络和哈希算法的优势。首先在深度卷积神经网络中添加了用于生成哈希码的哈希层,并将两个完全连接层直接连接到哈希层;其次将输入哈希层的特征表示先分割再映射成对应哈希码;最后在损失函数中加入分类误差与量化误差。在CIFAR-10和NUS-WIDE数据集上的实验结果表明,本文模型在检索精度方面表现优越。

1 相关工作

哈希方法在速度以及存储方面具有优势,故被广泛用于大规模图像的检索中。早期利用哈希方法进行图像检索是将人工提取的图像底层特征映射,从而产生哈希向量。目前已经提出了许多的哈希算法,现有的哈希算法大致可以分为3类,无监督的、半监督的和监督的方法。

无监督的哈希方法使用无标签的数据来学习哈希函数,其中最经典的哈希方法是局部敏感哈希方法(locality sensitive hashing,LSH)。LSH第一次将图像与哈希联系起来,其在特征空间中将数据点随机投影到具有随机阈值的随机超平面上生成二进制代码,利用简单的随机映射作为哈希函数,其缺点是只有生成较长的哈希码才能实现较为理想的检索效果。半监督的哈希方法利用有标签的和无标签的数据来学习哈希函数,其中最具代表性的是半监督哈希(semi-supervised hashing,SSH),它将监督信息用于哈希函数的学习以提高哈希码的质量,通过最小化标签数据点对的经验误差,使哈希码尽量平衡及独立,从而避免过度拟合。监督的哈希方法旨在利用有标签的数据来学习哈希函数,其中典型的方法是基于核函数的监督哈希(supervised hashing with kernels,KSH),利用汉明距离和编码内积等价的特点逐位地训练哈希函数[4],从而产生较为有效的哈希码。

除了哈希方法的研究,图像表示在基于内容的图像检索中也起着至关重要的作用。基于SIFT的方法在2012年之前一直是研究的重点,而2012年Krizhevsky等使用AlexNet神经网络模型[5]在ILSRVC 2012上取得当时最高的识别准确率,从此研究重心开始向基于深度学习特别是卷积神经网络(convolutional neural network,CNN)的方法转移[5,6]。

近几年也出现了深度学习与哈希技术相结合的方法。较为典型的有深度卷积神经网络哈希[7](convolutional neural networks hashing,CNNH),它将哈希学习过程分解为学习近似哈希码的阶段和基于深度网络同时学习图像特征和哈希函数的阶段,近似哈希码用于指导图像表示的学习,但是存在学习的图像表示不能给予近似哈希码反馈的问题,这种单向交互具有局限性,分阶段的学习会降低层与层之间的协作。LIN K等[8]提出了端对端的深度卷积网络模型,虽然模型在学习图像的特征表示时,能够一并进行哈希函数的学习,且哈希编码也能及时接受到所学图像特征的反馈,但是其未能更好地利用标签信息和偏向视觉外观的多样信息,也没有考虑到哈希码间存在的信息冗余问题。

2 本文方法

本文提出的基于深度卷积神经网络与哈希机制的图像检索框架如图1所示。深度卷积神经网络提取出输入图像的特征表示;进入哈希层后,图像的特征表示被映射成便于检索匹配的哈希码;哈希码进入损失层后,通过优化计算出的损失函数,利用反向传播算法对网络进行训练,得到模型参数后再将查询图像输入到在训练集上训练好的模型中,获得对应哈希码后与数据集中各图像的哈希码进行相似性匹配,得到最接近图像从而完成图像检索。具体方法详细描述如下。

2.1 深度卷积神经网络

由于深度卷积神经网络具有很强的自主学习能力及特征表达能力,所以利用深度卷积神经网络能更加准确精细地描述图像内容。本文利用深度卷积神经网络提取输入图像的中间特征表示。选用的深度卷积神经网络包括5个大的卷积层以及两个完全连接层。研究[9]结果表明第二个完全连接层F7输出的特征可作为图像的视觉特征,但其过多地依赖于类且具有较强的不变性,不利于捕捉图像间的细微的语义区分,而将哈希层连接到CNN中的两个完全连接层,能够减轻存在的信息丢失情况,并使哈希编码更好地利用偏向视觉外观的多样化信息,所以把哈希层的输入分为成了两部分,一部分来自第二个完全连接层F7,另一部分来自第一个完全连接层F6,如图1所示。

2.2 图像哈希层

哈希层将深度卷积神经网络输出的图像特征表示映射成便于检索的二进制哈希码。我们将哈希层添加在第二个完全连接层F7之后,原先模型中的F8能够对语义进行编码并完成分类任务,哈希层为后续的F8提供了来自F6以及F7的丰富图像特征的抽象,而哈希层的神经元活动也受到了后续层F8的调控。所以可以认为哈希层是F6、F7与F8的中间桥梁,其桥接了图像的中级特征和高级语义。

为了能充分利用偏向于视觉外观的多样化的信息,将哈希层连接到两个完全连接层, 因此将深度哈希函数定义为

h(x;w)=sign(wT[f6(x);f7(x)])

(1)

图1 基于深度卷积神经网络与哈希机制的图像检索框架

其中,w表示哈希层中的权重,f6(·) 和f7(·) 分别表示完全连接层F6和F7输出的特征向量,为了简洁起见,在此省略了f6(·) 和f7(·) 的偏差项和参数。为了获得k位二进制码,可以计算

h(x;W)=[h1(x;w1),h2(x;w2),…,hk(x;wk)]

(2)

将哈希层设置为一个简单的完全连接层,哈希层中的神经元被sigmoid函数激活,从而产生了在 (0,1) 区间的激活值,再通过阈值函数二值化激活值来获得二进制代码。但是,每一位哈希码的生成都依赖于上一层传递来的完整的图像特征表示,不利于保持生成的各位哈希码之间的独立性,同时会造成哈希码的信息冗余。考虑到这个问题,我们先把上层传来的中级图像特征表示进行分割,避免重复信息指导哈希码的生成,从而减少哈希码间的冗余,提高哈希码的独立性及质量。我们将上层输出的中间图像特征表示分割为长度均等的k段,分割成段的数目就是编码出的哈希码的位数,再将k段特征表示各自进入完全连接层以及激活函数。哈希函数为

hi(x;w)=sign(wT[Xi(f6(x);f7(x))]),i=1,2,…,k

(3)

其中,hi(x;w) 表示获得的第i位的哈希码,Xi(f6(x);f7(x)) 表示分割后第i段图像特征表示。

在选择激活函数时,若将符号函数直接作用于完全连接层的输出,能够将输出严格限制为二进制输出,但是其不可微分,从而难以通过反向传播梯度更新梯度,不利于模型的优化。若选择ReLU函数,最小化损失函数时就会面对难以直接优化的离散优化问题。为了将连续输出用做哈希码的松弛可以利用sigmoid或tanh作为激活函数,但是sigmoid函数的输出值不是以0为中心值,其输出范围在 (0,1) 的区间内总是正数,这样会造成非0均值的信号输入到后一层的神经元,从而对梯度产生影响。在训练过程中参数的梯度值总是全部为正数或全部为负数,故在反向传播过程中要么都往正方向更新,要么都往负方向更新,使得收敛缓慢且不容易到达最优值。而tanh函数是0均值的,解决了sigmoid函数的非0均值的问题,更加有利于提高训练效率,故选择tanh函数作为激活函数。哈希函数为

hi(x;w)=tanh(wT[Xi(f6(x);f7(x))]),i=1,2,…,k

(4)

为了得到用于快速图像检索的二进制哈希码,将连续输出应用阈值函数得到离散的哈希码。

2.3 损失函数

由于现有的模型不能保证汉明距离近的编码在语义上也接近,故考虑利用二进制编码与标签信息之间的关系来提高哈希码的语义表达能力。先用线性分类器来模拟二进制编码与标签信息之间的关系

Y=WTB

(5)

其中,W=[w1,w2,…,wc] 是分类器的权重,而Y=[y1,y2,…,yN] 是标签向量,线性分类器选择l2损失,损失函数为

(6)

哈希码经历了从连续值通过阈值化得到离散值,必然会产生一定的量化误差。该量化误差表示为

(7)

其中,bi表示阈值化后的离散的二进制哈希码,s表示未经过阈值化的连续值编码。该损失函数的目标是让哈希层输出的未经过阈值化处理的连续值编码能够尽可能地接近量化值-1和1,从而降低由连续值阈值化为离散值过程中带来的误差。

结合式(6)、式(7),得到损失函数

(8)

其中,μ是权衡参数,决定着量化误差在其中的重要程度。

3 实验结果

在基准数据集CIFAR-10和NUS-WIDE7上对所提模型进行了实验与评估,实验中使用随机梯度下降来训练模型,该模型经过35 000次迭代训练,学习率为0.001。在实验中,设置权衡参数μ取值为0.2。

3.1 实验数据集

CIFAR-10数据集包含10个对象类别,每个类由6000幅图像组成,总共产生60 000幅图像,大小为32×32[10]。数据集被分成训练和测试集,分别有50 000个和10 000个图像。NUS-WIDE[11]数据集包含从Flickr收集的近270 000张图像。每一个图像都与81个语义概念中的一个或多个标签相关联。为了公平比较,使用与21个最常见标签相关联的图像子集,其中每个标签与至少5000个图像相关联。

3.2 评价指标

实验中采用了不同返回样本数的精确曲线、不同位数的均值平均精度mAP(mean average precision)和汉明距离2内的精确率作为评估图像检索质量的评估指标。

(1)不同返回样本数的精确率:使用基于排名的标准进行评估[8],其指的是与查询图像距离最小的k张图像中,正确结果所占的比例。具体来说,给定查询图像q和相似性度量,通过精度评估前k个图像相对于查询图像q的排名

(9)

其中,Rel(i) 表示查询q和排名为i的图像之间的真实标注准确性关联。这里只考虑了测量相关性的类别标签,所以Rel(i)∈{0,1}, 当查询图像和排名为i的图像具有相同标签时,Rel(i) 用1表示,否则用0表示。

(2)平均准确率mAP是指数据集中所有类的平均精度的平均值,即将所有类别的平均精度求和之后再除以所有类别数;

(3)汉明距离小于2的准确率是指,计算所有图像与给定查询图像q的汉明距离,在汉明距离小于2的图像中正确结果在其中所占的比例。

3.3 实验结果比较

将本文方法与目前较为典型的几种方法进行了比较。我们大致将比较方法分为两类,一类是传统的哈希方法,另外一类是深度哈希方法。传统的哈希方法一般分为无监督哈希方法和监督的哈希方法。无监督哈希方法选择了典型的LSH,SH,监督的哈希方法选择了典型的KSH,而深度哈希方法我们选择CNNH[7],CNNH+[7],DLBHC[8]这3种作为对比方法。

表1给出了在数据集CIFAR-10上上述几种代表不同类型的哈希方法与本文方法在mAP值对比。表2给出了在数据集NUS-WIDE上上述几种代表不同类型的哈希方法与本文方法在mAP值对比。通过表1、表2可观察到,本文所提哈希方法与其它对比哈希方法相比,mAP值是最高的,验证了本文方法具有优秀的检索性能。

表1 在数据集CIFAR-10上不同方法的mAP值对比

表2 在数据集NUS-WIDE上不同方法的mAP值对比

从表中可以看出,本文提出的方法与传统的哈希方法相比,mAP值提升了1倍到6倍不等,性能上有了质的提升。这是由于深度学习模型在图像特征的提取与表示方面有着突出的能力,将深度模型与哈希方法相结合可以利用其强大的图像表示来学习哈希码,从而提高生成的哈希码的质量,而且相比于无监督的哈希方法,利用监督信息可以提高二进制哈希码学习性能。而将本文方法与其它几种较为经典的深度哈希方法进行比较,本文所提方法的mAP值最高,性能也最好。CNNH以及CNNH+不是端对端的系统,它不能同时完成图像的特征表示以及哈希码的生成。而将这两者统一到一个学习阶段的端对端的系统,相比CNNH以及CNNH+性能更好,因为学习过程的统一加强了层与层的协作性,学习的近似哈希码用于指导图像表示的学习,而学习的图像表示也有利于学习更好的近似哈希码。这种双向交互使得生成的哈希码质量得到了进一步地提高。而相比于DLBHC,本文所提方法的性能也有优势。本文所提方法考虑到了哈希层输入存在信息丢失的情况、生成哈希码间的信息冗余情况和分类量化误差等问题,因此本文方法获得的哈希码质量更好,图像检索性能更强,mAP值更高。

图2~图5给出了在CIFAR-10和NUS-WIDE这两个数据集上,利用不同位数下汉明距离小于2的正确率以及不同位数下top-k的检索正确率这两种评价指标进行评价后的比较结果。从图中可以看出,本文的方法的检索性能均优于现有的其它方法。

图2 在数据集CIFAR-10上不同返回样本数的精确率

图3 在数据集NUS-WIDE上不同返回样本数的精确率

图4 在数据集CIFAR-10上汉明半径2内的精确率

图5 在数据集NUS-WIDE上汉明半径2内的精确率

3.4 验证组件有效性

为了验证提出模型中几个重要组件的有效性,将本文模型与未将F6层输出直接输入到哈希层的模型(简称为来源不变模型)、未将哈希层的输入进行分割再生成哈希码的模型(简称为未做分割模型)、未将分类量化损失考虑在其中的模型(简称误差损失模型)以及不做任何限制的模型(简称为未做限制模型)进行比较。未做限制模型是未能更好地利用偏向视觉外观的多样化信息、存在生成哈希码信息冗余、独立性不强且未能将分类量化误差考虑在其中的原始模型。来源不变模型指的是未将第一个完全连接层的输出直接输入到哈希层的模型,其未能更好地利用偏向视觉外观的多样化信息。未做分割模型是哈希层未对其输入做任何处理,存在生成哈希码信息冗余、独立性不强等问题的模型,而误差损失模型是指未能将分类量化误差考虑在内的模型。表3和表4给出了本文模型与未做限制、未做分割、误差损失以及来源不变这几种模型在两个数据集CIFAR-10和NUS-WIDE上mAP值的对比结果。

表3 数据集CIFAR-10上 MAP值对比

表4 数据集NUS-WIDE上top-5000近邻域的MAP值对比

从表3、表4中可以看出,本文模型与未做分割、误差损失和来源不变这几种模型的mAP值均比未做限制模型的mAP值有了一定的提升,说明将哈希层的输入来源进行调整、将哈希层的输入进行分割再生成对应哈希码以及将分类量化误差考虑进损失函数,均能在一定程度提高模型的mAP值,验证了模型中这几个重要组件的有效性,说明本文模型确实能够更好地捕捉图像间细微的语义区分,减轻信息丢失情况以及哈希码的信息冗余情况,从而提高生成哈希码的质量及图像检索的性能。而且本文模型生成较短的哈希码,与未做限制模型生成的长度较长的哈希码相比,检索精度甚至更高。如表3中在数据集CIFAR-10上,本文模型生成的12位哈希码的mAP值高于未做限制模型生成的48位的哈希码,表4中在数据集NUS-WIDE上,本文模型生成的12位哈希码的mAP值高于未做限制模型生成的48位的哈希码。在同样的检索精度要求下用较短的哈希码来实现图像检索,能进一步降低图像检索任务中计算和存储的成本,也更有利于在大型图像数据集中进行图像检索。

4 结束语

本文提出一种高效的深度学习框架,利用图像与标签信息进行二进制哈希码的学习,有利于在大型图像数据集中进行图像检索。为了解决图像信息丢失问题,使哈希编码更好地利用偏向视觉外观的多样化信息,添加了用于生成哈希码的哈希层,并将两个完全连接层的输出直接输入到哈希层;为了减少哈希码的信息冗余,提高生成哈希码间的独立性,将两层完全连接层输出的中间图像特征表示分割输入哈希层;为了让二进制哈希码的学习充分利用标签信息,降低连续值阈值化为离散值过程中的误差影响,将分类误差与量化误差加入到损失函数中。实验结果表明,所提出的方法在检索精度方面优于其它现有的哈希方法。

猜你喜欢
哈希检索卷积
基于特征选择的局部敏感哈希位选择算法
基于3D-Winograd的快速卷积算法设计及FPGA实现
哈希值处理 功能全面更易用
文件哈希值处理一条龙
卷积神经网络的分析与设计
从滤波器理解卷积
基于傅里叶域卷积表示的目标跟踪算法
专利检索中“语义”的表现
巧用哈希数值传递文件
国际标准检索