CN110895573B - 一种检索方法和装置 - Google Patents
一种检索方法和装置 Download PDFInfo
- Publication number
- CN110895573B CN110895573B CN201810979597.7A CN201810979597A CN110895573B CN 110895573 B CN110895573 B CN 110895573B CN 201810979597 A CN201810979597 A CN 201810979597A CN 110895573 B CN110895573 B CN 110895573B
- Authority
- CN
- China
- Prior art keywords
- feature vector
- distance
- feature vectors
- feature
- retrieved
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种检索方法和装置,方法包括:将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质;第一存储介质中存储有至少两个特征向量的索引以及基于待检索特征向量确定的多个距离表;特征向量的索引包括一级索引和二级索引,距离表与一级索引一一对应;第一索引集合是至少两个特征向量中的第一类特征向量的二级索引构成的集合,第一类特征向量的一级索引与第一距离表对应的一级索引相同;根据第二存储介质中存储的第一距离表和第一索引集合中的二级索引,获取第一类特征向量与待检索特征向量之间的距离;根据第一类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量。
Description
技术领域
本申请涉及检索技术领域,尤其涉及一种检索方法和装置。
背景技术
“以图搜图”是公安、安防系统中被广泛用于查找目标的检索方法。以图搜图是在多个预设图像中确定与待检索图像匹配的图像的技术。具体地:在数据库中预设多个图像对应的多个特征向量(或称为长特征向量),预设图像与特征向量一一对应,预设图像对应的特征向量可以是采用深度学习算法(如人工智能(artificial intelligence,AI)算法)提取该预设图像的特征信息,并基于所提取的特征信息构建的向量;当需要对待检索图像进行检索时,分别计算待检索图像的特征向量与每个预设图像对应的特征向量之间的距离;然后将与待检索图像的特征向量的距离最小的特征向量对应的预设图像作为待检索图像匹配的图像。
由于数据库中预存的预设图像的数量非常大,一个数据库中往往预存几百万、几千万、甚至几亿个图像,上述检索方法在实际应用中耗时长,检索效率低,如何提供一种高效的检索方法成为亟待解决的技术问题。
发明内容
本申请提供了一种检索方法和装置,以解决传统技术中检索过程耗时长,效率低的问题。
第一方面,本申请提供了一种检索方法,该方法可以包括:将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质;其中,第一存储介质中存储有至少两个特征向量的索引以及基于待检索特征向量确定的多个距离表;特征向量的索引包括一级索引和二级索引,距离表与一级索引一一对应;第一距离表是该多个距离表中的任一距离表;第一索引集合是至少两个特征向量中的第一类特征向量的二级索引构成的集合,第一类特征向量的一级索引与第一距离表对应的一级索引相同;第一存储介质和第二存储介质归属于同一个服务器;根据第二存储介质中存储的第一距离表和第一索引集合中的二级索引,获取第一类特征向量与待检索特征向量之间的距离;根据第一类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量。
其中,该技术方案的执行主体可以是服务器,具体可以是服务器中的处理器。一级索引,可以用于指示该特征向量所属的簇的簇号。一级索引具体可以是K重一级索引中的其中一重一级索引,其中,K≥1,K是整数。例如,K=1或K=2或K=4。二级索引,可以用于指示该特征向量经该特征向量所属的簇对应的码书处理后得到的量化索引。索引集合,可以是同一个簇中的部分或全部特征向量的二级索引构成的集合。距离表是待检索特征向量中的多个子特征向量与码书中相应中心点之间的距离值的集合。码书与簇一一对应。关于一级索引、第二级索引、距离表和码书等术语的具体说明可以参考下文具体实施方式部分。
可选地,第一存储介质的读写性能高于第二存储介质的存储性能。例如,第一存储介质包括内存(memory)或显存(GPU memory),第二存储介质包括高速缓存(cache)。当第一存储介质是内存时,处理器可以是中央处理器(central processing unit,CPU)等。当第一存储介质是显存时,处理器可以是图形处理器(graphics processing unit,GPU)等。
本技术方案,将一级索引相同(即所在簇的簇号相同)的特征向量的二级索引归为索引集合,由于一级索引与距离表一一对应,因此,在执行检索流程时,使用同一个距离表计算该索引集合中的每个二级索引对应的特征向量与待检索特征向量之间的距离,这为以索引集合为粒度执行检索流程提供了基础。另外,本技术方案中,将索引集合和距离表从第一存储介质存储至第二存储介质,并根据从第二存储介质中存储的距离表和二级索引,获取特征向量与待检索特征向量之间的距离,这为将内存中的距离表和二级索引存储至cache,并根据从cache中存储的距离表和二级索引,获取特征向量与待检索特征向量之间的距离提供了基础。并且,具体是将一级索引相同的特征向量的二级索引归为索引集合,由于一级索引与距离表一一对应,因此,在执行检索流程时,使用同一个距离表计算该索引集合中的每个二级索引对应的特征向量与待检索特征向量之间的距离,因此,不需要频繁切换所使用的距离表,从而可以节省第二存储介质的开销,这也为将内存中的距离表和二级索引存储至cache提供了基础。因此,有助于提高检索效率,降低检索过程的耗时。
在一种可能的实现方式中,该方法还包括:将第一存储介质中的第二距离表和第二索引集合存储至第二存储介质;其中,第二距离表是该多个距离表中的除第一距离表之外的任一距离表;第二索引集合是至少两个特征向量中的第二类特征向量的二级索引构成的集合,第二类特征向量的一级索引与第二距离表对应的一级索引相同;在获取至少两个特征向量中的所有第一类特征向量与待检索特征向量之间的距离之后,根据第二存储介质中存储的第二距离表和第二索引集合中的二级索引,获取第二类特征向量与待检索特征向量之间的距离。该情况下,根据第一类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量,包括:根据第一类特征向量与待检索特征向量之间的距离和第二类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量。也就是说,执行完一个距离表对应的簇中的所有特征向量与待检索特征向量之间的距离之后,再执行下一个距离表对应的簇中的所有特征向量与待检索特征向量之间的距离;也就是说,该可能的实现方式是以距离表为粒度(或者以簇为粒度或者以索引集合为粒度)执行检索流程的。因此,有助于降低因频繁切换距离表而导致的存储开销和读写开销。
在另一种可能的实现方式中,第一存储介质中还存储有至少两个特征向量的索引构成的序列,序列中具有相同一级索引的特征向量的索引连续排列。该情况下,在从第二存储介质中读取第一距离表和第一索引集合中的二级索引之前,该方法还包括:根据序列获取第一索引集合。其中,该序列可以在执行检索流程之前生成,并存储在第一存储介质中。
在另一种可能的实现方式中,对至少两个特征向量的索引进行排序,得到序列,包括:按照至少两个特征向量的一级索引对应的距离表的编号从小到大或从大到小的顺序,对至少两个特征向量的索引进行排序,得到序列。
在另一种可能的实现方式中,至少两个特征向量包括第一特征向量,方法还包括:按照聚类算法对至少两个特征向量进行聚类,以将具有相似特征的特征向量归为一个簇。然后,将第一特征向量所属的簇的簇号作为第一特征向量的一级索引。聚类的具体实现方式可以采用传统技术中聚类的方法,例如,KMEANS聚类算法。第一特征向量可以是该至少两个特征向量中的任一特征向量。基于此,可以得到至少两个特征向量中的每个特征向量的一级索引。
在另一种可能的实现方式中,至少两个特征向量包括第二特征向量,第一存储介质中还存储有多个码书,码书与一级索引(或簇)一一对应。第二特征向量的一级索引对应多个码书中的第一码书,也就是说,第二特征向量的一级索引与第一码书所对应的一级索引(或簇号)相同。第一码书包括N个子集合,每个子集合包括多个预设特征向量。该方法还包括:将第二特征向量划分成N个子特征向量,N≥2,N是整数;在第一码书中获取与第二特征向量的N个子特征向量匹配的N个预设特征向量;其中在第一码书的第n个子集合中获取与第二特征向量的第n个子特征向量匹配的一个预设特征向量;1≤n≤N,n是整数;将N个预设特征向量的索引作为第二特征向量的二级索引。第二特征向量可以是该至少两个特征向量中的任一特征向量。基于此,可以得到至少两个特征向量中的每个特征向量的二级索引。
在另一种可能的实现方式中,第一存储介质中还存储有多个码书,码书与一级索引一一对应,多个码书包括第二码书,第二码书包括M个子集合,每个子集合包括多个预设特征向量。该方法还包括:将待检索特征向量划分成M个子特征向量,M≥2,N是整数;获取待检索特征向量的M个子特征向量与第二码书中的预设特征向量之间的距离,其中,对于待检索特征向量的第m个子特征向量来说,获取待检索特征向量的第m个子特征向量与第二码书中的第m个子集合中的每个预设特征向量之间的距离,1≤m≤M,m是整数;将待检索特征向量的M个子特征向量与第二码书中的预设特征向量之间的距离构成的集合,作为基于待检索特征向量确定的该多个距离表中的一个距离表。其中,第二码书可以是该多个码书中的任一码书。基于此,可以得到该多个距离表中的每个距离表。
其中,码书可以表示为矩阵,码书(如上述第一码书或第二码书等)中的一个子集合可以是码书的一列元素(即中心点或称为预设特征向量)构成的集合。关于码书的相关描述以及获取方式和使用方式等均可以参考下文具体实施方式部分。
第二方面,本申请提供了一种检索装置,用于执行上述第一方面或第一方面任意一种可能的实现方式中检索处理的各个模块。
在一种可能的实现方式中,可以根据上述第一方面或第一方面中任意一种可能的实现方式所提供的方法对该装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。
第三方面,本申请提供一种检索装置,该装置可以包括:存储器和处理器,存储器用于存储计算机程序,处理器用于调用该计算机程序,用于执行第一方面或第一方面中任意一种可能的实现方式中方法的操作步骤。
应注意,本申请描述的存储器和处理器可以集成在一块芯片上,也可以分别设置在不同的芯片上,本申请对存储器的类型以及存储器与处理器的设置方式不做限定。
第四方面,本申请提供了一种服务器,该服务器包括处理器、第一存储介质和第二存储介质;处理器用于执行上述第一方面或第一方面任意一种可能的实现方式所提供的任一种方法;第一存储介质和第二存储介质用于存储处理器执行上述第一方面或第一方面任意一种可能的实现方式所提供的相应方法所需的数据。
本申请还提供了一种计算机可读存储介质,其上储存有计算机程序,当该计算机程序在计算机上运行时,使得计算机执行上述第一方面或第一方面任意述一种可能的实现方式所的任一种可能的方法的操作步骤。
本申请还提供了一种计算机程序产品,当其在计算机上运行时,使得第一方面或第一方面任意一种可能的实现方式所述的任一方法的操作步骤被执行。
可以理解地,上述提供的任一种检索装置或服务器或计算机可读存储介质或计算机程序产品等均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考对应的方法中的有益效果,此处不再赘述。
附图说明
图1为本发明实施例提供的一种聚类的过程示意图;
图2为本发明实施例提供的一种码书生成过程的示意图;
图3为本发明实施例提供的一种获取特征向量的二级索引的过程示意图;
图4为本发明实施例提供的一种距离表的获取方法的示意图;
图5为本发明实施例提供的一种获得待检索特征向量与特征向量间的距离的过程示意图;
图6为本发明实施例提供的另一种获得待检索特征向量与特征向量间的距离的过程示意图;
图7为传统技术提供的一种检索方法的过程示意图;
图8A为本发明实施例提供的一种检索系统的示意图;
图8B为本发明实施例提供的另一种检索系统的示意图;
图9为本发明实施例提供的一种检索方法的流程示意图;
图10为本发明实施例提供的另一种检索方法的流程示意图;
图11为本发明实施例基于图10提供的一种检索方法的过程示意图;
图12为本发明实施例提供的另一种检索方法的流程示意图;
图13为本发明实施例基于图12提供的一种检索方法的过程示意图;
图14为本发明实施例一种检索装置的结构示意图。
具体实施方式
通常,在执行检索流程之前,需要先进行数据准备。其中,数据准备可以包括:利用预设的多个对象的特征信息构建多个特征向量;然后,对该多个特征向量进行聚类,得到多个簇;对于每个簇来说,将该簇中的每个特征向量均划分成多个子特征向量,并基于该每个特征向量所划分的多个子特征向量得到该簇对应的码书。另外,数据准备还可以包括:基于特征向量所在簇的簇号和该特征向量所在簇对应的码书得到特征向量的索引等。
检索流程可以包括:获取待检索对象,利用待检索对象的特征信息构建待检索对象对应的待检索特征向量,然后,根据待检索特征向量和多个码书,得到多个距离表;接着,基于距离表获得每个特征向量与待检索特征向量之间的距离,最后,基于每个特征向量与待检索特征向量之间的距离,确定与待检索特征向量匹配的特征向量。
其中,对象可以包括以下任一种:图像、文字、音频、视频等。
以下,对本发明实施例涉及的术语和技术进行简单介绍,以便于读者理解。
1)、特征向量
特征向量,是提取对象的特征信息并基于所提取的特征信息构建得到的向量。例如,将所提取的每个特征信息作为特征向量的一个元素。其中,提取对象的特征信息所采用的方法可以是深度学习算法如AI算法等。通常,根据一个对象的特征信息构建一个特征向量,也就是说,对象与特征向量一一对应。例如,一个图像与一个特征向量一一对应。
本发明实施例中还涉及“待检索特征向量”,待检索特征向量是提取待检索对象的特征信息并基于所提取的特征信息构建得到的向量。为了进行区分,如果不加说明,本发明实施例中描述的“特征向量”均是指数据库中的特征向量。在此统一说明,下文不再赘述。
下文中均以对象具体是图像为例进行说明。在此统一说明,下文不再赘述。
2)聚类、簇
聚类,是将数据库中源数据按照相似性划分为若干个集合的过程。每个集合又可以称为一个簇,每个簇包括多个具有相似特征的数据。同一个簇中的数据彼此相似(或相似度高),不同簇中的数据对象彼此相异(或相似度低)。不同簇中包括的数据的个数可以相等,也可以不相等。每个簇具有一个中心点(或称为中心数据对象)。该中心点用于表征该簇中的各数据对象的共有特征。一个簇的中心点可以是该簇中的一个元素,也可以不是该簇中的元素。
本发明实施例中,用于聚类的数据包括特征向量或子特征向量,子特征向量是特征向量中的部分元素构成的向量。为了便于描述,本发明实施例中描述的“簇”是对特征向量进行聚类后得到的数据集合。另外,本发明实施例中引入了“子簇”的概念。“子簇”是对同一簇中子特征向量进行聚类后得到的数据集合。
本发明实施例中,以数据库中存储有R个特征向量(标记为特征向量0~R-1),且这R个特征向量经聚类得到I个簇(标记为簇0~I-1)为例进行说明。其中,R≥2,2≤I<R,R和I均是整数。作为一个示例,R=1亿,I=1万。数据库中存储的特征向量的数量可以是固定不变的,也可以周期性更新。图1为本发明实施例提供的一种聚类的过程示意图。
3)、码书
码书与簇一一对应,数据库中存储的R个特征向量经聚类得到的I个簇对应I个码书(标记为码书0~I-1),例如,簇i对应码书i,0≤i≤I-1,i是整数。具体地,将一个簇中的每个特征向量划分成N个子特征向量,N≥2,N是整数;对该簇中的所有特征向量的第n个子特征向量进行聚类,得到预设数量个子簇,1≤n≤N,n是整数,n取遍1~N中的每个值之后,所得到的各子簇的中心点构成的集合为该簇对应的码书。码书通常可以表示为矩阵形式。
其中,将特征向量划分成N个子特征向量的实现方式为现有技术,此处不再赘述。例如,一个特征向量所分成的不同子特征向量包含的元素个数可以相同也可以不同,下文中均以一个特征向量所分成的不同子特征向量包含的元素个数相同为例进行说明。
图2为本发明实施例提供的一种码书生成过程的示意图。图2是以簇i包括10000个特征向量(标记为特征向量0~9999),每个特征向量划分成32个子特征向量,每个特征向量的第n个子特征向量进行聚类得到256个子簇为例进行说明。由此可知,簇i对应的码书i包括256*32个中心点。若码书i以矩阵形式表示,则码书i可表示成一个256行32列的矩阵。
码书中的每个中心点有一个编号,用于标记该中心点。作为一个示例,图2所示的码书中的每一列元素的编号可以分别为0~255。
本发明实施例,均以矩阵形式表示码书,且矩阵的行数是数据库中的各特征向量的第n个子特征向量聚类所得到的子簇的个数(如上述256),列数表示特征向量所划分成的子特征向量的个数(如上述N=32)为例进行说明。
4)、特征向量的索引(或称为短索引)
特征向量的索引用于指示特征向量,包括一级索引和二级索引。
一级索引可以用于指示该特征向量所属的簇的簇号。例如,若特征向量所属的簇的簇号是i,则特征向量的一级索引是i。其中,0≤i≤I-1,i是整数。
二级索引可以用于指示该特征向量经该特征向量所属的簇对应的码书处理后得到的量化索引。具体地,将一个特征向量划分成N个子特征向量,具体划分方法可以与获得该特征向量所属的簇对应的码书时所采用的划分子特征向量的方法一致。在该特征向量所属的簇对应的码书的第n列中,获取与该特征向量的第n个子特征向量匹配的一个中心点(如将码书的第n列中的与该特征向量的第n个子特征向量之间的距离最近的一个中心点,作为与该特征向量的第n个子特征向量匹配的中心点),并将该匹配的中心点的编号作为该子特征向量的量化索引,依此类推,可以得到该特征向量中的每个子特征向量的量化索引;接着,将该特征向量中的每个子特征向量的量化索引共同作为该特征向量的二级索引。
图3为本发明实施例提供的一种获取特征向量的二级索引的过程示意图。图3是以簇i中的一个特征向量经码书i计算得到二级索引,且码书i是256行32列的矩阵为例进行说明。在图3中,标记有同一种阴影的图形示例相互匹配的两个向量。例如,码书i中列号用0~31表示,其中,第1列(即编号是0的列)中与该特征向量的第1个子特征向量匹配的中心点是中心点1,码书i的第2列(即编号是1的列)中与该特征向量的第2个子特征向量匹配的中心点是中心点0,码书i的第32列中与该特征向量的第32个子特征向量匹配的中心点是中心点255等。由图3可知,图3中所示的特征向量经码书i量化后得到的二级索引可以表示为{1,0,3,255,……,2,255}。由于该特征向量所属簇i,即该特征向量的一级索引可以表示为i,因此,该特征向量的索引可以表示为{i,1,0,3,255,……,2,255}。
5)、距离表
距离表是待检索特征向量中的多个子特征向量与码书中相应中心点之间的距离值(下文中称为“距离”)的集合,距离表可以表示为矩阵形式。距离表的获取方法可参见下文。
以下介绍下本发明实施例提供的检索过程,并在此过程中说明距离表的获取方法及使用方法。检索过程可以包括如下步骤11~步骤13:
步骤11:对于待检索特征向量来说,基于I个码书得到I个距离表(标记为距离表0~I-1),其中,码书与距离表一一对应,如码书i对应距离表i。具体地:将待检索特征向量划分成N个子特征向量;将待检索特征向量中的第n个子特征向量与码书i中的第m行n列的元素之间的距离,作为距离表i中的第m行n列的元素,0≤m≤M-1,0≤n≤N-1,m和n均是整数。
图4为本发明实施例提供的一种距离表的获取方法的示意图,图4是以基于码书i得到距离表i,且码书i是256行32列的矩阵为例进行说明。
步骤12:对于数据库中的每个特征向量,执行以下步骤:根据该特征向量的一级索引,在I个距离表中获得该特征向量对应的距离表,例如若特征向量的一级索引是i,则该特征向量对应的距离表是距离表i。然后,从所获得的距离表中分别读取该特征向量的二级索引中的每个值对应的距离,二级索引中第n个值对应的距离是距离表的第n列中的“行号(即行的编号)是该第n个值的取值”的元素。接着,将所读取的各距离求和,得到待检索特征向量与该特征向量之间的距离。
步骤12可以理解为:通过查询距离表,获取待检索特征向量的第1个子特征向量与特征向量的第1个子特征向量之间的距离,待检索特征向量的第2个子特征向量与该特征向量的第2个子特征向量之间的距离……依此类推,直至获取到待检索特征向量的第N个子特征向量与该特征向量的第N个子特征向量之间的距离;然后将所得到的N个距离求和,得到待检索特征向量与该特征向量之间的距离。也就是说,通过获取两个特征向量的相应子特征向量之间的距离之和,来获得这两个特征向量之间的距离,这样,可以降低检索复杂度。
图5为本发明实施例提供的一种获得待检索特征向量与特征向量之间的距离的过程示意图。图5是以特征向量的索引是{i,1,0,3,255,……,2,255}为例进行说明。该特征向量所属的簇对应的距离表是距离表i,该特征向量的二级索引是{1,0,3,255,……,2,255}。该二级索引的第1个值(取值是1)对应的距离是距离表i中的第1列(即编号是0的列)中的行号为1(即第2行)的元素,该二级索引的第2个值(取值是0)对应的距离是距离表i中的第2列中的行号为0(即第1行)的元素,该二级索引的第3个值(取值是3)对应的距离是距离表i中的第3列中的行号为3(即第4行)的元素,依此类推,可以得到该二级索引中的每个值对应的距离,如图5中的黑色标记的五角星所示。然后,将所得到的该二级索引中的每个值对应的距离求和,得到该特征向量与待检索特征向量之间的距离。
步骤13:根据数据库中的每个特征向量与待检索特征向量之间的距离,确定与待检索特征向量匹配的特征向量。例如,将数据库中的与待检索特征向量之间的距离最小的特征向量,作为与待检索特征向量匹配的特征向量。
6)、两重一级索引
在实际应用场景中,尤其亿级、百亿、千亿级检索场景中,需要根据簇号(即一级索引)缩小检索范围后再进行检索,为了达到更好缩小范围的效果,簇的个数可能有1000000以上,以簇的个数是1000000为例,按照上文中的描述,会产生1000000个码书,检索时会产生1000000个距离表,获得这些码书和距离表需要大量的计算开销,且存储这些码书和距离表需要很大的存储开销。因此,针对大数据级的检索场景,提出了多重一级索引。
接下来,以多重一级索引是两重一级索引为例进行说明:
数据准备阶段:
将数据库中的每个特征向量分为两部分(标记为第一部分和第二部分),然后对数据库中的所有特征向量的第一部分进行聚类得到I1个簇,对该所有特征向量的第二部分进行聚类得到I2个簇。由于该I1个簇中的每个簇的中心点与该I2个簇的每个簇的中心点两两组合共有I1*I2种可能,因此根据该I1个簇和该I2个簇可以等效得到I1*I2个簇。例如,若要产生1000000个簇(即I1*I2=1000000),则可以对数据库中的所有特征向量的第一部分进行聚类生成1000个簇(即I1=1000),对该所有特征向量的第二部分进行聚类生成1000个簇(即I2=1000)。
本发明实施例对如何将特征向量分为第一部分和第二部分不进行限定。例如,假设一个特征向量包括P个元素,那么:将该特征向量的前p个元素作为该特征向量的第一部分,将该特征向量的剩余的元素作为该特征向量的第二部分,其中,P≥2,P是整数,1≤p<P,p是整数。本发明实施例对特征向量的第一部分包括的元素个数和第二部分包括的元素个数是否相等不进行限定,下文中均以二者相等为例进行说明。
对于一个特征向量来说,该特征向量的第一部分归属于该I1个簇的其中一个簇,第二部分归属于该I2个簇的其中一个簇,这两个簇的簇号为该特征向量的两重一级索引。该特征向量的第一部分所属的簇和第二部分所属的簇可以分别对应一个码书。基于该特征向量的第一部分所属的簇对应的码书,可以将该特征向量的第一部分量化成二级索引的第一部分;基于该特征向量的第二部分所属的簇对应的码书,可以将该特征向量的第二部分量化成二级索引的第二部分。该特征向量的两重一级索引、二级索引的第一部分和二级索引的第二部分共同作为该特征向量的索引。例如,一个特征向量的索引可以表示为{i1,i2,1,0,3,255,……,2,255},其中,i1和i2共同作为该特征向量的一级索引,i1是该特征向量的第一部分所属的簇的簇号,i2是该特征向量的第二部分所属的簇的簇号,0≤i1≤I1-1,0≤i2≤I2-1,i1和i2均是整数。该特征向量的二级索引是{1,0,3,255,……,2,255},该二级索引包括的值的个数是N,该二级索引的第一部分(如前N/2个元素)为基于簇i1对应的码本量化得到的,该二级索引的第二部分(如后N/2个元素)为基于簇i2对应的码本i2量化得到的。
簇与码书一一对应,因此,该I1个簇可以对应I1个码书,例如簇i1与码书i1对应;该I2个簇可以对应I2个码书,例如簇i2与码书i2对应。
检索阶段:
步骤21:将待检索特征向量划分成第一部分和第二部分,基于待检索向量的第一部分得到上述I1个码书对应的I1个距离表,例如码书i1对应距离表i1;基于待检索向量的第二部分得到上述I2个码书对应的I2距离表,例如码书i2对应距离表i2。
其中,待检索特征向量的划分方法与数据库中特征向量的划分方法相同。例如,数据库中将每个特征向量前p个元素划分为一部分,将除了前p个元素外的元素划分为另一部分。此时,待检索特征向量也需要按照相同的规则将其划分为两部分。
步骤22:对于数据库中的每个特征向量,执行以下步骤:首先,根据该特征向量的第一重一级索引,在该I1个距离表中获得该特征向量的第一部分对应的距离表(标记为距离表A);并根据该特征向量的第二重一级索引,在该I2个距离表中获得该特征向量的第二部分对应的距离表(标记为距离表B)。然后,从距离表A中读取该特征向量的第一部分对应的二级索引中的每个值对应的距离,从距离表B中读取该特征向量的第二部分对应的二级索引中的每个值对应的距离。接着将所读取的各距离求和,得到待检索特征向量与该特征向量之间的距离。
图6为本发明实施例提供的一种获得待检索特征向量与特征向量之间距离的过程示意图。图6以特征向量的索引是{i1,i2,1,0,3,255,……,2,255},且N=32为例进行说明。该特征向量的第一部分所属的簇i1对应距离表i1,该特征向量的第二部分所属的簇i2对应距离表i2。该特征向量的第一部分对应二级索引{1,0,3,255,……,2,255}中的前16个值,该特征向量的第二部分对应二级索引{1,0,3,255,……,2,255}中的后16个值。图6所示的过程包括:从距离表i1中读取该特征向量的第一部分对应的二级索引中的每个值对应的距离,从距离表i2中读取该特征向量的第二部分对应的二级索引中的每个值对应的距离,然后将所读取的各距离求和,得到该特征向量与待检索特征向量之间的距离。
步骤23:可以参考上文中的步骤13操作过程,此处不再赘述。
传统的检索方法包括:处理器按照第一存储介质中存储的特征向量的索引的顺序(该顺序与第三存储介质704中存储的特征向量的索引的顺序相同),依次从第一存储介质中读取特征向量的索引和该特征向量对应的距离表;然后按照上文提供的方法获取该特征向量与待检索特征向量之间的距离,从而确定与待检索特征向量匹配的特征向量。
图7为传统技术中提供的一种检索方法的过程示意图。图7是以获取待检索特征与R个特征向量向量之间的距离为例进行说明。这R个特征向量归属于I个簇,簇与距离表一一对应。“(2)特征向量0”,表示特征向量0的一级索引是2。特征向量0与距离表2之间的连线,表示基于距离表2确定特征向量0与待检索特征向量之间的距离0。其他示例与此原理类似,此处不再一一赘述。基于图7,检索方法可以包括处理器依次执行以下步骤:根据第一存储介质中存储的特征向量0和特征向量0对应的距离表2,获得距离0;根据第一存储介质中存储的特征向量1和特征向量1对应的距离表0,获得距离1;根据第一存储介质中存储的特征向量2和特征向量2对应的距离表1,获得距离2,……,依此类推,直至获得距离R-1为止。然后,将根据距离1~距离R-1,确定与待检索特征向量匹配的特征向量。
为此,本申请实施例提供了一种检索方法、装置和系统。以下对检索系统进行说明。
图8A为本发明实施例提供的一种检索系统的示意图。图8A所示的系统包括客户端10、第一服务器20和第二服务器30。
客户端10可以用于向服务器20发送待检索对象(如待检索图像)。
第一服务器20可以用于将根据待检索图像得到待检索特征向量,并执行检索流程;通过与第二服务器30进行信息交互,以获得与待检索图像匹配的图像。
第二服务器30可以用于存储数据,该数据包括图像、特征向量、特征向量的索引、码书等,具体可以参考下文中第三存储介质704所存储的数据。第二服务器30还可以用于执行数据准备流程,并通过与第一服务器20进行通信,向第一服务器20提供执行检索流程所需的信息(如码书、特征向量的索引等),以及向第一服务器20提供与待检索图像匹配的图像等。
示例地,第一服务器20可以称为检索执行服务器,第二服务器30可以称为数据服务器。
需要说明的是,图8A所示的检索系统仅为一个示例,其不对本发明实施例提供的检索方法所适用的系统架构构成限定。例如,检索系统可以包含多个第二服务器30,且该多个第二服务器30通过分布式方式存储数据。又如,检索系统可以包含多个客户端10。再如,第一服务器20与第二服务器30可以是同一服务器,也可以是独立的两个服务器。下文中均以第一服务器20与第二服务器30是独立设置的两个服务器为例进行说明。
图8A所示的存储系统的一个具体示例可以如图8B所示。其中,第一服务器20包括:处理器701、第一存储介质702和第二存储介质703。本发明实施例对这些器件的数量不进行限定,例如,第一服务器20可以包括一个或多个处理器701;又如,第二服务器30可以包括一个或多个第三存储介质704等。
处理器701是该系统的控制中心,例如处理器701可以是CPU、GPU、现场可编程门阵列(field-programmable gate array,FPGA)和特殊应用集成电路(application-specificintegrated circuit,ASIC)中的任意一种或者多种的组合。
第三存储介质704是该系统架构的主要存储介质,例如硬盘等。作为一个示例,第三存储介质704可以用于存储多个预设图像、每个预设图像的属性信息、每个预设图像对应的特征向量以及每个特征向量的索引(包括一级索引和二级索引)等。其中,预设图像的属性信息包括但不限于以下至少一项:创建时间、修改时间、类别(如人物图像、风景图像等)等。多个预设图像按照预设图像的某一个或多个属性信息进行排列后得到的顺序进行存储,例如,多个预设图像按照创建时间进行排列后得到的顺序进行存储等。
第一存储介质702可以是内存或显存(也可以称为显卡内存)等,例如,若第一存储介质702是内存,则处理器701可以是CPU、FPGA和ASCI中的任意一种或者多种的组合;若第一存储介质702是显存,则处理器701可以是GPU。作为一个示例,第一存储介质702可以用于存储每个特征向量的索引(包括一级索引和第二索引)、每个簇对应的码书,以及基于待检索特征向量得到的每个码书对应的距离表等。
第二存储介质703可以是缓存等,主要用于提升系统的读写性能。第二存储介质703中存储的数据可以是第一存储介质702中的一部分数据。若第二存储介质703中存储有某一数据,则处理器701可以从第二存储介质703中获取该数据,而不用从第一存储介质702中获取该数据,从而快速获取该数据。通常,第二存储介质703的存储空间小于第一存储介质702的存储空间。第二存储介质703的读写性能高于第一存储介质702的读写性能。
以下,结合附图,对本发明实施例提供的检索方法进行说明。
图9为本发明实施例提供的一种检索方法的流程示意图。图9所示的方法应用于服务器(如图8A或图8B中所示的第一服务器20),该服务器包括处理器、第一存储介质和第二存储介质。第一存储介质中存储有至少两个特征向量的索引和基于待检索特征向量确定的多个距离表。特征向量的索引包括一级索引和二级索引,关于一级索引和二级索引的具体实现方式的示例可以参考上文。距离表与一级索引一一对应。例如,假设该至少两个特征向量的互不相同的一级索引共有I个,则基于待检索特征向量确定的距离表的个数是I,I≥2,I是整数。可选地,第一存储介质的存储性能低于第二存储介质的存储性能。例如,第一存储介质是内存或显存,第二存储介质是缓存。检索处理过程可以由上述处理器执行,图9所示的检索方法可以包括以下步骤:
S101:获取第一存储介质中存储的第一距离表和第一索引集合。其中,第一距离表是基于待检索特征向量确定的多个距离表中的任一距离表;第一索引集合是第一存储介质中存储的至少两个特征向量中的第一类特征向量的二级索引构成的集合,第一类特征向量的一级索引与第一距离表对应的一级索引相同。
第一类特征向量,是指一种类型的特征向量,具体是所具有的一级索引与第一距离表对应的一级索引相同的特征向量。第一类特征向量可以包括一个或多个特征向量。根据上文中的描述可知,第一类特征向量中的各特征向量归属于同一个簇。
第一索引集合,是该至少两个特征向量中的部分或全部第一类特征向量的二级索引构成的集合。下文中均以第一索引集合是该至少两个特征向量中的全部第一类特征向量的二级索引构成的集合为例进行说明。作为一个示例,该至少两个特征向量可以被归为I类特征向量,例如,簇i中的特征向量为第i+1类特征向量。
可选地,S101可以通过以下几种方式中任意一种实现:
方式1:获取第一距离表,根据第一距离表对应的一级索引获取第一索引集合。
例如,处理器可以按照距离表的编号从小到大或从大到小的顺序,将第一存储介质中的基于待检索特征向量确定的多个距离表中未存储至第二存储介质的第一个距离表作为第一距离表(下文中将该示例标记为示例1)。例如,当基于待检索特征向量确定的多个距离表是距离表0~9时,如果处理器已将第一存储介质中的距离表0~5存储至第二存储介质,则执行S101时,第一距离表可以是距离表6。当然本发明实施例不限于此。
其中,在本发明实施例中,未存储至第二存储介质的距离表是指还没有存储到第二存储介质的距离表,不包括存储过且被删除的距离表。已存储至第二存储介质的距离表是指已经存储到第二存储介质的距离表,包括存储过且被删除距离表。在此统一说明,下文不再赘述。
又如,处理器可以在确定第一距离表(例如根据上述示例1确定第一距离表)之后,根据第一距离表对应的一级索引,在该至少两个特征向量中查找第一类特征向量,并将第一类特征向量的二级索引构成的集合作为第一索引集合。其中,第一类特征向量的一级索引与第一距离表对应的一级索引相同。
方式2:获取第一索引集合,根据第一索引集合对应的一级索引确定第一距离表。
例如,处理器可以根据一个序列获取第一索引集合。该序列可以是该至少两个特征向量的索引构成的序列,该序列中具有相同一级索引的特征向量的索引连续排列(下文中将该示例标记为示例2)。该序列可以存储在第一存储介质中。然后,处理器根据该序列,将第一存储介质中的未存储至第二存储介质的第一个集合作为第一索引集合。例如,当基于待检索特征向量确定的多个距离表是距离表0~9时,距离表0~9分别对应索引集合0~9,如果处理器已将第一存储接种的索引集合0~5存储至第二存储介质,则执行S101时,第一索引集合可以是索引集合6。当然本发明实施例不限于此。
又如,在确定第一索引集合(例如根据上述示例2确定第一索引集合)之后,根据第一索引集合对应的一级索引(即第一索引集合中的第二索引所指示的特征向量的一级索引)确定第一距离表。第一索引集合对应的一级索引与第一距离表对应的一级索引相同。
S102:将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质。
本发明实施例处理器将第一存储介质中的第一距离表,以及将第一存储介质中的第一索引集合存储至第二存储介质的先后顺序以及是否是在同一次读写流程中执行的不进行限定。
例如,处理器可以先将第一存储介质中的第一索引集合存储至第二存储介质,然后,再将第一存储介质中的第一索引集合存储至第二存储介质。
又如,当第一类特征向量的数量大于处理器一次可读写的特征向量的数量时,处理器可以分多次将第一存储介质中的第一索引集合包括的二级索引存储至第二存储介质。例如,假设第一类特征向量的数量是6000,处理器一次可读写的特征向量的数量是2000,则处理器可以分3次将第一索引集合包括的二级索引存储至第二存储介质。
S103:根据第二存储介质中存储的第一距离表和第一索引集合中的二级索引,获取第一类特征向量与待检索特征向量之间的距离。
对于第一索引集合中的每个二级索引,处理器可以基于上文提供的方法获得该二级索引所指示的第一类特征向量与待检索特征向量之间的距离。
可选地,当处理器确定已获取该至少两个特征向量中的所有第一类特征向量与待检索特征向量之间的距离时,删除第二存储介质中存储的第一距离表,从而为向第二存储介质中存储其他距离表提供空闲的存储空间。
可选地,当处理器确定已获取一个或多个第一类特征向量与待检索特征向量之间的距离时,删除第二存储介质中存储的该一个或多个第一类特征向量的二级索引,从而为向第二存储介质中存储其他二级索引(例如可以是第一类特征向量的二级索引,也可以是其他类特征向量的二级索引)提供空闲的存储空间。
S104:根据第一类特征向量与待检索特征向量之间的距离,在该至少两个特征向量中确定与待检索向量匹配的特征向量。
在至少两个特征向量中确定与待检索向量匹配的特征向量,可以包括:在至少两个特征向量中确定与待检索向量之间距离最小的特征向量,并将所确定的与待检索向量之间距离最小的特征向量作为与待检索向量匹配的特征向量。当与待检索向量之间距离最小的特征向量有多个时,将该多个中的任意一个作为与待检索向量匹配的特征向量。
本技术方案中,将索引集合和距离表从第一存储介质存储至第二存储介质,并根据从第二存储介质中存储的距离表和二级索引,获取特征向量与待检索特征向量之间的距离,这为将内存中的距离表和二级索引存储至缓存,并根据从缓存中存储的距离表和二级索引,获取特征向量与待检索特征向量之间的距离提供了基础。并且,检索过程中将一级索引相同的特征向量的二级索引归为索引集合,由于一级索引与距离表一一对应,在执行检索流程时,使用同一个距离表计算该索引集合中的每个二级索引对应的特征向量与待检索特征向量之间的距离,因此,不需要频繁切换所使用的距离表,从而可以节省第二存储介质的开销,这也为将内存中的距离表和二级索引存储至缓存提供了基础。因此,有助于提高检索效率,降低检索过程的耗时。
图9是基于一个距离表对本发明实施例提供的检索方法为例进行说明的,接下来,基于多个距离表为例说明本发明实施例提供的检索方法。具体地:上述方法还包括:获取第二距离表和第二索引集合,并将第一存储介质中的第二距离表和第二索引集合存储至第二存储介质;其中,第二距离表是多个距离表中的除第一距离表之外的任一距离表;第二索引集合是至少两个特征向量中的第二类特征向量的二级索引构成的集合,第二类特征向量的一级索引与第二距离表对应的一级索引相同。然后,在获取该至少两个特征向量中的所有第一类特征向量与待检索特征向量之间的距离之后,根据第二存储介质中存储的第二距离表和第二索引集合中的二级索引,获取第二类特征向量与待检索特征向量之间的距离。该情况下,上述S104包括:根据第一类特征向量与待检索特征向量之间的距离和第二类特征向量与待检索特征向量之间的距离,在该至少两个特征向量中确定与待检索向量匹配的特征向量。
也就是说,处理器执行完一个距离表对应的簇中的所有特征向量与待检索特征向量之间的距离之后,再执行下一个距离表对应的簇中的所有特征向量与待检索特征向量之间的距离;也就是说,本实施例中是以距离表为粒度(或者以簇为粒度)执行检索流程的。然而,传统技术中是执行完一个特征向量与待检索特征向量之间的距离之后,再执行另一个特征向量与待检索特征向量之间的距离,也就是说,现有技术中是基于特征向量为粒度执行检索流程的。因此,基于现有技术提供的技术方案,如果将距离表和二级索引从第一存储介质存储至第二存储介质,再根据第二存储介质中存储的距离表和二级索引获取特征向量与待检索特征向量之间的距离,则会因频繁切换距离表而导致存储开销大(即需要第二存储介质有非常大的存储空间,而第二存储介质如缓存的存储空间通常较小)和读写开销大的问题。而使用本实施例提供的技术方案,可以降低因频繁切换距离表而导致的存储开销和读写开销。
需要说明的是,上文中提供的任意一个实施例中描述的一级索引,均可以是K重一级索引中的其中一重一级索引,其中,K≥1,K是整数。例如,K=1或K=2或K=4等。
在一种可能的实现方式中,处理器在删除第二存储介质中存储的第一距离表之后,将第一存储介质中存储的第二距离表存储至第二存储介质。
在另一种可能的实现方式中,第二存储介质的存储空间可以同时存储多个距离表,然后在基于一个距离表获取该距离表对应的簇中的所有特征向量与待检索特征向量之间的距离之后,直接从第二存储介质中读取下一个距离表继续执行检索流程;并且可以在删除该距离表之后,向第二存储介质中存储一个新的距离表。例如,假设基于待检索特征向量确定的多个距离表是距离表0~9,第二存储介质中可以同时存储4个距离表,且某一时刻第二存储介质中存储有距离表2~5,那么,处理器可以在基于第二存储介质中存储的距离表2,获取距离表2对应的簇中的所有特征向量与待检索特征向量之间的距离之后,删除第二存储介质中存储的距离表2,并基于第二存储介质中存储的距离表3继续执行检索流程,将第一存储介质中的距离表6存储至第二存储介质;其中,这三个步骤可以是同时执行的,也可以是先后执行的。此时,第二存储介质中存储有距离表3~6。
以下,对图9所示的实施例进行具体说明。其中,图10所示的实施例以特征向量的索引包括一重一级索引为例进行说明,图12所示的实施例以特征向量的索引包括两重一级索引为例进行说明的。图10和图12所示的实施例中的相关术语(或步骤)的解释和具体实现方式均可以参考图9所示的实施例。
图10为本发明实施例提供的一种检索方法的流程示意图。其中,图10所示的方法可以应用于服务器,服务器包括处理器、第一存储介质和第二存储介质。其中,第一存储介质中存储有:R个特征向量的索引,该R个特征向量所归属的I个簇对应的I个码书。特征向量的索引包括一重一级索引和二级索引。检索处理过程可以由上述处理器执行,图10所示的方法可以包括以下步骤:
S201:对第一存储介质中存储的R个特征向量的索引进行排序,得到一个序列,并将该序列存储到第一存储介质中。该序列中具有相同一级索引的特征向量的索引连续排列。
例如,处理器按照R个特征向量的一级索引对应的距离表的编号从小到大的顺序,对该R个特征向量的索引进行排序。
可以理解的,S201是可选地步骤。S201可以在检索阶段之前执行。作为一个示例,若第一存储介质中存储的R个特征向量不变,则该序列可以不变。若R个特征向量有更新,则处理器可以随之更新该序列。
S202:获取待检索特征向量。例如,结合图8B,接收客户端发送的待检索图像,然后提取待检索图像的特征信息,并基于所提取的特征信息构建待检索特征向量。
S203:将待检索特征向量划分成N个子特征向量,并基于该N个子特征向量和第一存储介质中存储的I个码书,得到I个距离表。其中,码书与距离表一一对应,例如码书i对应距离表i。然后,将这I个距离表存储到第一存储介质中。距离表与一级索引一一对应,例如距离表i对应一级索引i。关于获得距离表的具体实现方式可以参考上文,此处不再赘述。
针对I个距离表中的每个距离表,执行以下S204~S205。可选地,针对I个距离表中的一个距离表执行完S204~S205之后,再针对另一个距离表执行S204~S205。以下以针对距离表i为例说明S204~S205。0≤i≤I-1,i是整数。
S204:根据S201中得到的序列将第一存储介质中的距离表i和索引集合i存储至第二存储介质。其中,索引集合i是R个特征向量中的第i+1类特征向量的二级索引构成的集合,第i+1类特征向量的一级索引与距离表i对应的一级索引相同。
S205:根据第二存储介质中存储的距离表i和集合i中的二级索引,分别获取每个第i类特征向量与待检索特征向量之间的距离。
执行I次S204~S205,且每次执行S204~S205时,i的取值不同,则可以得到R个特征向量中的每个特征向量与待检索特征向量之间的距离。接着执行以下S206。
S206:根据R个特征向量中的每个特征向量与待检索特征向量之间的距离,在R个特征向量中确定与待检索向量匹配的特征向量。
图11为本发明实施例基于图10提供的一种检索方法的过程示意图。图11是以第一存储介质是内存、第二存储介质是缓存、且R个特征向量包括特征向量0~7为例进行说明。这R个特征向量的原始序列的索引与这R个特征向量的索引在硬盘(即第三存储介质)中排序得到的序列相同。新序列是执行S201之后得到的序列。新序列中具有相同一级索引的特征向量连续排列,例如一级索引是0的特征向量1、5连续排列,一级索引是2的特征向量0、3、4、7连续排列。原始序列和新序列中的各元素的先后顺序如各自左侧的箭头方向所示。基于该新序列,执行检索流程时,对于距离表来说,可以依次将距离表0、1、2存储从内存中存储到缓存;对于特征向量的二级索引来说,可以依次将一级索引是0、1、2的特征向量的二级索引从内存中存储到缓存。图11中示出了某一时刻,缓存中存储的距离表和二级索引的示例。
图12为本发明实施例提供的一种检索方法的流程示意图。其中,图12所示的方法可以应用于服务器,服务器包括处理器、第一存储介质和第二存储介质。其中,第一存储介质中存储有:R个特征向量的索引,该R个特征向量中的第一部分聚类得到I1个簇,这I1个簇对应的I1个码书,该R个特征向量的第二部分聚类得到I2个簇,这I2个簇对应的I2个码书。其中,特征向量的索引包括两重一级索引和二级索引。检索处理过程可以由上述处理器执行,图12所示的方法可以包括以下步骤:
S301:对第一存储介质中存储的R个特征向量的索引进行排序,得到第一序列和第二序列,并将第一序列和第二序列存储到第一存储介质。第一序列中具有相同第一重一级索引的特征向量的索引连续排列,第二序列中具有相同第二重一级索引的特征向量的索引连续排列。
例如,处理器按照该R个特征向量的第一重一级索引对应的距离表的编号从小到大的顺序,对该R个特征向量的索引进行排序,得到第一序列。
例如,处理器按照该R个特征向量的第二重一级索引对应的距离表的编号从小到大的顺序,对该R个特征向量的索引进行排序,得到第二序列。
可以理解的,S301是可选地步骤。S201可以在检索阶段之前执行。作为一个示例,若该R个特征向量不变,则第一序列和第二序列可以不变。若该R个特征向量有更新,则处理器可以随之更新第一序列和第二序列。
S302:获取待检索特征向量。具体实现方式可以参考上述S202中的描述。
S303:将待检索特征向量划分成第一部分和第二部分。将该第一部分划分成N/2个子特征向量,基于该第一部分所划分成的N/2个子特征向量和第一存储介质中存储的I1个码书,得到I1个距离表,码书i1对应距离表i1。将该第二部分划分成N/2个子特征向量,基于该第二部分所划分成的N/2个子特征向量和第一存储介质中存储的I2个码书,得到I2个距离表,码书i2对应距离表i2。将该I1个距离表和该I2个距离表存储到第一存储介质。
针对I1个距离表中的每个距离表,执行以下S304~S305。可选地,针对I1个距离表中的一个距离表执行完S304~S305之后,再基于另一个距离表执行S304~S305。以下以针对距离表i1为例说明S304~S305。0≤i1≤I1-1,i2是整数。
S304:根据第一序列,将第一存储介质中的距离表i1和索引集合i1存储至第二存储介质。索引集合i1是R个特征向量的第一部分中的第i1+1类特征向量的二级索引构成的集合,第i1+1类特征向量的一级索引与距离表i1对应的一级索引相同。
S305:根据第二存储介质中存储的距离表i1和索引集合i1中的二级索引,获取每个第i1+1类特征向量与待检索特征向量的第一部分之间的距离。
执行I1次S304~S305,且每次执行S304~S305时,i的取值不同,则可以得到R个特征向量中每个特征向量的第一部分与待检索特征向量的第一部分之间的距离。
针对I2个距离表中的每个距离表,执行以下S306~S307。可选地,针对I2个距离表中的一个距离表执行完S306~S307之后,再基于另一个距离表执行S306~S307。以下以针对距离表i2为例说明S307~S308。0≤i2≤I2-1,i2是整数。
S306:根据第二序列,将第一存储介质中的距离表i2和索引集合i2存储至第二存储介质。索引集合i2是R个特征向量的第二部分中的第i2+1类特征向量的二级索引构成的集合,第i2+1类特征向量的一级索引与距离表i2对应的一级索引相同。
S307:根据第二存储介质中存储的距离表i2和索引集合i2中的二级索引,获取每个第i2+1类特征向量的第二部分与待检索特征向量的第二部分之间的距离。
执行I2次S306~S307,且每次执行S306~S307时,i的取值不同,则可以得到R个特征向量中每个特征向量的第二部分与待检索特征向量的第二部分之间的距离。
本发明实施例对每次执行S304~S305和每次执行S306~S307的先后顺序不进行限定。例如,可以先执行I1次S304~S305再执行I2次S306~S307,或可以先执行I2次S306~S307再执行I1次S304~S305,或执行一次或多次S304~S305之后再执行一次或多次S306~S307等。
S308:针对R个特征向量中的每个特征向量,对待检索特征向量的第一部分与该特征向量的第一部分之间的距离,和待检索特征向量的第二部分与该特征向量的第二部分之间的距离求和,得到待检索特征向量与该特征向量之间的距离。
S309:根据待检索特征向量与R个特征向量中的每个特征向量之间的距离,在R个特征向量中确定与待检索向量匹配的特征向量。
图13为本发明实施例基于图12提供的一种检索方法的过程示意图。图13是以第一存储介质是内存、第二存储介质是缓存、且R个特征向量包括特征向量0~15为例进行说明。这R个特征向量的原始序列的索引与这R个特征向量的索引在硬盘(即第三存储介质)中排序得到的序列相同。第一序列和第二序列是执行S301之后得到的序列。原始序列、第一序列和第二序列中的各元素的先后顺序如各自左侧的箭头方向所示。基于第一序列和第二序列,执行检索流程时,对于距离表来说,处理器可以依次将距离表01、11、21、02、12、22存储从内存中存储到缓存中;对于特征向量的二级索引来说,处理器可以依次将第一重一级索引是0、1、2、第二重一级索引是0、1、2的特征向量的二级索引从内存中存储到缓存中。图11中示出了某一时刻,缓存中存储的距离表和二级索引的示例。
上述主要从方法的角度对本发明实施例提供的方案进行了介绍。为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本发明实施例可以根据上述方法示例对检索装置进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
上文中结合图9至图13,详细描述了根据本发明实施例所提供的检索方法,下面将结合图14,描述根据本发明实施例所提供的检索装置。
图14为本发明实施例提供的一种检索装置140的结构示意图。检索装置140可以用于执行图9~图10和图12中任一附图所示的检索方法。检索装置140包括:读写模块1401、获取模块1402和确定模块1403。其中,读写模块1401,用于将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质;其中,第一存储介质中存储有至少两个特征向量的索引以及基于待检索特征向量确定的多个距离表;特征向量的索引包括一级索引和二级索引,距离表与一级索引一一对应;第一距离表是该多个距离表中的任一距离表;第一索引集合是至少两个特征向量中的第一类特征向量的二级索引构成的集合,第一类特征向量的一级索引与第一距离表对应的一级索引相同;第一存储介质和第二存储介质归属于同一个服务器。获取模块1402,用于根据第二存储介质中存储的第一距离表和第一索引集合中的二级索引,获取第一类特征向量与待检索特征向量之间的距离。确定模块1403,用于根据第一类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量。作为一个示例,检索装置140可以是服务器中的一个逻辑模块或物理器件(如处理器)。作为一个示例,检索装置140可以是该服务器。例如,结合图9,读写模块1401可以用于执行S102;获取模块1402可以用于执行S103,确定模块1403可以用于执行S104。
在一种可能的实现方式中,读写模块1401还用于,将第一存储介质中的第二距离表和第二索引集合存储至第二存储介质;其中,第二距离表是该多个距离表中的除第一距离表之外的任一距离表;第二索引集合是至少两个特征向量中的第二类特征向量的二级索引构成的集合,第二类特征向量的一级索引与第二距离表对应的一级索引相同。获取模块1402还用于,在获取至少两个特征向量中的所有第一类特征向量与待检索特征向量之间的距离之后,根据第二存储介质中存储的第二距离表和第二索引集合中的二级索引,获取第二类特征向量与待检索特征向量之间的距离。确定模块1403具体用于,根据第一类特征向量与待检索特征向量之间的距离和第二类特征向量与待检索特征向量之间的距离,在至少两个特征向量中确定与待检索向量匹配的特征向量。
在一种可能的实现方式中,第一存储介质中还存储有至少两个特征向量的索引构成的序列,该序列中具有相同一级索引的特征向量的索引连续排列;获取模块1402还用于,根据该序列获取第一索引集合。
在一种可能的实现方式中,获取模块1402具体用于:按照至少两个特征向量的一级索引对应的距离表的编号从小到大或从大到小的顺序,对至少两个特征向量的索引进行排序,得到该序列。
在一种可能的实现方式中,第一存储介质包括内存或显存,第二存储介质包括缓存。
在一种可能的实现方式中,至少两个特征向量包括第一特征向量,检索装置140还包括:聚类模块1404,用于按照聚类算法对至少两个特征向量进行聚类,以将具有相似特征的特征向量归为一个簇。获取模块1402还用于,将第一特征向量所属的簇的簇号作为第一特征向量的一级索引。
在一种可能的实现方式中,至少两个特征向量包括第二特征向量,第一存储介质中还存储有多个码书,码书与一级索引一一对应;第二特征向量的一级索引对应该多个码书中的第一码书,第一码书包括N个子集合,每个子集合包括多个预设特征向量;检索装置140还包括划分模块1405,用于将第二特征向量划分成N个子特征向量,N≥2,N是整数。获取模块1402还用于在第一码书中获取与第二特征向量的N个子特征向量匹配的N个预设特征向量;在第一码书的第n个子集合中获取与第二特征向量的第n个子特征向量匹配的一个预设特征向量;1≤n≤N,n是整数;将N个预设特征向量的索引作为第二特征向量的二级索引。
在一种可能的实现方式中,第一存储介质中还存储有多个码书,码书与一级索引一一对应,该多个码书包括第二码书,第二码书包括N个子集合,每个子集合包括多个预设特征向量;检索装置140还包括划分模块1405,用于将待检索特征向量划分成N个子特征向量,N≥2,N是整数;获取模块1402还用于,获取待检索特征向量的N个子特征向量与第二码书中的预设特征向量之间的距离;其中,对于待检索特征向量的第n个子特征向量来说,获取待检索特征向量的第n个子特征向量与第二码书中的第n个子集合中的每个预设特征向量之间的距离;1≤n≤N,n是整数;将待检索特征向量的N个子特征向量与第二码书中的预设特征向量之间的距离构成的集合,作为基于待检索特征向量确定的该多个距离表中的一个距离表。
本实施例中相关内容的解释以及有益效果的描述等均可参考上述方法实施例,此处不再赘述。作为一个示例,结合图8B,本实施例中的检索装置140可以是图8B中的第一服务器20,上述读写模块1401、获取模块1402、确定模块1403、聚类模块1404和划分模块1405中的部分或全部也可以通过处理器701实现。
应理解的是,本发明实施例的检索装置140可以通过专用集成电路(application-specific integrated circuit,ASIC)实现,或可编程逻辑器件(programmable logicdevice,PLD)实现,上述PLD可以是复杂程序逻辑器件(complex programmable logicaldevice,CPLD),现场可编程门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。也可以通过软件实现图9至13所示的检索方法时,检索装置140及其各个模块也可以为软件模块。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件程序实现时,可以全部或部分地以计算机程序产品的形式来实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行计算机执行指令时,全部或部分地产生按照本发明实施例的流程或功能。计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或者数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可以用介质集成的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(例如,软盘、硬盘、磁带),光介质(例如,DVD)、或者半导体介质(例如固态硬盘(solid state disk,SSD))等。
以上所述,仅为本发明的具体实施方式。熟悉本技术领域的技术人员根据本发明提供的具体实施方式,可想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (18)
1.一种检索方法,其特征在于,所述方法包括:
将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质;其中,所述第一存储介质中存储有至少两个特征向量的索引以及基于待检索特征向量与多个码书确定的多个距离表,所述多个码书是所述至少两个特征向量经聚类后得到的多个簇对应的码书,簇与码书一一对应,所述距离表中包括所述待检索特征向量的多个子特征向量与码书中相应中心点之间的距离值;特征向量的索引包括一级索引和二级索引,所述一级索引用于指示特征向量所属的簇的簇号,所述二级索引用于指示特征向量经所述特征向量所属的簇对应的码书处理后得到的量化索引,所述量化索引包括所述特征向量中的每个子特征向量的量化索引,距离表与一级索引一一对应;所述第一距离表是所述多个距离表中的任一距离表;所述第一索引集合是所述至少两个特征向量中的第一类特征向量的二级索引构成的集合,所述第一类特征向量的一级索引与所述第一距离表对应的一级索引相同;所述第一存储介质和所述第二存储介质归属于同一个服务器;
根据所述第二存储介质中存储的所述第一距离表和所述第一索引集合中的二级索引,获取所述第一类特征向量与所述待检索特征向量之间的距离;
根据所述第一类特征向量与所述待检索特征向量之间的距离,在所述至少两个特征向量中确定与所述待检索特征 向量匹配的特征向量。
2.根据权利要求1所述的检索方法,其特征在于,所述方法还包括:
将所述第一存储介质中的第二距离表和第二索引集合存储至所述第二存储介质;其中,所述第二距离表是所述多个距离表中的除所述第一距离表之外的任一距离表;所述第二索引集合是所述至少两个特征向量中的第二类特征向量的二级索引构成的集合,所述第二类特征向量的一级索引与所述第二距离表对应的一级索引相同;
在获取所述至少两个特征向量中的所有所述第一类特征向量与所述待检索特征向量之间的距离之后,根据所述第二存储介质中存储的所述第二距离表和所述第二索引集合中的二级索引,获取所述第二类特征向量与所述待检索特征向量之间的距离;
所述根据所述第一类特征向量与所述待检索特征向量之间的距离,在所述至少两个特征向量中确定与所述待检索特征 向量匹配的特征向量,包括:根据所述第一类特征向量与所述待检索特征向量之间的距离和所述第二类特征向量与所述待检索特征向量之间的距离,在所述至少两个特征向量中确定与所述待检索特征 向量匹配的特征向量。
3.根据权利要求1或2所述的检索方法,其特征在于,所述第一存储介质中还存储有所述至少两个特征向量的索引构成的序列,所述序列中具有相同一级索引的特征向量的索引连续排列;
在从所述第二存储介质中读取所述第一距离表和所述第一索引集合中的二级索引之前,所述方法还包括:根据所述序列获取所述第一索引集合。
4.根据权利要求3所述的检索方法,其特征在于,对所述至少两个特征向量的索引进行排序,得到所述序列,包括:
按照所述至少两个特征向量的一级索引对应的距离表的编号从小到大或从大到小的顺序,对所述至少两个特征向量的索引进行排序,得到所述序列。
5.根据权利要求1或2所述的检索方法,其特征在于,所述第一存储介质包括内存或显存,所述第二存储介质包括高速缓存cache。
6.根据权利要求1或2所述的检索方法,其特征在于,所述至少两个特征向量包括第一特征向量,所述方法还包括:
按照聚类算法对所述至少两个特征向量进行聚类,以将具有相似特征的特征向量归为一个簇,并将所述第一特征向量所属的簇的簇号作为所述第一特征向量的一级索引。
7.根据权利要求1或2所述的检索方法,其特征在于,所述至少两个特征向量包括第二特征向量,所述第一存储介质中还存储有多个码书,码书与一级索引一一对应;所述第二特征向量的一级索引对应所述多个码书中的第一码书,所述第一码书包括N个子集合,每个子集合包括多个预设特征向量;所述方法还包括:
将所述第二特征向量划分成N个子特征向量,N≥2,N是整数;
在所述第一码书中获取与所述第二特征向量的N个子特征向量匹配的N个预设特征向量;其中,在所述第一码书的第n个子集合中获取与所述第二特征向量的第n个子特征向量匹配的一个预设特征向量;1≤n≤N,n是整数;
将所述N个预设特征向量的索引作为所述第二特征向量的二级索引。
8.根据权利要求1或2所述的检索方法,其特征在于,所述第一存储介质中还存储有多个码书,码书与一级索引一一对应,所述多个码书包括第二码书,所述第二码书包括N个子集合,每个子集合包括多个预设特征向量;所述方法还包括:
将所述待检索特征向量划分成N个子特征向量,N≥2,N是整数;
获取所述待检索特征向量的N个子特征向量与所述第二码书中的预设特征向量之间的距离;其中,对于所述待检索特征向量的第n个子特征向量来说,获取所述待检索特征向量的第n个子特征向量与所述第二码书中的第n个子集合中的每个预设特征向量之间的距离;1≤n≤N,n是整数;
将所述待检索特征向量的N个子特征向量与所述第二码书中的预设特征向量之间的距离构成的集合,作为基于所述待检索特征向量确定的所述多个距离表中的一个距离表。
9.一种检索装置,其特征在于,所述装置包括:
读写模块,用于将第一存储介质中的第一距离表和第一索引集合存储至第二存储介质;其中,所述第一存储介质中存储有至少两个特征向量的索引以及基于待检索特征向量与多个码书确定的多个距离表,所述多个码书是所述至少两个特征向量经聚类后得到的多个簇对应的码书,簇与码书一一对应,所述距离表中包括所述待检索特征向量的多个子特征向量与码书中相应中心点之间的距离值;特征向量的索引包括一级索引和二级索引,所述一级索引用于指示特征向量所属的簇的簇号,所述二级索引用于指示特征向量经所述特征向量所属的簇对应的码书处理后得到的量化索引,所述量化索引包括所述特征向量中的每个子特征向量的量化索引,距离表与一级索引一一对应;所述第一距离表是所述多个距离表中的任一距离表;所述第一索引集合是所述至少两个特征向量中的第一类特征向量的二级索引构成的集合,所述第一类特征向量的一级索引与所述第一距离表对应的一级索引相同;所述第一存储介质和所述第二存储介质归属于同一个服务器;
获取模块,用于根据所述第二存储介质中存储的所述第一距离表和所述第一索引集合中的二级索引,获取所述第一类特征向量与所述待检索特征向量之间的距离;
确定模块,用于根据所述第一类特征向量与所述待检索特征向量之间的距离,在所述至少两个特征向量中确定与所述待检索特征 向量匹配的特征向量。
10.根据权利要求9所述的检索装置,其特征在于,
所述读写模块还用于,将所述第一存储介质中的第二距离表和第二索引集合存储至所述第二存储介质;其中,所述第二距离表是所述多个距离表中的除所述第一距离表之外的任一距离表;所述第二索引集合是所述至少两个特征向量中的第二类特征向量的二级索引构成的集合,所述第二类特征向量的一级索引与所述第二距离表对应的一级索引相同;
所述获取模块还用于,在获取所述至少两个特征向量中的所有所述第一类特征向量与所述待检索特征向量之间的距离之后,根据所述第二存储介质中存储的所述第二距离表和所述第二索引集合中的二级索引,获取所述第二类特征向量与所述待检索特征向量之间的距离;
所述确定模块具体用于,根据所述第一类特征向量与所述待检索特征向量之间的距离和所述第二类特征向量与所述待检索特征向量之间的距离,在所述至少两个特征向量中确定与所述待检索特征 向量匹配的特征向量。
11.根据权利要求9或10所述的检索装置,其特征在于,所述第一存储介质中还存储有所述至少两个特征向量的索引构成的序列,所述序列中具有相同一级索引的特征向量的索引连续排列;所述获取模块还用于,根据所述序列获取所述第一索引集合。
12.根据权利要求11所述的检索装置,其特征在于,
所述获取模块具体用于:按照所述至少两个特征向量的一级索引对应的距离表的编号从小到大或从大到小的顺序,对所述至少两个特征向量的索引进行排序,得到所述序列。
13.根据权利要求9或10所述的检索装置,其特征在于,所述第一存储介质包括内存或显存,所述第二存储介质包括高速缓存cache。
14.根据权利要求9或10所述的检索装置,其特征在于,所述至少两个特征向量包括第一特征向量,所述装置还包括:
聚类模块,用于按照聚类算法对所述至少两个特征向量进行聚类,以将具有相似特征的特征向量归为一个簇;
所述获取模块还用于,将所述第一特征向量所属的簇的簇号作为所述第一特征向量的一级索引。
15.根据权利要求9或10所述的检索装置,其特征在于,所述至少两个特征向量包括第二特征向量,所述第一存储介质中还存储有多个码书,码书与一级索引一一对应;所述第二特征向量的一级索引对应所述多个码书中的第一码书,所述第一码书包括N个子集合,每个子集合包括多个预设特征向量;所述装置还包括:
划分模块,用于将所述第二特征向量划分成N个子特征向量,N≥2,N是整数;
所述获取模块还用于,在所述第一码书中获取与所述第二特征向量的N个子特征向量匹配的N个预设特征向量;其中,在所述第一码书的第n个子集合中获取与所述第二特征向量的第n个子特征向量匹配的一个预设特征向量;1≤n≤N,n是整数;以及,将所述N个预设特征向量的索引作为所述第二特征向量的二级索引。
16.根据权利要求9或10所述的检索装置,其特征在于,所述第一存储介质中还存储有多个码书,码书与一级索引一一对应,所述多个码书包括第二码书,所述第二码书包括N个子集合,每个子集合包括多个预设特征向量;所述装置还包括:
划分模块,用于将所述待检索特征向量划分成N个子特征向量,N≥2,N是整数;
所述获取模块还用于,获取所述待检索特征向量的N个子特征向量与所述第二码书中的预设特征向量之间的距离;其中,对于所述待检索特征向量的第n个子特征向量来说,获取所述待检索特征向量的第n个子特征向量与所述第二码书中的第n个子集合中的每个预设特征向量之间的距离;1≤n≤N,n是整数;以及,将所述待检索特征向量的N个子特征向量与所述第二码书中的预设特征向量之间的距离构成的集合,作为基于所述待检索特征向量确定的所述多个距离表中的一个距离表。
17.一种检索装置,其特征在于,包括存储器和处理器,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,使得如权利要求1至8任一项所述的检索方法的操作步骤。
18.一种服务器,其特征在于,所述服务器包括处理器、第一存储介质和第二存储介质;所述处理器用于执行如权利要求1至8任一项所述的检索方法;所述第一存储介质和所述第二存储介质用于存储所述处理器执行所述权利要求1至8任一项所述的检索方法所需的数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810979597.7A CN110895573B (zh) | 2018-08-24 | 2018-08-24 | 一种检索方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810979597.7A CN110895573B (zh) | 2018-08-24 | 2018-08-24 | 一种检索方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110895573A CN110895573A (zh) | 2020-03-20 |
CN110895573B true CN110895573B (zh) | 2022-04-05 |
Family
ID=69784805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810979597.7A Active CN110895573B (zh) | 2018-08-24 | 2018-08-24 | 一种检索方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110895573B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113569069B (zh) * | 2021-07-13 | 2024-05-17 | 壹药网科技(上海)股份有限公司 | 一种基于主成分光谱角距离的药物检索方法及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103902704A (zh) * | 2014-03-31 | 2014-07-02 | 华中科技大学 | 面向大规模图像视觉特征的多维倒排索引与快速检索算法 |
JP2015056077A (ja) * | 2013-09-12 | 2015-03-23 | Kddi株式会社 | 画像に基づくバイナリ特徴ベクトルを用いた画像検索装置、システム、プログラム及び方法 |
CN105989001A (zh) * | 2015-01-27 | 2016-10-05 | 北京大学 | 图像搜索方法及装置、图像搜索系统 |
CN107943938A (zh) * | 2017-11-23 | 2018-04-20 | 清华大学 | 一种基于深度乘积量化的大规模图像相似检索方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8422802B2 (en) * | 2011-03-31 | 2013-04-16 | Microsoft Corporation | Robust large-scale visual codebook construction |
-
2018
- 2018-08-24 CN CN201810979597.7A patent/CN110895573B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2015056077A (ja) * | 2013-09-12 | 2015-03-23 | Kddi株式会社 | 画像に基づくバイナリ特徴ベクトルを用いた画像検索装置、システム、プログラム及び方法 |
CN103902704A (zh) * | 2014-03-31 | 2014-07-02 | 华中科技大学 | 面向大规模图像视觉特征的多维倒排索引与快速检索算法 |
CN105989001A (zh) * | 2015-01-27 | 2016-10-05 | 北京大学 | 图像搜索方法及装置、图像搜索系统 |
CN107943938A (zh) * | 2017-11-23 | 2018-04-20 | 清华大学 | 一种基于深度乘积量化的大规模图像相似检索方法及系统 |
Non-Patent Citations (3)
Title |
---|
图像检索技术研究进展;周文罡等;《南京信息工程大学学报(自然科学版)》;20171128(第06期);第51-72页 * |
增强型残差量化的图像视觉特征不完全检索方法;艾列富等;《合肥学院学报》;20160128(第01期);第51-56页 * |
应用多索引加法量化编码的近邻检索算法;刘恒等;《中国图象图形学报》;20180516(第05期);第40-49页 * |
Also Published As
Publication number | Publication date |
---|---|
CN110895573A (zh) | 2020-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10521441B2 (en) | System and method for approximate searching very large data | |
CN106852185B (zh) | 基于字典的并行压缩编码器 | |
Wang et al. | Sequential projection learning for hashing with compact codes | |
US8983959B2 (en) | Optimized partitions for grouping and differentiating files of data | |
EP3752930B1 (en) | Random draw forest index structure for searching large scale unstructured data | |
US10217241B2 (en) | System and method for compressing graphs via cliques | |
KR102305568B1 (ko) | 일정한 처리 시간 내에 k개의 극값을 찾는 방법 | |
US8930422B2 (en) | Pipelined incremental clustering algorithm | |
US8515956B2 (en) | Method and system for clustering datasets | |
US11106708B2 (en) | Layered locality sensitive hashing (LSH) partition indexing for big data applications | |
US9552408B2 (en) | Nearest neighbor clustering determination and estimation algorithm that hashes centroids into buckets and redistributes vectors between clusters | |
US9619501B2 (en) | Index scan device and index scan method | |
CN113918753A (zh) | 基于人工智能的图像检索方法及相关设备 | |
Zhou et al. | Multiple distance-based coding: toward scalable feature matching for large-scale web image search | |
CN108549696B (zh) | 一种基于内存计算的时间序列数据相似性查询方法 | |
CN112733545A (zh) | 文本分块方法、装置、计算机设备和存储介质 | |
CN110895573B (zh) | 一种检索方法和装置 | |
WO2022007596A1 (zh) | 图像检索系统、方法和装置 | |
CN116821053B (zh) | 数据上报方法、装置、计算机设备和存储介质 | |
US20210056085A1 (en) | Deduplication of data via associative similarity search | |
Yammahi et al. | An efficient technique for searching very large files with fuzzy criteria using the pigeonhole principle | |
Yin et al. | Content-based image retrial based on Hadoop | |
EP3115909A1 (en) | Method and apparatus for multimedia content indexing and retrieval based on product quantization | |
CN113536020B (zh) | 数据查询的方法、存储介质和计算机程序产品 | |
Chiu et al. | Approximate asymmetric search for binary embedding codes |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |