图像检索---索引技术

1.图像索引技术概述

当我们提取到一副图像的特征之后, 一幅图像就可以用多维的特征向量来表示。检索过程即是从海量的高维数据集合中找到与检索图像最相似的一个或某几个数据,即通过比较这些向量之间的距离来实现。当图像数量比较少时可以采用顺序检索的方式,即将待检索图像的特征向量和特征库中的特征向量一一进行比较,从中筛选出最相似的图像。但当图像库中图像数量较多时,对应的特征向量也是海量的,线性查找方式非常耗时, 无法满足实时的应用需求。因此我们需要对特征库构建合适的索引结构来加速查找过程。常用的高维数据索引技术包括基于树型布局的索引、基于聚类的索引、倒排文件索引和基于哈希的索引。

2. 基于树型布局的索引

基于树型布局的索引方式将特征向量空间分层划分建立树型结构。基于树型布局的索引分为向量空间和度量空间。向量空间使用欧式距离来比较特征相似度,如 KD -tree和R-tree;度量空间不使用欧式距离来比较特征相似度,如BK -tree和M-tree。现有的基于树结构的索引,主要基于二叉树、基于X-tree以及基于R-Tree进行索引。其中,KD-Tree是典型的基于二叉树的索引结构。

BBF保持kd-tree的二叉平衡树索引结构不变,在数据搜索的回溯查询阶段,引入一个优先查找队列,极大地提高了kd-tree的查找性能。R-tree把一个多维对象只分到一个子空间中,构成一棵平衡树,随后R-tree的变种也相继出现。

这些索引方法对于维数较低的向量具有很好的检索性能。当维度数超过10到20时,在k-d tree 和相关的结构中查找数据会涉及到大量的小分支检测,因此效果不比暴力线性查询效果好。当特征维数高于10时,R-tree就会因为重叠超矩形空间和死区的大量存在而导致性能严重下降,甚至不如顺序搜索(即将查询点逐一同数据库中所有的元素做比较,也称为线性搜索或穷尽搜索)。当特征向量的维数很高时,前面提到的其它索引算法都会出现维度灾难问题。所谓维度灾难(curse of dimensionality)是指由于特征向量维数的提高,索引性能会出现急剧下降的现象。这个术语最早是由Bellman提出的,是指在数据分析时由于变量过多而引起的一系列问题的统称。维度灾难主要是由于数据在高维空间分布稀疏引起的。

3. 基于聚类的索引

在特征库中建立索引查找相似向量的问题,本质上等价于K近邻(KNN)检索问题。为了解决“维度灾难”,研究人员提出了近似最近邻(Approximate Nearest Neighbor Search)检索方法。所谓近似最近邻是指通过放松最近邻的条件要求来实现,如把精确距离替换为近似距离等。

基于聚类的算法就是一种近似最近邻检索方法。常见的基于聚类的索引方式有K-means,其首先通过聚类方法构建聚类中心,将图像特征库分成许多簇(类)。检索时,查询图像的特征向量先和聚类中心向量比较,计算向量间的距离,然后只需在距离较近的簇中进行检索。。这类方法大大提升了检索效率,但依然存在一些问题:K-means本身存在缺陷,比如聚类中心数目K的数值如何确定、聚类中心如何初始化等,导致聚类结果准确度不高,检索性能不是很好。

4. 基于哈希的索引

为了更精确地描述图像,一般对图像提取高维特征,其维数可以达到数量级。研究人员提出了降维的方法,该方法目的是降低高维图像特征之间的相关性和冗余度从而使其变成低维向量。但降维技术必须在保证一定精度的基础之上,大幅度的降维会造成图像特征信息的丢失,影响检索的准确度。所以一般经过降维之后,对于传统的索引结构来讲,特征向量的维数依然是很高的。

哈希算法主要针对近似最近邻问题,可以很好地解决维度灾难问题,因此基于哈希的算法受到越来越多研究所人员的重视,目前的主流都是基于哈希的索引。基于哈希的索引通过设计一个哈希函数, 特征向量经过哈希函数映射后得到哈希值。基于哈希索引的假设是:距离(比如欧式距离) 近的两个特征向量经过哈希函数映射到同一个哈希值概率比距离远的两个特征向量大,经过实验证明这个假设是正确的。因此如何设计性能好的哈希函数是关键。

5.哈希算法概述

基于哈希的索引算法将任意长度的高维特征向量通过哈希函数映射成固定长度的二进制序列,每个图像用一个二进制序列来表示,通过比较二进制序列的距离就可以计算图像的相似度。基于哈希算法的图像检索算法有很好的时间效率,并且在高维向量空间也能够保持很好的性能,能快速地从图像库中检索到与查询图像相似的图像,是最近图像检索领域中热点研究问题。现有的基于哈希的图像检索算法根据是否利用图片的标签信息可以分为:半监督哈希算法、监督哈希算法和非监督哈希算法。

5.1 非监督哈希算法

非监督哈希算法是指在哈希函数构造过程中不需要训练图像带有标签,而是只利用图像的视觉特征来构造哈希函数。非监督哈希算法具有对图像库要求低并且检索速度快的特点,因此更适合大规模图像检索。LSH(Locality Sensitive Hashing)就是其中的代表,除此之外还有SH(Spectral Hashing),KLSH(Kernelized Locality Sensitive Hashing )等都属于非监督哈希算法。LSH哈希是十分优秀的索引算法,目前已经在最原始的基于比特采样的LSH算法基础上衍生出了其他著名的LSH算法。

5.2 监督哈希算法

与非监督哈希算法不同,监督哈希算法在构造哈希函数时首先需要对图像内容进行标注,然后充分利用这些标注信息构造哈希函数。监督哈希算法检索准确率高,但检索速度慢,而且需要对图像提前标记信息,不适合大规模图像检索。常用有效的监督哈希算法是受限玻尔兹曼机(Restricted Boltzmann Machines,RBMs)。2009年Brandt等人提出了基于RBMs的语义哈希。它是用神经网络训练出语义特征来表示海量图像,比如图像可能是车轮、汽车、人或者某个特定场景。 RBMs主要包括无监督的训练和有监督的调整两个阶段。在第一阶段,主要是根据贪心训练算法一层一层地计算每层的受限玻尔兹曼机输入和输出之间的关系。在每层的输出值收敛的情况下,将该层的参数输入到下一层中。在调整阶段,利用图像的标签信息来调整上一阶段学习到的模型,虽然利用该算法能够取得不错的检索效果。但自身模型十分复杂,导致运行效率不高,要占用很长时间才能得到最终结果。

5.3 半监督哈希算法

2010 年,王骏等人在CVPR 上提出通过半监督哈希算法来检索图像。所谓半监督哈希算法也需要对图像进行标注,但他不是对所有图像都进行标注,而是只标注一部分图像,这样从图像的标注信息得到监督信息,从图像的内容特征得到非监督信息,综合这两种信息来构造哈希函数。由于标注信息的多少对检索的准确性有很大的影响,而且对于大规模图像检索来讲,标注本身就具有很大工作量。

6.倒排文件索引

待写。。。

7. 结语

本人初学图像检索,为了梳理自己所学内容加深理解,写了此篇文章,如有错误,还请海涵,希望指出帮忙改正,万分感谢。另外,本文参考了许多博客文章,非商业用途,如有侵权,请告知我,我会删除。

参考资料

。。。忘了记了,以后再写文章一定加上

你可能感兴趣的:(图像检索---索引技术)