一种图像检索方法和装置、图像检索设备与流程

文档序号:30422012发布日期:2022-06-15 13:34阅读:78来源:国知局
一种图像检索方法和装置、图像检索设备与流程

1.本技术涉及图像分析领域,特别地,涉及一种图像检索方法和装置。


背景技术:

2.在图像分析中,通常需要将待分析图像与被比较图像进行比对,例如,在视频分析时,对输入的图像或视频数据与数据库中的图像数据进行逐一地比对,以获得检索结果。
3.图像检索主要是将基于待检索图像所提取的特征与基于被比较图像所提取的特征进行比较来获得最匹配的被比较图像,从而得到检索结果。
4.由于图像本身所包含的特征的数据量较大,例如,单条特征向量维度为512,每个维度用16位浮点表示,假设有100万条特征向量,则占用的内存总数为:
5.512(维)
×
2(字节)
×
100(万)=0.95gb
6.如此大的数据量加载到硬件上时,导致硬件内存受限严重,同时,如此巨大的数据量,也意味着计算量大,加速性能不高。


技术实现要素:

7.本技术实施例提供了一种图像检索方法,以提高硬件平台下的加速性能。
8.本技术实施例提供的一种图像检索方法是这样实现的:在图像检索设备侧,
9.获取至少一待检索图像、以及底库数据中被比较图像的特征向量数据,
10.根据图像检索设备的硬件平台类型,按照所述特征向量数据的各个特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,
11.根据所选择的算子,调用所选择算子的算子二进制文件并执行,得到相似度结果,
12.比较相似度结果,从底库数据中获得与待检索图像匹配的被比较图像,作为检索结果。
13.较佳地,所述根据图像检索设备的硬件平台类型,按照特征向量数据的特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子之前,进一步包括,
14.根据硬件平台类型,对特征向量数据的特征维度进行对齐操作,得到与硬件平台类型匹配的数据排布格式。
15.较佳地,所述获取至少一待检索图像、以及底库数据中被比较图像特征向量数据的特征向量数据,进一步包括,
16.按照设定维度大小,过滤掉不符合设定维度大小的特征向量数据;
17.和/或,
18.根据硬件平台的资源,限制待检索图像特征向量数据中所包含的特征向量数量。
19.较佳地,所述根据图像检索设备的硬件平台类型,按照所述特征向量数据的特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,包括,
20.根据硬件平台的片上资源和特征向量数据的数据量的关系,选择算子,
21.其中,
22.硬件平台的片上资源由硬件平台类型确定,
23.特征向量数据的数据量由特征维度和特征向量的数量确定,
24.维度划分策略由硬件平台的内存大小确定。
25.较佳地,所述根据硬件平台类型,对特征向量数据的特征维度进行对齐操作,得到与硬件平台类型匹配的数据排布格式,包括,
26.将由以特征向量的特征维度为行数、以特征向量数量为列数所组成的特征向量矩阵,转换为一个以上分片矩阵;
27.其中,分片矩阵包括以特征向量数量为行数、以特征向量的分片特征维度为列数的特征向量数据,所述分片特征维度的大小由内存对齐数确定,分片矩阵的分片总数量为特征向量的特征维度与分片特征维度之商的向上取整;
28.所述根据硬件平台的片上资源和特征向量数据的数据量的关系,选择算子,包括,将分片总数量与分片矩阵中的数据量进行比较;
29.如果分片总数量大于等于分片矩阵中的数据量,且片上资源可容纳由分片总数量个分片矩阵所组成的特征向量数据,则选择第一算子,该算子用于以多通道并行、以及分片矩阵并行方式处理数据,使得所述一个以上分片矩阵直接展开成以分片总数量为行数、分片矩阵中的数据量为列数的二维方式进行数据操作,其中,通道数量与分片总数量相同,
30.否则,按照片上资源所能够容纳的数据量,基于分片总数量进行切分,按照使得片上资源能够容纳切分后的数据量的方式选择算子。
31.较佳地,所述按照片上资源所能够容纳的数据量将分片总数量进行切分,按照使得片上资源能够容纳切分后的数据量的方式选择算子,包括,
32.将设定的阈值与分片矩阵中的数据量之商的向上取整,得到单通道数量,将至少一个以上单通道的分片矩阵作为切分后的数据量;其中,所述阈值由硬件平台的内存大小确定,
33.将分片矩阵中的数据量与所述阈值进行比较,
34.如果分片矩阵数据量大于等于所述阈值,则选择第二算子,该算子用于以一个单通道的分片矩阵并行方式处理数据,使得所述一个以上分片矩阵直接展开成以单通道为行数、分片矩阵中的数据量为列数的二维方式进行数据操作,
35.否则,选择第三算子,该算子用于以单通道的分片矩阵并行、至少两个以上单通道的分片矩阵串行方式处理数据,使得所述一个以上分片矩阵直接展开成以单通道为行数、分片矩阵中的数据量为列数的二维方式来依次地对所有单通道的分片矩阵进行数据操作。
36.较佳地,所述根据所选择的算子,调用所选择算子的算子二进制文件并执行,进一步包括,
37.对所选择的每个算子,将该算子实现所需参数进行打包描述,
38.根据所述参数中的算子名称,调用所选择算子的算子二进制文件;
39.所述算子二进制文件从图像检索设备外部预先存储的算子文件获得,
40.其中,所述算子文件包括各个硬件平台类型的算子二进制文件、和/或各个硬件平台类型的用于直接进行二进制编译以生成所述算子二进制文件的算子实现文件,
41.所述算子按照优化力度和/或特征维度的不同对应有不同的文件类型的算子实现文件,
42.同一算子实现文件按照优化力度和/或编译器的不同对应有不同的算子二进制文件。
43.本技术实施例提供的一种图像检索装置,该装置包括,
44.特征向量数据获取模块,用于获取待检索图像、以及底库数据中被比较图像的特征向量数据,
45.算子选择模块,用于根据图像检索设备的硬件平台类型,按照所述特征向量数据的特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,
46.算子实现回调模块,用于根据所选择的算子,调用所选择算子的算子二进制文件并执行,得到相似度结果,
47.相似度比较模块,用于比较相似度结果,从底库数据中获得与待检索图像最匹配的被比较图像,作为检索结果。
48.本技术实施例还提供一种图像检索设备,包括硬件平台,所述硬件平台包括存储器和处理器,所述存储器存储有计算机程序,所述处理器被配置执行所述计算机程序实现如上述任一所述图像检索方法的步骤。
49.本技术提供的图像检索方法,根据图像检索设备的硬件平台类型,按照所述特征向量数据的特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,这样,针对不同的硬件平台,可以选择匹配于硬件平台类型的最优算子,从而到达具体硬件平台下的最佳计算性能,有利于构建出一个具有硬件特性的平台来实现最佳性能的检索加速方法,并且,由于从输入特征维度来进行算子的选择,使得本方法能够支持动态分辨率检索,从而获得不同分辨率下的检索效果。
附图说明
50.图1为本技术实施例的图像检索方法的一种流程示意图。
51.图2为人脸图像检索的一种示意图。
52.图3为人脸数据库建立时通过深度学习网络的方式进行特征提取、以及待检索人脸图像通过深度学习网络的方式进行特征提取的一种示意图。
53.图4为基于gemm进行相似度计算的一种示意图。
54.图5为本技术实施例图像检索方法的一种流程示意图。
55.图6为nchw和nhwc32的对齐的数据排布的一种示意图。
56.图7为数据排布格式转换的一种示意图。
57.图8为根据不同分辨率而选择的不同算子的一种示意图。
58.图9为算子选择的一种流程示意图。
59.图10为第一算子实现的一种示意图。
60.图11为第二算子实现的一种示意图。
61.图12为第三算子实现的一种示意图。
62.图13为本技术实施例图像检索装置的一种示意图。
63.图14为本技术实施例图像检索设备的一种示意图。
具体实施方式
64.为了使本技术的目的、技术手段和优点更加清楚明白,以下结合附图对本技术做进一步详细说明。
65.申请人研究发现,基于通用矩阵乘(gemm,general matrix multiplication)算法的图像检索是一种全样本的距离计算,精度上无损,但计算量非常大,进一步研究还发现,由于硬件资源受限,在有些平台上实现的gemm图像检索方法不支持动态变换分辨率,即,初始化的时候是什么分辨率,执行特征检索时候也必须是那个固定分辨率;比如基于arm的硬件平台来进行gemm图像检索时,为了达到加速的目的,会在算子实现代码编译的时候就指定特定的优化维度,从而运行的时候就不需要再次指定维度信息,以达到性能加速的目的。
66.参见图1所示,图1为本技术实施例的图像检索方法的一种流程示意图。该方法应用于图像检索设备侧,包括,
67.步骤101,获取当前待检索图像、以及底库数据中被比较图像的特征向量数据,
68.步骤102,根据图像检索设备的硬件平台类型,按照所述特征向量数据的特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,
69.所应理解的是,硬件平台类型包括且不限于种类、型号、同一种类和/或型号的不同代际硬件平台,例如,硬件平台类型按照种类包括精简指令集微处理器(arm)、中央处理单元(cpu)、图形处理单元(gpu)等,其中,cpu按照型号还可以包括sky lake架构,cascade lake架构等;
70.其中,待检索图像不同,特征向量数据的特征维度也不同,所选择的算子不同,所应理解的是,在相似度计算过程中,即使是同一待检索图像其特征向量数据的特征维度也可以不同,这样,在相似度计算过程中可以选择不同的算子。
71.步骤103,根据所选择的算子,调用所选择算子的算子二进制文件并执行,得到相似度结果,
72.步骤104,比较相似度结果,从底库数据中获得与待检索图像匹配的被比较图像,作为检索结果。可选地,将符合设定匹配阈值的被比较图像作为检索结果。
73.步骤105,判断所有待检索图像是否都检索完毕,如果是,则结束,否则,将下一待检索图像作为当前待检索图像,返回步骤101。
74.本技术实施例通过对当前待检索图像的特征向量的特征维度分析,根据硬件平台的类型选择最优的算子,以在具体硬件平台下达到最佳计算性能。由于本技术从输入的特征维度信息角度来实现加速,从而能够支持动态变换分辨率,并且,具有平台通用性,在不同平台上获取最优的性能。
75.为便于理解本技术,以下将以人脸比对检索为例来进行说明,所应理解的是,本技术不限于人脸图像的检索,包含任何内容的图像的检索也可适用,例如、车辆图像、地形图像、文字图像等。
76.参见图2所示,图2为人脸图像检索的一种示意图。其中,人脸数据库相对于实时的人脸检索以离线方式建立,用于对于作为被比较图像的人脸图像进行特征提取后而形成的人脸图像特征集合的底库数据。底库数据可以具有大量特性特征,例如性别特性,佩饰特
性,以及库类别特性等,其中,佩饰特性主要指带帽子,戴眼镜等,库类别特性主要指各类应用场景下和/或用途的类别特性,通常可以多个小类别的底库数据组合起来的,每一个小的类别库数据用途特性不同,例如,交通底库数据,银行底库数据等,他们共同组合在一起形成人脸数据库。
77.待检索人脸图像可以是通过各类摄像装置获取的活体图像,基于图像进行特征提取,从而获取待检索人脸图像的特征向量。各类摄像装置包括且不限于,rgb(红绿蓝)摄像装置,rgb与红外组合的摄像装置,rgb与深度信息组合的摄像装置。
78.参见图3所示,图3为人脸数据库建立时通过深度学习网络的方式进行特征提取、以及待检索人脸图像通过深度学习网络的方式进行特征提取的一种示意图。人脸特征提取的方法有很多,在不同硬件平台上实现的方式不同。例如,其中的检测网络,可以是yolo v3,也可以使用yolo v2,或者后面的分类网络,可以是resnet50等。
79.当进行图像检索时,待检索人脸图像的特征向量与底库数据中的特征向量进行相似度计算,通过相似度比较,以从底库数据中获得与待检索人脸图像最匹配的人脸数据,从而得到检索结果。
80.参见图4所示,图4为基于gemm进行相似度计算的一种示意图。底库数据为m条特征维度为k的底库特征向量组成的第一矩阵,其中,第一矩阵中每行为特征维度为k的单条底库特征向量,第一矩阵的行数为m,这样,第一矩阵中共有m行
×
k列个数据;待检索人脸图像数据为n条特征维度为k的特征向量组成的第二矩阵,其中,第二矩阵的每列为特征维度为k的单条待检索图像特征向量,第二矩阵的列数为n,这样,第二矩阵中共有k行
×
n列个数据,第一矩阵与第二矩阵叉乘,得到m行、n列的第三矩阵,该矩阵为相似度数据。
81.上述相似度的计算需要在硬件平台的支持。鉴于不同的硬件平台中硬件的资源不同,例如片上资源不同;不同的硬件平台中硬件加速性能不同,例如,不同类型的硬件平台具有不同的硬件加速指令集;不同的硬件平台中硬件计算能力不同;这导致了不同的硬件平台中用于相似度计算的算子不同。其中,算子可以理解为相似度计算流程中用于环节点处理的部分流程,是实现某一功能的最小流程,包括且不限于数据的读写、数据的计算等。
82.为提高硬件平台的算力,参见图5所示,图5为本技术实施例图像检索方法的一种流程示意图。以当前一待检索图像的检索为例,该方法包括,
83.步骤501,对特征向量的特征维度信息进行过滤,得到过滤后的特征向量,所述过滤后的特征向量维度符合设定维度。
84.在该步骤中,对当前待检索人脸图像特征向量的特征维度信息进行过滤,为了减少无意义的计算,过滤掉一些杂乱的特征维度,可选地,过滤掉k不等于设定维度阈值的特征向量,例如,k不等于258、或512、或1024的特征向量;还可以是,鉴于硬件平台的通用性,根据硬件平台设置n的阈值,以对n进行限制,例如,n不超过64。
85.鉴于相似度计算是第一矩阵与第二矩阵的叉乘,故底库数据中的特征向量维度需要进行同样的过滤,以使得底库数据的特征向量维度与待检索人脸图像的维度相同。
86.步骤502,根据硬件平台的类型,对特征向量的各个特征维度信息进行对齐操作,并转换为与硬件平台匹配的数据排布格式。
87.鉴于不同类型的硬件平台具有不同的硬件加速指令集,硬件加速指令集中的硬件加速指令能够被调用的条件是数据运算的主要维度能够与内存对齐数对齐。所以,为了更
好的利用硬件加速性能,可以根据获取到的硬件信息确定内存对齐数,以便调用硬件加速指令集中的指令,提高运算效率。
88.比如:
89.对于gpu硬件,可根据gpu的计算能力来选择具体的优化指令集,不同的计算能力具有不同的优化指令集,计算能力数值可以通过查询gpu显卡的参数得到,例如,计算能力数值包括且不限于compute_60,compute_72,compute_75等,不同代际的gpu的指令集80%是相同的,剩余20%的指令集中属于当前代际的特色指令,这些特色指令集往往能体现优势,根据特色指令集,可进行特定平台的优化工作。
90.对于cpu硬件,可根据获取具体的硬件型号,确定cpu的架构类型,因为不同的硬件核心架构支持的指令集是不同的,那么优化的方式和力度也不同。
91.不同的运算硬件的内存对齐数不同,比如,arm上是k维度32字节对齐,gpu上是k维度8字节对齐,cpu上是k维度16字节对齐。可以根据获取的硬件信息中的运算硬件的类型标识来确定内存对齐数。
92.数据在内存有不同的排布格式,比如nchw和nhwc32对齐,参见图6所示,图6为nchw和nhwc32的对齐的数据排布的一种示意图。为了提升数据访问效率,k行
×
m列的第一矩阵采用k1个m行
×
k0列分片矩阵排布,记为[k1,m,k0]数据排布格式,k行
×
m列的第一矩阵排布与[k1,m,k0]数据排布格式转换的示意图如图7所示。其中,k0为分片矩阵中特征向量的分片特征维度,与微架构强相关,这里取32,这部分数据需要连续存储;k1可理解为分片矩阵的数量,k1=k/k0,如果结果不整除,向上取整。
[0093]
步骤503,根据硬件平台的类型,按照输入的特征向量的维度、和/或维度划分策略,选择用于相似度计算的各个算子。
[0094]
鉴于不同的硬件平台的内存资源不同,为解决相似度计算过程中内存资源受限的问题,根据过滤后的特征向量维度(输入维度),和/或维度划分策略,选择不同的算子。较佳地,按照k的不同划分范围选择算子,比如,若k大于0,小于128,选择第一算子;若k大于128,小于256,选择第二算子;若k大于256,选择第三算子
……
其中,划分范围需要根据硬件的资源换算得到,主要是指硬件的片上内存资源。
[0095]
由于不同硬件的片上资源不同,所以维度划分策略也是完全不同的。当选择不同输入维度下的算子加速策略时,符合同一算子加速策略的不同输入维度可共用同一种二进制文件。同一算子加速策略是指,维度的划分范围相同,比如k大于0,小于128属于一种策略,那么k在0到128之间,其实包含了很多种图像分辨率。但是对于那些k在0到128之间的分辨率来说,他们实现的算子是同一种,例如,都是算子0。这样,针对不同的输入维度,选择不同策略的加速算子,就可以支持不同分辨率,使得图像检索过程中支持动态变换分辨率,避免了现有图像检索方法中直接在算子代码编译时指定分辨率而导致的不支持动态变换分辨率的问题。参见图8所示,图8为根据不同分辨率而选择的不同策略的加速算子的一种示意图。在传入不同分辨率参数后,根据不同分辨率选择不同策略的加速算子。
[0096]
为便于理解,以下以第一矩阵的处理为例来说明算子的选择。
[0097]
参见图9所示,图9为算子选择的一种流程示意图。
[0098]
判断分片总数量k1和分片矩阵中所包含的数据量的关系,所述分片矩阵中所包含的数据量为m
×
k0,可理解为分片矩阵大小,
[0099]
如果k1大于或等于分片矩阵所包含的数据数量,则由于片上资源足够容纳所有的数据,可选择第一算子,该算子用于以k1个通道并行、以及分片矩阵并行方式处理数据,这样,[k1,m,k0]数据直接展开成以k1为行数、m
×
k0为列数的二维方式来进行数据操作,如图10所示,图10为第一算子实现的一种示意图。
[0100]
如果k1小于或等于m
×
k0,则按照片上资源所能够容纳的数据量将k1进行切分,使得片上资源能够容纳切分后的数据量,具体地:
[0101]
将设定的阈值与分片矩阵中的数据量之商的向上取整,得到单通道数量s0,所述阈值由片上内存的大小决定,
[0102]
判断m
×
k0是否大于等于设定的阈值,
[0103]
如果是,则单通道数量s0等于1,故选择第二算子,该算子用于以单通道的分片矩阵并行方式处理数据,这样,k1切分成一个单通道s0,[k1,m,k0]数据直接展开成以s0为行数、m
×
k0为列数的二维方式来进行数据操作,其中,s0
×m×
k0的大小小于或等于片上内存的大小。如图11所示,图11为第二算子实现的一种示意图。
[0104]
否则,单通道数量s0大于1,故选择第三算子,该算子用于以单通道的分片矩阵并行方式依次处理、以每个单通道的分片矩阵以串行方式处理数据,这样,k1切分成多个单通道s0,[k1,m,k0]数据直接展开成以s0为行数、m
×
k0为列数的二维方式(单通道的分片矩阵)来依次地进行数据操作,其中,s0
×m×
k0的大小小于或等于片上内存的大小,s0=设定阈值/(m
×
k0),如果结果不整除,向上取整。如图12所示,图12为第三算子实现的一种示意图。
[0105]
从上述的算子选择策略可见,如果待计算数据量大于片上内存,那么片上内存一次性放不下所有的待计算数据,只能通过多次操作才可以完成,故而在运算的时候,只能通过单通道并行加速。但是如果待计算数据量小于片上内存,也就是一次性可以把所有的数据都放在片上内存,那么就可以在多个通道同时对待计算的数据量进行并行处理。从算子选择策略可见,单通道的数量与维度划分策略有直接关系,片上内存可容纳的数据量与维度划分有间接关系。从上述算子的选择可见,当待计算的数据量不同,算子意味不同,故而,在相似度计算过程中,即使是同一待检索图像也可能会由不同的算子来完成相似度的计算。
[0106]
类似地,对于待检索图像的特征向量矩阵(第二矩阵)也使用相同的方法来进行算子选择。
[0107]
步骤504,鉴于不同的硬件平台,不同的算子,所涉及的维度划分参数不同,调用的硬件加速策略也不同,故而对所选择的每个算子所需要的参数进行描述,以进行资源整合,屏蔽异构硬件的差异,便于调用算子。
[0108]
对于每个算子而言,算子参数中,有的是可直接赋值的,有的是需要通过计算获得,将该算子参数以列表、结构体等形式集中地进行描述,也就是打包描述,以便于后续处理时参数的传入。
[0109]
以所述第一算子为例,所需要的参数包括,分片矩阵的行列数、通道数、重复次数、算子名称等,这些参数可以打包方式来描述。
[0110]
步骤505,根据所选择的算子,调用算子二进制文件中对应所选择算子的二进制文件,完成单算子的调用,
[0111]
其中,算子二进制文件可直接将算子实现文件进行二进制编译而获得。由于上述步骤针对不同的输入维度信息对应不同的算子,不同算子具有不同的二进制文件,因此调用算子时根据传入的输入维度信息,来选择相应的算子。
[0112]
另外,由于不同的硬件平台对应的编译器是不一样的,在编译时,优化的力度也是可以控制的,因此,对于同一算子的二进制文件,可以选择不同的优化力度来在生成不同的二进制文件。比如,有些算法场景需要针对占用空间进行优化,所以加入-os编译选项;有些算法场景,需要追求极致的算子性能,那么加入-o3编译选项等等。
[0113]
为了提高算子性能,针对不同的输入维度信息,不同的硬件平台,不同的维度划分策略,可以预先建立适用于多种硬件平台、多种算子的算子实现文件,例如图中的算子0.cpp、算子1.cpp、算子2.cpp。
[0114]
较佳地,每个算子的实现文件类型可以包括多种文件类型,以支持以不同的优化力度的算子实现方式,因为即使是最底层的实现方式,也会因为不同输入维度,导致优化力度不同,所以对于那些非常特殊的输入维度,不同的方式下的性能表现也会不同,比如,有些维度下,汇编实现是最快的;有些维度下,使用第三方库实现是最快的;有些维度下,使用普通的c实现是最快的,等等。
[0115]
在实际应用中,包括所述算子实现文件、和/或对应于算子实现文件的算子的二进制文件的算子文件,可以从外部加载,例如,图像检索设备外接的存储设备和/或服务器中。这样,既减少了图像检索设备的存储空间的占用,又使得算子加速策略具有通用性,以在不同平台上获得最优的性能。
[0116]
在调用算子的二进制文件时,根据算子参数所包括的算子名称在算子文件中搜索具有相同算子名称的算子二进制文件。
[0117]
最后,根据得到的相似度结果,从底库数据中获得与待检索图像匹配的被比较图像,作为检索结果。
[0118]
本技术实施例所提供的图像检索方法,针对不同的硬件资源大小,数据流的不同传输方式,不同的管线(pipeline),实现了不同算子的选择,例如,适用于arm的arm算子,适用于cpu的cpu算子,适用于gpu的gpu算子;针对不同待检索图像所具有的不同输入维度,可以在对应的硬件平台下,选择出当前维度下最优的算子,例如,匹配于第一输入维度的第一维度算子,匹配于第二输入维度的第二维度算子等;按照相似度的计算方式不同,所述用于计算待检索图像与被比较图像相似度的算子可以是余弦相似度算子,或者,用于余弦相似度计算的gemm算子,也可以是欧式距离算子等;为了保证可扩展性,通过汇集有不同平台算子的算子实现文件,在不同硬件平台下,使用对应的编译器,把算子实现文件编译成.o文件,然后提供给图像检索设备,从而提供了各种算子的算子实现。不同于那些由于硬件资源有限,从而选择在实现gemm检索功能时,直接在算子实现代码编译的时候就指定特定的优化维度的优化方法,本技术从输入特征维度信息实现加速,针对不同的输入维度,选择不同策略算子,例如,本技术实施例中第一算子、第二算子、第三算子等,从而支持不同分辨率的算子实现;该方法可以支持多种不同的硬件平台,在确定硬件平台后,可以构建出一个具有硬件特性的实现最佳性能的检索方法。
[0119]
参见图13所示,图13为本技术实施例图像检索装置的一种示意图。该装置包括,
[0120]
特征向量数据获取模块,用于获取待检索图像、以及底库数据中被比较图像的特
征向量数据,
[0121]
算子选择模块,用于根据图像检索设备的硬件平台类型,按照所述特征向量数据的各个特征维度、和/或维度划分策略,选择用于计算待检索图像与被比较图像相似度的各个算子,
[0122]
回调模块,用于根据所选择的算子,调用所选择算子的算子二进制文件并执行,得到相似度结果,
[0123]
相似度比较模块,用于比较相似度结果,从底库数据中获得与待检索图像最匹配的被比较图像,作为检索结果。
[0124]
较佳地,还包括,
[0125]
维度信息过滤模块,用于按照设定维度大小,过滤掉不符合设定维度大小的特征向量数据;和/或,根据硬件平台的资源,限制待检索图像特征向量数据中所包含的特征向量数量;
[0126]
数据格式转换模块,用于根据硬件平台类型,对特征向量数据的特征维度进行对齐操作,得到与硬件平台类型匹配的数据排布格式;
[0127]
参数打包模块,用于对所选择的每个算子所需参数集中地进行描述。
[0128]
其中,数据格式转换模块、算子选择、参数打包模块都可基于异构硬件平台执行,也就是说,针对不同的硬件特性,执行相应的操作。
[0129]
参见图14所示,图14为本技术实施例图像检索设备的一种示意图。该设备包括硬件平台,所述硬件平台包括存储器和处理器,所述存储器存储有计算机程序,所述处理器被配置执行所述计算机程序实现所述图像检索方法的步骤。
[0130]
存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
[0131]
上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processing,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
[0132]
本技术实施例还提供了一种计算机可读存储介质,所述存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现所述图像检索方法的步骤。
[0133]
对于装置/网络侧设备/存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
[0134]
在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
[0135]
以上所述仅为本技术的较佳实施例而已,并不用以限制本技术,凡在本技术的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本技术保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1