图像检索系统、方法和装置与流程

文档序号:33703858发布日期:2023-03-31 20:45阅读:33来源:国知局
图像检索系统、方法和装置与流程

1.本技术涉及计算机领域,尤其涉及一种图像检索系统、方法和装置。


背景技术:

2.随着计算机技术的发展,图像检索技术也逐渐成为研究的热点,应用场景也越来越广泛,例如,在商品图像搜索功能中,基于用户提供的图像在图库中搜索,找到同款或相似的商品,进而将找到的商品推荐给用户;或者,在版权判定的搜索服务中,以图像为检索对象,在海量的图库中查找相同或相似图像,进而判定检索对象是否存在侵权问题。
3.传统的图像检索过程,通常是由提供图像检索功能的中央处理器(central processing unit,cpu)直接根据用户检索请求,将图库中图像加载至主存(main memory),然后,比对查询图像和图库中的图像的相似度,进而确定与查询图像相同或相似的图像。但是,当图库中包括海量数据时,由于cpu执行图像检索的过程中需要执行数据处理和距离计算等操作,过程复杂,耗时长,无法满足图像检索的实时需求。因此,如何提供一种高效的图像检索方法成为亟待解决的技术问题。


技术实现要素:

4.本技术提供了一种图像检索的方法,由包括多个计算引擎的异构系统执行图像检索操作,以“专人专事”的思路执行图像检索中各个操作过程,避免使用单一cpu执行图像检索过程所带来的处理复杂、耗时长的问题,以此提升图像检索的效率。
5.第一方面,提供一种图像检索系统,该系统包括用于获取待检索图像的接口和包括第一计算引擎和第二计算引擎的计算引擎集合,其中,第一计算引擎用于计算待检索图像与图库所包含的多个图像之间的相似度;第二计算引擎用于根据待检索图像与图库所包含的多个图像之间的相似度确定检索结果,检索结果包括与待检索图像相似的目标图像。通过上述图像检索系统,可以利用计算引擎集合执行图像检索操作,进而根据待检索图像和图库中图像的相似度确定检索结果,避免由单一cpu执行图像检索操作所带来的耗时长、效率低的问题。
6.在一种可能的实现方式中,待检索图像与图库所包含的多个图像之间的相似度是根据待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离获得的。或者,待检索图像与图库所包含的多个图像之间的相似度是指待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。本技术所要保护的图像检索系统中,利用向量间的距离衡量图像的相似度,进而确定与待检索图像匹配的图像。
7.在另一种可能的实现方式中,在图像检索处理的过程中,第一计算引擎具体用于将查询向量转换为查询矩阵,将中心向量转换为中心矩阵,根据查询矩阵和中心矩阵获得距离表,其中,距离表用于确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。第一计算引擎可以用于处理矩阵相关计算,在计算向量间距离的过程中,可以将距离计算过程映射为矩阵处理过程,进而由专用的第一计算引擎完成矩阵的相关处理,
提升距离计算过程的速度,进而提升整个图像检索过程的处理效率。
8.在另一种可能的实现方式中,图像检索系统还包括共享内存,该共享内存与第一计算引擎之间通过内部总线连接;第一计算引擎还用于通过内部总线将距离表存储至共享内存。通过在图像检索系统中添加共享内存,第一计算引擎和第二计算引擎可以通过共享的方式访问该存储介质中数据,例如,第一计算引擎可以将距离表存储在共享内存中,第二计算引擎可以从共享内存中获取距离表,并基于该距离表完成图像检索的其他处理操作,避免使用图像检索系统以外的存储介质存储距离表所带来的访存速度慢以及缓存失效(cache miss)问题,进一步提升图像检索的速度。
9.在另一种可能的实现方式中,共享内存与第二计算引擎之间通过内部总线连接;第二计算引擎具体用于从共享内存中获取距离表;根据距离表确定图库中是否包含与所述待检索图像相似的目标图像。由于第一计算引擎和第二计算引擎均可以访问共享内存,第二计算引擎可以从共享内存获取距离表,并基于距离表执行后续处理,避免从主机系统的内存中获取数据所带来的缓存失效(cache miss)导致耗时长的问题,加快数据处理的速度。
10.在另一种可能的实现方式中,图像检索系统还包括第三计算引擎,第三计算引擎,用于获取图库中图像所对应的索引清单,其中,第三计算引擎也可以称为直接内存访问引擎,用于通过直接内存访问的方式获取主机系统连接的内存中数据;第二计算引擎具体用于根据距离表和索引清单获得距离矩阵,距离矩阵用于指示索引清单中每个索引所关联的距离值;根据距离矩阵确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。第二计算引擎可以根据距离表和索引清单计算向量之间的相似度,确定与待检索图像匹配的图像。而且,将距离表和索引清单存储在共享内存中,可以加快生成距离矩阵过程中需要随机读的处理速度,提升数据处理的效率。
11.在另一种可能的实现方式中,第二计算引擎具体用于根据距离矩阵确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离的排序结果确定检索结果。距离矩阵用于标识待检索图像的每个分段和中心向量的对应分段的距离,根据距离矩阵可以进一步确定待检索图像的查询向量和中心向量之间的距离,进而对该距离进行排序,最终确定检索结果。
12.在另一种可能的实现方式中,第二计算引擎具体用于根据预设阈值确定所述检索结果,所述检索结果所包括的图像所关联的向量与所述查询向量的距离满足预设条件,所述预设条件包括图像所关联的向量与所述查询向量的距离大于或等于所述预设阈值,或者,图像所关联的向量与所述查询向量的距离小于所述预设阈值。除了通过排序方式获得检索结果外,还可以通过预设阈值确定一个或多个满足条件的图像作为检索结果,也可以查找到与待检索图像匹配的检索结果。
13.在另一种可能的实现方式中,图像检索系统为芯片或pcie卡,第一计算引擎和第二计算引擎通过内部总线相连。通过使用内部总线的连接方式,使得第一计算引擎和第二计算引擎之间的数据传输路径更短,数据传输速度更快。
14.在另一种可能的实现方式中,计算引擎集合中第一计算引擎和第二计算引擎分别为逻辑电路。通过使用专用逻辑电路构建的第一计算引擎和第二计算引擎,可以针对不同类型的运算操作使用不同的硬件引擎,更快完成数据处理。
15.在另一种可能的实现方式中,系统为虚拟化系统,计算引擎集合中第一计算引擎和第二计算引擎分别为运行在虚拟化系统中设备的虚拟机或容器。除了使用硬件电路构建的硬件引擎实现上述专用矩阵、向量和标量的运算外,还可以使用虚拟化形式的虚拟机或容器实现各个硬件引擎的功能,那么,在数据中心中也可以实现本技术所提供的高效的图像检索方法。
16.在另一种可能的实现方式中,待检索图像来自检索请求,检索请求包括至少一个待检索图像,或者,检索请求包括待检索视频,所述待检索视频包括至少一帧待检索图像。本技术可以针对图像检索处理外,还是适用于视频检索过程,其中,每帧图像可以分别按照上述图像检索过程执行,也可以通过计算引擎集合快速获得检索结果。
17.第二方面,本技术提供一种图像检索的方法,该方法适用于图像检索系统,图像检索系统包括接口和计算引擎集合,计算引擎集合包括第一计算引擎和第二计算引擎。具体检索过程包括:第一计算引擎计算待检索图像与图库所包含的多个图像之间的相似度;第二计算引擎根据待检索图像与图库所包含的多个图像之间的相似度确定检索结果,检索结果包括图库中是否包含与待检索图像相似的目标图像。
18.在一种可能的实现方式中,待检索图像与图库所包含的多个图像之间的相似度是根据待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离获得的。或者,待检索图像与图库所包含的多个图像之间的相似度是指待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。本技术所要保护的图像检索系统中,利用向量间的距离衡量图像的相似度,进而确定与待检索图像匹配的图像。
19.在另一种可能的实现方式中,在图像检索处理的过程中,第一计算引擎将查询向量转换为查询矩阵,将中心向量转换为中心矩阵,根据查询矩阵和中心矩阵获得距离表,其中,距离表用于确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。第一计算引擎可以用于处理矩阵相关计算,在计算向量间距离的过程中,可以将距离计算过程转换为矩阵处理过程,进而由专用的第一计算引擎完成矩阵的相关处理,提升距离计算过程的速度,进而提升整个图像检索过程的处理效率。
20.在另一种可能的实现方式中,图像检索系统还包括共享内存,该共享内存与第一计算引擎之间通过内部总线连接;第一计算引擎通过内部总线将距离表存储至共享内存。通过在图像检索系统中添加共享内存,第一计算引擎和第二计算引擎可以通过共享的方式访问该存储介质中数据,例如,第一计算引擎可以将距离表存储在共享内存中,第二计算引擎可以从共享内存中获取距离表,并基于该距离表完成图像检索的其他处理操作,避免使用图像检索系统以外的存储介质存储距离表所带来的访问速度慢,处理复杂的问题。
21.在另一种可能的实现方式中,共享内存与第二计算引擎之间通过内部总线连接;第二计算引擎从共享内存中获取距离表;根据距离表确定图库中是否包含与所述待检索图像相似的目标图像。由于第一计算引擎和第二计算引擎均可以访问共享内存,第二计算引擎可以从共享内存获取距离表,并基于距离表执行后续处理,避免从主机系统的内存中获取数据所带来的缓存失效(cache miss)导致耗时长的问题,加快数据处理的速度。
22.在另一种可能的实现方式中,图像检索系统还包括第三计算引擎,第三计算引擎,可以获取图库中图像所对应的索引清单,其中,第三计算引擎也可以称为直接内存访问引擎,用于通过直接内存访问的方式获取主机系统连接的内存中数据;第二计算引擎根据距
离表和索引清单获得距离矩阵,距离矩阵用于指示索引清单中每个索引所关联的距离值;根据距离矩阵确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离。第二计算引擎可以根据距离表和索引清单计算向量之间的相似度,确定与待检索图像匹配的图像。
23.在另一种可能的实现方式中,第二计算引擎根据距离矩阵确定待检索图像所对应的查询向量与多个图像对应的中心向量之间的距离的排序结果确定检索结果。距离矩阵用于标识待检索图像的每个分段和中心向量的对应分段的距离,根据距离矩阵可以进一步确定待检索图像的查询向量和中心向量之间的距离,进而对该距离进行排序,最终确定检索结果。
24.在另一种可能的实现方式中,第二计算引擎具体用于根据预设阈值确定所述检索结果,所述检索结果所包括的图像所关联的向量与所述查询向量的距离满足预设条件,所述预设条件包括图像所关联的向量与所述查询向量的距离大于或等于所述预设阈值,或者,图像所关联的向量与所述查询向量的距离小于所述预设阈值。除了通过排序方式获得检索结果外,还可以通过预设阈值确定一个或多个满足条件的图像作为检索结果,也可以查找到与待检索图像匹配的检索结果。
25.在另一种可能的实现方式中,图像检索系统为芯片或pcie卡,第一计算引擎和第二计算引擎通过内部总线相连。
26.在另一种可能的实现方式中,计算引擎集合中第一计算引擎和第二计算引擎分别为逻辑电路。
27.在另一种可能的实现方式中,图像检索系统为虚拟化系统,计算引擎集合中第一计算引擎和第二计算引擎分别为运行在虚拟化系统中设备的虚拟机或容器。
28.在另一种可能的实现方式中,待检索图像来自检索请求,检索请求包括至少一个待检索图像,或者,检索请求包括待检索视频,所述待检索视频包括至少一帧待检索图像。本技术可以针对图像检索处理外,还是适用于视频检索过程,其中,每帧图像可以分别按照上述图像检索过程执行,也可以通过计算引擎集合快速获得检索结果。
29.第三方面,本技术提供一种图像检索的装置,所述装置包括用于执行第二方面或第二方面任一种可能实现方式中的图像检索的方法的各个模块。
30.第四方面,本技术提供一种数据处理系统,该数据处理系统包括主机系统和图像检索系统,主机系统和图像检索系统通过网络进行通信,主机系统用于获取检索请求,并根据检索请求确定检索图像,并将该检索图像发送至图像检索系统,图像检索系统用于执行第一方面或第一方面任意一种可能的实现方式中图像检索系统中各个计算引擎所实现的功能。
31.第四方面,本技术提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
32.第五方面,本技术提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述各方面所述的方法。
33.本技术在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
34.图1为本技术提供的一种乘积量化处理的方法的流程示意图;
35.图2为本技术提供的一种数据处理系统100的架构示意图;
36.图3为本技术提供的一种图像检索方法的流程示意图;
37.图4为本技术提供的另一种图像检索方法的流程示意图;
38.图5为本技术提供的一种计算距离表的方法的流程示意图;
39.图6为本技术提供的另一种计算距离表的方法的流程示意图;
40.图7为本技术提供的一种计算距离矩阵的方法的流程示意图;
41.图8为本技术提供的另一种计算距离矩阵的方法的流程示意图;
42.图9为本技术提供的一种计算累加向量的方法的流程示意图;
43.图10为本技术提供的另一种计算距离矩阵的方法的流程示意图;
44.图11为本技术提供的一种并行处理流程的示意图;
45.图12为本技术提供的一种图像检索的装置600的架构示意图。
具体实施方式
46.为了便于理解,首先对本实施例中涉及的术语进行解释。
47.图像检索(image search),是指在图库(也可以称为底库、样本库或待检索库)中查找与用户输入的查询图像匹配的图像的过程。通常地,图像检索基于深度学习(deep learning)与图像识别技术,结合不同应用业务和行业场景,利用特征向量化与搜索能力,从指定图库中搜索相同或相似的图像。其中,图库中每个图像和查询图像均可以利用特征数据表示,图像的向量可以根据特征提取模型(例如,深度学习的特征提取模型resnet)获得,同一图像的特征数据包括至少一个特征向量(也可以称为向量),每个向量可以用一个多维数组表示,例如,向量1可以利用(a,b,c)表示,a,b,c为浮点数。上述图像检索的过程也可以理解为是基于图像的特征数据的检索处理过程。值得说明的是,为便于描述,本技术的以下实施方式中以每个图像的特征数据为一个特征向量为例进行说明。
48.长特征,是根据特征提取模型获得的图像的特征数据,也称为长特征数据,或称为未编码数据、长编码数据、原始特征数据,每个图像会获得一个长特征。
49.短特征,是指由人工智能(artificial intelligent,ai)特征训练平台根据模型训练后,将长特征分解所获得的数据,也称为短特征数据,或称为编码数据、短编码数据。通常地,可以采用乘积量化(product quantization,pq)方法将长特征转化为短特征,乘积量化方法是一种加快检索的方法。
50.示例地,图1为本技术实施例提供的一种乘积量化处理的方法的流程示意图,如图所示,以1个图像的长特征转化为短特征的过程为例,先将长特征分段,每个分段有一个分段序号,且该分段序号在该分段中唯一。例如,将包括512维的长特征分为64段,每段包括8个特征向量f,分段序号分别为0至7;然后,通过与预先训练获得的k个聚类中心向量的距离计算,在每个分段中确定与预先训练获得的k个聚类中心向量的距离最近的特征向量,并以该特征向量的分段序号作为该分段的短特征的标识。其中,k是预置的聚类中心的数量,k为大于或等于2的正整数。具体地,预先训练获得的k个聚类中心向量可以是以图库中全部或部分图像的长特征为训练数据,采用聚类算法(例如,k-means算法)获得k个聚类,每个聚类
包括一个聚类中心,用于标识该聚类中心的向量称为聚类中心向量(也可以称为中心向量)。例如,在包括f0至f7的分段1中,f1是与k个聚类中心向量的距离最近的特征向量,则可以利用f1的分段序号1标识分段1,即短特征中可以以1标识分段1。长特征中每个分段经过上述距离计算和比较后,均可以用一个分段中特征向量的序号标识该分段。上述乘积量化过程也可以理解为一种简化图库中图像的长特征的记录方式,通过每个分段中向量和中心向量的距离计算,构建原始特征的索引。用于标识图库中所有图像的长特征的各个分段的标识的集合称为短特征清单(也可以称为索引清单),短特征清单中各个短特征的顺序与长特征的分段顺序相同。后续图像检索处理过程为基于该短特征所执行检索处理。
51.下面结合图2进一步介绍本技术提供的数据处理系统100,如图所示,该处理系统100包括主机系统10、异构系统20(也可以称为图像检索系统)、第一存储器30和接口总线40,其中,主机系统10、异构系统20、第一存储器30通过接口总线40相连。其中,接口总线40包括快捷外围部件互连标准(peripheral component interconnect express,pcie),异构系统20可以是一个芯片,也可以是一个pcie卡。
52.主机系统10,用于向主机系统10中运行的应用程序或主机系统10外部的其他系统、设备或应用程序提供应用编程接口(application programming interface,api)或图像检索框架,该应用程序接口或图像检索框架,用于接收用户的检索请求,该检索请求包括待检索图像;进而通过接口总线40将检索请求发送给异构系统20,由异构系统20完成检索请求的处理,例如,获取检索请求中待检索图像所关联的查询向量。可选地,也可以是主机系统完成检索请求的处理,获取待检索图像所关联的查询向量。此外,主机系统10还用于运行操作系统。主机系统10包括处理器101,处理器101可以是中央处理器(central processing unit,cpu)。
53.异构系统20,用于在图库中检索与查询图像相同或相似的图像。异构系统20包括两种或两种以上的计算引擎,例如,如图2所示,异构系统20包括矩阵计算引擎201、向量计算引擎202、标量计算引擎203、内部总线206和接口207。可选地,异构系统20还包括直接内存访问(direct memory access,dma)引擎204、第二存储器205。其中,矩阵计算引擎201、向量计算引擎202、标量计算引擎203、直接内存访问(direct memory access,dma)引擎204、第二存储器205和接口207通过内部总线206相通信,其中,内部总线206可以为并行总线,用于实现点对点(point-to-point,p2p)通信;内部也可以为包括pcie或前置总线(front side bus,fsb)或其他形式可以实现各个部件连接的方式。
54.为了便于描述,也可以将矩阵计算引擎201称为第一计算引擎,将向量计算引擎202和标量计算引擎203称为第二计算引擎,将直接内存访问引擎204称为第三计算引擎,将第二存储器205称为共享内存。
55.作为一种可能的实施例,第一存储器30和第二存储器205为两个不同存储器。可选地,第一存储器30和第二存储器205还可以是通过内存映射输入/输出(memory mapped input/output,mmio)技术建立映射关系的不同存储器;或者,第一存储器30和第二存储器205也可以是同一存储器。
56.矩阵计算引擎201,用于实现矩阵相关运算处理,包括矩阵乘和其他涉及矩阵的运算过程,例如,图3中s201计算距离表。向量计算引擎202,用于实现向量相关计算,包括向量累加等涉及向量的运算过程,例如,图3中s204累加距离向量获得向量间的距离结果。标量
计算引擎203,用于执行标量相关运算,包括查询短特征清单和距离表,进而生成距离矩阵,以及对矩阵距离计算后的结果进行排序的操作。例如,图3中s202遍历短特征清单、s203生成距离矩阵和s205排序;其中,标量是指只有大小的,无方向的量。直接内存访问引擎204,用于采用直接内存访问技术,将短特征清单从第一存储器20加载至第二存储器205,异构系统中各个计算引擎可以快速获取短特征清单中内容,进而完成相应处理操作。第二存储器205,用于为矩阵计算引擎201、向量计算引擎202、标量计算引擎203、直接内存访问引擎204提供共享形式的存储区域。
57.上述矩阵计算引擎201、向量计算引擎202、标量计算引擎203、直接内存访问引擎204可以分别由一种具有特定功能的硬件电路实现。例如,每个计算引擎分别由芯片或由电子元器件构建的电路结构组成,用于对数据执行计算处理。本实施例以矩阵计算引擎201为例进行说明,矩阵计算引擎201具有cpu的通用性和可编程性,但更具有专用性,可以高效执行相关运算,例如,矩阵相关运算。矩阵计算引擎201可以被替换成图形处理单元(graphics processing unit,gpu)、嵌入式神经网络处理器(neural-network processing units,npu)等处理芯片。
58.可选地,矩阵计算引擎201、向量计算引擎202、标量计算引擎203、直接内存访问引擎204也可以分别是由软件模块实现,或者,软件和硬件混合的方式构成。可选地,上述各个计算引擎也可以合一或部分合一部署,例如,将矩阵计算引擎201、向量计算引擎202和向量计算引擎203合一部署,用于实现矩阵类运算和向量类运算处理。
59.作为一种可能的实施例,图2所示的异构系统还可以以软件方式实现,例如,异构系统是虚拟化系统,其中,矩阵计算引擎201、向量计算引擎202、标量计算引擎203、直接内存访问引擎204可以由虚拟机或容器等虚拟化形式的计算设备实现,此时,异构系统通过网络与主机系统相连,该网络可以是以太网、光纤网络、无线网络等形式实现主机系统和异构系统的通信。虚拟化系统中包括一个或多个设备,每个设备中包括分别用于实现相应计算功能的逻辑电路或器件,例如,该设备中可以包括上述pcie卡或芯片,此时,各个计算引擎是对带有上述pcie卡或芯片的设备虚拟化后获得的一个或多个虚拟机或容器实现。例如,虚拟化系统包括带有实现矩阵计算引擎功能的器件(例如,gpu)的设备,通过对该设备的资源虚拟化后获得带有虚拟图形处理器(virtual gpu,vgpu)的多个虚拟机或容器,每个虚拟机或容器分别用于实现上述各个计算引擎的功能。
60.为了便于描述,以下实施例以图2所示的数据处理系统100为例进一步解释本技术提供的图像检索方法,其中,异构系统20可以通过接口207从主机系统10获取待检索图像,确定待检索图像与图库中图像的相似度,再根据相似度的计算结果确定待检索图像的检索结果。在上述图像检索过程中,异构系统20可以采用“专人专事”的思路,参见图3,在异构系统20中使用不同类型的计算引擎分别执行s201距离表计算、s202遍历短特征清单、s203生成距离矩阵、s204累加距离向量和s205排序的操作,进而确定检索结果,检索结果包括与待检索图像相似的图像(也称为目标图像)。由此实现针对不同运算操作的类型分别采用不同计算引擎执行处理的过程,提升数据处理的效率。
61.接下来,结合附图进一步介绍本技术提供的图像检索方法,图4为本技术提供的一种图像检索的方法的流程示意图,如图所示,该方法包括:
62.s401、矩阵计算引擎根据检索请求中待检索图像所对应的查询向量和图库中的中
心向量确定距离表。
63.为了加快海量数据的检索速度,在执行图像检索前,图2所示的主机系统10或系统100以外的其他设备或系统预先通过特征提取模型获得图库中图像的长特征;并以图库中全部或部分数据为训练样本,利用聚类算法获得k个聚类中心,每个聚类中心包括一个中心向量(也可以称为乘积量化聚类中心向量),每个中心向量包括与长特征中分段数相同个数的向量,每个向量可以用一个多维数组表示。示例地,如图4中,图库中图像的长特征经过乘积量化和聚类处理后获得k个中心向量1至中心向量k,每个中心向量包括m个分段,其中,m为长特征的分段数量,例如,中心向量1包括向量11至向量1m。然后,参考图1所示的过程,对图库中各个图像的长特征执行乘积量化处理,创建短特征清单。
64.在获取检索请求时,可以先获取检索请求中待检索图像,然后,对待检索图像执行预处理操作,包括:利用与图库中图像预处理过程相同的特征提取模型获取待检索图像的长特征,然后,将待检索图像的长特征分成m段,其中,m为图库中执行乘积量化处理时对长特征的分段数相同,例如,图4中将查询向量1分成向量1至向量m。
65.值得说明的是,上述对检索图像的预处理过程可以由异构系统执行,也可以由主机系统或其他设备或系统执行,并将预处理的结果发送给异构系统,由异构系统执行图像的进一步处理。此外,本技术并不限定上述聚类处理和特征提取模型的具体处理过程,具体实施中,可以根据业务需求选择合适的算法执行聚类和图像特征提取处理。
66.进一步地,为了在图库中确定与查询向量相似的向量,需要确定查询向量和图库的各个中心向量的相似度。具体地,可以以查询向量中每个分段分别作为检索对象,分别计算该检索对象对应的分段的向量与k个中心向量中对应分段的各个向量的距离,进而根据上述距离计算结果获得距离表。示例地,图5为本技术实施例提供的一种距离计算方法的流程示意图,如图所示,计算查询向量1的分段1的向量11和中心向量1的分段1的向量11的距离获得d11,则d11用于指示查询向量的分段1所指示的向量11与中心向量1的分段1所指示的向量11的距离。
67.具体地,可以采用如下方式中任意一种方式计算两个向量间的距离:
68.方式1,可以采用如下公式1计算两个向量间的距离:
[0069][0070]
其中,x1为查询向量,x
1k
为查询向量的第k个分段向量;x2为图库中待比较的中心向量,x
2k
为中心向量中第k个分段,k取值从1至n的整数,n为大于1的正整数。
[0071]
方式2,还可以在公式1基础上,对公式1的等号两边执行开根号运算,即采用如下公
[0072]
式2计算两个向量间的距离:
[0073][0074]
方式3,还可以在公式2基础上去除开根号运算,采用如下公式3计算两个向量间的距离:
[0075][0076]
方式4,由于公式2中第1项对于所有查询向量的分段所对应的向量的累加结果,对于查询向量中任意一个分段所指示的向量和中心向量中任意一个分段的向量计算距离的过程而言,该值均相同,在距离计算过程中也可以将该值理解为一个常量,也即在任意两个向量的距离计算过程中均包括该项的计算结果,因此,为了简化计算过程,可以在距离计算公式中去掉该项。具体可以采用如下公式4计算两个向量的距离:
[0077][0078]
进一步地,为了简化距离计算的处理过程,也可以将上述公式的计算过程转换为矩阵计算的过程,进而使用矩阵计算引擎执行矩阵计算,避免逐个获取数据,以及执行运算操作所带来的时延和效率问题。
[0079]
具体地,将查询向量按照分段序号转化为行矩阵,例如,按照查询向量中分段序号分别将查询向量的各个分段所对应的向量分别作为第一矩阵中的行元素;将中心向量按照分段序号转换为列矩阵,例如,按照每个中心向量的分段序号,分别将每个中心向量的各个分段所对应的向量作为第二矩阵中一列的元素,进而由矩阵计算引擎执行矩阵相关运算操作,提升数据处理的效率。为了便于描述,也可以将上述行矩阵称为第一矩阵,列矩阵称为第二矩阵。
[0080]
示例地,参考图6,以查询向量1和中心向量1矩阵映射过程为例,首先,按照查询向量1的分段序号,分别以查询向量1中每个分段的向量作为第一矩阵中一行的元素,如将查询向量11作为第一矩阵中第一行的元素,
……
,依此类推,第一矩阵为m*1的矩阵,每个分段分别作为第一矩阵的一行的元素;按照中心向量1的分段序号,依次将中心向量1的各个分段的向量分别作为第二矩阵中一列的元素,
……
,依此类推,第二矩阵为1*m的列矩阵,每个分段分别作为第二矩阵的一列的元素。此时,在利用如上述公式4计算查询向量1和中心向量1的距离时,则可以执行第一矩阵和第二矩阵的乘操作,再将上述矩阵乘的结果乘以2即可获得公式4中第2项的结果。进一步地,公式4中第一项是对中心向量1中各个分段的累加操作,可以预先计算第1项的结果,分别获取每个中心向量的相同分段序号的向量的累加和,并将各个累加和分别作为第三矩阵的一个列元素。进而将上述公式4的计算过程转换为如图5所示的第一矩阵和第二矩阵相乘,再将相乘获得的结果与第三矩阵进行累加,即可获得公式4的距离计算结果。
[0081]
值得说明的是,图6中第三矩阵也可以称为偏移矩阵,虽然图5中是将第一矩阵和第二矩阵相乘的结果与第三矩阵进行相加获得上述距离公式的结果,但是,具体实施中,为了简化运算过程,加快数据处理效率,也可以将矩阵相乘获得的矩阵中所有元素均乘以-1,再执行与第三矩阵的相加操作,进而获得公式4的处理结果。
[0082]
可选地,除了上述公式4以外,公式1至公式3也可以采用类似的思路,将各个公式按照分段序号作为矩阵的行元素或列元素,进而将距离计算过程转换为矩阵的计算过程,并利用矩阵计算引擎执行上述矩阵乘和加操作,提升矩阵计算处理的速度。
[0083]
基于上述任意一种方式可以获得任意两个向量的距离计算结果,进一步地,可以
利用如图5所示的距离表存储距离计算结果,其中,d
11
用于指示查询向量1中分段1所指示的向量11与中心向量1中分段1所指示的向量11的距离计算结果,d
21
用于指示查询向量1中分段2所指示的向量11与中心向量2中分段2所指示的向量21的距离计算结果,
……
,依此类推,距离表中包括查询向量中各个分段所指示的向量分别与中心向量对应的各个分段的向量的距离计算结果。
[0084]
矩阵计算引擎在生成距离表后,可以将该距离表存储在异构系统20的第二存储器205中,并向标量计算引擎发送通知,进而由标量计算引擎执行后续操作。当距离表存储在第二存储器205时,标量计算引擎202可以直接通过第二存储器205读取距离表,进而生成距离矩阵,具体过程参见步骤s402和s403。
[0085]
由于上述距离表的计算过程主要是涉及矩阵的距离计算过程,利用矩阵计算引擎可以直接以矩阵运算的方式处理距离计算过程,能够更快的完成上述距离计算过程。而且,矩阵计算引擎支持浮点数运行,无需像cpu执行距离计算时进行浮点数和整点数的转换的操作,简化了数据处理的效率。此外,通过优化距离计算的方法,可以快速确认任意两个向量的距离,进而判断向量间的相似度,也进一步提升了图像检索的效率。
[0086]
s402、标量计算引擎根据短特征清单和距离表生成距离矩阵。
[0087]
短特征清单通常在创建图库的过程中生成,存储在图1所示的第一存储器30中。如图8所示,在图像检索过程中,标量计算引擎在生成距离矩阵之前,可以通知直接内存引擎204将图库的短特征清单加载至异构系统20的第二存储器205,进而由标量计算引擎逐个遍历短特征清单,根据短特征清单中的各个分段的标识从距离表查询得到一个距离值,然后,将该距离值写入距离矩阵的对应位置,最终,获得距离矩阵,该距离矩阵可以存储在异构系统的第二存储器中。
[0088]
值得说明的是,距离矩阵是一种存储数据的逻辑结构,具体实施中,可以在第二存储器205划分指定大小的存储空间,利用该存储空间实现距离矩阵的存储,例如,指定存储空间1用于存储d11的数据,存储空间2用于存储d12的数据。
[0089]
示例地,如图7所示,短特征清单包括图库中全部图像的短特征,可以以每个图像的短特征序号对应的距离值分别作为距离矩阵中一行元素,例如,图像1包括64个序号,第一个短特征标识为1,则可以将距离表中第一行第一列的距离值d11作为距离矩阵第一行第一列的元素,类似的,图像1的第二个短特征标识为2,则可以将距离表中第二行第二列的距离值d22作为距离矩阵第二行第二列的元素,
……
,依此类推,距离矩阵一行元素表示一个图像的距离值,进而获得n*m的矩阵,其中,n为短特征清单中所包括的图像的个数,m为长特征的分段个数。
[0090]
可选地,直接内存引擎可以根据第二存储器205中剩余空间的大小将全部或部分短特征清单加载至异构系统20的第二存储器205中。
[0091]
第二存储器205可以采用具有高速读写时延的存储介质设置,例如,静态随机存取存储器(static random access memory,sram),标量计算引擎可以通过第二存储器直接读取短特征清单和距离表,避免从第一存储器读取时所带来的数据传输时延。此外,传统技术中cpu先将短特征清单加载至内存,访问频率高的数据会被加载至cpu的缓存,但是由于缓存空间有限,无法将全部短特征清单加载至缓存中,而距离矩阵生成过程又需要频繁读取短特征清单和距离表的数据,会导致缓存中未存在待读取数据的问题(也称为cache miss
问题),影响读取数据的速度。而本技术通过在异构系统中添加第二存储器205,将短特征清单加载至第二存储器205中,标量计算引擎和第二存储器通过内部总线相连,使得数据处理过程中无需频繁搬迁。此外,由于短特征清单中的标识并非按照分段顺序依次标识,但按照矩阵逐行顺序依次写入各个元素,将距离表和短特征清单分别存储在异构系统的第二存储器205中,上述过程可以理解为对距离表的随机读以及对距离矩阵的顺序写的过程。将短特征清单存储在第二存储器中,还可以提升短特征清单中数据读取的速度,进一步提升图像检索过程的处理效率。
[0092]
标量计算引擎在生成距离矩阵后可以通知向量计算引擎继续执行距离累加操作,具体参见步骤s403。
[0093]
s403、向量计算引擎根据距离矩阵确定累加后的距离向量。
[0094]
步骤s402所获得的距离矩阵中每一行有若干个距离值,每一个距离值代表查询向量的一个分段所对应的向量与图库中的中心向量对应分段的向量间的距离,需要将同一行的所有距离进行累加操作,才能得到查询向量与图库中同一个中心向量之间的距离。
[0095]
如图9所示,向量计算引擎可以使用一条累加指令就能实现多个浮点数的累加操作,而在传统技术的处理过程中,上述累加操作会涉及大量的浮点累加运算处理,如果图库中包括1亿条的向量,将会产生1亿次的累加操作,每次累加操作包含m(pq分段数)个元素,利用向量计算引擎直接执行向量的累加操作大大加快向量累加的速度。
[0096]
s404、标量计算引擎根据累加后的距离结果确定检索结果。
[0097]
标量计算引擎可以先对累加后的距离结果进行排序,然后,基于排序结果,选择至少一个与查询向量匹配的图像作为检索结果。
[0098]
其中,排序的方法可以采用top x排序,也即在距离结果中按照从大到小的顺序筛选出x个距离结果,x为大于或等于1的正整数,x的具体值可以人为指定。具体地,累加后的距离结果的排序过程可以采用二叉堆的方式筛选top x的距离结果。例如,标量计算引擎可以将待排序的数据分成至少两个组,然后,在每个组中再按照大小进行排序,最后,再将不同组的排序结果进行二次排序,进而在最终的排序结果中选择至少一个累加后的距离结果作为检索结果。
[0099]
进一步地,异构系统还可以根据查询向量的检索结果确定关联的图库中图像,具体地,由于短特征清单是按照图库中图像生成的,如图7所示,短特征清单可以记录短特征的标识与图库中图像的关系,那么,根据短特征清单和距离表生成的距离矩阵中也可以添加图像的标识。示例地,在图9所示的距离矩阵中,可以在每个向量中添加图像的标识的字段,相应地,在累加后的距离结果中同样可以带有用于标识图像的字段,当根据top x等方式确定累加后的距离结果时,可以根据图像的字段确定匹配的图像的标识,进而从存储图库的图像的存储器中获得匹配图像,进而将匹配图像作为待检索图像的检索结果呈现给用户。
[0100]
作为一种可能的实施例,异构系统获得排序结果后,可以由直接内存访问引擎将排序结果搬迁至第一存储器中,进而由主机系统根据上述排序结果查找排序结果关联的图库中图像作为的检索结果,并通过接口或网络(web)界面向用户呈现检索请求的检索结果。
[0101]
值得说明的是,图库中图像可以存储在图1所示的图像检索系统中,例如,利用主机系统10的第一存储器30存储,也可以利用该系统以外的设备存储图库中图像,当确定待
检索图像的查询向量的检索结果时,可以根据检索结果中指示的图像的标识,从系统以外的设备获取匹配图像。
[0102]
作为一种可能的实施例,在步骤s301生成距离矩阵之后,可以采用多级并行处理方式执行图像检索过程,具体地,可以采用如下两种方式执行并行处理操作:
[0103]
方式1,多个查询请求的并行处理。
[0104]
当异构系统获取多个查询请求时,可以分别按照上述步骤s301至步骤s304并行执行查询请求,此时,由于每个查询请求的过程相对独立,异构系统中各个计算引擎可以采用多个处理器核或进程或线程同时执行多个查询请求的处理过程,进而实现多个查询请求的并行处理。
[0105]
方式2,同一查询请求的并行处理。
[0106]
对于同一个查询请求,可以根据统计数据确定矩阵计算引擎、向量计算引擎、标量计算引擎的处理能力执行并行处理。具体地,参考图11,图11为一种并行处理流程的示意图,如图所示,在矩阵计算引擎生成距离表后,标量计算引擎可以在生成部分距离矩阵时,即将该部分矩阵进行累加获得累加后的距离向量,再由标量计算引擎对上述累加后的距离向量进行top x排序,进而获得该部分距离矩阵的排序结果,上述过程可以称为基于部分距离矩阵的迭代处理过程。对于同一个距离矩阵的处理过程,可以将距离矩阵的迭代处理过程划分为两个或多个子过程,每个过程分别执行上述基于部分距离矩阵的迭代处理过程。而对于多个基于部分距离矩阵的迭代处理过程,仅需在排序阶段更新排序结果即可确定该距离矩阵的最终结果。例如,可以采用堆栈形式存储排序结果,每当完成一个基于部分距离矩阵的迭代处理过程,则更新堆栈中排序结果,获得最新的排序结果,直到完成全部距离矩阵的处理过程为止。
[0107]
可选地,如图9所示,距离计算引擎201可以将图库分成若干组,然后,依次计算查询向量的各个分段和图库中各个分组所对应的中心向量的距离,进而生成距离表的一个距离子表;接下来,由标量计算引擎203根据距离子表生成距离矩阵,其中,距离表的一部分数据称为距离子表;然后,由标量计算引擎203根据距离子表生成距离矩阵;再由向量计算引擎202根据距离矩阵确定累加后的距离结果,进而由标量计算引擎203根据累加后的距离结果确定距离结果的排序顺序。距离计算引擎201每生成一个距离子表就按照上述过程依次由标量计算引擎203、向量计算引擎202执行相应的处理过程,直到完成整个距离表的处理。其中,排序过程可以是基于类似先进先出堆栈的形式确定x个向量,每次获取新的x个向量后,均与堆栈中的向量进行比较,新获得的x个向量中存在距离更小的向量,则替换原堆栈中向量。通过上述实施方式,可以将数据进行细粒度的切分,使得距离矩阵生成、向量累加以及排序可以同时执行,进一步提升了图像检索的效率。
[0108]
通过上述过程的描述,本技术提供的图像检索方法采用“专人专事”的思路,利用包括多个专用计算引擎的异构系统执行图像检索处理,避免由cpu执行图像检索处理所带来的图像检索速度慢的问题。进一步地,在向量的距离计算过程中,还提供多种计算方式简化距离计算的处理过程。而且,通过将距离计算过程映射为矩阵计算过程,可以利用矩阵计算引擎快速完成向量的计算处理过程,进一步提升了了图像检索处理的效率,降低了数据处理的时延。此外,通过在异构系统中添加共享内存,利用共享内存存储距离表和短特征清单,可以避免cache miss问题,提升数据处理的效率。另一方面,在图像检索过程中,还可以
基于异构系统中各个计算引擎的处理能力,并行执行多个查询请求或同一查询请求中不同步骤,进一步降低图像检索的处理时延,满足实时图像检索的要求。
[0109]
作为一种可能的实施例,本技术的上述方法除了应用于图像检索外,还可以针对视频检索、人脸识别、文字检索等场景,对于视频检索场景,每帧图像可以分别采用上述图3至图11的方法执行检索处理,获得检索结果,进而将包括所有帧的检索结果作为检索结果,也可以快速完成视频检索处理。此外,针对人脸识别场景,同样可以采用上述图像检索的方法,以待检索人脸的图像为待检索图像,进一步执行上述图3至图11的方法也可以实现快速获得匹配的图像的过程。
[0110]
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本技术所必须的。
[0111]
上文中结合图1至图11,详细描述了根据本技术实施例所提供的图像检索的方法,下面将结合图12,描述根据本技术实施例所提供的图像检索的装置。
[0112]
图12为本技术提供的一种图像检索的装置600的结构示意图,如图所示,装置600包括第一计算单元601和第二计算单元602,其中,
[0113]
第一计算单元601,用于计算所述待检索图像与图库所包含的多个图像之间的相似度;
[0114]
第二计算单元602,用于根据所述待检索图像与所述图库所包含的多个图像之间的相似度确定检索结果,所述检索结果包括图库中是否包含与所述待检索图像相似的目标图像。
[0115]
应理解的是,本技术实施例的装置600中第一计算单元601可以对应图2中矩阵计算引擎201的实现方式,第二计算单元602可以对应图2中包括向量计算引擎202和标量计算引擎203的实现方式。第一计算单元601和第二计算单元602也可以通过软件实现图3至图11所示的图像检索的方法,装置600及其各个模块也可以为软件模块。例如,由gpu调用存储器中指令分别实现第一计算单元601和第二计算单元602的功能。可选地,当第一计算单元601和第二计算单元602由软件实现时,也可以由cpu或其他类型的处理器调用存储器中计算机指令分别实现第一计算单元和第二计算单元的功能。其中,处理器包括数字信号处理器(digital signal processing,dsp)、专用集成电路(application-specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。
[0116]
可选地,所述待检索图像与所述图库所包含的多个图像之间的相似度是根据所述待检索图像所对应的查询向量与所述多个图像对应的中心向量之间的距离获得的,或者所述待检索图像与图库所包含的多个图像之间的相似度是指所述待检索图像所对应的查询向量与所述多个图像对应的中心向量之间的距离。
[0117]
可选地,第一计算单元601,还用于将所述查询向量转换为查询矩阵,将所述中心向量转换为中心矩阵,根据所述查询矩阵和所述中心矩阵获得距离表,所述距离表用于确定所述待检索图像所对应的查询向量与所述多个图像对应的中心向量之间的距离。
[0118]
可选地,装置600中还包括共享内存(图6中未示出),则第二计算单元602,还用于从所述共享内存中获取所述距离表;并根据所述距离表确定所述图库中是否包含与所述待检索图像相似的目标图像。
[0119]
可选地,装置600还包括第三计算单元603,用于获取所述图库中图像所对应的索引清单,所述第二计算引擎具体用于从所述共享内存中获取所述距离表;根据所述距离表确定所述图库中是否包含与所述待检索图像相似的目标图像。
[0120]
第二计算单元602,还用于根据所述距离表和所述索引清单获得距离矩阵,所述距离矩阵用于指示所述索引清单中每个索引所关联的距离值;根据所述距离矩阵确定所述待检索图像所对应的查询向量与所述多个图像对应的中心向量之间的距离。
[0121]
可选地,第二计算单元602,还用于根据所述距离矩阵确定所述待检索图像所对应的查询向量与所述多个图像对应的中心向量之间的距离的排序结果确定检索结果。
[0122]
可选地,第二计算单元602,还用于根据预设阈值确定所述检索结果,所述检索结果所包括的图像所关联的向量与所述查询向量的距离满足预设条件,所述预设条件包括图像所关联的向量与所述查询向量的距离大于或等于所述预设阈值,或者,图像所关联的向量与所述查询向量的距离小于所述预设阈值。
[0123]
可选地,所述待检索图像来自检索请求,所述检索请求包括至少一个所述待检索图像,或者,所述检索请求包括待检索视频,所述待检索视频包括至少一帧所述待检索图像。
[0124]
根据本技术实施例的装置600可对应于执行本技术实施例中描述的方法,并且装置600中的各个单元的上述和其它操作和/或功能分别为了实现图3至图11的各个方法的相应流程,为了简洁,在此不再赘述。
[0125]
本技术提供的装置600可以利用多个计算单元分别执行不同的数据处理过程,提升数据处理的效率。在向量的距离计算过程中,采用多种计算方式简化距离计算的处理过程。而且,装置600还可以将距离计算过程映射为矩阵计算过程,利用第一计算单元快速完成距离计算处理过程,进一步提升了了图像检索处理的效率,降低了数据处理的时延。此外,在图像检索过程中,还可以基于异构系统中各个计算引擎的处理能力,并行执行多个查询请求或同一查询请求中不同步骤,进一步降低图像检索的处理时延,满足实时图像检索的要求。
[0126]
本技术还提供的一种图像检索系统,该图像检索系统如图1所示的异构系统20,该异构系统20用于实现如图3至图11中各个方法的相应流程的功能,为了简洁,在此不再赘述。
[0127]
本技术还提供一种数据处理系统,该数据处理系统包括如图1所示的主机系统10和异构系统20,主机系统用于获得检索请求,将检索请求中待检索图像发送给异构系统,进而由异构系统执行如图3至图11中各个方法的相应流程的功能,为了简洁,在此不再赘述。
[0128]
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本技术实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存
储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,ssd)。
[0129]
以上所述,仅为本技术的具体实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1