Print

发布时间: 2019-03-16
摘要点击次数:
全文下载次数:
DOI: 10.11834/jig.180264
2019 | Volume 24 | Number 3




    图像分析和识别    




  <<上一篇 




  下一篇>> 





哈夫曼编码乘积量化的图像哈希检索方法
expand article info 栾婷婷1,2, 祝继华2, 徐思雨2, 王佳星2, 时璇2, 李垚辰2
1. 浙江大学医学院附属第一医院, 杭州 310003;
2. 西安交通大学软件学院, 西安 710049

摘要

目的 基于哈希编码的检索方法是图像检索领域中的经典方法。其原理是将原始空间中相似的图片经哈希函数投影、量化后,在汉明空间中得到相近的哈希码。此类方法一般包括两个过程:投影和量化。投影过程大多采用主成分分析法对原始数据进行降维,但不同方法的量化过程差异较大。对于信息量不均衡的数据,传统的图像哈希检索方法采用等长固定编码位数量化的方式,导致出现低编码效率和低量化精度等问题。为此,本文提出基于哈夫曼编码的乘积量化方法。方法 首先,利用乘积量化法对降维后的数据进行量化,以便较好地保持数据在原始空间中的分布情况。然后,采用子空间方差作为衡量信息量的标准,并以此作为编码位数分配的依据。最后,借助于哈夫曼树,给方差大的子空间分配更多的编码位数。结果 在常用公开数据集MNIST、NUS-WIDE和22K LabelMe上进行实验验证,与原始的乘积量化方法相比,所提出方法能平均降低49%的量化误差,并提高19%的平均准确率。在数据集MNIST上,与同类方法的变换编码方法(TC)进行对比,比较了从32 bit到256 bit编码时的训练时间,本文方法的训练时间能够平均缩短22.5 s。结论 本文提出了一种基于多位编码乘积量化的哈希方法,该方法提高了哈希编码的效率和量化精度,在平均准确率、召回率等性能上优于其他同类算法,可以有效地应用到图像检索相关领域。

关键词

哈希; 图像检索; 近似最近邻搜索; 乘积量化; 比特分配; 编码效率

Hashing method for image retrieval based on product quantization with Huffman coding
expand article info Luan Tingting1,2, Zhu Jihua2, Xu Siyu2, Wang Jiaxing2, Shi Xuan2, Li Yaochen2
1. The First Affiliated Hospital, College of Medicine, Zhejiang University, Hangzhou 310003, China;
2. School of Software Engineering, Xi'an Jiaotong University, Xi'an 710049, China
Supported by: National Natural Science Foundation of China(61573273, 61603289)

Abstract

Objective Hashing method is one of the most popular approaches for content-based image retrieval. The main idea of this approach is to learn the same size of binary codes for each image and then use the Hamming distance to measure the similarity of images. Effective Hashing methods should include at least three properties. First, the learned codes should be short so that large amounts of images can be stored in a small memory. Second, the learned codes should transform images that are perceptually or semantically similar into binary strings with a small Hamming distance. Third, the method should be efficient to learn the parameters of the binary code and encode a new test image. Most Hashing approaches include two important steps to achieve binary coding, namely, projection and quantization. For projection, most Hashing approaches perform principal component analysis (PCA) to reduce the dimensionality of raw data. For quantization, different Hashing approaches may design different strategies. In the quantization stage, most traditional Hashing methods usually allocate the same number of bit to each data subspace for image retrieval. However, information quantities are different in each data subspace. Accordingly, a uniform quantization may result in inefficient codes and high quantization distortion problems, especially when the data have unbalanced information quantities. To address this problem, this study proposes an effective coding method based on product quantization, called Huffman coding. Method Similar to most Hashing approaches, the proposed method utilizes PCA to reduce the dimensionality of raw data in the projection stage. A vector quantization scheme is then carefully designed at the quantization stage. The proposed approach first utilizes product quantization to quantize data after dimensionality reduction to preserve data distribution in the original space. For each subspace, the variance can be directly calculated as the measure of its information quantity. For effectiveness, the subspace with high information quantity should be allocated with a large number of bit for binary coding and vice versa. To achieve this goal, the reciprocal value of the variance proportion can be used to build a Huffman tree, which can then be applied to generate Huffman codes. Accordingly, different bit and values of binary code can be assigned to each subspace. In other words, numerous bit will be allocated to encode subspaces with large variance and few for subspaces with small variance. The variance is easy to calculated, and therefore, the proposed approach is simple and efficient for binary coding. Experimental results illustrate that the Huffman coding method is effective for image retrieval. Result During the experiment, the proposed approach is tested on three public datasets, namely, MNIST, NUS-WIDE, and 22K LabelMe. For each image, a 512D GIST descriptor can be extracted as the input of the Hashing approach. To verify its good performance, the proposed approach is compared with four related approaches:original product quantization method, PCA-based product quantization method, iterative quantization method, and transform coding (TC) method. The experimental results are reported in the form of quantization distortion, mean average precision, recall, and training time. Results show that the average quantization distortion of the proposed approach can be decreased by approximately 49%, and the mean average precision of the retrieval results is increased by approximately 19% compared with the existing method based on product quantization. The training time of the proposed approach is also compared with that of TC from 32 bit to 256 bit on MNIST. The proposed approach can reduce 22.5 s of the training time on average. Conclusion This study proposes Huffman coding for image retrieval in the product quantization stage. According to information quantities, the Huffman-based product quantization scheme can allocate different numbers of bit to each data subspace, which can effectively increase coding efficiency and quantization accuracy. The proposed approach is tested on three public datasets and compared with four related approaches. Experimental results demonstrate that the proposed approach is superior to some state-of-the-art algorithms for image retrieval on mean average precision and recall. The proposed approach does not belong to precise coding methods; thus, our future work will focus on precise Hashing method for effective image retrieval.

Key words

Hashing; image retrieval; approximate nearest neighbor search; product quantization; bit allocation; coding efficiency

0 引言

图像检索在人脸检索、目标检索等许多计算机视觉领域中有着广泛的应用。对于基于内容的大规模图像检索问题,核心是找到数据集中与给定图片最相像的图片。考虑到存储空间和查询时间的限制,近些年,学者们将近似最近邻(ANN)查询方法广泛应用于基于内容的图像检索中[1-2]。其中,基于哈希的方法将数据嵌入到汉明空间中来减小存储消耗并抑制线性增长的查询复杂度,是近似最近邻查询中的一种有效查询方法[3]

基于哈希的图像检索方法可以分为两个阶段:1)利用相似性保持的哈希函数将原始数据投影到低维空间,达到降维的目的;2)对投影后的数据量化,生成二进制编码表示。

在阶段1),投影通常采用非数据依赖方法和数据依赖方法。典型的非数据依赖方法有:局部敏感哈希方法(LSH)[4]以及一些基于局部敏感哈希的改进方法[5-7],其特点是计算速度快,但由于没有考虑训练集数据的分布情况,都需要生成较长哈希码来取得好的检索性能。相反,数据依赖方法考虑了数据之间的近邻结构,从而得到更紧密的二进制编码表示,例如锚点图哈希方法(AGH)[8]将哈希过程看做图分割过程,利用锚点图来估计图的拉普拉斯特征向量,并将问题转化为拉普拉斯特征锚点图的降维问题,得到更准确的哈希码表示。主成分分析哈希方法(PCAH)将数据投影到相互正交的主方向上,但忽略了数据各维度信息量不平衡的问题,编码效率较低;迭代量化方法(ITQ)[9]通过学习旋转矩阵解决了信息量分布不均衡的问题,取得了较好的检索性能。数据依赖算法中还有一类监督学习算法,其特点是利用图像的标签信息。离散监督哈希方法(SDH)[10]的哈希函数通过迭代优化的方式,学习与图像类别信息相关的哈希码,有效提高了检索精度。半监督哈希方法(SSH)[11]利用一小部分图像数据的标签来提供监督信息,与监督学习方法相比训练时间更短。

在阶段2),大多数哈希方法采用单比特量化方法,即通过简单地设定一个阈值将投影后的每一维数据量化成一位0 bit或1 bit。近年来又出现了许多多比特量化方法,例如双比特量化方法(DBQ)[12]和曼哈顿量化方法(MQ)[13]等。这些多比特量化方法为投影后的每一维度分配多个比特位,减少了量化阶段的信息丢失,取得了比单比特量化更好的性能。除了将数据通过阈值量化到汉明空间中,还可以在欧氏空间中采用码书的方式量化,例如乘积量化方法[14],这样在查询阶段可以获得更精准的距离度量。

以上方法对数据每一维度均采用固定的编码位数进行量化,然而实际上数据每个维度包含的信息量并不完全相同,固定位数的编码方式会造成信息量大的维度丢失信息。为了解决这个问题,一种思路是先平衡数据不同维度的信息量,而后采用相同的比特数来量化平衡信息量后的数据,例如优化的乘积量化方法[15]和笛卡儿K-Means算法[16];另一种思路是给信息量多的子空间分配较多的编码位数,给信息量少的子空间分配较少的编码位数,这样能够得到较好的编码位数分配,减少量化过程中产生的误差,例如变换编码方法[17]。本文采用了第2种思路,根据数据每个子空间信息量的多少,采用哈夫曼编码的方式为每个子空间分配不同的编码位数,得到整体最优的编码位数分配。

1 相关工作

近似最近邻查询方法中的传统哈希算法是将投影后的数据映射到汉明空间,然而由于汉明空间中的汉明距离只能是整数这一约束条件的限制,使得量化结果存在一定的误差。并且哈希量化方法利用超平面来产生阈值,破坏了数据的内部结构,导致检索效果不是很理想。向量量化方法是另一种常用的近似最近邻查询方法,可以有效解决上述问题。为了更方便快捷地计算,人们将向量量化方法拓展到了乘积空间。下面分别具体介绍向量量化方法和乘积量化方法。

1) 向量量化方法

对于$n$$d$维向量$ \mathit{\boldsymbol{X}} = \left\{ {{\mathit{\boldsymbol{x}}_i}} \right\}_{_{i = 1}}^{^n} $${\mathit{\boldsymbol{x}}_i} \in {{\bf{R}}^d} $来说,向量量化方法采用量化器将原始向量X依次量化到一些重新构建的向量上

$ \mathit{\boldsymbol{q}}\left( {{\mathit{\boldsymbol{x}}_i}} \right) \in \left\{ {{c_i};i \in \mathit{\boldsymbol{I}}} \right\} $ (1)

式中,$ c_i $称为码字,$ \mathit{\boldsymbol{I}}$是码字的索引,且$\mathit{\boldsymbol{I}}=\{0, 1, \cdots , k-1\} $,对于L位编码来说,$k=2^L$。所有码字的集合共同构成大小为$k$的码书$ \mathit{\boldsymbol{C = }}\left\{ {{c_0}, {c_1}, \cdots , {c_{k - 1}}} \right\} $。量化器通常将向量量化到距离原始向量最近的码字上,以减少量化误差,因此量化器的设计非常关键。常见的量化器采用K-Means法,即先初始化一个量化中心,然后迭代地通过减小量化误差的方法得到最终的码字。

向量量化方法与传统的基于超平面量化方法相比有两个优势:(1)能够根据每个子空间数据的内部结构生成区域划分的依据,量化后的区域可以是任意的形状,不再受超平面划分方法中矩形区域划分的限制;(2)量化后用实数表示的码字来近似代表原始向量,与二进制表示相比,可以得到更精准的距离度量和更可靠的检索结果。

2) 乘积量化方法

在向量量化中,如果想得到$L$位的编码,就需要生成$2^L$个码字。当$L$为64或更高的位数时,无论是计算的时间复杂度还是存储的内存消耗都呈指数增长,使得向量量化方法难以施行。乘积量化方法可以有效解决上述问题。乘积量化将原始的向量分解成$m$组子向量,每一组子向量称为一个子空间,其中包含$p=d/m$个维度,具体为

$ \underbrace {{\mathit{\boldsymbol{x}}_1}, \cdots ,{\mathit{\boldsymbol{x}}_p}}_{\mathit{\boldsymbol{x}}_{\rm{l}}^s}, \cdots ,\underbrace {{\mathit{\boldsymbol{x}}_{d - p + 1}}, \cdots ,{\mathit{\boldsymbol{x}}_d}}_{\mathit{\boldsymbol{x}}_m^s} $ (2)

然后,采用$ m $个量化器分别对每组子空间进行量化

$ \mathit{\boldsymbol{q}}\left( {{\mathit{\boldsymbol{x}}^s}} \right) = \left( {q\left( {\mathit{\boldsymbol{x}}_1^s} \right), \cdots ,q\left( {\mathit{\boldsymbol{x}}_m^s} \right)} \right) $ (3)

式中,$q\left( {\mathit{\boldsymbol{x}}_i^s} \right) $为第$i$组子向量量化到的对应码字。在每个子空间中,乘积量化方法采用K-Means算法得到$2^{L/m}$个码字,形成子空间的子码书,第$i$个子空间的子码书表示为$ \mathit{\boldsymbol{C}}_i^{^s}(1 \le i \le m) $的形式,则整个原始向量的码书由$ m $组子空间中子码书的笛卡儿乘积构成,即

$ \mathit{\boldsymbol{C}} = \mathit{\boldsymbol{C}}_1^s \times \cdots \times \mathit{\boldsymbol{C}}_m^s $ (4)

这样,乘积量化方法最终只需要生成$m$组包含$2^{L/m}$个码字的子码书,即$m·2^{L/m}$个码字就可以完成量化过程,与需要生成$2^L$个码字的向量量化方法相比,极大地降低了计算所需的时间和存储消耗。

2 哈夫曼编码乘积量化方法

大多数哈希方法在量化阶段没有考虑投影后数据各个维度间方差的差异,采用相同的编码位数进行量化,不仅在很大程度上弱化了信息量较大维度的代表性,而且还提高了信息量小的维度的重要性,这样容易引起信息丢失,导致检索准确率降低。一些哈希方法,例如各向同性哈希[18],尝试平衡各个数据维度的信息量来提高哈希方法的性能。然而,也可以突出这种不同信息量带来的影响,给信息量大的数据维度分配较高的编码位数,给信息量少的维度分配较少的编码位数。这样在同样的编码位数情况下,可以充分发挥每一比特的作用,得到更有意义的哈希编码。因此,相比于相同编码位数的量化方法,不同编码位数的量化方法更加合理和切实可行。

2.1 子空间数据方差分布

将给定的图像数据集$ \mathit{\boldsymbol{Z}} = {\{ {z_1}, {z_2}, \cdots , {z_n}\} ^{\rm{T}}} $$ \mathit{\boldsymbol{Z}} \in {{\bf{R}}^{N \times D}} $通过哈希函数$ \mathit{\boldsymbol{F}} = \{ {f_1}, {f_2}, \cdots , {f_d}\} $投影映射到低维空间中,得到映射后的$ d $维数据集$ \mathit{\boldsymbol{X}} = \mathit{\boldsymbol{F}}\left( \mathit{\boldsymbol{Z}} \right) = \{ {f_1}({z_1}), {f_2}({z_2}), \cdots , {f_d}({z_d})\} $。在量化阶段,采用向量量化方法将数据量化成$ B $位编码。具体地,为了加快计算速度,利用乘积量化方法将数据X划分为若干子空间,在每个子空间内分别量化。

对于每一个子空间中包含信息量的多少,可以用信息论中方差的概念来衡量。在乘积量化中,假设整个数据空间X被分割为M个子空间,则整个数据可以表示为$ \left[ {{\mathit{\boldsymbol{X}}^1}, {\mathit{\boldsymbol{X}}^2}, \cdots , {\mathit{\boldsymbol{X}}^M}} \right]$。在每一个子空间$ {\mathit{\boldsymbol{X}}^i}, 1 \le i \le M$中,平均方差可以表示为

$ V\left( {{\mathit{\boldsymbol{X}}^i}} \right) = \frac{1}{k}\sum\limits_{j = 1}^k {v\left( {\mathit{\boldsymbol{X}}_j^i} \right)} $ (5)

式中,$k$表示子空间${\mathit{\boldsymbol{X}}^i}$包含的数据维数,$v\left( {\mathit{\boldsymbol{X}}_j^i} \right)$表示子空间${\mathit{\boldsymbol{X}}^i}$$j$维数据的方差。$V^i$表示第$i$个子空间中数据的平均方差。对于整个数据来说,数据的总方差可以表示为所有子空间平均方差之和,即

$ V\left( \mathit{\boldsymbol{X}} \right) = \sum\limits_{i = 1}^M {\left( {V\left( {{\mathit{\boldsymbol{X}}^i}} \right)} \right)} $ (6)

图 1给出了PCA投影后的MNIST图像数据集8个子空间中每个子空间的平均方差$V^i$。从图 1可以看出,每个子空间方差都有差异,并且前几个子空间方差较大。下面以子空间方差为依据,为各个子空间分配不等的编码位数。

图 1 MNIST数据集经PCA投影并划分成$M$个子空间后的方差分布,$M=8$
Fig. 1 Variance distribution of $M$ subspaces on MNIST dataset after PCA projection, $M=8$

2.2 基于哈夫曼树的编码位数分配策略

方差能够反映各个数据子空间包含的信息量,方差更大的子空间,包含的信息量也相应更多。而经过投影后的数据在各个子空间的平均方差通常是不相同的,特别是在采用PCA投影的情况下,因此,在保证乘积量化总的编码位数$B$不变的情况下,给平均方差大的子空间分配更多的编码位数是充分发挥每一子空间信息的有效方式,即应满足

$ \begin{array}{*{20}{c}} {{B_i} \sim {V^i}}\\ {{\rm{s}}.\;{\rm{t}}.\;\;\;\;B = \sum\limits_{i = 1}^M {{B_i}} } \end{array} $ (7)

式中,$B_i$为第$i$个子空间分配的编码位数,~表示$B_i$$V^i$具有相似的变化趋势,即$V^i$越大,$B_i$就越大,反之亦然。为了适应这一原则,本文提出一种基于哈夫曼树的编码位数分配策略。

基于哈夫曼树的编码方式[19]是1952年由Huffman提出的一种编码方法,属于可变字长编码方式的一种。该方法根据字符出现频率的不同,给频率高的字符较短的编码,给出现频率低的字符较长的编码,以减少整体编码的长度并能够节省存储空间。哈夫曼编码以字符出现频率的高低作为编码长度的依据,与希望以数据维度的方差大小作为编码长度的依据类似,所以本文用各个子空间的方差占总方差的比重替代字符出现的频率,构建哈夫曼树,以达到为数据每个维度分配适当编码位数的目的。

首先,计算投影后每个子空间的平均分布方差$V^i$和数据总方差$V$,然后计算每个子空间平均方差占整体方差的比重

$ {P_i} = \frac{{{V^i}}}{V},\;\;\;1 \le i \le M $ (8)

众所周知,哈夫曼树的构建方式是每次将权重最低的两个点建树,因此点的权重越低,越靠近树的叶子结点,编码时分配的比特位数就越多。与之相反,在以子空间平均方差比重为依据给每个子空间分配编码位数时,希望子空间平均方差比重小的维度能够分配较少编码位数,子空间平均方差比重大的维度能够分配较多的编码位数。因此,为了能够得到与最初期望的编码原则一致的分配,将得到的子空间平均方差比重$P_i$取倒数,得到每一子空间用于构建哈夫曼树的权重

$ {D_i} = \frac{1}{{{P_i}}} $ (9)

图 2是以将数据分成8个子空间为例(即$M=8$),基于哈夫曼树的编码位数分配示意图。

图 2 基于哈夫曼树的编码位数分配示意图
Fig. 2 Bit allocation of each node based on Huffman tree((a) construct Huffman tree; (b) bit allocation of Huffman tree)

因为采用的是PCA投影方式,因此首先可以很容易得到子空间平均方差比重$P_i$之间的关系为:$P_1 >P_2 >P_3 >P_4 >P_5 >P_6 >P_7 >P_8 $,以及构建哈夫曼树时每一子空间权重$D_i$之间的关系为:$D_1 <D_2 <D_3 <D_4 <D_5 <D_6 <D_7 <D_8 $。然后根据每一子空间的权重$D_i$来构建哈夫曼树,并为每个$D_i$分配0、1编码。最后计算$D_i$中0和1的个数,得到每个子空间对应的编码位数$H_1, H_2, H_3, H_4, H_5, H_6, H_7, H_8$,在此例中,$H_1=H_2=H_3=H_4=b_1$$H_5=H_6=b_2$$H_7=H_8=b_3$,且$b_1>b_2>b_3$。可以发现,方差大的子空间分配的编码位数较多,方差小的子空间分配的编码位数较少,符合最初的编码位数分配原则。

这样就完成了基于哈夫曼树的编码位数分配。但因为哈夫曼编码是长度可变的一种编码方式,所以,得到的所有子空间编码位数分配之和$ H = \sum\limits_{i = 1}^M {{H_i}} $不一定满足总编码位数为$B$这一条件。为了解决这个问题,将得到的子空间编码位数分配$H_i$按比例转换到最终的编码位数$B_i$,则每个子空间的编码位数表示为

$ {B_i} = r\left( {\frac{{{H_i}}}{H} \times B} \right),\;\;\;1 \le i \le M $ (10)

式中,$r(·)$为四舍五入函数。这样,得到的子空间编码位数总和就在期望的位数$B$附近,通过微调个别子空间的编码位数可以使总的编码位数与$B$相等。微调的具体做法为:若$ {B_{{\rm{all}}}} = \sum\limits_{i = 1}^M {{B_i} > B} $,依次将进位的子空间编码位数减1,直到$B_{\rm{all}}=B$;若$B_{\rm{all}}<B$,则依次将舍位的子空间编码位数加1,直到$B_{\rm{all}}=B$。若$B_{\rm{all}}=B$,则不用微调,当前的$B_i$即为第$i$个子空间编码位数分配。至此,就得到了最终$M$个子空间,每个子空间的编码位数分配$B_i, i∈[1, M]$。接下来, 根据每个子空间的编码位数,可以分别量化得到每个子空间对应的子码书,完成乘积量化过程。

3 距离度量

乘积量化有两种距离计算方法:对称距离方法(SD)和非对称距离方法(AD)。

3.1 对称距离方法(SD)

对称距离方法不仅将训练集图像经过量化器量化成对应的码字,而且将查询图像也经过量化器量化成对应的码字。将码字的索引作为编码,查询时,将索引映射到对应的码字上面,计算码字间的欧氏距离,并以此作为图像数据间的相似性度量标准。对于投影后的数据集$\mathit{\boldsymbol{X}}$来说,取其中任意两个数据$\mathit{\boldsymbol{x}}_1, \mathit{\boldsymbol{x}}_2$,用量化器$q(·)$对它们分别量化,令${\mathit{\boldsymbol{c}}_{{I_1}}} = q({\mathit{\boldsymbol{x}}_1}),{\mathit{\boldsymbol{c}}_{{I_2}}} = q({\mathit{\boldsymbol{x}}_2})$,其中$I_1, I_2$分别为$\mathit{\boldsymbol{x}}_1, \mathit{\boldsymbol{x}}_2$对应的码字索引,那么,数据$\mathit{\boldsymbol{x}}_1, \mathit{\boldsymbol{x}}_2$间的距离可以用码字间的欧氏距离代替,表示为

$ \begin{array}{*{20}{c}} {{d_{{\rm{SD}}}}\left( {{\mathit{\boldsymbol{x}}_1},{\mathit{\boldsymbol{x}}_2}} \right) = d\left( {q\left( {{\mathit{\boldsymbol{x}}_1}} \right),q\left( {{\mathit{\boldsymbol{x}}_2}} \right)} \right) = }\\ {\sqrt {\left( {{\mathit{\boldsymbol{c}}_{{I_1}}} - {\mathit{\boldsymbol{c}}_{{I_2}}}} \right){{\left( {{\mathit{\boldsymbol{c}}_{{I_1}}} - {\mathit{\boldsymbol{c}}_{{I_2}}}} \right)}^{\rm{T}}}} } \end{array} $ (11)

3.2 非对称距离方法(AD)

非对称距离方法只将训练集图片经过量化器量化成对应的码字,查询图片不做量化。计算距离时,只计算查询向量本身与训练集中码字间的欧氏距离。采用与上面对称距离方法同样的定义,可以由非对称距离方法(AD)计算得到欧氏距离

$ \begin{array}{*{20}{c}} {{d_{{\rm{AD}}}}\left( {{\mathit{\boldsymbol{x}}_1},{\mathit{\boldsymbol{x}}_2}} \right) = d\left( {{\mathit{\boldsymbol{x}}_1},q\left( {{\mathit{\boldsymbol{x}}_2}} \right)} \right) = }\\ {\sqrt {\left( {{\mathit{\boldsymbol{x}}_1} - {\mathit{\boldsymbol{c}}_{{I_2}}}} \right){{\left( {{\mathit{\boldsymbol{x}}_1} - {\mathit{\boldsymbol{c}}_{{I_2}}}} \right)}^{\rm{T}}}} } \end{array} $ (12)

由于SD涉及训练集和查询向量的两次量化过程,而AD只涉及一次训练集的量化过程,因此AD有着更准确的度量精度。鉴于AD和SD都可以采用离线构建查询表的方式来提高检索速度,本文方法采用精度更高的AD作为距离度量方法。

4 实验结果与对比

为了验证所提出方法的有效性,利用公开数据集进行测试,并与相关方法进行比较分析。

4.1 数据集与参数设置

实验选用3个常见的公开数据集:MNIST(http://yann.lecun.com/exdb/mnist)、NUS-WIDE(http://lms.comp.nus.edu.sg/research/NUS-WIDE.htm)和22K LabelMe(http:labelme.csail.mit.edu/Release3.0/browserTools/php/dataset.php)。MNIST数据集包含70 000张手写的数字灰度图片,每张图片大小固定为28×28像素,包含的数字范围为0~9,实验中提取了MNIST数据集的GIST特征,用512维的特征描述子表示。NUS-WIDE数据集包含269 648幅从网络抓取的图像,图像数据由6种低维特征组成,包括64维颜色直方图、144维颜色相关图、73维边缘直方图、128维小波纹理、225维颜色矩和500维基于SIFT描述的词袋特征,实验中将这些底层特征按顺序排列,构成634维的特征向量表示。22K LabelMe数据集包含22 019幅从大型数据集LabelMe中取样出来的图像,实验中提取了该数据集的512维GIST特征。

为了验证本文方法HPQ的性能,将HPQ与乘积量化方法(PQ)、PCA-PQ方法、迭代量化方法(ITQ)和变换编码方法(TC)进行比较。因为本文方法的关注点在于量化阶段,为了减少投影阶段对数据的影响,选取的比较方法在投影阶段均采用主成分分析(PCA)方法,这样对量化过程可以进行有效对比。

本文方法将投影后的数据划分成了$M$个子空间,然后在每个子空间中分别量化,生成子码书。随着编码位数$B$的增加,生成码书的数量也随之增加。由图 3可见,随着划分的子空间数$M$的增多,生成码书的时间相应减少。因此,本文方法根据生成的编码位数$B$来调整划分的子空间数$M$,即编码位数$B$越多,划分的子空间数$M$也越多。为了更好地进行对比,将实验中其他对比方法划分的子空间个数与本文方法划分的子空间个数设为相同。

图 3 B=32和64时,M的不同取值对码书生成时间的影响
Fig. 3 The influence of different values of M on the time of codebooks generation ((a) B=32; (b) B=64)

表 1表 2表 3给出了不同编码位数下,在数据集MNIST、NUS-WIDE和22K LabelMe中本文方法在各个子空间的比特分配情况。

表 1 HPQ方法在MNIST数据集下的子空间比特分配
Table 1 Bit allocation of HPQ on MNIST

下载CSV
比特数 子空间编码分配
32 {7,6,5,4,4,4,1,1}
64 {8,7,7,5,5,4,4,4,4,4,4,4,1,1,1,1}
128 {8,8,7,6,6,5,5,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2}
256 {9,8,8,7,7,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2}

表 2 HPQ方法在NUS-WIDE数据集下的子空间比特分配
Table 2 Bit allocation of HPQ on NUS-WIDE

下载CSV
比特数 子空间编码分配
32 {7,6,5,4,4,4,1,1}
64 {7,6,6,6,5,5,4,4,4,3,3,3,2,2,2,2}
128 {8,7,7,6,6,5,5,5,5,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3}
256 {10,9,8,8,7,7,7,7,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2}

表 3 HPQ方法在22K LabelMe数据集下的子空间比特分配
Table 3 Bit allocation of HPQ on 22K LabelMe

下载CSV
比特数 子空间编码分配
32 {7,6,5,4,4,4,1,1}
64 {9,8,6,6,5,5,5,4,2,2,2,2,2,2,2,2}
128 {7,7,7,6,6,5,5,5,5,5,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,2,2,2,2}
256 {9,8,8,7,7,6,6,6,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2}

表 1表 2表 3可以看出,由于在投影阶段采用主成分分析方法(PCA)作为投影函数,因此越靠前的子空间,包含的信息量越大,具有更多信息量的子空间分配到了更多的编码比特数。

4.2 实验结果分析

一般情况下,基于乘积量化的近似近邻检索方法的量化误差会低于基于哈希的近似近邻检索方法,因此将本文方法的量化误差与基于乘积量化方法PQ和TC的量化误差进行比较。

实验得到的量化误差如表 4表 5表 6所示,可以看到,原始的PQ方法给每个子空间分配相同长度的编码,但未考虑各个子空间信息量的不同,因此量化误差相对较高。而TC方法的量化误差明显比PQ方法的量化误差降低很多,因为TC方法将每个维度特征值的大小作为比特分配的依据,给每个维度根据信息量的不同分配了不同长度的编码。本文的HPQ方法可以做到比TC方法更低的量化误差,与TC不同的是,本文方法将多个维度作为一个子空间,并根据子空间平均方差的大小来分配不同长度的编码位数,实验结果表明,本文方法可以取得较低的量化误差。

表 4 数据集MNIST下的量化误差对比
Table 4 Comparison of quantization distortion on MNIST

下载CSV
比特数 方法
PQ TC HPQ
32 0.732 5 0.095 9 0.077 2
64 0.660 6 0.106 4 0.076 1
128 0.520 1 0.097 1 0.084 0
256 0.360 7 0.082 5 0.079 7
注:加粗字体表示最优结果。

表 5 数据集NUS-WIDE下的量化误差对比
Table 5 Comparison of quantization distortion on NUS-WIDE

下载CSV
比特数 方法
PQ TC HPQ
32 0.730 4 0.095 8 0.077 5
64 0.661 4 0.106 4 0.076 2
128 0.521 3 0.097 1 0.084 2
256 0.361 0 0.080 8 0.079 2
注:加粗字体表示最优结果。

表 6 数据集22K LabelMe下的量化误差对比
Table 6 Comparison of quantization distortion on 22K LabelMe

下载CSV
比特数 方法
PQ TC HPQ
32 0.313 7 0.089 3 0.080 4
64 0.358 1 0.076 0 0.073 3
128 0.387 8 0.056 5 0.053 2
256 0.403 1 0.038 3 0.031 1
注:加粗字体表示最优结果。

表 7表 8表 9比较了本文方法与一些基于向量量化方法的平均准确率。由于本文方法是在PQ方法的基础上先对数据进行PCA投影,然后才进行多比特位分配,因此为了排除PCA投影产生的影响,将PCA-PQ方法也列入比较。

表 7 数据集MNIST下的平均准确率对比
Table 7 Comparison of mean average precision on MNIST

下载CSV
比特数 方法
PQ PCA-PQ ITQ TC HPQ
32 0.267 3 0.581 4 0.635 2 0.625 4 0.716 6
64 0.557 7 0.589 5 0.758 0 0.8151 0.864 9
128 0.761 0 0.631 9 0.793 4 0.936 6 0.947 5
256 0.893 7 0.685 3 0.813 4 0.977 9 0.978 1
注:加粗字体表示最优结果。

表 8 数据集NUSWIDE下的平均准确率对比
Table 8 Comparison of mean average precision on NUSWIDE

下载CSV
比特数 方法
PQ PCA-PQ ITQ TC HPQ
32 0.430 4 0.368 5 0.185 1 0.438 6 0.521 1
64 0.532 9 0.415 9 0.202 8 0.599 9 0.677 1
128 0.672 3 0.467 7 0.217 0 0.786 9 0.834 1
256 0.804 7 0.518 7 0.218 5 0.909 9 0.924 4
注:加粗字体表示最优结果。

表 9 数据集22K LabelMe下的平均准确率对比
Table 9 Comparison of mean average precision on 22K LabelMe

下载CSV
比特数 方法
PQ PCA-PQ ITQ TC HPQ
32 0.220 9 0.191 8 0.282 2 0.251 7 0.309 2
64 0.319 5 0.244 2 0.335 5 0.454 7 0.479 9
128 0.374 6 0.265 6 0.364 0 0.712 1 0.742 1
256 0.494 7 0.267 9 0.388 3 0.880 7 0.886 6
注:加粗字体表示最优结果。

表 7表 8表 9可以发现,PQ方法的平均准确率在大多数情况下高于PCA-PQ方法,原因在于经过PCA投影后的数据,每个子空间的方差非常不平均,采用相同长度的编码会使得量化误差很大。而PQ方法采用随机投影的方法,可以在一定程度上平衡各个子空间的方差。ITQ方法可以看成是一种特殊的向量量化方法,它通过不断迭代优化投影矩阵来减小量化误差,可以看出,在比特位数较低时,例如32 bit和64 bit,ITQ能够取得相对较高的平均准确率。TC方法相较前3种算法来说平均准确率更高,因为TC给每个维度分配不同数量的编码,可以在一定程度上解决不同维度方差不平衡的问题。然而,本文的HPQ方法无论在长编码还是短编码的情况下,在2个数据集中取得的平均准确率都是这几种方法中最高的,特别是抵消了PCA-PQ方法中因PCA投影带来的量化损失,原因在于将原始高维数据投影到低维空间中后,HPQ采用了基于哈夫曼树的编码位数分配算法,给每个子空间分配了合适数量的编码位数,使得量化误差更低。

本文除了采用平均准确率评估检索的性能,还计算了关于返回检索结果个数$N$的召回率曲线,给出了在数据集NUS-WIDE中的召回率性能分析结果。图 4是不同算法在32 bit、64 bit、128 bit和256 bit编码时前1 000个检索结果的召回率曲线,从图 4可以得出与上面分析同样的结论,本文方法HPQ在所有编码位数上的整体性能最好,特别是在编码位数较低时性能更佳。

图 4 不同算法在不同比特数下的召回率曲线
Fig. 4 Recall curves of different algorithms under different number of bit ((a)32 bit; (b)64 bit; (c)128 bit; (d)256 bit)

由于通常情况下,召回率和准确率成反比关系,无法同时提高,因此本文通过绘制召回率—准确率曲线来进一步考察系统的性能。理论上,曲线下面积越大,说明算法的性能越好。图 5是不同算法在32 bit、64 bit、128 bit和256 bit编码时的召回率—准确率曲线。由图 5可知,随着比特位数的增多,所有算法的召回率和准确率都有提升,可以再次发现,在相同的编码长度下,本文方法HPQ都取得了最好的检索性能。

图 5 不同算法在不同比特数下的准确率—召回率曲线
Fig. 5 The precision-recall curves of different algorithms under different number of bit ((a)32 bit; (b)64 bit; (c)128 bit; (d)256 bit)

表 10给出了本文方法HPQ与基于乘积量化的方法PQ和TC在数据集MNIST上的训练时间比较。实验平台为Core-i7, 3.60 GHz CPU, 8.00 GB内存的计算机,程序运行在MATLAB R2016a上。从表 10可以发现,在编码位数相同时,本文HPQ方法的训练时间在大多数情况下是最短的,证明了本文HPQ方法的高效性。

表 10 数据集MNIST下的训练时间
Table 10 Training time on MNIST dataset

下载CSV
/s
比特数 方法
PQ TC HPQ
32 16.911 1 14.467 6 7.446 0
64 20.558 6 25.026 8 16.301 1
128 27.229 3 50.433 7 26.836 3
256 41.937 7 105.547 3 55.916 1
注:加粗字体表示最优结果。

图 6是在公开数据集MNIST上采用64位编码时的图像检索示例,实验随机选取了2张查询图片,并选用PQ、ITQ和TC方法与本文方法HPQ进行检索结果对比。图 6显示了每种方法返回的前20个检索结果,排序越靠左边的图片被认为越相似,其中,下部带有三角标志的图片是检索不准确的结果。可以发现,与其他方法相比,本文HPQ方法检索的准确率最高,而且不准确的结果也更靠右边出现,证明了本文方法的性能较好。

图 6 在数据集MNIST上的两个图像检索示例
Fig. 6 Two retrieval examples on MNIST dataset

5 结论

提出了一种基于哈夫曼编码乘积量化的哈希方法,以方差作为衡量信息量的指标和分配量化编码位数的依据,设计了基于哈夫曼树的比特分配策略,使得方差大的子空间能够分配到更多的编码,充分发挥了每一子空间包含的信息量,提高了编码效率。在公开数据集上的实验结果表明,本文方法在平均准确率和召回率等性能上均优于其他同类方法,可有效利用在投影后数据信息量不均衡的场景中,是一种简单实用高效的图像检索方法。在今后的工作中,将考虑结合性能更优的可变长度编码方式,进一步提高编码效率和检索精度。

参考文献

  • [1] Shen F M, Zhou X, Yang Y, et al. A fast optimization method for general binary code learning[J]. IEEE Transactions on Image Processing, 2016, 25(12): 5610–5621. [DOI:10.1109/TIP.2016.2612883]
  • [2] Gui J, Liu T L, Sun Z N, et al. Fast supervised discrete hashing[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2018, 40(2): 490–496. [DOI:10.1109/TPAMI.2017.2678475]
  • [3] Li W J, ZHOU Z H. Learning to hash for big data:current status and future trends[J]. Chinese Science Bulletin, 2015, 60(5-6): 485–490. [李武军, 周志华. 大数据哈希学习:现状与趋势[J]. 科学通报, 2015, 60(5-6): 485–490. ] [DOI:10.1360/N972014-00841]
  • [4] Gionis A, Indyk P, Motwani R. Similarity search in high dimensions via hashing[C]//Proceedings of the 25th International Conference on Very Large Data Bases. San Francisco, CA, USA: Morgan Kaufmann Publishers Inc., 1999: 518-529.
  • [5] Kulis B, Grauman K. Kernelized locality-sensitive hashing[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2012, 34(6): 1092–1104. [DOI:10.1109/TPAMI.2011.219]
  • [6] Zhang X Y, Wang M L, Cui J T. Efficient indexing of binary LSH for high dimensional nearest neighbor[J]. Neurocomputing, 2016, 213: 24–33. [DOI:10.1016/j.neucom.2016.05.095]
  • [7] Datar M, Immorlica N, Indyk P, et al. Locality-sensitive hashing scheme based on p-stable distributions[C]//Proceedings of the 20th Annual Symposium on Computational Geometry. Brooklyn, NY, USA: ACM, 2004: 253-262.[DOI: 10.1145/997817.997857]
  • [8] Liu W, Wang J, Kumar S, et al. Hashing with graphs[C]//Proceedings of the 28th International Conference on International Conference on Machine Learning. Bellevue, Washington, USA: Omnipress, 2011: 1-8.
  • [9] Gong Y C, 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 and Machine Intelligence, 2013, 35(12): 2916–2929. [DOI:10.1109/TPAMI.2012.193]
  • [10] Shen F M, Shen C H, Liu W, et al. Supervised discrete hashing[C]//Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA: IEEE, 2015: 37-45.[DOI: 10.1109/CVPR.2015.7298598]
  • [11] Wang J, Kumar S, Chang S F. Semi-supervised hashing for scalable image retrieval[C]//Proceedings of 2010 IEEE Computer Society Conference on Computer Vision and Pattern Recognition. San Francisco, CA, USA: IEEE, 2010: 3424-3431.[DOI: 10.1109/CVPR.2010.5539994]
  • [12] Kong W H, Li W J. Double-bit quantization for hashing[C]//Proceedings of the 26th AAAI Conference on Artificial Intelligence. Toronto, Ontario, Canada: AAAI, 2012: 634-640
  • [13] Kong W H, Li W J, Guo M Y. Manhattan hashing for large-scale image retrieval[C]//Proceedings of the 35th International ACM SIGIR Conference on Research and Development in Information Retrieval. Portland, Oregon, USA: ACM, 2012: 45-54.[DOI: 10.1145/2348283.2348293]
  • [14] Jegou H, Douze M, Schmid C. Product quantization for nearest neighbor search[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2011, 33(1): 117–128. [DOI:10.1109/TPAMI.2010.57]
  • [15] Ge T Z, He K M, Ke Q F, et al. Optimized product quantization for approximate nearest neighbor search[C]//Proceedings of 2013 IEEE Conference on Computer Vision and Pattern Recognition. Portland, OR, USA: IEEE, 2013: 2946-2953.[DOI: 10.1109/CVPR.2013.379]
  • [16] Norouzi M, Fleet D J. Cartesian k-means[C]//Proceedings of 2013 IEEE Conference on Computer Vision and Pattern Recognition. Portland, OR, USA: IEEE, 2013: 3017-3024.[DOI: 10.1109/CVPR.2013.388]
  • [17] Brandt J. Transform coding for fast approximate nearest neighbor search in high dimensions[C]//Proceedings of 2010 IEEE Conference on Computer Vision and Pattern Recognition. San Francisco, CA, USA: IEEE, 2010: 1815-1822.[DOI: 10.1109/CVPR.2010.5539852]
  • [18] Kong W H, Li W J. Isotropic hashing[C]//Proceedings of the 25th International Conference on Neural Information Processing Systems. Lake Tahoe, Nevada, USA: ACM, 2012: 1646-1654.
  • [19] Huffman D A. A method for the construction of minimum-redundancy codes[J]. Proceedings of the IRE, 1952, 40(9): 1098–1101. [DOI:10.1109/JRPROC.1952.273898]