一种采用双key值的高维索引结构构建方法和检索方法

文档序号:6508455阅读:223来源:国知局
一种采用双key值的高维索引结构构建方法和检索方法
【专利摘要】本发明公开了一种采用双key值的高维索引结构构建方法和检索方法。在本发明中,提出了一种采用双key值的高维到一维转换索引结构DKB-tree,它在高维空间中选取两个参考点将高维空间中的各高维向量映射为双一维key值,统一选取采用相同参考点得到的某一key值作为主key,另一key值作为辅key,每个主key都绑定一个指向其对应辅key的指针,每个辅key都绑定一个指向其对应高维向量的指针。进行检索时,通过主key实现第一层过滤,通过辅key实现再一次过滤。本发明提出的DKB-tree通过简单的双key值大小比较,大大地减少了相似度匹配的运算量,加快检索速度。
【专利说明】一种采用双key值的高维索引结构构建方法和检索方法
【技术领域】
[0001]本发明属于多媒体信息检索、智能信息处理、数据挖掘等数据处理领域,具体涉及的是一种采用双key值的高维索引结构构建方法和一种采用双key值的高维向量检索方法。
【背景技术】
[0002]随着计算机和信息技术的发展,产生了海量的多媒体数据,如何在海量的多媒体数据库中快速找到所需的信息是当前多媒体数据库领域研究的一个重点问题。传统的方法是由人工对多媒体数据进行标注,然后通过文本检索来实现多媒体信息检索。然而人工标注存在工作量大和主观性强的缺陷,对于爆炸式增长的多媒体数据来说,完全人工标注是不可实现的,因此需要研究基于内容的多媒体信息检索技术。
[0003]实现基于内容的多媒体信息检索的技术路线是:通过特征变换,将多媒体数据映射到高维空间中的点——特征向量,用该特征向量来描述多媒体对象,得到特征库;然后用同样的特征变换方法来提取查询对象的特征向量,最后通过特征向量间的相似度匹配来实现多媒体信息的相似检索。因此多媒体信息的相似检索转变为在高维特征空间中寻找与给定查询点最近的点集的过程。
[0004]要在高维空间中寻找与给定查询点最相近的点集,最简单直观的方法就是顺序扫描,即依次将特征库中的每个特征(高维向量)与查询点进行相似度匹配,返回最匹配的那些特征点集,得到检索结果。顺序扫描随着特征库中特征数目和特征维度的增加,计算消耗时间线性增大,当特征库中的特征数目很大时,顺序扫描将不能满足实时性需求。为了加快检索速度,需借助于高维索引技术。
[0005]为了实现对海量高维向量的管理,研究者们提出了大量的索引结构,其中最为经典的是以R-tree为代表的R-tree家族系列索引结构。R-tree是20世纪80年代由Guttman提出的一种索引结构,它是一种利用树结构管理数据的高度平衡树,每个节点用该节点中所有数据的最小外接矩形(MBR:Minimal Bounding Rectangle)来表示,实际数据仅出现在叶子节点中。在查询过程中,从根节点层到叶子节点层进行向下搜索,通过计算查询向量和各节点MBR之间的最小距离来判断查询范围是否与某节点相交来实现剪枝过滤,仅搜索可能包含结果的子树,从而加快检索速度。该索引结构允许节点之间的空间重叠,影响了其查询效率。为了提高R-tree的性能,研究者们相续提出了 R+-tree、R*-tree, SS-tree、SR-tree、X-tree、A-tree等索引结构。但这些树型索引结构随着特征维度的增加,查询效率急剧下降,甚至不如顺序扫描,这就是所谓的“维数灾难”。
[0006]除了树型结构之外,还存在高维到一维转换的索引结构,例如:金字塔技术、NB-tree、iDistance、iMinMax等等。高维到一维转换的索引结构通过某种规则,将高维向量映射为一维数据(称为key值),然后采用一维的B+_tree来管理这些key值,key值在B+-tree的叶子节点层有序排列。进行查询时,首先通过相同的高维到一维转换规则计算查询向量的查询key值,最后根据查询范围,确定搜索的key值起始位置和结束位置,并依次扫描这些key值对应的高维向量,计算查询向量与这些高维向量间的相似性,返回那些最相似的高维向量集,得到检索结果。由查询过程可知,高维到一维转换的索引结构在任何情况下性能均优于或等效于顺序扫描,且基于前人的大量实验表明,这类索引结构随维数和数据量的增加,性能降低缓慢。
[0007]金字塔技术、NB-tree、iDistance、iMinMax等这些高维到一维转换索引结构通过单一 key值的简单比较实现过滤剪枝,虽然不需要复杂的距离计算且具有较高的检索效率,但高维到一维转换的过程能够引起大量的数据信息丢失,引起不同向量可能具有相同的一维key值,因此通过单一 key值仅能过滤比例不大的一部分数据,导致最终相似度匹配过程的运算量仍然很大,查询开销依然不小。

【发明内容】

[0008]本发明的目的在于提出了一种采用双key值的高维索引结构构建方法和一种采用双key值的高维向量检索方法,构建高维索引结构时将每个高维向量映射为双一维key值,在B+_tree的基础上增加了一层key值过滤层,检索时能够进一步通过简单的key值比较实现再次过滤,大大地减少了与查询向量进行相似度匹配运算的高维向量数目,从而减少了相似度匹配的运算量,加快检索速度。
[0009]本发明的总体思想如下:首先在高维空间中选取两个参考点,然后采用该高维空间中各高维向量对这两个参考点间的距离将高维向量映射为双一维key值,统一选取该高维空间中采用相同参考点得到的某一 key值作为主key,另一作为辅key,最后,分别采用该高维空间中的所有主key构建B+_tree,同时B+_tree叶子节点层(即DKB-tree的主key层)的每个主key都绑定一个指向其对应辅key的指针,所有辅key形成DKB-tree的辅key层,每个辅key都绑定一个指向其对应高维向量的指针,这些高维向量根据辅key层其对应辅key的排列顺序按序存储,形成DKB-tree索引结构。进行检索时,首先使用相同的映射方法将查询向量映射为查询主key和查询辅key,然后通过查询主key和查询范围确定在DKB-tree主key层的搜索范围,将对应主key在搜索范围外的高维向量直接过滤,实现第一层key值过滤,最后通过查询辅key和查询范围确定辅key的搜索范围,只需对经主key过滤后其辅key在辅key搜索范围内的那些高维向量与查询向量间进行相似度匹配计算,通过辅key实现再次过滤,返回那些在查询范围内的向量集,得到检索结果。
[0010]具体创新点:为高维空间中的每个高维向量选取两个参考点得到双一维key值,通过两次简单的key值比较,大大地减少了最终参与相似度匹配运算的高维向量数目,显著地加快了查询速度。
[0011]一种采用双key值的高维索引结构构建方法,本发明的具体方法步骤为:(I)在高维空间中选取两个参考点;(2)将高维空间中的各高维向量利用高维向量与这两个参考点间的距离映射为双一维key值,统一选取该高维空间中采用相同参考点得到的某一 key值作为主key,另一 key值作为辅key ; (3)逐一将这些高维向量和对应的主key、辅key插入到DKB-tree中,该DKB-tree采用B+_tree管理上层的主key值,B+_tree叶子节点层的所有主key形成DKB-tree的主key层,同时主key层的每个主key都绑定一个指向其对应辅key的指针,每个主key节点对应一个辅key节点,所有辅key形成DKB-tree的辅key层,每个辅key都绑定一个指向其对应高维向量的指针,这些高维向量根据辅key层其对应辅key的排列顺序按序存储;插入的方法为根据待插入高维向量的主key大小定位其应插入到DKB-tree主key层的某一节点中,如果该节点未满,贝U直接将该主key插入到该节点中,其辅key按照主key的排列顺序插入到该节点对应的辅key节点中,待插入特征向量按照辅key的排列顺序插入到该辅key节点对应的高维向量存储位置处,并使该主key产生指向其对应辅key的指针,其对应辅key产生指向待插入高维向量的指针,更新主key所在节点对应的父节点key值;如果该节点已满,再判断该节点的左右兄弟节点是否存在未满的情况,若存在,则结合其左右兄弟节点,进行待插入高维向量和其对应主key、辅key值的插入,并更新其父节点对应的key值;若其左右兄弟节点均满,则结合待插入高维向量的主key值,直接对该节点进行分裂,同时对该节点对应的辅key节点进行对应位置处的辅key插入和分裂,及将待插入高维向量插入到对应的高维向量存储位置处,并将分裂后新产生的主key节点插入到其父节点中,更新其父节点对应的key值,如果父节点也已满,分裂过程继续向上传递,并更新对应的父key值,直到根节点处,产生新的根节点。
[0012]更进一步,步骤I中所述的两个参考点的选取,包括可选取原点和数据分布中心为参考点。
[0013]更进一步,步骤2中所述的距离包括欧式距离、街区距离。
[0014]一种采用双key值的高维向量检索方法,采用上述的一种采用双key值的高维索引结构构建方法,实现DKB-tree的构建,进行检索时,检索步骤包括:(I)使用与DKB-tree构建方法相同的映射方法将查询向量映射为查询主key和查询辅key ; (2)通过查询主key和查询范围确定在DKB-tree主key层的搜索范围,将那些对应主key值在搜索范围外的所有高维向量直接过滤掉;(3)然后通过查询辅key和查询范围确定辅key的搜索范围,对经主key过滤后其辅key值在辅key搜索范围内的那些高维特征与查询向量间进行相似度匹配计算,将符合查询范围的高维向量返回,得到检索结果。
[0015]再进一步,采用上述检索方法进行检索时,可采用范围查询,也可以采用k近邻查询。
[0016]再进一步,上述检索方法所述的查询范围,对于范围查询来说,是由查询半径来确定的,对于k近邻查询来说是由按某一步长递增的查询半径来确定的,直到第k个近邻到查询向量的距离值小于查询半径为止。
【专利附图】

【附图说明】
[0017]此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施实例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]图1本发明所述索引结构构建方法的流程图
[0019]图2本发明所述索引结构的示例图
[0020]图3本发明所述检索方法的流程图
[0021]图4本发明所述检索方法进行范围查询的框图
[0022]图5本发明所述检索方法进行k近邻查询的框图
【具体实施方式】[0023]为了使本发明所需解决的技术问题、技术方案更加清楚、明白,下面结合附图和实施实例对本发明的【具体实施方式】做进一步说明。
[0024]本发明实施实例提供的一种采用双key值的高维索引结构构建方法其流程图如图1所示:
[0025]首先,在高维向量集所在的高维空间中选取两个参考点;其次,逐一计算高维向量集中每个高维向量与这两个参考点间的距离,得到每个高维向量对应的双一维key值;然后,统一选取该高维向量集中某一采用相同参考点得到的key值作为主key,另一 key值作为辅key ;最后,逐一将这些高维向量对应的主key插入到DKB-tree其上层B+_tree的叶子节点中,辅key插入到其主key对应的辅key节点中,高维向量按照辅key的排列顺序插入到对应的存储位置处,主key绑定指向其对应辅key的指针,辅key绑定指向其对应高维向量的指针,形成DKB-tree索引结构。该DKB-tree采用B+_tree管理上层的主key值,同时B+_tree叶子节点层(也即DKB-tree主key层)的每个主key都绑定一个指向其对应辅key的指针,所有辅key形成DKB-tree的辅key层,每个辅key都绑定一个指向其对应高维向量的指针,这些高维向量根据辅key层其对应辅key的排列顺序按序存储,图2给出了本发明所述索引结构的示例图。
[0026]在本发明所述索引结构中进行高维向量和对应的主key、辅key的插入方法为:根据待插入高维向量的主key大小定位其应插入到DKB-tree主key层(即上层B+_tree叶子节点层)的某一节点中,根据该节点是否已满,相应的按如下方法进行处理:
[0027](a)如果该节点未满,贝U直接将主key插入到该节点中,其辅key按照主key的排列顺序插入到该节点对应的辅key节点中,待插入特征向量按照辅key的排列顺序插入到该辅key节点对应的高维向量存储位置处,并使该主key产生指向其对应辅key的指针,其对应辅key产生指向待插入高维向量的指针,更新主key所在节点对应的父节点key值。
[0028](b)如果该节点已满,又分为如下两种处理方法:
[0029](bl)判断该节点的左兄弟节点是否已满,若未满,则按照主key值的大小,将本节点和待插入主key中的最小主key移动到其左兄弟节点中,同时对应的将该最小主key的辅key也移动到其左兄弟节点对应的辅key节点中,然后将待插入主key、辅key和特征向量按(a)步骤进行插入,并更新对应的父节点key值。若其左兄弟节点已满,则判断其右兄弟节点是否已满,若未满,贝1J按照主key值的大小,将本节点和待插入主key中的最大主key移动到其右兄弟节点中,同时对应的将该最大主key的辅key也移动到其右兄弟节点对应的辅key节点中,然后将待插入主key、辅key和特征向量按(a)步骤进行插入,并更新对应的父节点key值。
[0030](b2)其左右兄弟节点均满时,则结合待插入高维向量的主key值,直接对本节点进行分裂,同时对该节点对应的辅key节点进行对应位置处的辅key插入和分裂,及将待插入高维向量插入到对应的高维向量存储位置处,并将分裂后新产生的主key节点插入到其父节点中,更新其父节点对应的key值,如果父节点也已满,分裂过程继续向上传递,并更新对应的父key值,直到根节点处,产生新的根节点。
[0031 ] 本发明实施实例还提供了 一种上述索弓I结构的检索方法,在进行检索时,首先采用与上述索引结构相同的高维向量到双key值的映射规则,计算查询向量和两个参考点间的距离,得到查询主key和查询辅key ;然后根据查询主key和查询范围,确定在DKB-tree主key层的主key搜索范围,得到主key层的扫描起始位置和结束位置,将主key值在主key搜索范围之外的那些高维向量直接过滤掉,实现第一层key值过滤,并根据查询辅key和查询范围,确定在DKB-tree辅key层的辅key搜索范围;最后,从主key层的扫描起始位置到结束位置,逐一进行主key值扫描,判断该主key对应的辅key是否在辅key搜索范围之内,若在搜索范围之内,则计算该辅key对应的高维向量与查询向量之间的距离,将满足检索结果的高维向量返回,否则直接将该辅key对应的高维向量进行过滤,实现第二层key值过滤。
[0032]本发明所述的检索方式包括范围查询和k近邻查询,范围查询的流程图如图2所示,k近邻查询的流程图如图3所示。由图3可知,k近邻查询是通过范围查询来实现。
[0033]上述高维向量可以是图像、视频、音频的特征向量。
[0034]应当理解的是,上述针对实施实例的描述较为具体,并不能因此而认为是对本发明专利保护范围的限制,本发明的专利保护范围应以所附权利要求为准。
【权利要求】
1.一种采用双key值的高维索引结构构建方法,其特征在于具体步骤如下: 1)在闻维空间中选取两个参考点; 2)将高维空间中的各高维向量利用高维向量与这两个参考点间的距离映射为双一维key值,统一选取该高维空间中采用相同参考点得到的某一 key值作为主key,另一 key值作为辅key ; 3)然后逐一将这些高维向量和对应的主key、辅key插入到DKB_tree中,该DKB_tree采用B+_tree管理上层的主key值,B+_tree叶子节点层的所有主key形成DKB-tree的主key层,同时主key层的每个主key都绑定一个指向其对应辅key的指针,每个主key节点对应一个辅key节点,所有辅key形成DKB-tree的辅key层,每个辅key都绑定一个指向其对应高维向量的指针,这些高维向量根据辅key层其对应辅key的排列顺序按序存储;插入的方法为根据待插入高维向量的主key大小定位其应插入到DKB-tree主key层的某一节点中,根据该节点及其兄弟节点是否已满,处理的方法为: 31)首先判断该节点是否已满,如果该节点未满,则直接将该主key插入到该节点中,其辅key按照主key的排列顺序插入到该节点对应的辅key节点中,待插入特征向量按照辅key的排列顺序插入到该辅key节点对应的高维向量存储位置处,并使该主key产生指向其对应辅key的指针,其对应辅key产生指向待插入高维向量的指针,更新主key所在节点对应的父节点key值; 32)如果该节点已满,再判断该节点的左右兄弟节点是否存在未满的情况,若存在,则结合其左右兄弟节点,进行待插入高维向量和其对应主key、辅key值的插入,并更新其父节点对应的key值; 33)若该节点及其左`右兄弟节点均满,则结合待插入高维向量的主key值,直接对该节点进行分裂,同时对该节点对应的辅key节点进行对应位置处的辅key插入和分裂,及将待插入高维向量插入到对应的高维向量存储位置处,并将分裂后新产生的主key节点插入到其父节点中,更新其父节点对应的key值,如果父节点也已满,分裂过程继续向上传递,并更新对应的父key值,直到根节点处,产生新的根节点。
2.如权利要求1所述的方法,其特征在于:步骤I中所述的选取两个参考点,包括选取原点和数据分布中心为参考点。
3.如权利要求1所述的方法,其特征在于:步骤2中所述的距离包括欧式距离、街区距离。
4.一种采用双key值的高维向量检索方法,其特征在于:采用了如权利要求1所述的一种采用双key值的高维索引结构构建方法,实现DKB-tree的构建,进行检索时,检索步骤包括: 步骤一:采用如权利要求1步骤I所述的两个参考点和权利要求1步骤2所述的距离映射方法将查询向量映射为查询主key和查询辅key ; 步骤二:通过查询主key和查询范围确定在DKB-tree主key层的搜索范围,将那些对应主key值在搜索范围外的所有高维向量直接过滤掉; 步骤三:然后通过查询辅key和查询范围确定辅key的搜索范围,对经主key过滤后其辅key值在辅key搜索范围内的那些高维向量与查询向量间进行相似度匹配计算,将符合查询范围的高维向量返回,得到检索结果。
5.如权利要求4所述的检索方法,其特征在于:进行检索时,可采用范围查询,也可采用k近邻查询。
6.如权利要求4所述的检索方法,其特征在于:步骤二和步骤三所述的查询范围,对于范围查询来说,是由查询半径来确定的,对于k近邻查询来说是由按某一步长递增的查询半径来确定的,直到 第k个近邻到查询向量的距离值小于查询半径为止。
【文档编号】G06F17/30GK103514263SQ201310365383
【公开日】2014年1月15日 申请日期:2013年8月21日 优先权日:2013年8月21日
【发明者】杨丽芳, 黄祥林, 吕锐, 王永滨 申请人:中国传媒大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1