随着互联网的快速发展,网络信息以指数级的速度增长。近年来Google每年的搜索量达2万亿次以上,Twitter每日上传的信息量达4亿条,Youtube的上传速度达到400 h/min。此外,不仅数据量快速增长,数据的维度也随着多媒体的发展而快速增加。面对如此庞大的信息,如何更好地利用信息,从而提高互联网利用效率,解决信息有效存储、索引与查询的问题迫在眉睫。目前主要有精确检索[1]和近似最邻近检索[2]两种数据检索方法。
1.1.1 精确检索精确检索在数据库中依次计算训练样本与查询样本之间的距离,抽取出距离最小的样本即为所要查找的最近邻。最早的精确检索方法包括线性搜索[3]等,这是一种穷举搜索方法,当样本数量巨大时搜索效率急剧下降。后来发展出k-d trees[4],metric trees[5]和混合型索引结构[6]等基于空间分割的方法,但这些方法随着样本的特征维度增加效率急剧下降,表现甚至不如线性搜索。因此精确检索实际应用有限。
1.1.2 近似最近邻检索近似最近邻检索利用了数据量增大后数据之间会形成簇状聚集分布的特性,通过分析和聚类对数据库中的数据进行分类或编码,并根据目标数据的特征预测其所属类别,返回类别中的部分或全部作为检索结果。近似最近邻检索的核心思想是搜索潜在的近邻数据而不局限于返回最近邻的数据,在牺牲可接受范围内的精度的情况下提高检索效率。近似最近邻检索主要分为两类方法:一类是哈希散列方法,另一类是矢量量化方法。矢量量化需要先建立码本然后搜索码字,码本建立和码字搜索的复杂度都会随着矢量维数的增加而增加,为此带来巨大的计算开销。尽管Jégou等[7]提出的乘积量化(Product Quantization)方法对此进行了改善,在此只关注更加高效简便的哈希散列方法。
1.2 哈希散列方法介绍 1.2.1 哈希散列方法过程哈希散列方法是一种数据检索方法,实现过程如下:首先构建一个映射矩阵将高维的训练数据投影成低维的连续数据,然后将低维连续数据量化成二进制数据;测试数据使用相同的映射矩阵投影量化成二进制数据;最后通过比较训练数据和测试数据的二进制代码,实现快速检索。
哈希散列方法的训练过程一般分成两步,对于训练数据
哈希散列方法的难点有3个:第一,构建一个良好的映射矩阵将高维数据投影成低维数据;第二,减少量化的损失,即减少二进制数据与原始数据之间的差异;第三,用于学习二进制代码的参数和用于编码新测试图像的算法应该是非常有效的。
1.2.3 哈希散列方法的优点哈希散列方法的优点主要在于,将高维的数据转化成低维的二进制数据,即将欧氏距离转换成汉明距离后,依旧能较好地保留数据之间的原始相似性;通过基于快速二进制操作的汉明距离排序或在某个汉明距离内的哈希表查找,可以在子线性甚至恒定时间内完成近似数据点的检索,不必像高维的数据需要进行复杂耗时的方程式求解;再者,原始数据的二进制压缩可以减少大量存储空间,即使使用大数据集,依旧有可能调用到内存中进行操作。
2 距离计算哈希散列方法通过距离计算比较两个数据样本之间的相似度。本节主要介绍不同形式的距离计算方法以及它们的特点。对于数据
欧氏距离计算
| ${\rm{dist}}({{{x}}_i},{{{x}}_j}) = \sqrt {\sum\limits_{k = 1}^d {{{({{x}}_i^k - {{x}}_j^k)}^2}} } $ | (1) |
汉明距离通过比较二进制每一位是否相同来计算二进制数据的相似度,若不同则汉明距离加1。汉明距离定义如式(2)所示。
| ${\rm{dist}}({{{x}}_i},{{{x}}_j}) = \sum\limits_{k = 1}^d {\left( {{{x}}_i^k \oplus {{x}}_j^k} \right)} $ | (2) |
如成对数据00和01、01和11的汉明距离都为1,00和11的汉明距离为2。二进制数据相似度越高,对应的汉明距离越小。
2.3 汉明亲和度汉明亲和度计算两个二进制数据的内积。亲和度是距离的非线性函数,因此均匀地近似亲和度将导致近似具有不均匀的距离。但是近似亲和度矩阵可以化为二元矩阵分解问题。汉明亲和度定义如式(3)所示。
| ${\rm{dist}}({{{x}}_i},{{{x}}_j}) = {{{x}}_i}^{\rm{T}}{{{x}}_j}$ | (3) |
余弦相似度利用两个向量夹角
| $\cos \theta = \frac{{\sum\nolimits_{k = 1}^d {\left( {{{x}}_i^k \times {{x}}_j^k} \right)} }}{{\sqrt {\sum\nolimits_{k = 1}^d {{{\left( {{{x}}_i^k} \right)}^2}} } \times \sqrt {\sum\nolimits_{k = 1}^d {{{\left( {{{x}}_j^k} \right)}^2}} } }}$ | (4) |
给定两个集合
| $J\left( {A,B} \right) = \frac{{\left| {A \cap B} \right|}}{{\left| {A \cup B} \right|}} = \frac{{\left| {A \cap B} \right|}}{{\left| A \right| + \left| B \right| - \left| {A \cap B} \right|}}$ | (5) |
其中
由于高维数据映射到低维数据过程,或者量化过程都会丢失一定的信息。为了尽量保证信息的完整,以及提高哈希检索的效率,将更多的相似数据映射到相同的二进制代码中,通常需要使用损失函数对映射和量化过程进行约束和判断。
现有方法倾向于优化单一形式的哈希散列函数,其参数针对整体损失函数直接优化。优化过程与所选择的哈希散列函数族相结合。不同类型的哈希散列函数提供了测试时间和排名准确度之间的权衡。例如,简单线性感知器函数与核函数相比在评估效率上相对较高,但在最近邻检索的准确率上相对较低。
本节对不同的损失函数进行分类介绍。
3.1 按照计算距离的方法分类根据前文介绍的距离计算方法,哈希散列方法的损失函数主要用到汉明距离和汉明亲和度两种度量方式控制信息损失。
3.1.1 基于相似和不相似数据对的汉明距离比如二元重构嵌入(Binary Reconstructive Embedding)[8]方法。BRE损失函数定义如式(6)所示。
| ${L_{\rm{BRE}}}\left( {{{{b}}_i},{{{b}}_j}} \right) = {\left( {{{{d_h}\left( {{{{b}}_i},{{{b}}_j}} \right)} / m} - {{{s}}_{ij}}} \right)^2}$ | (6) |
其中,
比如核监督哈希(Kernels Supervised hashing)[9]方法。KSH损失函数定义如式(7)所示。
| ${L_{\rm{KSH}}}\left( {{{{b}}_i},{{{b}}_j}} \right) = {\left( {{{b}}_i^{\rm{T}}{{{b}}_j} - m{{{s}}_{ij}}} \right)^2}$ | (7) |
其中,
汉明亲和度还会结合其他方法,比如
| ${L_{\rm{SPLH}}}\left( {{{{b}}_i},{{{b}}_j}} \right) = \exp \left( { - {{{{{s}}_{ij}}{{{b}}_i}^{\rm{T}}{{{b}}_j}} / m}} \right)$ | (8) |
其中,
哈希散列方法的损失函数按照形式划分主要有3类,分别是线性感知器函数,核函数和特征函数。
3.2.1 线性感知器函数比如均衡哈希(Harmonious Hashing)[11]方法。HH损失函数定义如式(9)所示。
| ${h_{\rm{HH}}}\left( {{x}} \right) = {\rm{sgn}} \left( {{{{\omega }}^{\rm{T}}}{{x}} + b} \right)$ | (9) |
其中,
比如可伸缩核哈希(Scalable Kernel Hashing)[12]。SKH方法损失函数定义如式(10)所示。
| ${h_{\rm{SKH}}}\left( {{x}} \right) = {\rm{sgn}} \left( {\sum\nolimits_{j = q}^Q {{{{\omega }}^{\rm{T}}}\kappa \left( {{{{{x}}_q^{'}}},{{x}}} \right) + b} } \right)$ | (10) |
其中
比如谱哈希(Spectral Hashing)[13]方法。SH方法损失函数定义如式(11)所示。
| ${\rm{tr}}\left( {{{YLY}}} \right)$ | (11) |
其中,
比如上文提到的损失函数都是仅考虑相似数据对之间的相关性。
3.3.2 同时考虑不相似数据对之间的差异性比如弹性嵌入方法(Elastic Embedding)[14]。EE方法的损失函数定义如式(12)所示。
| $\begin{split} & {L_{\rm{EE}}}\left( {{{{b}}_i},{{{b}}_j}} \right) = \delta \left( {{{{s}}_{ij}} > 0} \right){d_h}\left( {{{{b}}_i},{{{b}}_j}} \right) + \\ & \lambda \delta \left( {{{{s}}_{ij}} < 0} \right)\exp \left[ { - {{{d_h}\left( {{{{b}}_i},{{{b}}_j}} \right)} / m}} \right] \\ \end{split} $ | (12) |
其中,
由于哈希散列方法的学习结果是二进制代码
| ${\rm{s.t.}}\;\;{{B}} \in {\left\{ { - 1,1} \right\}^{n \times r}},\;\;{{\bf{1}}^{\rm{T}}}{{B}} = 0,\;\;{{{B}}^{\rm{T}}}{{B}} = n{{I}}$ | (13) |
其中,约束的第一项表示二进制代码
到目前为止,很少有方法直接工作在离散空间中。参数敏感哈希(Parameter-Sensitive Hashing)[15]和二元重构嵌入方法通过逐步调整由函数生成的代码来学习预定义哈希散列函数的参数。迭代量化哈希(Iterative Quantization)[16]迭代地学习代码过程中明确地施加了二进制约束。虽然迭代量化哈希和二元重构嵌入方法工作在离散空间中并生成哈希代码,但它们不能很好地捕获代码空间中原始数据的局部邻域。迭代量化哈希的目标是最小化二进制代码和主成分分析(Principle Component Analysis)[17]结果之间的量化误差。二元重构嵌入训练汉明距离来模拟有限数量的采样数据点之间的
由于离散约束的不连续问题,在优化时非常困难。因此对离散约束的处理方法有3种,分别是:忽略离散约束,放松离散约束和保持离散约束。
4.1 忽略离散约束忽略离散约束通常指忽略平衡性约束或不相关性约束,其中主要忽略平衡性约束。比如迭代量化哈希为了减少数据之间的量化误差,使用了旋转矩阵将投影矩阵旋转到量化误差最小的方向。最终二进制代码的定义如式(14)所示。
| ${{B}} = {\rm{sgn}} \left( {{{XPR}}} \right)$ | (14) |
其中
放松离散约束通常指对离散约束进行松弛优化,围绕连续解来获得二进制代码。放松离散约束是常见的两步法哈希,即先投影后量化。投影的结果是连续值(实值)
保持离散约束是指将投影和量化结合起来进行交替求解。比如离散图哈希(Discrete Graph Hashing)[18]方法。DGH方法的定义如式(15)所示。
| ${\rm{tr}}\left( {{{{B}}^{\rm{T}}}{{LB}}} \right) - \lambda {\rm{dist}}\left( {{{{B}}^{\rm{T}}}{{Y}}} \right)$ | (15) |
其中,
面对庞大的数据集,一般无法直接学习所有数据的哈希散列函数和二进制代码。通常选取少量的样本进行训练得到投影矩阵,对于新的样本或者测试集,利用投影矩阵可以直接生成二进制代码,这称之为外样本学习。如何加快外样本学习,是提高在线哈希检索的关键。几种常用的外样本学习方法包括:直接学习投影矩阵,引入期望学习测试数据的分布,近似投影矩阵和机器学习算法学习投影矩阵。
5.1 直接学习投影矩阵很多哈希散列方法并不直接学习二进制编码
引入期望学习测试数据分布的前提是认为数据遵循某种分布,通过学习训练数据后,可以根据数据分布情况编码出测试数据的二进制代码
| $\begin{array}{l} {{{\varPhi}} _k}\left( {{x}} \right) = \sin \left( {0.5{\rm{\text{π}}} + {{k{\rm{{\rm{\text{π}}} }}{{x}}} / {\left( {b - a} \right)}}} \right) \\ {\lambda _k} = 1 - \exp \left( { - 0.5{\varepsilon ^2}\left| {{{k{\rm{{\rm{\text{π}}} }}} / {{{\left( {b - a} \right)}^2}}}} \right|} \right) \\ \end{array} $ | (16) |
其中,数据均匀分布在
近似投影矩阵是指不直接学习训练数据
比如锚图哈希(Anchor Graph Hashing)[19]方法。AGH方法对训练集
| ${{{Z}}_{ij}} = \left\{ {\begin{array}{*{20}{l}} {\frac{{\exp \left( { - {{{\rm{dist}}{^2}\left( {{{{x}}_i},{{{u}}_j}} \right)} / t}} \right)}}{{\sum\nolimits_{j' \in \left\langle i \right\rangle } {\exp \left( { - {{{\rm{dist}}{^2}\left( {{{{x}}_i},{{{u}}_{j'}}} \right)} / t}} \right)} }},\quad \forall j \in \left\langle i \right\rangle } \\ {0,\quad \quad \quad \quad \quad \quad \quad \quad \quad {\rm{otherwise}}} \end{array}} \right.$ | (17) |
并通过相似矩阵
| ${{A}} = {{{Z}}^{\rm{T}}}{{\varLambda Z}}$ | (18) |
其中,
| ${{P}} = {{{\varLambda }}^{ - {1 / 2}}}{{V}}{{{\varSigma }}^{ - {1 / 2}}}$ | (19) |
其中,
如果哈希散列函数无法直接求解投影矩阵
| $\min {\left\| {{{XP}} - {{B}}} \right\|_2}$ | (20) |
典型的方法比如稀疏哈希(Sparse Hashing)[20]。稀疏哈希无法直接学习投影矩阵,利用字典进行外样本学习的效果也不好。因此使用机器学习算法典型相关分析(Canonical Correlation Analysis)[21]学习投影矩阵。
6 哈希散列算法介绍哈希散列算法可分类为无监督哈希、有监督哈希和半监督哈希。有监督哈希和半监督哈希的学习需要数据的标签信息,由于标签的采集和学习需要额外的消耗,因此本文主要关注更简便的无监督哈希算法。本节中将详细介绍几个典型的无监督哈希算法以及它们的相关方法。
6.1 局部敏感哈希局部敏感哈希(Locality-Sensitive Hashing)由A.Gionis等[22]于1999年在VLDB数据库会议(Very Large Data Bases)上提出,首次引入了哈希散列的概念。
局部敏感哈希是与数据不相关的哈希检索算法。数据不相关是指将原始高维数据
| ${{B}} = {\rm{sgn}} \left( {{{XP}}} \right)$ | (21) |
由于随机投影方法需要增加编码长度来提高准确率,因此局部敏感哈希的实际应用有限。但局部敏感哈希提出的两点思想奠定了哈希散列方法的基础:
(1) 数据通过投影变换后,相邻数据点在新的数据空间中仍然相邻的概率很大,而不相邻的数据点被映射到同一个桶的概率很小。
(2) 如果原始空间中相邻的数据落入相同的桶,那么在超大集合内查找相邻元素的问题转化为在一个很小的集合内查找相邻元素的问题。
为了提高局部敏感哈希的性能,Datar等[23]提出了p-稳态分布哈希,在欧氏空间下使用
为了改进局部敏感哈希对数据进行随机投影产生的低效二进制代码,谱哈希提出使用无向图探索数据内部结构,见图1。谱哈希认为数据可以根据其相邻程度构造成无向图,如图1(a)所示。根据无向图可以构造出邻接矩阵
|
图 1 谱哈希的使用无向图探索数据内部结构演示 Figure 1 Undirected graph (a), affinity matrix (b), graph Laplacian (c) and eigendecomposition of graph Laplacian (d) of Spectral Hashing |
图1只是谱哈希的简单演示。实际应用中谱哈希构建相似矩阵
| $\begin{array}{c} \min \sum\limits_{ij} {{{{W}}_{ij}}{{\left\| {{{{b}}_i} - {{{b}}_j}} \right\|}^2}} \\ {\rm{s.t.}}\;\;{{B}} \in {\left\{ { - 1,1} \right\}^{n \times r}},\;\;{{\bf{1}}^{\rm{T}}}{{B}} = 0,\;\;{{B}}{{{B}}^{\rm{T}}} = n{{I}} \\ \end{array} $ | (22) |
其中,约束的第一项表示二进制代码
| $\begin{array}{c} \min {\rm{tr}}\left( {{{{Y}}^{\rm{T}}}{{LY}}} \right) \\ {\rm{s.t.}}\;\;{{\bf{1}}^{\rm{T}}}{{Y}} = 0,\;\;{{Y}}{{{Y}}^{\rm{T}}} = n{{I}} \\ \end{array} $ | (23) |
其中,
谱哈希通过构造相似度矩阵,学习了数据的局部结构。而Su等[26]在主成分分析的启发下,提出在图拉普拉斯中添加全局方差约束,同时考虑数据的全局和局部结构,使得二进制编码保留了更多的有效信息。
谱哈希学习数据分布的期望函数,对外样本进行编码。但实际应用中,数据的分布并不均匀,因此使用期望函数编码外样本的性能较低。为了改进这个问题,Bodó等[27]提出了线性谱哈希(Linear Spectral Hashing),通过寻找图拉普拉斯特征空间中的最优超平面,将原始高维数据映射成低维二进制数据。但线性谱哈希要求相似矩阵必须是非负的,因此限制了它的应用。Xia等[28]提出引用量化误差最小化,同时求解图拉普拉斯特征问题和哈希函数,哈希函数可以直接用于外样本编码。
6.3 锚图哈希尽管谱哈希在学习数据的内部流形结构上取得不错的效果,但当样本数量
为了克服这个缺点,Liu等[19]提出了锚图哈希。锚图哈希对训练集
| ${{{Z}}_{ij}} = \left\{ {\begin{array}{*{20}{l}} {\frac{{\exp \left( { - {{{\rm{dist}}{^2}\left( {{{{x}}_i},{{{u}}_j}} \right)} / t}} \right)}}{{\sum\nolimits_{j' \in \left\langle i \right\rangle } {\exp \left( { - {{{\rm{dist}}{^2}\left( {{{{x}}_i},{{{u}}_{j'}}} \right)} / t}} \right)} }},\quad \forall j \in \left\langle i \right\rangle } \\ {0,\quad \quad \quad \quad \quad \quad \quad \quad \quad {\rm{otherwise}}} \end{array}} \right.$ | (24) |
其中集合表示
总而言之,锚图哈希相对谱哈希在学习过程中内存和计算量需求都很小,并且保持了数据的流形结构,因此它的实际应用更广泛。因此许多哈希散列算法都基于锚图进行学习[29-30]。
然而锚图哈希存在过分依赖聚类结果的情况,错误的聚类结果会降低锚图哈希的检索性能。因此,Takebe等[31]提出基于数据的锚图选择方法(Data-Dependent Anchor Selection),认为锚图是完整数据集的低维表示,通过主成分分析降维学习锚图的效果比聚类学习更好。
6.4 迭代量化哈希迭代量化哈希是另一个经典的哈希算法。迭代量化通过主成分分析得到投影矩阵
| $\begin{array}{c} \min \left\| {{{B}} - {{XPQ}}} \right\|_F^2 \\ {\rm{ s.t.}}\;\;{{B}} \in {\left\{ { - 1,1} \right\}^{n \times r}},\;\;{{{Q}}^{\rm{T}}}{{Q}} = {{I}} \\ \end{array} $ | (25) |
其中旋转矩阵
迭代量化哈希的投影结果是各向异性的,即每个哈希函数映射的结果方差各不相同,方差大的向量将会携带更多的信息。为了平均每个哈希函数的效率,Kong等[34]提出了各向同性哈希(Isotropic Hashing),通过添加各向同性约束保证每个哈希函数的映射结果方差相等,提高了哈希检索的效率。此外,Xia等[35]对投影矩阵
谱哈希和锚图哈希都存在两个缺点:第一是学习哈希函数过程中忽略了特征选择;第二是投影和量化是一个两阶段过程,采用了谱松弛,无法减少数据从高维到低维的信息损失。
根据数据降维和聚类领域的研究,提高哈希函数特征选择能力的一种可行方法是增加哈希函数的稀疏性。因此,Zheng等[37]结合了稀疏表示和图拉普拉斯,提出了图正则化稀疏编码(Graph Regularized Sparse Coding)。Zhu等[20]提出稀疏哈希,在图正则化稀疏编码的基础上增加解的非负性约束,进一步提高原始数据与二进制编码间的语义相似性。Ding等[38]提出了稀疏嵌入哈希(Sparse Embedded Hashing),利用线性嵌入方法将稀疏表示和主成分分析的结果结合起来,使得结果同时保留了主成分分析的有用信息和稀疏性。
然而以上的方法学习稀疏字典的过程较慢,并且没有解决谱松弛带来的信息损失问题。因此,联合稀疏哈希(Joint Sparse Hashing)[39]提出使用
| $\begin{array}{c} \min \sum\limits_{j = 1}^m {\sum\limits_{i = 1}^n {\left\| {{\tilde{ b}}_j^{\rm{T}} - {{Q}}{{{P}}^{\rm{T}}}{{x}}_i^{\rm{T}}} \right\|_2^2{{{Z}}_{ij}} + \alpha {{\left\| {{P}} \right\|}_{2,1}}} } \\ {\rm{s.t.}}\;\;{\tilde{ B}} \in {\left\{ { - 1,1} \right\}^{m \times k}},\;\;{{{Q}}^{\rm{T}}}{{Q}} = {{I}} \\ \end{array} $ | (26) |
其中,
根据本文第4部分提出的离散约束问题,上文介绍的各种算法都存在一定程度的离散松弛问题。在连续空间中求解原始数据的投影或者哈希代码然后量化成二进制代码的过程增加了原始空间到离散空间的信息损失。
尽管离散约束难以求解,但Liu等[18]通过惩罚离散代码与引入的连续变量之间的距离直接求解离散代码,提出了离散图哈希。但离散图哈希的平衡约束和不相关约束依然工作在连续空间中。Hu等[40]提出了类似离散图哈希模型的角度重构嵌入方法(Angular Reconstruction Embedding),但使用了余弦距离计算二进制代码与原始数据的距离,并且可以同时学习投影矩阵。角度重构嵌入方法在离散空间中保持了离散约束,但没有保留原始数据的局部结构。
为了更好地求解离散代码,Hu等[41]提出了离散谱哈希(Disctrete Spectral Hashing),结合了谱哈希和迭代量化哈希的思想,将两步法合成一步,交替求解问题。具体算法如式(27)所示。
| $\begin{array}{c} \min {\rm{tr}}\left( {{{{Y}}^{\rm{T}}}{{LY}}} \right) + \alpha \left\| {{{YQ}} - {{B}}} \right\|_F^2 \\ {\rm{s.t.}}{\rm{ }}{{Y}}^{\rm{T}}{{Y}} = n{{I}},{\rm{ }}{{{Q}}^{\rm{T}}}{{Q}} = {{I}},{\rm{ }}{{B}} \in {\left\{ { - 1,1} \right\}^{n \times r}},{\rm{ }}{{{B}}^{\rm{T}}}{\bf{1}} = 0 \\ \end{array} $ | (27) |
其中,第一项是图拉普拉斯,第二项是类似迭代量化哈希的旋转操作。式(27)中虽然使用了连续值
采用传统的评估指标,包括汉明排名和哈希查找。具体来说,汉明排名侧重于整个检索项目的质量,而哈希查找只处理检索到的最高项目。
平均精度(MAP)是汉明排名评价。平均精度判断每个测试数据是否检索到正确的邻近数据。此外,哈希查找根据查询的半径为2的汉明球内的检索项来计算{召回率,F-值}分数。其中召回率(recall)是哈希查找评价,判断检测到的正确数据与总的正确数据的比例。F-值(F-measure)是哈希查找评价,由于精度和召回率评估存在偏差情况,F-measure是综合两者进行加权判断。此外,还可以通过精度(precision)进行量化。精度是哈希查找评价,侧重于近似最邻近数据的检索质量。在汉明半径为2的范围内,判断最邻近的数据是否检索正确。由于本文研究的哈希方法是无监督方法,因此哈希投影之后直接评估保留的最近邻的数据。
7.2 常用数据集哈希检索常用的数据集包括MNIST[42-43]、CIFAR-10[44-45]、Caltech-101[46-47]、SUN397[48-49]、YouTubeFaces[50-51]和NUS-WIDE[52-53]。
7.2.1 MNISTMNIST数据集由70 000个手写数字图像组成,从“0”到“9”。这些图像都是28×28像素,不进行预处理,直接使用784维特征向量用于表示。
7.2.2 CIFAR-10CIFAR-10由60 000个微小图像组成的集合,共10个对象类别(每个类别6 000个图像)。每张图像提取512维的GIST矢量[54]作为图像特征。
7.2.3 Caltech-101Caltech 101数据集包含9 145张训练图像,由102类对象类别组成,包括一个背景类。每张图像使用稀疏编码技术将缩放不变性特征变换(Scale-Invariant Feature Transform)[55]预处理后的数据压缩成1024维数据作为表示。
7.2.4 SUN397SUN397数据集由102类对象类别组成,包含106 953张训练图像(每个类别的图像个数80~2 000张不定)。每张图像使用主成分分析从12 288维深度卷积激活特征(Deep convolutional activation features)[56]提取的数据中提取出1 600维特征向量作为图像特征表示。
7.2.5 NUS-WIDENUS-WIDE由269 648个多标签图像组成。与MNIST等数据集每张图片都具有唯一标签不同,NUS-WIDE中每张图片都拥有多个标签,两张被认为相似的图片中至少共享一个相同标签。一般选取常见的21个标签,比如动物、人类、建筑物等,构成训练集和测试集样本。每个样本使用缩放不变性特征变换将图像表示为500维数据。
7.2.6 YouTubeFacesYouTube Faces数据库包含1 595个不同人物的3 425个面部视频。一般选择具有至少500张面部图像的样本来构建子集,总共370 319个样本。每个样本预处理成1 770D维的LBP向量[57]作为图像特征表示。
7.3 实验结果本文在MNIST、CIFAR-10和YouTubeFaces上进行了实验。MNIST随机选取了6 900张图片(每类690张)作为训练集,以及1 000张图片(每类100张)作为测试集。CIFAR-10随机选取了5 900张图片(每类590张)作为训练集,以及1 000张图片(每类100张)作为测试集。YouTubeFaces随机选取了图像数目大于2 000张的类别共38个类,总共103 390张图片,其中每类选取100张图片构成测试集,其余图片作为训练集。
本文选取谱哈希[58]、锚图哈希[59]、迭代量化哈希[60]、联合稀疏哈希[61]和谱旋转谱哈希(Large Graph Hashing with Spectral Rotation)[62-63]作为对比算法。
MNIST 数据库上的结果如表1、图2和图3所示。从表1中可以看出联合稀疏哈希和谱旋转谱哈希表现最好。由于联合稀疏哈希具有稀疏特征选择能力,因此随着编码长度的增加,它的检索平均精度也逐步增加,优于其他算法。而谱旋转谱哈希由于保持了离散约束,因此在短编码尤其是12 bits的时候表现优异;但它不具备稀疏特征选择能力,因此随着编码长度增加效果不如联合稀疏哈希。从图2和图3中,可以看出联合稀疏哈希获得最好的召回率。但值得注意,联合稀疏哈希在短编码的召回率过高,存在将大量的图像都映射成相同的编码的情况,这种情况在CIFAR-10数据库中表现更加明显。
| 表 1 MNIST数据库下各算法的平均精度结果 Table 1 Results of MAP of different algorithms on the MNIST database |
|
图 2 MNIST数据库下各算法的召回率 Figure 2 Results of recall of different algorithms on the MNIST database |
|
图 3 MNIST数据库下各算法的F-值 Figure 3 Results of F-measure of different algorithms on the MNIST database |
CIFAR-10数据库上的结果如表2、图4和图5所示。由于8~24 bits的编码中,联合稀疏哈希的召回率都为100%即将所有的编码映射成同一个编码,因此它的平均精度并不正确。所以8~24 bits的编码中认为谱旋转谱哈希的平均精度更高。但随着编码长度的增加,联合稀疏哈希的平均精度超过了谱旋转谱哈希。从图4和图5中,可以看出联合稀疏哈希和谱旋转谱哈希都获得了最好的表现。
| 表 2 CIFAR-10数据库下各算法的平均精度结果 Table 2 Results of MAP of different algorithms on the CIFAR-10 database |
|
图 4 CIFAR-10数据库下各算法的召回率 Figure 4 Results of recall of different algorithms on the CIFAR-10 database |
|
图 5 CIFAR-10数据库下各算法的F-值 Figure 5 Results of F-measure of different algorithms on the CIFAR-10 database |
YouTubeFaces数据库上的结果如表3、图6和图7所示。由于YouTubeFaces数据库的庞大,而且人脸数据库适合稀疏特征选择,因此联合稀疏哈希的表现远远超过了其他算法的表现,获得了最佳的结果。在YouTubeFaces数据库下,迭代量化哈希的表现在所有编码长度上超过了谱旋转谱哈希,这一方面表现出迭代量化哈希可以平衡数据的方差的优势,另一方面说明了谱旋转谱哈希过于考虑离散代码的平衡性情况下有时候会失去效率。
| 表 3 YouTubeFaces数据库下各算法的平均精度结果 Table 3 Results of MAP of different algorithms on the YouTubeFaces database |
|
图 6 YouTubeFaces数据库下各算法的召回率 Figure 6 Results of recall of different algorithms on the YouTubeFaces database |
|
图 7 YouTubeFaces数据库下各算法的F-值 Figure 7 Results of F-measure of different algorithms on the YouTubeFaces database |
本文介绍了哈希检索方法的基础知识以及经典的基于数据的无监督的哈希算法。此外,进行了一系列实验,以比较现有各种基于哈希的方法的性能。这些方法都是在线检索方法,表现了哈希检索算法的效率和可行性。往后,将继续研究新颖的哈希散列方法以便在保留更多局部信息、减少信息损失的同时,保持二进制代码的离散约束,避免哈希检索性能对于二进制代码长度的敏感性。为了提高哈希检索方法的应用性,将继续探索提高哈希散列学习的离线训练和在线编码的效率,以及短二进制编码的准确率来达到时间和空间上的高效性。
| [1] |
RUI Y, HUANG T S, CHANG S F. Image retrieval: current techniques, promising directions, and open issues[J].
Journal of Visual Communication and Image Representation, 1999, 10(1): 39-62.
DOI: 10.1006/jvci.1999.0413. |
| [2] |
HAR-PELED S, INDYK P, MOTWANI R. Approximate nearest neighbor: towards removing the curse of dimensionality[J].
Theory of Computing, 2012, 8(14): 321-350.
|
| [3] |
WEBER R, SCHEK H J, BLOTT S. A quantitative analysis and performance study for similarity- search methods in high-dimensional spaces[C]// International Conference on Very Large Data Bases. San Francisco: VLDB, 1998: 194-205.
|
| [4] |
FRIEDMAN J H, BENTLEY J L, FINKEL R A. An algorithm for finding best matches in logarithmic expected time[J].
ACM Transactions on Mathematical Software, 1977, 3(3): 209-226.
DOI: 10.1145/355744.355745. |
| [5] |
UHLMANN J K. Satisfying general proximity / similarity queries with metric trees[J].
Information Processing Letters, 1991, 40(4): 175-179.
DOI: 10.1016/0020-0190(91)90074-R. |
| [6] |
蒋凯, 武港山. 基于Web的信息检索技术综述[J].
计算机工程, 2005, 31(24): 7-9.
JIANG K, WU G S. Overview of information retrieval technology for Web[J]. Computer Engineering, 2005, 31(24): 7-9. DOI: 10.3969/j.issn.1000-3428.2005.24.003. |
| [7] |
JÉGOU H, DOUZE M, SCHMID C. Product quantization for nearest neighbor search[J].
IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010, 33(1): 117-128.
|
| [8] |
KULIS B, DARRELL T. Learning to hash with binary reconstructive embeddings[C]// Advances in Neural Information Processing Systems. Vancouver: NIPS, 2009: 1042-1050
|
| [9] |
LIU W, WANG J, JI R R, et al. Supervised hashing with kernels[C]// Computer Vision & Pattern Recognition. Providence: IEEE, 2012: 2074-2081.
|
| [10] |
WANG J, KUMAR S, CHANG S F. Sequential projection learning for hashing with compact codes[C]// International Conference on International Conference on Machine Learning. Haifa: ICML, 2010: 1127-1134.
|
| [11] |
XU B, BU J, LIN Y, et al. Harmonious hashing[C]// International Joint Conference on Artificial Intelligence. Beijing: IJCAI, 2014: 1820-1826.
|
| [12] |
HE J, LIU W, CHANG S F. Scalable similarity search with optimized kernel hashing[C]// International Conference on Knowledge Discovery & Data Mining. Boston: ACM SIGKDD, 2010: 1129-1138.
|
| [13] |
WEISS Y, TORRALBA A, FERGUS R. Spectral hashing[C]// Advances in Neural Information Processing Systems. Vancouver: NIPS, 2009: 1753–1760.
|
| [14] |
CARREIRA P M. The elastic embedding algorithm for dimensionality reduction[C]// International Conference on Machine Learning. Haifa: ICML, 2010: 167-174.
|
| [15] |
SHAKHNAROVICH G, VIOLA P, DARRELL T. Fast pose estimation with parameter-sensitive hashing[C]// International Conference on Computer Vision. Nice: IEEE, 2003: 750.
|
| [16] |
GONG Y, LAZEBNIK S, GORDO A, et al. Iterative quantization: a procrustean approach to learning binary codes for large-scale image retrieval[J].
IEEE Transactions on Pattern Analysis & Machine Intelligence, 2013, 35(12): 2916-2929.
|
| [17] |
WOLD S, ESBENSEN K, GELADI P. Principal component analysis[J].
Chemometrics & Intelligent Laboratory Systems, 1987, 2(1): 37-52.
|
| [18] |
LIU W, MU C, KUMAR S, et al. Discrete graph hashing[C]// Advances in Neural Information Processing Systems. Montreal: NIPS, 2014: 3419-3427.
|
| [19] |
LIU W, WANG J, KUMAR S, et al. Hashing with graphs[C]// International Conference on Machine Learning. Bellevue: ICML, 2011: 1-8.
|
| [20] |
ZHU X, HUANG Z, CHENG H, et al. Sparse hashing for fast multimedia search[J].
ACM Transactions on Information Systems, 2013, 31(2): 1-24.
|
| [21] |
HARDOON D R, SZEDMAK S, SHAWE T J. Canonical correlation analysis: an overview with application to learning methods[J].
Neural Computation, 2004, 16(12): 2639-2664.
DOI: 10.1162/0899766042321814. |
| [22] |
GIONIS A, INDYK P, MOTWANI R. Similarity search in high dimensions via hashing[C]// International Conference on Very Large Data Bases. San Francisco: Morgan Kaufmann Publishers, 1999: 518-529.
|
| [23] |
DATAR M, IMMORLICA N, INDYK P, et al. Locality-sensitive hashing scheme based on p-stable distributions[C]// Symposium on Computational Geometry. Brooklyn: SCG, 2004: 253-262.
|
| [24] |
KULIS B, GRAUMAN K. Kernelized locality-sensitive hashing for scalable image search[C]// International Conference on Computer Vision. Kyoto: IEEE, 2009: 2130- 2137.
|
| [25] |
林悦. 基于哈希算法的高维数据的最近邻检索[D]. 杭州: 浙江大学, 2013.
|
| [26] |
苏毅娟, 余浩, 雷聪, 等. 基于PCA的哈希图像检索算法[J].
计算机应用研究, 2018, 35(10): 3147-3150.
SU Y J, YU H, LEI C, et al. PCA hashing for image data retrieval[J]. Application Research of Computers, 2018, 35(10): 3147-3150. DOI: 10.3969/j.issn.1001-3695.2018.10.062. |
| [27] |
BODÓ Z, CSATÓ L. Linear spectral hashing[J].
Neurocomputing, 2014, 141: 117-123.
DOI: 10.1016/j.neucom.2013.11.039. |
| [28] |
夏立超, 蒋建国, 齐美彬. 基于改进谱哈希的大规模图像检索[J].
合肥工业大学学报(自然科学版), 2016, 39(8): 1049-1054.
XIA L C, JIANG J G, QI M B. A large-scale image retrieval method based on improved spectral hashing[J]. Journal of Hefei University of Technology (Natural Science), 2016, 39(8): 1049-1054. DOI: 10.3969/j.issn.1003-5060.2016.08.009. |
| [29] |
KIM S, CHOI S. Multi-view anchor graph hashing[C]// International Conference on Acoustics, Speech and Signal Processing. Vancouver: IEEE, 2013: 3123-3127.
|
| [30] |
吕成钢. 面向大规模图片搜索的基于锚图哈希的半监督度量学习算法[D]. 南京: 南京邮电大学, 2018.
|
| [31] |
TAKEBE H, UEHARA Y, UCHIDA S. Efficient anchor graph hashing with data-dependent anchor selection[J].
IEICE Transactions on Information and Systems, 2015, E98-(11): 2030-2033.
|
| [32] |
赵珊, 李永思. 基于随机旋转局部保持哈希的图像检索技术[J].
工程科学与技术, 2019, 51(2): 144-150.
ZHAO S, LI Y S. Image retrieval based on random rotation locality preserving hashing[J]. Advanced Engineering Sciences, 2019, 51(2): 144-150. |
| [33] |
CARREIRA P M A, RAZIPERCHIKOLAEI R. Hashing with binary autoencoders[C]// Computer Vision & Pattern Recognition. Boston: IEEE, 2015: 557-566.
|
| [34] |
KONG W, LI W J. Isotropic hashing[C]// International Conference on Neural Information Processing Systems. Vancouver: NIPS, 2012: 1646-1654.
|
| [35] |
XIA Y, HE K, KOHLI P, et al. Sparse projections for high-dimensional binary codes[C]// Computer Vision & Pattern Recognition. Boston: IEEE, 2015: 3332-3339.
|
| [36] |
徐盼盼. 基于哈希学习的图像检索方法研究[D].沈阳: 沈阳工业大学, 2019.
|
| [37] |
ZHENG M, BU J, CHEN C, et al. Graph regularized sparse coding for image representation[J].
IEEE Transactions on Image Processing, 2011, 20(5): 1327-1336.
DOI: 10.1109/TIP.2010.2090535. |
| [38] |
DING G, ZHOU J, GUO Y, et al. Large-scale image retrieval with sparse embedded hashing[J].
Neurocomputing, 2017, 257: 24-36.
DOI: 10.1016/j.neucom.2017.01.055. |
| [39] |
LAI Z H, CHEN Y D, WU J, et al. Jointly sparse hashing for image retrieval[J].
IEEE Transactions on Image Processing, 2018, 27(12): 6147-6158.
DOI: 10.1109/TIP.2018.2867956. |
| [40] |
HU M, YANG Y, SHEN F M, et al. Hashing with angular reconstructive embeddings[J].
IEEE Transactions on Image Processing, 2018, 27(2): 545-555.
DOI: 10.1109/TIP.2017.2749147. |
| [41] |
HU D, NIE F P, LI X L. Discrete spectral hashing for efficient similarity retrieval[J].
IEEE Transactions on Image Processing, 2019, 28(3): 1080-1091.
DOI: 10.1109/TIP.2018.2875312. |
| [42] |
LECUN Y, BOTTOU L, BENGIO Y, et al. Gradient-based learning applied to document recognition[J].
Proceedings of the IEEE, 1998, 86(11): 2278-2324.
DOI: 10.1109/5.726791. |
| [43] |
LECUN Y, BOTTOU L, BENGIO Y, et al. MNIST database[DB/OL]. (1998)[2019-12-3]. http://yann.lecun.com/exdb/mnist/.
|
| [44] |
KRIZHEVSKY A, HINTON G. Learning multiple layers of features from tiny images[R].[S.l.: s.n.], 2009.
|
| [45] |
KRIZHEVSKY A, HINTON G. CIFAR-10 database[DB/OL].(2009)[2019-12-3]. http://www.cs.toronto.edu/~kriz/cifar.html.
|
| [46] |
KINNUNEN T, KAMARAINEN J, LENSU L, et al. Making visual object categorization more challenging: randomized Caltech-101 data set[C]// International Conference on Pattern Recognition. Istanbul: IEEE, 2010: 476- 479.
|
| [47] |
KINNUNEN T, KAMARAINEN J, LENSU L, et al. Cal-tech-101 database[DB/OL]. (2010)[2019-12-3]. http://www.vision.caltech.edu/Image_Datasets/Caltech101/.
|
| [48] |
XIAO J, HAYS J, EHINGER K A, et al. SUN database: large-scale scene recognition from abbey to zoo[C]// Computer Vision & Pattern Recognition. San Francisco: IEEE, 2010: 3485-3492.
|
| [49] |
XIAO J, HAYS J, EHINGER K A, et al. SUN397 database[DB/OL]. (2010)[2019-12-3]. https://vision.princeton.edu/projects/2010/SUN/.
|
| [50] |
WOLF L, HASSNER T, MAOZ I. Face recognition in unconstrained videos with matched background similarity[C]// Computer Vision & Pattern Recognition. Colorado: IEEE, 2011: 529-534.
|
| [51] |
WOLF L, HASSNER T, MAOZ I. YoutubeFaces database[DB/OL]. (2011)[2019-12-3]. http://www.cs.tau.ac.il/~wolf/ytfaces/index.html.
|
| [52] |
CHUA T S, TANG J, HONG R, et al. NUS-WIDE: a real-world web image database from National University of Singapore[C]// International Conference on Image & Video Retrieval. Santorini: CIVR, 2009: 48.
|
| [53] |
CHUA T S, TANG J, HONG R, et al. NUS-WIDE database[DB/OL]. (2009)[2019-12-3]. https://lms.comp.nus.edu.sg/wp-content/uploads/2019/research/nuswide/NUS-WIDE.html.
|
| [54] |
TORRALBA A, MURPHY K P, FREEMAN W T, et al. Context-based vision system for place and object recognition[C]// International Conference on Computer Vision. Nice: IEEE, 2008: 273-280.
|
| [55] |
LOWE D G. Object recognition from local scale-invariant features[C]// International Conference on Computer Vision. Kerkyra: IEEE, 1999: 1150-1157.
|
| [56] |
GONG Y, WANG L, GUO R, et al. Multi-scale orderless pooling of deep convolutional activation features[C]// European Conference on Computer Vision. Zurich: ECCV, 2014: 392-407.
|
| [57] |
OJALA T, PIETIKAINEN M, MAENPAA T. Multiresolution gray-scale and rotation invariant texture classification with local binary patterns[J].
IEEE Transactions on Pattern Analysis and Machine Intelligence, 2002, 24(7): 971-987.
DOI: 10.1109/TPAMI.2002.1017623. |
| [58] |
WEISS Y, TORRALBA A, FERGUS R. Spectral Hash-ing[CP/OL]. (2009)[2019-12-3]. https://www.cse.huji.ac.il/~yweiss/SpectralHashing/.
|
| [59] |
LIU W, WANG J, KUMAR S, et al. Anchor Graph Hashing[CP/OL].(2011)[2019-12-3]. http://www.ee.columbia.edu/~wliu/.
|
| [60] |
GONG Y, LAZEBNIK S, GORDO A, et al. Iterative Quantization[CP/OL].(2013)[2019-12-3]. http://slazebni.cs.illinois.edu/publications.html.
|
| [61] |
LAI Z H, CHEN Y D, WU J, et al. Jointly Sparse Hashing[CP/OL]. (2018)[2019-12-3]. http://www.scholat.com/laizhihui.
|
| [62] |
LI X, HU D, NIE F P. Large graph hashing with spectral rotation[C]//Thirty-First AAAI Conference on Artificial Intelligence. San Francisco: AAAI, 2017: 2203-2209.
|
| [63] |
LI X, HU D, NIE F P. Large Graph Hashing with Spectral Rotation[CP/OL]. (2017)[2019-12-3]. http://www.escience.cn/people/fpnie/index.html.
|
2020, Vol. 37