CN106067158B - 一种基于gpu的特征比对方法及装置 - Google Patents
一种基于gpu的特征比对方法及装置 Download PDFInfo
- Publication number
- CN106067158B CN106067158B CN201610355521.8A CN201610355521A CN106067158B CN 106067158 B CN106067158 B CN 106067158B CN 201610355521 A CN201610355521 A CN 201610355521A CN 106067158 B CN106067158 B CN 106067158B
- Authority
- CN
- China
- Prior art keywords
- feature
- grouping
- gpu
- video memory
- need
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T1/00—General purpose image data processing
- G06T1/20—Processor architectures; Processor configuration, e.g. pipelining
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
本发明提供了一种基于GPU的特征比对方法及装置,该方法包括:在GPU显存中建立动态特征库,向所述GPU输入待检测特征;通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;通过所述GPU将所述多个比对结果传输给CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。本发明使用GPU并行运算的方法高效进行特征比对,利用N卡GPU的CUDA进行特征并行比对,GPU中包含的CUDA核心数几百至上千个不等,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
Description
技术领域
本发明涉及模式识别及数据比对技术领域,具体而言,涉及一种基于GPU的特征比对方法及装置。
背景技术
特征比对是模式识别中的关键技术,是指将待检测特征与特征库中数目庞大的特征进行一一比对,从特征库中筛选出符合要求的特征。
由于特征库中特征的数量非常巨大,导致特征比对的运算量很大,因此如何提高特征比对的运算速度就成为人们关注的关键问题。由于特征比对算法实质上是特征库中的特征与待检测特征之间的线性运算,因此当前在提高特征比对的运行速度时,通常通过提高CPU(Central Processing Unit,中央处理器)的主频,使线性运算速度提高,或者通过使用多核CPU,以同时进行多个特征比对。
但由于当前CPU主频的提高及CPU多核技术均已达到发展瓶颈,因此通过提高CPU主频或者通过使用多核CPU来提高特征比对的运行速度,也已达到发展瓶颈,所以现在急需一种进一步提高运算速度的特征比对方案。
发明内容
有鉴于此,本发明实施例的目的在于提供一种基于GPU的特征比对方法及装置,利用N卡GPU的CUDA进行特征并行比对,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
第一方面,本发明实施例提供了一种基于GPU的特征比对方法,所述方法包括:
在图形处理器GPU显存中建立动态特征库,及向所述GPU输入待检测特征;
通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;
通过所述GPU将所述多个比对结果传输给中央处理器CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。
结合第一方面,本发明实施例提供了上述第一方面的第一种可能的实现方式,其中,所述在图形处理器GPU显存中建立动态特征库,包括:
在图形处理器GPU显存中创建动态数据库;
根据预设特征库包括的特征总数和所述GPU的内核数,建立所述动态数据库对应的多个分组;
根据所述预设特征库及所述多个分组,生成动态特征库。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第二种可能的实现方式,其中,所述根据预设特征库包括的特征总数和所述GPU的内核数,建立所述动态数据库对应的多个分组,包括:
根据所述GPU的内核数,确定分组对应的特征数目;
根据预设特征库包括的特征总数及所述分组对应的特征数目,计算所述动态数据库对应的分组数目;
在所述动态数据库中创建所述分组数目个分组。
结合第一方面的第二种可能的实现方式,本发明实施例提供了上述第一方面的第三种可能的实现方式,其中,所述根据所述预设特征库及所述多个分组,生成动态特征库,包括:
根据所述预设特征库包括的特征及所述分组对应的特征数目,确定每个分组所需占用的存储空间;
根据所述每个分组所需占用的存储空间,分别为所述每个分组分配显存空间;
将所述预设特征库包括的特征,存储在为所述每个分组分配的显存空间中。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第四种可能的实现方式,其中,通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,包括:
通过所述GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问所述动态特征库中分组包括的每个特征,通过多线程将所述待检测特征同时与分组中的每个特征进行比对。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第五种可能的实现方式,其中,所述方法还包括:
当需在所述预设特征库中增加特征时,根据需增加的特征,建立新的分组,为所述新的分组分配显存空间,将所述需增加的特征存储在为所述新的分组分配的显存空间中。
结合第一方面的第一种可能的实现方式,本发明实施例提供了上述第一方面的第六种可能的实现方式,其中,所述方法还包括:
当需从所述预设特征库中删除特征时,确定需删除的特征所在的分组;
从确定的所述分组的末尾,抽取与所述需删除的特征的数目相同个数个特征;
从确定的所述分组中删除所述需删除的特征,将抽取的特征依次存储在所述需删除的特征对应的显存空间中。
第二方面,本发明实施例提供了一种基于GPU的特征比对装置,所述装置包括:
建立模块,用于在图形处理器GPU显存中建立动态特征库;
输入模块,用于向所述GPU输入待检测特征;
比对模块,用于通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;
获取模块,用于通过所述GPU将所述多个比对结果传输给中央处理器CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。
结合第二方面,本发明实施例提供了上述第二方面的第一种可能的实现方式,其中,所述建立模块包括:
创建单元,用于在图形处理器GPU显存中创建动态数据库;
建立单元,用于根据预设特征库包括的特征总数和所述GPU的内核数,建立所述动态数据库对应的多个分组;
生成单元,用于根据所述预设特征库及所述多个分组,生成动态特征库。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第二种可能的实现方式,其中,所述建立单元包括:
第一确定子单元,用于根据所述GPU的内核数,确定分组对应的特征数目;
计算子单元,用于根据预设特征库包括的特征总数及所述分组对应的特征数目,计算所述动态数据库对应的分组数目;
创建子单元,用于在所述动态数据库中创建所述分组数目个分组。
结合第二方面的第二种可能的实现方式,本发明实施例提供了上述第二方面的第三种可能的实现方式,其中,所述生成单元包括:
第二确定子单元,用于根据所述预设特征库包括的特征及所述分组对应的特征数目,确定每个分组所需占用的存储空间;
分配子单元,用于根据所述每个分组所需占用的存储空间,分别为所述每个分组分配显存空间;
存储子单元,用于将所述预设特征库包括的特征,存储在为所述每个分组分配的显存空间中。
结合第二方面第一种可能的实现方式,本发明实施例提供了上述第二方面的第四种可能的实现方式,其中,通过比对模块,用于通过所述GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问所述动态特征库中分组包括的每个特征,通过多线程将所述待检测特征同时与分组中的每个特征进行比对。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第五种可能的实现方式,其中,所述装置还包括:
增加模块,用于当需在所述预设特征库中增加特征时,根据需增加的特征,建立新的分组,为所述新的分组分配显存空间,将所述需增加的特征存储在为所述新的分组分配的显存空间中。
结合第二方面的第一种可能的实现方式,本发明实施例提供了上述第二方面的第六种可能的实现方式,其中,所述装置还包括:
删除模块,用于当需从所述预设特征库中删除特征时,确定需删除的特征所在的分组;从确定的所述分组的末尾,抽取与所述需删除的特征的数目相同个数个特征;从确定的所述分组中删除所述需删除的特征,将抽取的特征依次存储在所述需删除的特征对应的显存空间中。
在本发明实施例提供的方法及装置中,在GPU显存中建立动态特征库,向所述GPU输入待检测特征;通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;通过所述GPU将所述多个比对结果传输给CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。本发明使用GPU并行运算的方法高效进行特征比对,利用N卡GPU的CUDA进行特征并行比对,GPU中包含的CUDA核心数几百至上千个不等,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1A示出了本发明实施例1所提供的一种基于GPU的特征比对方法的流程图;
图1B示出了本发明实施例1所提供的一种分组与特征的映射关系示意图;
图1C示出了本发明实施例1所提供的一种增加特征的示意图;
图1D示出了本发明实施例1所提供的一种删除特征的示意图;
图1E示出了本发明实施例1所提供的一种特征排序方式及访问方式的示意图;
图2示出了本发明实施例2所提供的一种基于GPU的特征比对装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
考虑到相关技术中通过提高CPU主频,或者通过使用多核CPU来提高特征比对速度,而当前CPU主频的提高及CPU多核技术均已达到发展瓶颈,因此通过提高CPU主频或者通过使用多核CPU来提高特征比对的运行速度,也已达到发展瓶颈。基于此,本发明实施例提供了一种基于GPU的特征比对方法及装置,下面通过实施例进行描述。
实施例1
本发明实施例提供了一种基于GPU(Graphics Processing Unit,图形处理器)的特征比对方法,该方法依据特征比对算法并行度很高的特点,采用具有很高并行度的GPU来进行大吞吐量的特征比对,利用N卡GPU的CUDA进行并行比对,GPU中包含的CUDA核心数几百至上千个不等,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
参见图1A,该方法具体包括以下步骤:
步骤101:在GPU显存中建立动态特征库,及向GPU输入待检测特征。
本发明实施例的执行主体为配备有N卡GPU的终端。在通过GPU进行特征对比时,终端首先将预设特征库中的特征存入GPU的显存中,以使GPU直接从显存中读取特征,提高特征读取的效率。
上述预设特征库为预先建立的用于特征对比的特征库,预设特征库中包含数目庞大的特征。本发明实施例中,在将预设特征库中的特征存入GPU的显存中之前,先在显存中建立动态特征库,具体建立过程包括:
在GPU显存中创建动态数据库;根据预设特征库包括的特征总数和GPU的内核数,建立动态数据库对应的多个分组;根据预设特征库及多个分组,生成动态特征库。
上述动态数据库与预设特征库相对应,在上述GPU显存中创建动态数据库时,仅生成动态数据库的库名称和库ID(Identity,身份标识号),并不为该动态数据库分配实际的显存空间,在实际往该动态数据库中存入特征时才分配实际的显存空间,如此可以达到GPU显存的最大化利用率。
上述库名称可以与预设特征库的名称相同,上述库ID可以与预设特征库的ID相同。
在显存中创建动态数据库后,通过如下方式建立该动态数据库对应的多个分组,具体包括:
根据GPU的内核数,确定分组对应的特征数目;根据预设特征库包括的特征总数及分组对应的特征数目,计算动态数据库对应的分组数目;在动态数据库中创建上述分组数目个分组。
上述分组对应的特征数目即为分组所容纳的特征数目。在通过GPU并行运算时,GPU的所有内核可以同时执行相同的线程操作,进行相同的运算。因此本发明实施例在确定分组对应的特征数目时,直接将GPU的内核数确定为分组对应的特征数目,如此后续在通过GPU并行特征对比时,可通过GPU的内核同时访问分组中的每个特征,将分组中的每个特征同时与待检测特征进行比对,以提高特征比对的效率。
通过上述方式确定出分组对应的特征数目后,计算预设特征库包括的特征总数与分组对应的特征数目之间的比值,将计算的比值作为动态数据库对应的分组数目。
为了便于理解上述计算分组数目的过程,下面举例进行说明。例如,假设预设特征库包括的特征总数为100万个,GPU的内核数为2000个,则确定分组对应的特征数目为2000个,一共需创建500个分组。
在动态数据库中创建上述分组数目个分组时,对于每个分组,仅申请预设大小的存储空间,该预设大小可以为4K或6K等。在为分组申请的存储空间中存储分组对应的分组信息,该分组信息包括分组标识及分组对应的特征数目等。只有当实际向分组中存储特征时,才为分组分配实际的显存空间,以保证GPU显存的利用率最大化。
通过上述方式在动态数据库中创建多个分组之后,通过如下方式将预设特征库中的特征存入动态数据库中,以生成动态特征库,具体包括:
根据预设特征库包括的特征及分组对应的特征数目,确定每个分组所需占用的存储空间;根据每个分组所需占用的存储空间,分别为每个分组分配显存空间;将预设特征库包括的特征,存储在为每个分组分配的显存空间中。
上述确定每个分组所需占用的存储空间时,可以确定预设特征库中分组对应的特征数目个特征的数据大小,将该数据大小确定为每个分组所需占用的存储空间。也可以预先设定每个特征的数据大小为预设值,计算分组对应的特征数目与该预设值之间的乘积,将该乘积确定为每个分组所需占用的存储空间。
在将预设特征库包括的特征存入为每个分组分配的显存空间中时,可以从预设特征库中的第一个特征开始,依次将所有特征存入动态特征库的分组中,在存储过程中可能存在存入特征的数据大小与上述为分组分配的存储空间不相符的情况,此时需重新调整分组的显存空间。当存入特征的数据大小大于分组的显存空间时,计算存入特征的数据大小与分组的显存空间的差值,为该分组追加分配该差值大小的显存空间。当存入特征的数据大小小于分组的显存空间时,计算分组的显存空间与存入特征的数据大小的差值,回收该差值大小的显存空间。
通过上述方式,在实际向动态特征库的分组中存入特征时,才为分组分配实际的显存空间,且通过动态分配显存空间的方式,实现显存空间的多退少补,实现了GPU显存的合理利用,且能够使得GPU显存的利用率达到最大。
将预设特征库中的特征存入动态特征库的分组中后,GPU显存中分组与特征的映射关系如图1B所示,在图1B中动态特征库1包括分组1、分组2、分组3、分组4、…、分组N-1和分组N。分组1对应于特征1、特征2、特征3、特征4、…、特征N-1和特征N。同样地,分组2、分组3、分组4、…、分组N-1和分组N也分别对应于N个特征,只是在图1B中未画出。
在实际操作中预设特征库中的特征可能发生改变,如在预设特征库中增加新的特征,或者从预设特征库中删除一些特征。此时需要对GPU显存中的动态特征库进行相应调整,以使动态特征库中的特征与预设特征库中的特征保持一致。
当需在预设特征库中增加特征时,根据需增加的特征,在动态特征库中建立新的分组,为新的分组分配显存空间,将需增加的特征存储在为新的分组分配的显存空间中。其中,为新的分组分配的显存空间与需增加的特征的数据大小相适应。
或者,还可以根据需增加的特征,查看动态特征库中是否存在包含空闲分组空间的分组,如果是,则将需增加的特征存储在包含空闲分组空间的分组中,如果否,则从动态特征库中随机选择一个或多个分组,为选择的分组追加分配存储空间,将需增加的特征存储在选择的这些分组中。
例如,在图1C中,原先分组中包括特征1、2、3、…、M、…、N,现在需增加特征N+1,则为该分组追加分配存储空间,将特征N+1存储在追加分配的存储空间中。
当需从预设特征库中删除特征时,确定需删除的特征所在的分组;从确定的分组的末尾,抽取与需删除的特征的数目相同个数个特征;从确定的分组中删除需删除的特征,将抽取的特征依次存储在需删除的特征对应的显存空间中。本发明实施例还将抽取特征后分组末尾空闲的存储空间置空。
为了便于理解上述删除特征的过程,下面结合图1D进行具体说明。在图1D中,原先分组中包括特征1、2、3、…、M、…、N,现在需要将特征3删除,则从该分组的末尾取出特征N,将特征3删除,然后将特征N存储在原先存储特征3的显存空间处,并将原先存储特征N的显存空间置为NULL(空)。
通过上述方式在GPU显存中创建动态特征库后,还向GPU中输入待检测特征,然后通过如下步骤102和103的操作并行比对待检测特征与动态特征库中的每个特征,并得到最终结果。
步骤102:通过GPU调用运算平台CUDA(Compute Unified Device Architecture)内核函数,并行比对待检测特征与动态特征库中的特征,得到多个比对结果。
通过GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问动态特征库中分组包括的每个特征,通过多线程将待检测特征同时与分组中每个的特征进行比对。
在本发明实施例中,通过GPU调用CUDA内核函数进行比对,比对运算是简单的线性运算,每个内核所执行的操作是一样的,因此GPU内核越多,并发数越高,比对效率就越高。
例如,NVIDIA显卡的GPU使用的架构中为32个内核,这32个内核在访问显存时按序访问,这样可以使访问显存的效率更高。动态特征库中一个特征是由多个float(浮点)型变量组成,因此一个线程在访问一个特征时必须保证访问的每一个float型变量和其他线程在显存中是并列关系。特征在显存中的排列方式和访问方式如图1E所示。
通过上述方式多线程并发访问待检测特征与动态特征库中的多个特征后,得到多个比对结果,该比对结果可以为待检测特征与动态特征库中的特征之间的相似度。
步骤103:通过GPU将多个比对结果传输给CPU,通过CPU从多个比对结果中获取最终比对结果。
CPU接收到GPU传输的多个比对结果后,按照预设顺序对这多个比对结果进行排序。当比对结果为相似度时,上述预设顺序可以为按照相似度从小到大或从大到小的顺序进行排序。然后CPU从排序后的多个比对结果中选择出相似度最大的预设数目个比对结果,将选择出的比对结果作为此次特征比对的最终比对结果。
由于特征比对时对动态特征库中特征的增删操作并不多,比对时需要将动态特征库中大量的特征与一个或少数几个待检测特征比对,通过本发明实施例提供的比对方法可以更高效的利用资源在短时间内识别出最终比对结果。
本发明实施例是在N卡GPU的CUDA中完成的,其GPU中包含的CUDA核心数几百个至上千个不等,对于本算法CUDA核心数越多,效率越高,同时并行的进程数就越多,且随着GPU发展,CUDA核心数不断增加,比对效率也会不断提高。
在本发明实施例中,使用GPU并行运算的方法高效进行特征比对,特征比对时使用显存输入输出排列方式,进行高速读取,使特征比对算法以最快速度高效完成待检测特征与动态特征库中的特征之间的比对。且使用CUDA的共享内存高速放存的效果可以进行多个待检测特征的同时比对。通过CUDA二维内存,将动态特征库分组管理,使动态特征库中的特征可以随意增删。
本发明实施例还大大减少了CPU的压力,可以在特征比对的同时让CPU进行其他计算,例如特征提取等,使得整个系统运算效果性能最大化。另外,GPU具有大吞吐量的特点,一块GPU在价格、功耗及体积上,相比同样性能的CPU都具有很大的优势,不仅减少了特征比对的成本,且更加合理的利用了硬件资源。
在本发明实施例中,在GPU显存中建立动态特征库,向所述GPU输入待检测特征;通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;通过所述GPU将所述多个比对结果传输给CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。本发明使用GPU并行运算的方法高效进行特征比对,利用N卡GPU的CUDA进行特征并行比对,GPU中包含的CUDA核心数几百至上千个不等,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
实施例2
参见图2,本发明实施例提供了一种基于GPU的特征比对装置,该装置用于执行上述实施例1提供的基于GPU的特征比对方法。该装置具体包括:
建立模块201,用于在GPU显存中建立动态特征库;
输入模块202,用于向GPU输入待检测特征;
比对模块203,用于通过GPU调用运算平台CUDA内核函数,并行比对待检测特征与动态特征库中的特征,得到多个比对结果;
获取模块204,用于通过GPU将多个比对结果传输给中央处理器CPU,通过CPU从多个比对结果中获取最终比对结果。
在通过GPU进行特征对比时,首先通过建立模块201将预设特征库中的特征存入GPU的显存中,以使GPU直接从显存中读取特征,提高特征读取的效率。建立模块201通过如下创建单元、建立单元和生成单元来生成显存中的动态特征库。
创建单元,用于在GPU显存中创建动态数据库;建立单元,用于根据预设特征库包括的特征总数和GPU的内核数,建立动态数据库对应的多个分组;生成单元,用于根据预设特征库及多个分组,生成动态特征库。
上述动态数据库与预设特征库相对应,在上述GPU显存中创建动态数据库时,仅生成动态数据库的库名称和库ID,并不为该动态数据库分配实际的显存空间,在实际往该动态数据库中存入特征时才分配实际的显存空间,如此可以达到GPU显存的最大化利用率。
上述建立单元通过第一确定子单元、计算子单元和创建子单元在动态数据库中创建多个分组。
第一确定子单元,用于根据GPU的内核数,确定分组对应的特征数目;计算子单元,用于根据预设特征库包括的特征总数及分组对应的特征数目,计算动态数据库对应的分组数目;创建子单元,用于在动态数据库中创建分组数目个分组。
上述分组对应的特征数目即为分组所容纳的特征数目。在通过GPU并行运算时,GPU的所有内核可以同时执行相同的线程操作,进行相同的运算。因此本发明实施例在确定分组对应的特征数目时,直接将GPU的内核数确定为分组对应的特征数目,如此后续在通过GPU并行特征对比时,可通过GPU的内核同时访问分组中的每个特征,将分组中的每个特征同时与待检测特征进行比对,以提高特征比对的效率。
在动态数据库中创建上述分组数目个分组时,对于每个分组,仅申请预设大小的存储空间,该预设大小可以为4K或6K等。在为分组申请的存储空间中存储分组对应的分组信息,该分组信息包括分组标识及分组对应的特征数目等。只有当实际向分组中存储特征时,才为分组分配实际的显存空间,以保证GPU显存的利用率最大化。
建立模块201包括的生成单元通过第二确定子单元、分配子单元和存储子单元将预设特征库中的特征存入动态数据库包括的多个分组中,以生成最终的动态特征库。
第二确定子单元,用于根据预设特征库包括的特征及分组对应的特征数目,确定每个分组所需占用的存储空间;分配子单元,用于根据每个分组所需占用的存储空间,分别为每个分组分配显存空间;存储子单元,用于将预设特征库包括的特征,存储在为每个分组分配的显存空间中。
在本发明实施例中,比对模块203,用于通过GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问动态特征库中分组包括的每个特征,通过多线程将待检测特征同时与分组中的每个特征进行比对。
在实际操作中预设特征库中的特征可能发生改变,如在预设特征库中增加新的特征,或者从预设特征库中删除一些特征。此时需要对GPU显存中的动态特征库进行相应调整,以使动态特征库中的特征与预设特征库中的特征保持一致。
当在预设特征库中增加特征时,该装置通过如下增加模块在动态特征库中增加特征。
增加模块,用于当需在预设特征库中增加特征时,根据需增加的特征,建立新的分组,为新的分组分配显存空间,将需增加的特征存储在为新的分组分配的显存空间中。
当从预设特征库中删除特征时,该装置通过如下删除模块从动态特征库中删除特征。
删除模块,用于当需从预设特征库中删除特征时,确定需删除的特征所在的分组;从确定的分组的末尾,抽取与需删除的特征的数目相同个数个特征;从确定的分组中删除需删除的特征,将抽取的特征依次存储在需删除的特征对应的显存空间中。
在本发明实施例中,在GPU显存中建立动态特征库,向所述GPU输入待检测特征;通过所述GPU调用运算平台CUDA内核函数,并行比对所述待检测特征与所述动态特征库中的特征,得到多个比对结果;通过所述GPU将所述多个比对结果传输给CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。本发明使用GPU并行运算的方法高效进行特征比对,利用N卡GPU的CUDA进行特征并行比对,GPU中包含的CUDA核心数几百至上千个不等,CUDA核心数越多,特征比对的效率越高,且本发明可随着GPU核心数的不断增加,比对效率也会不断提高。
本发明实施例所提供的基于GPU的特征比对装置可以为设备上的特定硬件或者安装于设备上的软件或固件等。本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,前述描述的系统、装置和单元的具体工作过程,均可以参考上述方法实施例中的对应过程,在此不再赘述。
在本发明所提供的实施例中,应该理解到,所揭露装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围。都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。
Claims (8)
1.一种基于GPU的特征比对方法,其特征在于,所述方法包括:
在图形处理器GPU显存中建立动态特征库,及向所述GPU输入待检测特征;
在图形处理器GPU显存中创建动态数据库;
根据所述GPU的内核数,确定分组对应的特征数目;
根据预设特征库包括的特征总数及所述分组对应的特征数目,计算所述动态数据库对应的分组数目;
在所述动态数据库中创建所述分组数目个分组;
根据所述预设特征库及多个所述分组,生成动态特征库;
通过所述GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问所述动态特征库中分组包括的每个特征,通过多线程将所述待检测特征同时与分组中的每个特征进行比对,得到多个比对结果;
通过所述GPU将所述多个比对结果传输给中央处理器CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述预设特征库及多个所述分组,生成动态特征库,包括:
根据所述预设特征库包括的特征及所述分组对应的特征数目,确定每个分组所需占用的存储空间;
根据所述每个分组所需占用的存储空间,分别为所述每个分组分配显存空间;将所述预设特征库包括的特征,存储在为所述每个分组分配的显存空间中。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当需在所述预设特征库中增加特征时,根据需增加的特征,建立新的分组,为所述新的分组分配显存空间,将所述需增加的特征存储在为所述新的分组分配的显存空间中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当需从所述预设特征库中删除特征时,确定需删除的特征所在的分组;
从确定的所述分组的末尾,抽取与所述需删除的特征的数目相同个数个特征;
从确定的所述分组中删除所述需删除的特征,将抽取的特征依次存储在所述需删除的特征对应的显存空间中。
5.一种基于GPU的特征比对装置,其特征在于,所述装置包括:
建立模块,用于在图形处理器GPU显存中建立动态特征库;
创建单元,用于在图形处理器GPU显存中创建动态数据库;
建立单元,包括:
第一确定子单元,用于根据所述GPU的内核数,确定分组对应的特征数目;
计算子单元,用于根据预设特征库包括的特征总数及所述分组对应的特征数目,
计算所述动态数据库对应的分组数目;
创建子单元,用于在所述动态数据库中创建所述分组数目个分组;
生成单元,用于根据所述预设特征库及多个所述分组,生成动态特征库;
输入模块,用于向所述GPU输入待检测特征;
比对模块,用于通过所述GPU的多个内核同时调用运算平台CUDA内核函数,多线程并发访问所述动态特征库中分组包括的每个特征,通过多线程将所述待检测特征同时与分组中的每个特征进行比对;
获取模块,用于通过所述GPU将所述多个比对结果传输给中央处理器CPU,通过所述CPU从所述多个比对结果中获取最终比对结果。
6.根据权利要求5所述的装置,其特征在于,所述生成单元包括:
第二确定子单元,用于根据所述预设特征库包括的特征及所述分组对应的特征数目,确定每个分组所需占用的存储空间;
分配子单元,用于根据所述每个分组所需占用的存储空间,分别为所述每个分组分配显存空间;
存储子单元,用于将所述预设特征库包括的特征,存储在为所述每个分组分配的显存空间中。
7.根据权利要求5所述的装置,其特征在于,所述装置还包括:
增加模块,用于当需在所述预设特征库中增加特征时,根据需增加的特征,建立新的分组,为所述新的分组分配显存空间,将所述需增加的特征存储在为所述新的分组分配的显存空间中。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括:
删除模块,用于当需从所述预设特征库中删除特征时,确定需删除的特征所在的分组;从确定的所述分组的末尾,抽取与所述需删除的特征的数目相同个数个特征;从确定的所述分组中删除所述需删除的特征,将抽取的特征依次存储在所述需删除的特征对应的显存空间中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610355521.8A CN106067158B (zh) | 2016-05-26 | 2016-05-26 | 一种基于gpu的特征比对方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610355521.8A CN106067158B (zh) | 2016-05-26 | 2016-05-26 | 一种基于gpu的特征比对方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106067158A CN106067158A (zh) | 2016-11-02 |
CN106067158B true CN106067158B (zh) | 2019-09-06 |
Family
ID=57420226
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610355521.8A Active CN106067158B (zh) | 2016-05-26 | 2016-05-26 | 一种基于gpu的特征比对方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106067158B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112906728B (zh) * | 2019-12-04 | 2023-08-25 | 杭州海康威视数字技术股份有限公司 | 一种特征比对方法、装置及设备 |
CN112036370B (zh) * | 2020-09-22 | 2023-05-12 | 济南博观智能科技有限公司 | 一种人脸特征比对方法、系统、设备及计算机存储介质 |
CN112446816B (zh) * | 2021-02-01 | 2021-04-09 | 成都点泽智能科技有限公司 | 显存动态数据存储方法、装置及服务器 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182210A (zh) * | 2014-09-02 | 2014-12-03 | 重庆大学 | 一种基于cuda的多gpu数据并行比对方法 |
CN105404635A (zh) * | 2014-09-16 | 2016-03-16 | 华为技术有限公司 | 字符串匹配的方法、设备和异构计算系统 |
CN105550974A (zh) * | 2015-12-13 | 2016-05-04 | 复旦大学 | 基于gpu的图像特征提取算法的加速方法 |
-
2016
- 2016-05-26 CN CN201610355521.8A patent/CN106067158B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104182210A (zh) * | 2014-09-02 | 2014-12-03 | 重庆大学 | 一种基于cuda的多gpu数据并行比对方法 |
CN105404635A (zh) * | 2014-09-16 | 2016-03-16 | 华为技术有限公司 | 字符串匹配的方法、设备和异构计算系统 |
CN105550974A (zh) * | 2015-12-13 | 2016-05-04 | 复旦大学 | 基于gpu的图像特征提取算法的加速方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106067158A (zh) | 2016-11-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378338A (zh) | 一种文本识别方法、装置、电子设备和存储介质 | |
CN110457577B (zh) | 数据处理方法、装置、设备和计算机存储介质 | |
CN106067158B (zh) | 一种基于gpu的特征比对方法及装置 | |
CN108288208B (zh) | 基于图像内容的展示对象确定方法、装置、介质及设备 | |
CN109033001A (zh) | 用于分配gpu的方法和装置 | |
CN101963969B (zh) | Oracle RAC系统中实现负载均衡的方法和数据库服务器 | |
CN108764319A (zh) | 一种样本分类方法和装置 | |
CN108933822B (zh) | 用于处理信息的方法和装置 | |
CN109614510B (zh) | 一种图像检索方法、装置、图形处理器和存储介质 | |
CN110472899A (zh) | 一种物品的出库分配方法和装置 | |
CN104424331A (zh) | 数据抽样方法及装置 | |
CN107341761A (zh) | 一种深度神经网络的计算执行方法和系统 | |
CN104142946A (zh) | 一种同款业务对象聚合、搜索的方法和系统 | |
CN107729423A (zh) | 一种大数据处理方法及装置 | |
CN113761003A (zh) | 用户画像数据处理方法和装置、电子设备和可读存储介质 | |
CN109710542A (zh) | 一种满n叉树构建方法及装置 | |
CN113392863A (zh) | 一种机器学习训练数据集的获取方法、获取装置及终端 | |
CN107395708A (zh) | 一种处理下载请求的方法和装置 | |
CN105872082A (zh) | 基于容器集群负载均衡算法的细粒度资源响应系统 | |
CN110297959A (zh) | 数据存储方法、装置、存储介质及边缘服务器 | |
CN108038171A (zh) | 数据写入方法、装置及数据服务器 | |
CN108958659A (zh) | 一种分布式存储系统的小文件聚合方法、装置及介质 | |
Glatter et al. | Scalable data servers for large multivariate volume visualization | |
CN110532448A (zh) | 基于神经网络的文档分类方法、装置、设备及存储介质 | |
CN109754295A (zh) | 用于输出信息的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
PP01 | Preservation of patent right | ||
PP01 | Preservation of patent right |
Effective date of registration: 20220726 Granted publication date: 20190906 |