CN116547647A - 检索装置和检索方法 - Google Patents
检索装置和检索方法 Download PDFInfo
- Publication number
- CN116547647A CN116547647A CN202080106451.7A CN202080106451A CN116547647A CN 116547647 A CN116547647 A CN 116547647A CN 202080106451 A CN202080106451 A CN 202080106451A CN 116547647 A CN116547647 A CN 116547647A
- Authority
- CN
- China
- Prior art keywords
- processor
- distance
- matrix
- features
- feature
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种检索装置和检索方法。该检索装置(10)包括第一处理器(110)和第二处理器(120),其中,第一处理器(110)为通用中央处理器,用于执行检索过程中的查表操作;第二处理器(120)为神经网络处理器,用于执行所述检索过程中的矩阵/向量运算。在该检索方法中,通过将检索算法(检索过程)的步骤合理分配给不同的处理器来执行,从而能够发挥不同种类处理器的优势,提高检索效率。
Description
本申请涉及检索领域,尤其更具体地,涉及一种用于检索的检索装置和检索方法。
检索是指从用户特定的信息需求出发,对特定的信息集合采用一定的方法、技术手段,根据一定的线索与规则从中找出相关信息。检索已经应用到了当今社会的各行各业,例如,人脸识别、车牌检测或指纹识别等任务均可以应用各类检索技术。
例如,在安防领域,当需要检索或追踪到某目标人员时,通常需要提取目标人员的人脸、身体等特征,然后将这些提取的特征作为检索特征与底库中的特征进行比对,找到相似度较高的一些特征,以便进一步得到目标人员的活动轨迹和时间信息等。而这类底库往往规模巨大,以某市为例,每季度大约产生百亿条底库数据,而检索时又往往需要在很短的时间内检索到目标人员,例如需要在几秒以内得到检索结果。如果直接将检索特征与底库中的特征一一比对,其计算复杂度和底库数量、特征维数成正比,在底库中数据量如此庞大的情况下耗时会非常长。
针对上述问题,在现有技术中通常会采用一些检索算法来进行检索,相当于通过牺牲部分检索精度来实现更高的检索性能,而随着人工智能(artificial intelligence,AI)的发展,基于人工智能技术的检索算法也得到了应用,这类检索算法可以借助于处理器进行运算,最常见的有通用的中央处理器(central processing unit,CPU)和神经网络处理器(neural-network processing unit,NPU),但是如果采用CPU,则由于CPU对于复杂的向量计算的运算速度较慢,导致检索效率低;而如果采用NPU,则由于NPU在没有专门的指令时,对于查表等操作的执行较慢,导致检索效率低。
因此,如何提高检索效率是亟待解决的技术问题。
发明内容
本申请提供一种用于检索的检索装置和检索方法,可以提高检索效率。
第一方面,提供一种检索装置,该检索装置包括第一处理器和第二处理器,其中,第一处理器为通用中央处理器,用于执行检索过程中的查表操作;第二处理器为神经网络处理器,用于执行所述检索过程中的矩阵/向量运算。
在本申请的技术方案中,通过将检索算法(检索过程)的步骤合理分配给不同的处理器来执行,从而能够发挥不同种类处理器的优势,提高检索效率。
需要说明的是,在本申请实施例中,检索过程包括多个步骤,可以将其分为查询操作、矩阵/向量运算和其他操作,其他操作例如可以包括排序操作、加载距离表、访问距离表、选择操作等等。其中,查询操作相对灵活且需要多次执行,而NPU并不适合执行这类操作,CPU则相对合适,所以将查询操作分配给第一处理器(CPU)来执行。矩阵/向量运 算则是NPU最擅长的操作,而CPU相对而言无法承担复杂的矩阵和向量运算,所以将矩阵/向量运算分配给第二处理器(NPU)来执行。而对于其他操作,第一处理器或第二处理器都可以执行,例如可以选择二者中空闲的处理器来执行,又例如可以选择承担的步骤较少的处理器执行,又例如可以选择前一个步骤相同的处理器来执行。
结合第一方面,在第一方面的某些实现方式中,上述查表操作具体包括:查询待检索特征与底库中的多个底库特征之间的距离值,生成待检索特征与多个底库特征的距离矩阵,待检索特征用于表示待检索数据的特征,底库特征为底库中的数据的特征;上述矩阵/向量运算具体包括:将距离矩阵进行累加,得到待检索特征与多个底库特征中的每个底库特征之间的第一距离。
结合第一方面,在第一方面的某些实现方式中,第一处理器还用于,将距离矩阵的格式设置为与第二处理器需要的格式一致。
结合第一方面,在第一方面的某些实现方式中,第一处理器或第二处理器还用于:根据第一距离,选取第一距离最小的M个底库特征作为检索结果,M为正整数。
可选地,为了提高检索效率,可以把底库中的底库特征进行聚类,得到多个聚类中心,在检索时就可以先检索得到距离相近的聚类中心,再进一步从距离相近的聚类中心中检索到距离相近的底库特征。相当于分层级的检索方式,可以理解为把底库特征进行了分组(分集合),就可以先找到相似的组,再从相似的组里找到相似的底库特征向量,跟传统的与每条底库特征进行一一对比,会有更高的检索效率。也就是说,底库可以包括多个聚类中心,每个聚类中心中包括多个底库特征。
需要说明的是,在底库包括多个聚类中心这种情况下,可以先利用第二处理器计算得到待检索特征与每个聚类中心的距离,例如下文的第二距离(此为矩阵/向量运算),再根据该距离进行排序(此为排序操作),以及选择一些聚类中心(此为选择操作),之后再利用第一处理器执行查询操作,此时第一处理器只需要查询选择出的聚类中心中的底库特征。也就是说,在该过程中同样涉及矩阵/向量运算、排序操作和选择操作,这些步骤的执行主体可以参照上文,不再重复介绍,唯一不同是,第一处理器在执行查询操作时,是对哪些底库特征进行查询。
结合第一方面,在第一方面的某些实现方式中,底库还包括多个聚类中心,多个聚类中心中的每个聚类中心包括多个底库特征,第二处理器还用于,计算待检索特征与多个聚类中心之间的第二距离;第一处理器或第二处理器还用于,从多个聚类中心中选取第二距离最小的K个聚类中心,K为正整数;第一处理器具体用于,查询待检索特征与K个聚类中心中的多个底库特征之间的距离值,以距离矩阵。
可选地,可以利用向量运算实现上述距离矩阵的累加,还可以利用矩阵运算实现上述距离矩阵的累加。
可选地,当利用矩阵运算时,可以采用将距离矩阵与权重矩阵相乘的方式,得到所述距离,其中权重矩阵可以是根据底库特征设置的。在这种情况下,还可以通过第一处理器与第二处理器配合的方式,提高运算效率,例如可以在第一处理器生成距离矩阵的时候,将距离矩阵设置为与第二处理器需要的格式一致,这样第二处理器就可以直接对距离矩阵进行运算了,省去处理步骤。且由于采用矩阵运算,则向量单元就得到了释放,可以利用向量单元执行其他的检索过程的操作,实现算法的并行,提高运算效率。
结合第一方面,在第一方面的某些实现方式中,上述矩阵/向量运算具体包括:将距离矩阵与权重矩阵相乘,得到距离,权重矩阵是根据底库特征设置的。
可选地,CPU在进行查表操作时,需要多次执行加载(lord)指令和保存(stor)指令,为了降低先写后读的指令延迟,以及减少上述加载和保存指令的执行次数,可以将距离表进行预加载,并且可以将预加载的距离表常驻在CPU的二级缓存(L2cache)中。也就是说,在查询时,需要反复多次的访问距离表,所以通过预加载和常驻的方式使得距离表更便于查询。距离表中存储有上述距离值。
第二方面,提供一种检索方法,该方法包括:利用第一处理器执行检索过程中的查表操作,第一处理器为CPU;利用第二处理器执行检索过程中的矩阵/向量运算,第二处理器为NPU。
结合第二方面,在第二方面的某些实现方式中,上述查表操作具体包括:查询待检索特征与底库中的多个底库特征之间的距离值,生成待检索特征与多个底库特征的距离矩阵,待检索特征用于表示待检索数据的特征,底库特征为底库中的数据的特征;上述矩阵/向量运算具体包括:将距离矩阵进行累加,得到待检索特征与多个底库特征中的每个底库特征之间的第一距离。
结合第二方面,在第二方面的某些实现方式中,上述方法还包括:第一处理器将距离矩阵的格式设置为与第二处理器需要的格式一致。
结合第二方面,在第二方面的某些实现方式中,上述方法还包括:第一处理器或第二处理器根据第一距离,选取第一距离最小的M个底库特征作为检索结果,M为正整数。
结合第二方面,在第二方面的某些实现方式中,底库还包括多个聚类中心,多个聚类中心中的每个聚类中心包括多个底库特征,上述方法还包括:
第二处理器计算待检索特征与多个聚类中心之间的第二距离;
第一处理器或第二处理器从多个聚类中心中选取第二距离最小的K个聚类中心,K为正整数;
第一处理器查询待检索特征与K个聚类中心中的多个底库特征之间的距离值,以距离矩阵。
结合第二方面,在第二方面的某些实现方式中,上述检索过程中的矩阵/向量运算包括:将距离矩阵与权重矩阵相乘,得到第一距离,权重矩阵是根据底库特征设置的。
第三方面,本申请提供一种检索装置,该装置包括:处理器,所述处理器与存储器耦合;所述存储器用于存储指令;所述处理器用于执行所述存储器中存储的指令,以使得所述装置执行第二方面或其中任意一种可能的实现方式中的方法的步骤。
第四方面,本申请提供一种计算机可读介质,该计算机可读介质存储用于设备执行的指令,该指令用于实现第二方面或其中任意一种可能的实现方式中的方法。
第五方面,本申请提供一种包含指令的计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行第二方面或其中任意一种可能的实现方式中的方法。
图1是本申请实施例的检索系统的示意性结构图。
图2是本申请实施例的检索设备的示意性结构图。
图3是本申请实施例的检索方法的示意性流程图。
图4是本申请实施例的检索方法的示意性流程图。
图5是本申请实施例的检索装置的示意性结构图。
图6是本申请实施例的检索装置的示意性结构图。
下面将结合附图,对本申请中的技术方案进行描述。
为了便于理解,首先对一些专业术语进行介绍。
(1)检索算法
检索算法可以理解为利用少量的待检索数据从大量的数据存储库中检索出与待检索数据相关的数据的方法。例如常见的搜索引擎中,输入关键词可以搜索出与该关键词相关的一些链接等,此时,输入的关键词就可以看作是待检索数据,相关的链接就可以看作是与待检索数据相关的数据。与之相似,图像检索就可以看作是利用少量的待检索图像(例如一张待检索图像)从存储有大量图像的图像库中检索出与待检索图像相关的图像。
需要说明的是,上述数据除了可以是关键词等文本数据、图像数据以外,还可以是语音、序列等其他类型的数据。
检索算法包括基于树的方法、哈希、矢量量化(vector quantization)方法等各种类别的检索算法,其中,基于树的方法(例如KD树),在空间维度比较低时检索性能还是比较高效的,但当空间维度较高时,该方法会退化为暴力枚举,导致检索性能较差。哈希方法对于小数据集和中规模的数据集性能相对可以,但对于大规模的数据集则依然无法达到较好的检索性能。而矢量量化类的检索算法,能够把数据的特征进行量化,然后可以通过比较与特征向量之间的距离来筛选出相关性较高或相似度较高的数据。
(2)乘积量化(product quantization,PQ)算法
PQ算法是一种常见的矢量量化类的检索算法,PQ类算法首先会把高维向量空间分解为若干个低维向量空间的笛卡尔积(Cartesian product),并对每个低维向量空间分别做量化(quantization),这样,每个向量就能由若干个低维空间的量化编码组合表示。例如,对于N个128维的向量,N为正整数,可以将每个向量分为4段32维的向量,每段使用聚类算法得到256个聚类中心。将原始向量的每段都用其聚类中心的编码代替,256个聚类中心的编码用1个字节(byte)表示,这样每个128维的浮点向量只需4字节便可以表示。当进行检索时,对查询向量(待检索数据的特征向量)也进行同样的分组,计算其与各聚类中心的距离,得到256*4的距离表。遍历底库中的N个向量,根据其编码在距离表中查找对应的距离,每条向量的4个距离相加即为其与查询向量的距离,返回距离最小的K个向量作为查询结果。可以看出,PQ类算法是将大量高维浮点向量的距离计算转换为低维向量的查表操作,大幅降低了计算量。在PQ算法基础上,附加倒排索引算法,只对部分底库向量进行检索,可以进一步降低查询耗时。
从PQ算法的执行流程来看,基于PQ的特征检索算法中既包括高维浮点向量的距离计算,又包括灵活性较高的查表操作。PQ算法可以运行在CPU、GPU、NPU或FPGA等处理器或芯片上,但这些处理器或芯片都有各自的缺点,例如CPU进行向量计算性能较差;GPU功耗较大;NPU如果没有专门的指令,对于查表操作,性能非常有限,而查表 又是算法的关键性能瓶颈;FPGA成本较高。因此无论利用哪种处理器进行检索运算,都较难得到理想的检索性能,针对上述技术问题,本申请提供了一种新的检索方法,通过将检索算法的步骤合理分配给多种处理器来执行,从而能够发挥不同种类处理器的优势,提高检索效率。
图1是本申请实施例的检索系统的示意性结构图。如图1所示,该检索系统100可以包括检索装置10和存储模块130,其中检索装置10包括第一处理器110和第二处理器120。在一些实现方式中,检索装置10可以为芯片。
第一处理器110用于执行检索算法中的查表操作。第一处理器110可以为CPU。
可选地,可以把距离表和待检索特征输入到第一处理器110,第一处理器110对距离表进行查询,得到待检索特征与底库特征之间的距离值,根据这些距离值生成距离矩阵,将该距离矩阵输出给第二处理器120或输出给存储模块130,以便于第二处理器120对距离矩阵进行处理。
第二处理器120用于执行检索算法中的矩阵/向量运算。第二处理器120可以为NPU。
可选地,第二处理器120可以接收第一处理器110的距离矩阵,或者从存储模块130中读取上述距离矩阵,然后对上述距离矩阵进行矩阵运算或向量运算,得到待检索特征与底库特征之间的距离(例如下文的第一距离)。
可选地,第二处理器120可以将得到待检索特征与底库特征之间的距离输出给第一处理器110,使得第一处理器110可以对上述距离进行排序(即执行排序操作),从而可以选择出一些底库特征(即选择操作)。
可选地,第二处理器120还可以将得到待检索特征与底库特征之间的距离输出给存储模块130,之后第一处理器110可以从存储模块130中读取出上述距离,以及可以对上述距离进行排序(即执行排序操作),从而可以选择出一些底库特征(即选择操作)。
可选地,第二处理器120还可以将得到待检索特征与底库特征之间的距离进行排序(即执行排序操作),然后可以将排序后的距离输出给第一处理器110或存储模块130,或者可以继续执行排序操作之后的选择操作,然后将选择后的底库特征进行输出。这种情况下,省去了与第一处理器110或存储模块130之间的数据交互,能够加快检索过程的执行。
从上述几种情况也可以看出,排序操作、选择操作等其他操作均既可以利用第一处理器110来执行,也可以利用第二处理器120来执行。
第二处理器120包括向量单元121和矩阵单元122,其中向量单元121可以用于进行向量运算,矩阵单元122可以用于进行矩阵运算。
存储模块130用于存储底库数据的特征向量,以及用于存储检索过程中产生的中间量,例如可以存储第一处理器110生成的距离矩阵,此外,还可以用于存储距离表等。
底库可以理解为检索库,也可以理解为上文所述数据集。底库数据的特征向量可以理解为是对存储数据进行特征提取得到的底库特征,每条存储数据都有对应的底库特征。
可选地,上述存储数据可以是图像、文字、语音、序列等各类数据。
可选地,上述底库特征可以是利用特征提取网络对底库数据进行特征提取得到的。
可选地,上述特征提取网络可以采用通用的、用于提取特征的神经网络,也可以是重新设计的、能够提取特征的神经网络。
在一些示例中,特征提取网络可以包含残差网络(resnet)和全连接层(fully connected layer,FC);在另一些示例中,特征提取网络可以包括VGC16和全连接层。
可选地,可以构造出计算底库特征向量和待检索特征向量的距离的神经网络,为了简洁可以称之为检索神经网络,也就是说,上文所述特征提取网络是用于进行特征提取的网络,而此处的神经网络是用于检索出与待检索特征向量相似(距离相近)的底库特征向量的网络。其中,构造的神经网络的权重矩阵的格式可以由底库特征向量的数量决定。例如,底库特征向量长度为256,且总共有30万个底库特征向量时,构建的神经网络中的权重矩阵可以是256*1*300000的三维矩阵。
可选地,上述检索神经网络可以设置在第二处理器120中,用于执行检索算法(检索过程)中的矩阵/向量运算。此外,上述检索神经网络还可以设置在存储模块130中,当需要执行检索算法时,可以从存储模块130中读取该检索神经网络。
可选地,同样可以通过特征提取网络对待检索数据进行特征提取,得到待检索数据的特征。待检索数据的特征称为待检索特征。该特征提取网络同样可以采用通用的、用于提取特征的神经网络,也可以是重新设计的、能够提取特征的神经网络。
在一些示例中,特征提取网络可以包含残差网络和全连接层;在另一些示例中,特征提取网络可以包括VGC16和全连接层。
通常来说,对底库数据进行特征提取所使用的特征提取网络与对待检索数据进行特征提取的特征提取网络相同。此处所说的相同是指网络结构以及网络参数均相同。
在一些示例中,可以根据利用检索神经网络得到的距离(例如下文的第一距离),对底库中的底库特征进行排序,以及选取一些底库特征作为候选结果或检索结果,该过程可以利用第一处理器110执行,也可以利用第二处理器120执行。也就是说,第一处理器110或第二处理器120可以对检索神经网络获取到的距离按照一定的顺序(例如从大到小的顺序)进行排序;从排序后的距离中选择排名前X的距离以及从底库中选取该前X个距离对应的底库特征,这X个底库特征即可以作为检索结果,其中,X为小于底库特征总数量的正整数。
在另一些示例中,第一处理器110或第二处理器120基于预设的阈值对检索神经网络获取到的距离进行过滤,以剔除超过阈值的距离(相当于提出相似度较低的底库特征向量);然后再对剩余距离按照一定的顺序(例如从大到小的顺序)进行排序;从排序后的距离中选择排名前X的距离以及从底库中选取该前X个距离对应的底库特征,这X个底库特征即为检索结果,其中,X为小于底库特征总数量的正整数。
可选地,为了提高检索效率,可以把底库中的底库特征进行聚类,得到多个聚类中心,在检索时就可以先检索得到距离相近的聚类中心,再进一步从距离相近的聚类中心中检索到距离相近的底库特征。相当于分层级的检索方式,可以理解为把底库特征进行了分组(分集合),就可以先找到相似的组,再从相似的组里找到相似的底库特征向量,跟传统的与每条底库特征进行一一对比,会有更高的检索效率。也就是说,底库可以包括多个聚类中心,每个聚类中心中包括多个底库特征。
需要说明的是,在底库包括多个聚类中心这种情况下,可以先利用第二处理器120计算得到待检索特征与每个聚类中心的距离,例如下文的第二距离(此为矩阵/向量运算),再根据该距离进行排序(此为排序操作),以及选择一些聚类中心(此为选择操作),之 后再利用第一处理器110执行查询操作,此时第一处理器110只需要查询选择出的聚类中心中的底库特征。也就是说,在该过程中同样涉及矩阵/向量运算、排序操作和选择操作,这些步骤的执行主体可以参照上文,不再重复介绍,唯一不同是,第一处理器110在执行查询操作时,是对哪些底库特征进行查询。
可以理解的是,图1所示的检索系统的架构仅是一种示例,可以应用本申请提出的检索方法的检索系统中可以包括更多或更少的模块。例如,进行特征提取的神经网络可以是设置在第二处理器120中,也可以是设置在存储模块130中,还可以是设置在图1所示的检索系统之外的。又例如,为了检索方便,可以使得底库特征的格式与检索神经网络要求的格式一致,但若底库特征的格式与检索神经网络的格式不一致,则还需将该底库特征从当前格式(可以称为初始格式)转换为该检索神经网络能够读取的格式(可以称为目标格式),此时就需要设置一个格式转换模块,或者将该格式转换模块的功能集成在第一处理器110或第二处理器120上。
例如,第一处理器110在生成距离矩阵时,可以将该距离矩阵设置为神经网络处理器能够支持的格式。
图2是本申请实施例的检索设备的示意性结构图。如图2所示,检索设备200可以包括主处理器210和神经网络处理器230。检索设备200还可以包括存储器220。
主处理器210可以为CPU。主处理器210也可以称为主CPU(Host CPU)。
查询操作可以由主处理器210实现。矩阵/向量运算可以通过NPU 230实现,排序操作、访问距离表、选择操作等操作既可以通过主处理器210实现,也可以通过神经网络处理器230实现,也就是说,主CPU可以为图1所述第一处理器110的一例,NPU可以为图1所述第二处理器120的一例。
需要说明的是,在本申请实施例中,检索过程包括多个步骤,可以将其分为查询操作、矩阵/向量运算和其他操作,其他操作例如可以包括排序操作、加载距离表、访问距离表、选择操作等等。其中,查询操作相对灵活且需要多次执行,而NPU并不适合执行这类操作,CPU则相对合适,所以将查询操作分配给第一处理器(CPU)来执行。矩阵/向量运算则是NPU最擅长的操作,而CPU相对而言无法承担复杂的矩阵和向量运算,所以将矩阵/向量运算分配给第二处理器(NPU)来执行。而对于其他操作,第一处理器或第二处理器都可以执行,例如可以选择二者中空闲的处理器来执行,又例如可以选择承担的步骤较少的处理器执行,又例如可以选择前一个步骤相同的处理器来执行。
神经网络处理器230主要用于完成检索需要的加减乘除数值运算。例如,NPU 230完成检索需要的乘累加运算。神经网络处理器230可以作为协处理器挂载到主CPU上,由Host CPU输入待运算的数据,例如上文所述距离矩阵。
神经网络处理器230可以包含输入存储器201,权重存储器202,运算电路203,控制器204,存储单元控制器205,统一存储器206和取指存储器207。
统一存储器206,输入存储器201,权重存储器202以及取指存储器(instruction fetch buffer)207均为片上(on-chip)存储器。
存储单元访问控制器(direct memory access controller,DMAC)205主要用于将存储器220中的输入数据和权重数据搬运到统一存储器206。
进一步地,DMAC 205还可以用于将权重数据从统一存储器206搬运到权重存储器 202中,将输入数据数据从统一存储器206搬运到输入存储器201中,将指令搬运到取指存储器207中。
控制器204执行取指存储器207中存储的指令,控制运算电路对权重存储器202中存储的权重和输入存储器201中的输入数据进行运算。
NPU 230通过控制器204执行相应指令,控制运算电路203提取权重存储器502和输入存储器501中的矩阵数据并进行矩阵运算。
在一些实现中,运算电路203可以包括三维的立体(cube)运算单元。运算电路503还可以是一维脉动阵列、二维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路203从权重存储器202中取矩阵B相应的数据,并缓存在运算电路中每一个运算单元上。运算电路203从输入存储器201中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存统一存储器206中。
图3是本申请实施例的检索方法的示意性流程图。下面对图3所述方法的各个步骤进行介绍。
301、利用第一处理器执行检索过程中的查表操作。
可选地,该第一处理器可以为图1所示的第一处理器110,也可以为图2所示的主CPU210。
需要说明的是,上述检索过程是指利用待检索数据从底库中检索出相应的底库数据,待检索数据可以为数据本身,也可以是待检索特征,底库中存储有底库数据对应的底库特征。
可选地,上述查表操作可以包括:查询待检索特征与底库中的多个底库特征之间的距离值,生成待检索特征与该多个底库特征的距离矩阵,其中,待检索特征用于表示待检索数据的特征,底库特征为底库中的数据的特征。
可选地,可以通过查询距离表的方式查询上述距离值。
可选地,可以是在底库不进行聚类中心划分的情况下,进行一一比对的方式得到距离矩阵,相当于查询所有底库特征共用的距离表,并从该距离表中读出相应的距离值,以及利用这些距离值生成距离矩阵。
可选地,上述底库还可以包括多个聚类中心,多个聚类中心中的每个聚类中心包括多个底库特征,在这种情况下,可以利用第二处理器计算待检索特征与多个聚类中心之间的第二距离;再利用第一处理器或第二处理器,从多个聚类中心中选取第二距离最小的K个聚类中心,K为正整数;之后利用第一处理器,查询待检索特征与K个聚类中心中的多个底库特征之间的距离值,以距离矩阵。
也就是说,在底库中还可以包括多个聚类中心的情况下,可以先计算待检索特征与每个聚类中心之间的距离值,筛选出一部分聚类中心之后,再查询筛选出的聚类中心中的底库特征与待检索特征之间的距离值,也就是说,查询操作可以只针对筛选出的聚类中心,也可以理解为相当于只查询筛选出的聚类中心的距离表,并从距离表中读出相应的距离值,以及利用这些距离值生成距离矩阵。
可选地,可以获取底库的距离表,然后在执行查询操作时可以访问该距离表。如果进 行了聚类中心的划分,则相当于每个聚类中心都有对应的距离表,在查询操作时只需要访问筛选出的聚类中心的距离表,也就是说,只有被筛选出的聚类中心中的底库特征的距离值才可能会被访问到。而如果不进行聚类中心的划分,采用一一比对的方式,则相当于整个底库对应一个距离表,在执行查询操作时需要访问该距离表,也就是说,所有底库特征的距离值都有可能被访问到。
可选地,该距离表可以利用第一处理器或第二处理器计算得到,也就是说生成距离表的操作可以由第一处理器或第二处理器执行。应理解,获取距离表的操作和生成距离矩阵的操作是不同的操作过程。在获取到待检索特征之后,可以计算得到待检索特征和底库特征之间的距离表,该距离表中包括待检索特征和每个底库特征之间的距离值。而在查询操作时,可以查询上述距离表,读取出一部分底库特征和待检索特征之间的距离值来生成距离矩阵。还应理解,可以是为每个底库设置一个距离表,相当于把所有底库特征的距离值放在同一个表里,也可以是为每个聚类中心设置一个距离表,相当于把每个聚类中心的底库特征的距离值放在每个聚类中心对应的表里。
可选地,还可以设置PQ聚类中心,则在生成距离表时,可以将待检索特征与每个PQ聚类中心的距离作为待检索特征与每个PQ聚类中心中的底库特征之间的距离,也就是说,每个PQ聚类中心中的每个底库特征的距离不需要再一一计算,这样相当于牺牲一定的精度来换取更高的运算效率。例如,假设某个底库中的某个PQ聚类中心中包括10个底库特征,则在生成距离表时,可以把待检索特征与该PQ聚类中心的距离值作为待检索特征与该10个底库特征分别之间的距离值,相当于该10个底库特征共享相同的距离值。
需要说明的是,上述PQ聚类中心与本申请中其他提及到的聚类中心可以看作是不同聚类规则生成的聚类中心,其中PQ聚类中心是指可以用于进行距离值共享(距离值的粗运算)的特殊的聚类中心,而其他聚类中心则只是用于为底库中所有底库特征进行分组的聚类中心。在某些情况下,可以看作是PQ聚类中心的分组要求相对更严格。或者可以理解为功能不同,PQ聚类中心可以看作是能够减少距离值的运算量,因为不需要每个底库特征都计算,而其他的聚类中心则可以看作是能够减少需要查询的底库特征的数量,因为可以只查询部分筛选出来的底库特征的距离值,二者能够分别在不同的操作过程中提高检索运算性能。
还应理解,PQ聚类中心和其他聚类中心可以同时设置,也可以只设置其中之一。进一步举例说明,为了便于理解会采用一些具体数值进行举例,但应理解这不是对于本申请方案的限定。假设某个底库包括300个底库特征,在获取距离表的时候,在一种方式中,可以是直接计算该300个底库特征分别与待检索特征之间的距离,相当于得到的距离表中每个距离值都是一一计算得到的。在另一种方式中,假设该300个底库特征已经被聚类成50个PQ聚类中心,每个PQ聚类中心中都包括6个底库特征,而在获取距离表时,计算该50个PQ聚类中心分别与待检索特征之间的距离,相当于得到的距离表中每个PQ聚类中心中的6个底库特征共用相同的距离值。上述两种情况都可以看作是只生成一个距离表,所以在查询的时候只需要查询该一个距离表。在查询操作时,在一种实现方式中,可以是直接遍历该300个底库特征的距离值,相当于访问上述一个距离表。在另一种实现方式中,假设该300个底库特征被聚类成5个粗聚类中心,每个粗聚类中心中分别包括60个底库特征,则该5个粗聚类中心均对应一个距离表,每个距离表又均可以是采用上述任 意一种方式获得的,假设筛选出了其中2个聚类中心,则在执行查询操作时,只需要访问该2个聚类中心的距离表。
从上述例子也可以看出,PQ聚类中心可以在获取距离表的运算阶段减少运算量,而粗聚类中心可以在查询操作的访问距离表阶段减少距离表的访问操作,以及可以减少后续距离矩阵进行矩阵/向量运算时的运算量,二者均可以提高检索算法的性能。
302、利用第二处理器执行所述检索过程中的矩阵/向量运算。
可选地,该第二处理器可以为图1所示的第二处理器120,也可以为图2所示的NPU230。
可选地,上述矩阵/向量运算可以包括:将步骤301所述距离矩阵进行累加,得到待检索特征与多个底库特征中的每个所述底库特征之间的第一距离。
可选地,可以利用向量运算实现上述距离矩阵的累加,还可以利用矩阵运算实现上述距离矩阵的累加。
可选地,当利用矩阵运算时,可以采用将距离矩阵与权重矩阵相乘的方式,得到所述距离,其中权重矩阵可以是根据底库特征设置的。在这种情况下,还可以通过第一处理器与第二处理器配合的方式,提高运算效率,例如可以在第一处理器生成距离矩阵的时候,将距离矩阵设置为与第二处理器需要的格式一致,这样第二处理器就可以直接对距离矩阵进行运算了,省去处理步骤。且由于采用矩阵运算,则向量单元就得到了释放,可以利用向量单元执行其他的检索过程的操作,实现算法的并行,提高运算效率。
可选地,CPU在进行查表操作时,需要多次执行加载(lord)指令和保存(stor)指令,为了降低先写后读的指令延迟,以及减少上述加载和保存指令的执行次数,可以将距离表进行预加载,并且可以将预加载的距离表常驻在CPU的二级缓存(L2cache)中。也就是说,在查询时,需要反复多次的访问距离表,所以通过预加载和常驻的方式使得距离表更便于查询。距离表中存储有上述距离值。
可选地,可以从多个聚类中心中选取第二距离最小的K个聚类中心,K为正整数,该步骤可以利用第一处理器(例如CPU)或第二处理器(例如NPU 230)执行。在筛选出该K个聚类中心后,第一处理器执行步骤301,在执行时,为了加快查询速度,可以只查询该K个聚类中心中的底库特征与待检索特征之间的距离值。相当于不再查询其他的聚类中心的底库特征,这样可以有效降低查询的数据量,提高检索速率。但应理解,也可以查询全部聚类中心的底库特征的距离值,这种情况相当于可以查询更彻底,具有更高的检索精度,但由于查询的数据量增大,所以检索速率会降低。
可选地,可以利用第一处理器或第二处理器,根据第一距离,选取第一距离最小的M个所述底库特征作为检索结果,M为正整数。
本申请的检索方法中,通过将检索算法(检索过程)的步骤合理分配给多种处理器来执行,从而能够发挥不同种类处理器的优势,提高检索效率。
图4是本申请实施例的检索方法的示意性流程图,下面对图4各个步骤进行介绍。
401、获取底库特征。
该底库特征为底库中的数据的特征。
可选地,该底库可以包括多个聚类中心,每个聚类中心可以包括多个底库特征。
可选地,可以利用图1中的第一处理器110或第二处理器120或图2中的主CPU 210 或图2中的NPU 230来执行步骤401,还可以是利用独立于处理器之外的获取单元执行步骤401,也就是说步骤401的执行主体不存在限定。还应理解,底库特征和待检索特征可以是已经获取好的,因此,步骤401和步骤402可以不执行,相当于处理器直接对已准备好的数据进行查询、计算、排序等操作。也就是说步骤401和步骤402不是本申请技术方案的必须执行的步骤。
底库中的数据可以称为底库数据。通常情况下,底库数据是提前采集或者采集好的。
底库数据可以包括以下至少一种数据类型:图像、文字、语音、序列等。
可选地,可以对底库数据进行特征提取得到底库特征,还可以对底库特征进行聚类得到多个聚类中心。也就是说,底库中可以包括多个聚类中心,每个聚类中心可以包括多个底库特征。
可选地,还可以对聚类中心进行进一步细分,也就是说可以设置多个层级的聚类中心。例如可以设置为底库包括多个第一级聚类中心,每个第一级聚类中心又包括多个第二级聚类中心,每个第二级聚类中心又包括多个底库特征。则在检索时可以先检索到距离相近的第一级聚类中心,再从距离相近的第一级聚类中心中找到距离相近的第二级聚类中心,再从距离相近的第二级聚类中心找到距离相近的底库特征。可以通过设置不同的距离阈值来筛选出相应的聚类中心或底库特征。
可选地,可以对底库特征/或聚类中心进行量化编码,例如上文所距离的可以将256个聚类中心的编码用1个字节(byte)表示,这样每个128维的浮点向量只需4字节便可以表示。相当于为聚类中心设置了编号,以及为每个聚类中心中的每个底库特征进行了编号,底库特征的编号中可以看出该底库特征属于哪个聚类中心。
底库中的数据可以包括图像,而当为图像时,该图像可以包括人脸图像、指纹图像、车牌图像、车辆图像、人形图像等等图像中一种或多种图像。底库中的数据可以根据需求进行更新,例如添加、删除或替换其中的数据或数据对应的底库特征向量等。
在一些实现方式中,可以将底库中的每个数据,输入神经网络,进行特征提取,提取得到的特征称为底库特征。该特征提取网络可以采用通用的、用于提取特征的神经网络,也可以是重新设计的、能够提取特征的神经网络。例如,图像库中包含三十万张底库图像时,用于特征提取的神经网络可以包括Resnet50或者VGG16。在另一些实现方式中,可以直接从其他设备或系统,接收或拷贝底库特征。
底库特征的一种表现形式为矩阵,若底库特征对应的矩阵为一维矩阵时,该底库特征的表现形式为向量,该向量可以称为底库特征向量。在一个示例中,一个底库特征向量可以是256维、每一维为一个32位浮点数(fp32)的数据。
如上文所述,底库数据可以为不同的数据类型,当底库数据为图像时,可以称之为底库图像,底库图像可以包括人脸图像、指纹图像、车牌图像、车辆图像或人形图像等等。而底库特征就可以看作是对底库图像进行特征提取之后得到的特征。
可以给底库图像进行编号,即给每张底库图像分配用于标识每张底库图像的索引号。获取底库图像的底库特征之后,也可以给每个底库特征分配索引号,底库特征的索引号可以与对应的底库图像的索引号相同。
可选地,为了检索方便可以使得底库特征的格式与待检索数据特征的格式保持一致。
可选地,当待检索数据特征的格式与底库特征的格式不一致时,可以采用格式转换的 方式使得二者保持一致。
可选地,为了检索方便,还可以使得底库特征的格式与检索神经网络要求的格式一致,若上述获取到的底库特征的格式与检索神经网络的格式不一致,则还需将该底库特征从当前格式(可以称为初始格式)转换为该检索神经网络能够读取的格式(可以称为目标格式)。
402、获取待检索特征,所述待检索特征为待检索数据的特征。
可选地,可以是直接获取待检索特征,也可以是对待检索数据进行特征提取得到待检索特征。例如,通过上文所述特征提取网络对待检索数据进行特征提取,得到待检索数据的特征。待检索数据的特征可以称为待检索特征,待检索特征的一种表现形式为向量,该向量可以称为待检索特征向量。
可选地,可以利用图1中的第一处理器110或第二处理器120或图2中的主CPU 210或图2中的NPU 230来执行步骤402,还可以是利用独立于芯片之外的获取单元执行步骤402,也就是说步骤402的执行主体不存在限定。且步骤401和步骤402的执行主体可以相同也可以不同,此外,步骤401和步骤402的执行不存在顺序限定,可以同时执行也可以不同时执行,且执行先后无限定。还应理解,底库特征和待检索特征可以是已经获取好的,因此,步骤401和步骤402可以不执行,相当于处理器直接对已准备好的数据进行查询、计算、排序等操作。也就是说步骤401和步骤402不是本申请技术方案的必须执行的步骤。
在一个示例中,一个待检索特征向量可以是256维、每一维为一个32位浮点数(fp32)的数据。
待检索数据可以为上文所述任意一种数据类型的数据,当待检索数据为图像时,可以称之为待检索图像,待检索图像可以包括人脸图像、指纹图像、车牌图像、车辆图像或人形图像等等。待检索图像可以是一张,也可以是一批,即多张。
可以给待检索图像进行编号,即给每张待检索图像分配用于标识每张待检索图像的索引号。获取待检索图像的待检索特征之后,也可以给每个待检索特征分配索引号,待检索特征的索引号可以与对应的待检索图像的索引号相同。
403、查询待检索特征与底库特征之间的距离值,生成距离矩阵。
可选地,可以利用图1中的第一处理器110或图2中的主CPU 210来执行步骤403。
可选地,可以通过查询待检索特征与底库中每个底库特征之间的距离值,以距离矩阵,该距离矩阵包括待检索特征与多个底库特征之间的距离值。
可选地,可以通过查询距离表的方式生成上述距离矩阵。需要说明的是,上述是在底库不进行聚类中心划分的情况下,进行一一比对的方式得到距离矩阵,相当于查询包括所有底库特征的距离值的距离表,并从距离表中读出相应的距离值,以及利用这些读出的距离值生成距离矩阵。但应理解,如上文所述,底库中还可以包括多个聚类中心,每个聚类中心中又包括多个底库特征,在这种情况下,可以先计算待检索特征与每个聚类中心之间的距离值,筛选出一部分聚类中心之后,再查询筛选出的聚类中心中的底库特征与待检索特征之间的距离值,相当于只查询筛选出的聚类中心的底库特征的距离表,并从距离表中读出相应的距离值,以及利用这些读出的距离值生成距离矩阵。
可选地,可以获取底库的距离表,然后在执行查询操作时就可以访问该距离表。如果进行了聚类中心的划分,则相当于每个聚类中心都有对应的距离表,在查询操作时只需要 访问筛选出的聚类中心的距离表,也就是说,只有被筛选出的聚类中心中的底库特征的距离值才可能会被访问到。而如果不进行聚类中心的划分,采用一一比对的方式,则相当于整个底库对应一个距离表,在执行查询操作时需要访问该距离表,也就是说,所有底库特征的距离值都有可能被访问到。
可选地,可以先计算待检索特征与聚类中心之间的第二距离,该步骤可以利用第一处理器(例如CPU)或第二处理器(例如NPU 230)执行,但由于该计算为向量运算,因此可以利用第二处理器执行,从而提高运算速率。
可选地,可以从多个聚类中心中选取第二距离最小的K个聚类中心,K为正整数,该步骤可以利用第一处理器(例如CPU)或第二处理器(例如NPU 230)执行。在筛选出该K个聚类中心后,第一处理器执行步骤403,在执行时,为了加快查询速度,可以只查询该K个聚类中心中的底库特征与待检索特征之间的距离值。相当于不再查询其他的聚类中心的底库特征,这样可以有效降低查询的数据量,提高检索速率。但应理解,也可以查询全部聚类中心的底库特征的距离值,这种情况相当于可以查询更彻底,具有更高的检索精度,但由于查询的数据量增大,所以检索速率会降低。
可选地,为了方便第二处理器进行运算,在步骤403生成的距离矩阵可以设置成与第二处理器需要的格式一致。也就是说,在执行步骤403是,将距离矩阵设置为与执行步骤404是相同的格式,方便步骤404的执行。
可选地,CPU在进行查表操作时,需要多次执行加载指令和保存指令,为了降低先写后读的指令延迟,以及减少上述加载和保存指令的执行次数,可以将距离表进行预加载,并且可以将预加载的距离表常驻在CPU的二级缓存中。也就是说,在查询时,需要反复多次的访问距离表,所以通过预加载和常驻的方式使得距离表更便于查询。距离表中存储有上述距离值。
404、将距离矩阵进行累加,得到待检索特征与底库特征之间的第一距离。
可选地,可以利用图1中的第二处理器120或图2中的NPU 230来执行步骤404。
可选地,可以利用第二处理器120中的向量单元121来执行步骤404,在这种情况下,相当于第二处理器120执行向量累加指令,从而完成距离矩阵的累加。在向量累加之后,还可以利用向量单元121执行排序指令,从而得到第一距离最小的M个底库特征作为检索结果,M为正整数。
可选地,还可以利用第二处理器120中的矩阵单元122来执行步骤404,在这种情况下,相当于第二处理器120利用矩阵运算来实现距离矩阵的累加。
可选地,可以将距离矩阵和权重矩阵相乘,通过矩阵乘法来完成累加。矩阵相乘比向量累加方式具有更快地运算速度,且权重矩阵设置好之后可以多次使用,因此不需要频繁加载。
需要说明的是,矩阵运算方式对距离矩阵的数据排布要求,相比于向量运算的要求更高,但格式转换可以在CPU执行查询操作生成距离矩阵的同时完成,没有额外开销。也就是说,在上文所述利用第一处理器将距离矩阵设置为与第二处理器的格式一致的前提下,第二处理器120利用矩阵单元122执行矩阵运算进行距离矩阵的累加时,不会需要额外的处理。且使用矩阵单元进行累加的情况下,可以同时利用向量单元进行排序操作,从而提高算法并行度,使得性能得到进一步提升。
405、根据第一距离,选取第一距离最小的M个所述底库特征作为检索结果,M为正整数。
可选地,可以利用图1中的第一处理器110或第二处理器120或图2中的主CPU 210或图2中的NPU 230来执行步骤405。
本申请的检索方法中,通过将检索算法的步骤合理分配给多种芯片来执行,从而能够发挥不同种类芯片的优势,提高检索效率。
图5是本申请实施例的检索装置的示意性结构图。该检索装置500包括第一处理器510和第二处理器520。
可选地,该装置500可以为芯片,可以称之为检索芯片,该检索芯片可以包括第一芯片和第二芯片,其中,第一芯片与第一处理器510对应,为CPU芯片,第二芯片与第二处理器对应,为NPU芯片。
该装置500可以实现上文所述的检索方法。例如,第一处理器510可以用于执行图3所示步骤301,第二处理器520可以用于执行图3所示步骤302。又例如,第一处理器510可以用于执行图4所示步骤403,第二处理器520可以用于执行图4所示步骤404,第一处理器510和第二处理器520均可以用于执行图4所示步骤401、402、405。
可选地,第一处理器510可以对应于图1所示第一处理器110,也可以对应于图2所示主CPU 210。
可选地,第二处理器520可以对应于图1所示第二处理器120,也可以对应于图2所示NPU 230。
可选地,检索装置500还可以包括存储模块530,存储模块530可以是集成在第一处理器510中,也可以集成在第二处理器520中,还可以是独立于第一处理器510和第二处理器520之外的检索装置500中的装置,还可以是独立于检索装置500之外的装置。
可选地,存储模块530可以对应于图1所示存储模块130,也可以对应于图2所示存储器220。
图6是本申请实施例的检索装置的示意性结构图。如图6所示,装置3000包括存储器3001、处理器3002和通信接口3003。装置3000的一种示例为芯片。装置3000的另一种示例为计算设备。
存储器3001、处理器3002和通信接口3003之间可以通过总线3004通信。存储器3001中存储有可执行代码,处理器3002读取存储器3001中的可执行代码以执行对应的方法。存储器3001中还可以包括操作系统等其他运行进程所需的软件模块。操作系统可以为LINUX
TM,UNIX
TM,WINDOWS
TM等。
例如,存储器3001中的可执行代码用于实现3所示的方法,处理器3002读取存储器3001中的该可执行代码以执行上文所述检索的方法。
其中,处理器3002可以包括CPU和NPU,或者,处理器3002的示例性结构如图1或图2所示。存储器3001可以包括易失性存储器(volatile memory),例如随机存取存储器(random access memory,RAM)。存储器3001还可以包括非易失性存储器(2non-volatile memory,2NVM),例如只读存储器(2read-only memory,2ROM),快闪存储器,硬盘驱动器(hard disk drive,HDD)或固态启动器(solid state disk,SSD)。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及 算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(read-only memory,ROM)、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (14)
- 一种检索装置,其特征在于,包括:第一处理器,用于执行检索过程中的查表操作,所述第一处理器为通用中央处理器CPU;第二处理器,用于执行所述检索过程中的矩阵/向量运算,所述第二处理器为神经网络处理器NPU。
- 如权利要求1所述的检索装置,其特征在于,所述查表操作具体包括:查询待检索特征与底库中的多个底库特征之间的距离值,生成所述待检索特征与所述多个底库特征的距离矩阵,所述待检索特征用于表示待检索数据的特征,所述底库特征为所述底库中的数据的特征;所述矩阵/向量运算具体包括:将所述距离矩阵进行累加,得到所述待检索特征与所述多个底库特征中的每个底库特征之间的第一距离。
- 如权利要求2所述的检索装置,其特征在于,所述第一处理器还用于:将所述距离矩阵的格式设置为与所述第二处理器需要的格式一致。
- 如权利要求2或3所述的检索装置,其特征在于,所述第一处理器或所述第二处理器用于:根据所述第一距离,选取所述第一距离最小的M个所述底库特征作为检索结果,M为正整数。
- 如权利要求2至4中任一项所述的检索装置,其特征在于,所述底库还包括多个聚类中心,所述多个聚类中心中的每个聚类中心包括多个所述底库特征,所述第二处理器芯处理器还用于,计算所述待检索特征与所述多个聚类中心之间的第二距离;所述第一处理器或所述第二处理器还用于,从所述多个聚类中心中选取所述第二距离最小的K个聚类中心,K为正整数;所述第一处理器具体用于,查询所述待检索特征与所述K个聚类中心中的多个底库特征之间的距离值以生成所述距离矩阵。
- 如权利要求2至5中任一项所述的检索装置,其特征在于,所述矩阵/向量运算具体包括:将所述距离矩阵与权重矩阵相乘,得到所述第一距离,所述权重矩阵是根据所述底库特征设置的。
- 一种检索方法,其特征在于,包括:利用第一处理器执行检索过程中的查表操作,所述第一处理器为通用中央处理器CPU;利用第二处理器执行所述检索过程中的矩阵/向量运算,所述第二处理器为神经网络处理器NPU。
- 如权利要求7所述的检索方法,其特征在于,所述查表操作具体包括:查询待检索特征与底库中的多个底库特征之间的距离值,生成所述待检索特征与所述多个底库特征的距离矩阵,所述待检索特征用于表示待检索数据的特征,所述底库特征为所述底库中的 数据的特征;所述矩阵/向量运算具体包括:将所述距离矩阵进行累加,得到所述待检索特征与所述多个底库特征中的每个底库特征之间的第一距离。
- 如权利要求8所述的检索方法,其特征在于,所述检索方法还包括:所述第一处理器将所述距离矩阵的格式设置为与所述第二处理器需要的格式一致。
- 如权利要求8或9所述的检索方法,其特征在于,所述方法还包括:所述第一处理器或所述第二处理器根据所述第一距离,选取所述第一距离最小的M个所述底库特征作为检索结果,M为正整数。
- 如权利要求8至10中任一项所述的检索方法,其特征在于,所述底库还包括多个聚类中心,所述多个聚类中心中的每个聚类中心包括多个所述底库特征,所述检索方法还包括:所述第二处理器计算所述待检索特征与所述多个聚类中心之间的第二距离;所述第一处理器或所述第二处理器从所述多个聚类中心中选取所述第二距离最小的K个聚类中心,K为正整数;所述第一处理器查询所述待检索特征与所述K个聚类中心中的多个底库特征之间的距离值,以生成所述距离矩阵。
- 如权利要求8至11中任一项所述的检索方法,其特征在于,所述检索过程中的矩阵/向量运算,包括:将所述距离矩阵与权重矩阵相乘,得到所述第一距离,所述权重矩阵是根据所述底库特征设置的。
- 一种检索装置,其特征在于,包括:存储器,用于存储指令;与所述存储器耦合的处理器,用于执行所述存储器中存储的指令,以使得所述装置执行如权利要求7至12中任一项所述的检索方法。
- 一种计算机可读介质,其特征在于,包括指令,当所述指令在处理器上运行时,使得所述处理器执行如权利要求7至12中任一项所述的检索方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2020/123697 WO2022087785A1 (zh) | 2020-10-26 | 2020-10-26 | 检索装置和检索方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116547647A true CN116547647A (zh) | 2023-08-04 |
Family
ID=81381563
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202080106451.7A Pending CN116547647A (zh) | 2020-10-26 | 2020-10-26 | 检索装置和检索方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN116547647A (zh) |
WO (1) | WO2022087785A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116595233A (zh) * | 2023-06-02 | 2023-08-15 | 上海爱可生信息技术股份有限公司 | 基于npu的向量数据库检索处理加速方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6785841B2 (en) * | 2000-12-14 | 2004-08-31 | International Business Machines Corporation | Processor with redundant logic |
CN110503195A (zh) * | 2019-08-14 | 2019-11-26 | 北京中科寒武纪科技有限公司 | 利用人工智能处理器执行任务的方法及其相关产品 |
CN110633153A (zh) * | 2019-09-24 | 2019-12-31 | 上海寒武纪信息科技有限公司 | 一种用多核处理器实现神经网络模型拆分方法及相关产品 |
-
2020
- 2020-10-26 CN CN202080106451.7A patent/CN116547647A/zh active Pending
- 2020-10-26 WO PCT/CN2020/123697 patent/WO2022087785A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2022087785A1 (zh) | 2022-05-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Jin et al. | Density sensitive hashing | |
Norouzi et al. | Fast exact search in hamming space with multi-index hashing | |
Pan et al. | Fast GPU-based locality sensitive hashing for k-nearest neighbor computation | |
Muja et al. | Scalable nearest neighbor algorithms for high dimensional data | |
Chen et al. | Parallel spectral clustering in distributed systems | |
Lee et al. | Application codesign of near-data processing for similarity search | |
Zhang et al. | QsRank: Query-sensitive hash code ranking for efficient∊-neighbor search | |
EP3077928A1 (en) | Systems and methods of modeling object networks | |
Li et al. | I/O efficient approximate nearest neighbour search based on learned functions | |
Gupta et al. | Thrifty: Training with hyperdimensional computing across flash hierarchy | |
Eghbali et al. | Online nearest neighbor search using hamming weight trees | |
Lee et al. | Anna: Specialized architecture for approximate nearest neighbor search | |
CN108027816B (zh) | 数据管理系统、数据管理方法及记录介质 | |
Wang et al. | Lider: An efficient high-dimensional learned index for large-scale dense passage retrieval | |
CN115878824B (zh) | 图像检索系统、方法和装置 | |
CN116547647A (zh) | 检索装置和检索方法 | |
WO2021168815A1 (zh) | 图像检索方法和图像检索装置 | |
Gupta et al. | Store-n-learn: Classification and clustering with hyperdimensional computing across flash hierarchy | |
Cicek et al. | Energy efficient boosting of GEMM accelerators for DNN via reuse | |
Amorim et al. | A fast similarity search knn for textual datasets | |
Chiu et al. | Approximate asymmetric search for binary embedding codes | |
Zhang et al. | Zoom: Ssd-based vector search for optimizing accuracy, latency and memory | |
Yan et al. | Fast approximate matching of binary codes with distinctive bits | |
Fu et al. | Nokmeans: Non-orthogonal k-means hashing | |
Kalantidis et al. | Loh and behold: Web-scale visual search, recommendation and clustering using locally optimized hashing |
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 |