一种基于B+树的高维磁盘索引结构和图像检索方法与流程

文档序号:13703027阅读:97来源:国知局
技术领域本发明涉及图像索引与检索技术领域,具体涉及一种基于B+树的高维磁盘索引结构和图像检索方法。

背景技术:
近年来,随着互联网技术的迅速发展和普及,尤其是社交应用和电子商务应用的不断发展,图像数据呈快速增长趋势。如何快速、准确地从图像大数据中检索到用户所需要的信息,成为了一个亟待解决的重要问题。传统基于文本的检索方式依赖于网页中的文本信息,但这些文本信息与图像数据内容本身关联性较弱,因此准确性不高。而基于内容的图像检索则能够克服上述不足,受到学术界和工业界的重视。基于内容的图像检索的常用方法是“近邻检索(NearestNeighborsSearch)”,即根据查询数据的特征,从大量的高维数据中检索并返回与查询特征距离相近的数据。解决此类问题往往需要使用高维数据的索引和检索技术,因此研究大规模高维数据的索引结构和检索算法,对于基于内容的图像大数据检索的应用至关重要。大量的研究表明,“准确”的近邻检索算法在数据维度较高的情况下,性能会退化成线性搜索,这种现象被称为“维数灾难”。比如J.L.Bentley等人在文献“Multidimensionalbinarysearchtreesusedforassociativesearching”中提出的KD树算法,在低维空间有效,但在高维空间性能下降严重。然而常用的图像特征维数都比较高,这也限制了这类算法在基于内容的图像检索领域的应用。为了缓解“维数灾难”问题,近年来,大量的研究开始关注“近似”近邻检索(ApproximateNearestNeighbor,ANN)方法,ANN方法的目的是通过牺牲一定的准确率来换取检索效率的提高,其主要思路是通过离线建立高维数据索引结构,提高在线检索的速度。高维数据索引结构经过多年研究,一般可以分成基于空间分割的树形结构和基于哈希映射的索引结构。近年来,基于哈希映射的索引结构由于在实际应用中的优秀表现,获得了广泛关注。其原理是将近邻数据映射到同一个哈希桶,利用哈希冲突过滤大量非近邻数据从而提高检索效率。通过设计合理的哈希映射函数,基于哈希映射的索引结构能实现次线性时间复杂度的检索效率。然而目前基于哈希映射的高维索引主要是针对内存设计的方法,当数据量非常大,内存无法载入所有的数据时,这类方法将无法使用。相对内存而言,磁盘容量大、价格低廉,非常适合用于大数据量的基于内容的图像检索领域。由于磁盘的IO效率比内存要低,因此如何设计一种合理的索引结构来优化磁盘的IO策略,同时保持基于哈希的索引算法的性能成为解决高维索引的关键问题。

技术实现要素:
针对现有技术的不足,本发明提出了一种基于B+树的高维磁盘索引结构,用于解决高维数据的索引和快速检索问题。该发明结合了哈希映射算法的检索效率高和B+树结构磁盘IO效率高的特性,能够很好地支持大规模图像高维数据的索引;并且在存储时按照格雷码排序存储索引,使得汉明距离相近的数据存储位置更加靠近,提高了检索准确率和速度。为了达到以上目的,本发明采用的技术方案如下:本发明提出了一种基于B+树的高维磁盘索引结构,用于对图像高维数据进行磁盘索引,该高维磁盘索引结构的建立方法包括以下步骤:(1)对需要建立索引的图像提取一种或多种高维特征;(2)基于步骤(1)中的高维特征,使用哈希映射方法将高维特征映射为若干比特的哈希编码;(3)基于步骤(2)生成的哈希编码进行随机编码排列,按照某种随机生成的次序重新排列步骤(2)生成的哈希编码;(4)基于步骤(3)生成的哈希编码,将该编码按照某种顺序插入到基于磁盘的B+树中;(5)重复步骤(3)、(4),将全部哈希编码插入并保存到基于磁盘的B+树结构中,形成高维数据磁盘索引结构。进一步,所述步骤(1)中所述提取高维特征,是对图像提取颜色、纹理或形状等特征。进一步,所述步骤(2)中的哈希映射方法,包括各类将高维数据压缩编码成二进制的映射方法,这些哈希映射方法在压缩数据的同时能够保持局部敏感特性,即任意两个距离测度(如L1距离、欧式距离等距离测度)小的数据,经过编码之后的汉明距离小。进一步,所述步骤(3)中的随机编码排列,首先随机生成一种次序,并将步骤(2)中的编码按照这种次序重新排列,得到新的编码。进一步,所述步骤(4)中的某种顺序,包括二进制编码的字典序和格雷码序。进一步,所述步骤(5)中重复步骤(3)、(4)L次,表明每一个高维特征将会生成L个哈希编码,保存到L个基于磁盘的B+树索引。本发明还提出了一种采用上述基于B+树的高维磁盘索引结构的图像检索方法,其步骤包括:(a)采用上述磁盘索引建立方法建立基于B+树的高维数据磁盘索引结构;(b)对于查询图像,经过与上述步骤(1),(2)相同的特征提取和哈希映射方法,得到哈希编码;(c)使用上述步骤(3)中相同的排列次序,重新排列步骤(b)的哈希编码,得到重新排列的哈希编码;(d)在上述步骤(a)对应的基于B+树的高维数据磁盘索引结构中找到步骤(c)得到的哈希编码的插入位置;(e)在上述步骤(d)得到的插入位置的附近选取若干个数据,作为候选结果;(f)重复上述步骤(c)、(d)、(e),得到候选结果;(g)基于上述步骤(f)的候选结果,去除重复结果,得到去除重复后的候选结果集合,对候选结果集合排序返回检索结果。进一步,所述步骤(e)中的若干个数据是一个用户设定的参数,用来控制检索结果的数量。进一步,所述步骤(f)重复步骤(c)、(d)、(e)L次,从L个B+树索引中得到若干个候选结果。进一步,所述步骤(g)中的排序可以按照步骤(b)得到的哈希编码与候选结果的哈希编码的汉明距离排序,也可以按照查询特征与候选结果特征的某种距离测度排序。所述查询特征和所述候选结果特征是指对图像提取的颜色、纹理或形状等特征。本发明的有益效果在于:(1)支持大规模图像数据的快速索引和检索;(2)支持多种哈希映射编码方法,灵活性好;(3)支持索引增量添加;(4)基于格雷码排序的优化提高了算法性能。本发明之所以具有上述有益效果,其原因在于:本发明采用了基于磁盘的B+树结构来存储索引,与其他索引结构相比,该结构支持数据的动态添加并且磁盘IO效率高,使得检索速度快;本发明采用了随机编码排列方法,该方法保证了次线性检索复杂度,提高了检索准确率;发明了基于格雷码序的哈希编码排列方法,优化了检索算法并进一步提高了检索准确率。附图说明图1是本发明建立索引的技术流程图。图2是B+树存储结构示意图。图3是随机编码排列示意图。图4是字典序与格雷码序查询对比示意图。图5是本发明中检索流程图。具体实施方式下面结合附图和具体实施例对本发明作进一步详细的描述。本发明的一种基于B+树的高维磁盘索引结构,其索引建立的流程如图1所示,具体包含以下步骤:(1)特征提取对需要建立索引的图像提取一种或多种颜色、纹理或形状特征,该特征为高维向量。(2)哈希编码在经过步骤(1)特征提取之后,我们需要将特征通过哈希编码方法映射为哈希编码。哈希编码的方式有多种,其目的是保证距离测度(如L1距离、欧式距离等距离测度)小的高维特征,经过映射后哈希编码的汉明距离也小,同时能够压缩特征的维度。本实施例采用Y.Gong等人在文献“Iterativequantization:Aprocrusteanapproachtolearningbinarycodesforlarge-scaleimageretrieval”中提出的迭代量化方法作为哈希映射方法。迭代量化方法是一种依赖于数据的非监督编码方法。该方法将哈希编码分为降维与量化两步,降维过程使用主成分分析(PrincipleComponentAnalysis,PCA)方法将高维数据映射到维度两两不相关的低维线性空间;量化过程将降维后的向量映射到低维超立方体的顶点上,同时通过求解最优的正交变换矩阵R来最小化量化误差,如公式一所示:公式一:Q(B,R)=||B-VR||F2]]>其中,Q(B,R)表示量化误差,||.||F表示Frobenius范数,B表示编码,V表示降维后的向量。为了求解以上目标函数,迭代量化编码算法采用了交替更新的方法:每一次迭代先固定R,将低维向量映射到距离最近的超立方体顶点更新编码矩阵B;然后固定B,使用经典的正交Procrustes问题求解方法求解并更新R。文献指出,迭代求解过程不需要等到收敛就可以得到较好的效果,本实施例中采用的迭代次数为50次。本发明对于编码算法没有具体要求,可以根据实际情况,灵活地选择哈希编码方法,实验部分对比了迭代量化与LSH两种编码方式的效果。其中LSH编码是由A.Gionis和P.Indyk在文献“Similaritysearchinhighdimensionsviahashing”中提出的方法。该方法是一种随机的编码方法,使用一个随机的高斯分布的映射矩阵将高维特征映射为哈希编码。(3)随机编码排列经过步骤(2)哈希编码之后,我们得到了高维数据对应的哈希编码,为了保证查询准确率和召回率,我们需要在此基础之上生成L个哈希编码表。我们采用了M.S.Charikar等人在文献“Similarityestimationtechniquesfromroundingalgorithms”中的随机编码排列的方法来生成L个不同的哈希编码表。如图3所示,本实施例使用的随机编码排列具体操作步骤为:a)随机生成一个长度为B交换次序(B为哈希编码的位数)数组;b)对哈希编码每一个比特位按照步骤a)生成的交换次序交换;c)重复步骤a),b)L次,生成L个哈希编码表。(4)建立B+树磁盘索引得到L个哈希编码表之后,我们需要将这个编码表保存到基于B+树的磁盘结构中。B+树磁盘结构如图2所示。B+树是一种平衡二叉树,图2展示阶为3的B+树存储结构示例,其中1表示B+树中键值为1的叶节点,该叶节点中存储了键值1和对应的数据ID。中间节点存储了子节点键值范围和子节点指针,比如中间节点键值4,对应的子树的键值范围为(-∞,4),键值7对应子树的键值范围为[4,7)。由于距离越小的高维数据,哈希编码相同的概率越大,因此索引结构会出现大量的重复键值。本实施例的B+树磁盘结构采用了溢出页(Overflowpage)处理重复键值,比如键值6出现了3次,无法存放在同一个页中,重复的数据被分配到溢出页中。数据在插入B+树时需要按照一定的排序规则找到插入位置,而不同的排序规则对于检索效果有影响。在步骤(3)的随机编码排列方法里,作者M.S.Charikar采用的是字典序,然而由于存在“汉明悬崖”现象,即某些字典序相邻的二进制编码之间的汉明距离很大(比如二进制编码“0111”与“1000”字典序相邻,汉明距离却为4),所以字典序并不是很适合本发明所提出的索引结构,但本发明也是可以使用字典序的。本实施例按照格雷码序插入哈希编码,格雷码也叫“二进制反射码”,任意两个相邻的格雷码之间只有一个二进制位发生变化。1比特的格雷码顺序为“0”,“1”;2比特则将第2比特设为“1”,对1比特顺序镜像,得到顺序为“00”,“01”,“11”,“10”;3比特格雷码将第三比特设为“1”,对2比特顺序镜像,得到顺序为“000”,“001”,“011”,“010”,“110”,“111”,“101”,“100”,以此类推。图4是一个简单的字典序与格雷码序查询对比示例,查询编码为“1000”,与查询编码汉明距离为1的4个编码为“0000”,“1100”,“1010”,“1001”,使用字典序和格雷码序,这四个编码与“1000”的距离之和分别为15和12,即图中的locallexi和localgray,这说明与查询汉明距离相同的编码按照字典序位置更加分散,局部敏感特性比格雷码序差。因此按照格雷码序,检索返回正确结果更多,说明格雷码序更适合本发明提出的索引结构。这样将步骤(3)中的L个哈希编码表按照格雷码序插入B+树磁盘结构后,即将编码保存到了基于B+树的磁盘索引中。本发明的一种基于B+树与格雷码排序的高维磁盘索引结构,其检索的流程如图5所示,具体包含以下步骤:(1)采用与索引建立相同的(1)特征提取、(2)哈希编码、(3)随机编码排列步骤对查询数据进行处理。基于步骤(3)生成的L个哈希编码,分别在对应的B+树索引结构中检索,对于每一个B+树索引结构:(a)根据哈希编码找到插入位置s;(b)以插入位置s为中心,读取s相邻的若干个数据作为候选集,得到L个候选集合。(2)合并候选集合并排序。步骤(1)得到的L个候选集合可能含有重复,先对这L个候选集合去除重复,然后按照一定的顺序排序得到检索结果。本实施例采用的排序方法是按照查询与候选集的欧式距离从小到大排序。下面的实验表明,本发明能够对大规模高维特征建立磁盘索引,支持多种编码方式,且能够支持索引结构的动态增加。与现有方法相比,本发明能够取得更高的检索准确率和检索速度。本实施例共进行两组对比实验,分别采用CIFAR-10和BIGANN数据集。实验采用平均检索时间和MAP(MeanAveragePrecision)作为评测指标。两组实验统计MAP时,采用与查询特征欧式距离最小的前50个数据作为标准结果,统计查询结果的前50个检索结果计算平均查询准确度。实验硬件环境为DellC6100服务器,配置为:IntelXeonE56452.4G双核,96G内存,希捷7200RPM硬盘。下面分别对这两组实验进行描述:第一组实验使用CIFAR-10数据集,该数据集由A.Krizhevsky等人在文献“Learningmultiplelayersoffeaturesfromtinyimages”提出。CIFAR-10数据集共有60000张大小为32x32的彩色图片,包含50000张训练图片和10000张测试图片。本实验对训练图片建立索引,测试图片作为查询进行检索。以下5种方法作为实验对比:现有方法一:Q.Lv等人在文献“Multi-probeLSH:efficientindexingforhigh-dimensionalsimilaritysearch.”提出的Multi-probeLSH方法,该方法基于经典的局部敏感哈希算法进行改进,提出了多探测的查询方法,改进了查询的效果。实验一:本实施例方法,使用LSH编码作为哈希编码方法,在建立索引步骤(4)中使用字典序作为哈希编码排列方法。实验二:本实施例方法,使用LSH编码作为哈希编码方法,在建立索引步骤(4)中使用格雷码序作为哈希编码排列方法。实验三:本实施例方法,使用迭代量化编码作为哈希编码方法,在建立索引步骤(4)中使用字典序作为哈希编码排列方法。实验四:本实施例方法,使用迭代量化编码作为哈希编码方法,在建立索引步骤(4)中使用格雷码序作为哈希编码排列方法。实验结果如表1所示:表1.CIFAR实验结果mAP(%)平均检索时间(ms)现有方法一10.2639.6实验一25.21.9实验二26.42.3实验三37.62.2实验四39.22.5根据表1中实验一、实验二、实验三、实验四与现有方法一的对比可以看出,本发明所提出的基于B+树的高维磁盘索引结构比现有方法Multi-probeLSH索引算法取得了更好的检索准确率和检索时间。从实验二与实验一、实验四与实验三的对比结果可以看出,基于格雷码序的B+树索引与基于字典序的B+树索引相比,检索时间几乎一致,但检索准确率更高,说明格雷码排序更适合本发明提出的磁盘索引结构。实验采用了迭代量化和LSH两种编码方法,说明了本发明可以灵活地采用多种编码方法。实验中索引的建立均通过增量添加的方式进行,这说明本发明能够支持索引的动态添加。第二组实验采用BIGANN数据集,该数据集由H.Jégou等人在文献“Searchinginonebillionvectors:re-rankwithsourcecoding”中提出,该数据集包含10亿个128维的SIFT基础特征和10000个查询图像的特征。除此之外,该数据集还分别对大小为1百万、5百万、1千万、5千万、1亿、5亿、10亿的子数据集提供了欧氏距离前1000的标准结果。本组实验采用LSH编码方式,索引建立步骤(4)中均采用格雷码序作为排序方法。实验分别对4个大小为1百万、5百万、1千万、5千万和1亿的子数据集建立索引,并从查询特征中随机取100个查询特征进行检索,得到平均结果如表2所示。表2.BIGANN实验结果表2数据中,本发明与现有方法Multi-probeLSH的平均检索时间对比表明,本发明提出的一种基于B+树与格雷码排序的高维磁盘索引结构可以支持多达5千万的数据量进行磁盘索引与实时检索,而现有的Multi-probeLSH方法则在数据量大于5百万时无法实现1s时间内的检索。对于相同数据量来说,这两种方法的检索结果的MAP对比表明,本发明提出的方法取得了比Multi-ProbeLSH方法更好的检索准确率。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1