CN112613390A - 多gpu集群并行人脸搜索方法与系统 - Google Patents
多gpu集群并行人脸搜索方法与系统 Download PDFInfo
- Publication number
- CN112613390A CN112613390A CN202011507376.3A CN202011507376A CN112613390A CN 112613390 A CN112613390 A CN 112613390A CN 202011507376 A CN202011507376 A CN 202011507376A CN 112613390 A CN112613390 A CN 112613390A
- Authority
- CN
- China
- Prior art keywords
- search
- face
- feature data
- search server
- face 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/161—Detection; Localisation; Normalisation
- G06V40/164—Detection; Localisation; Normalisation using holistic features
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06V—IMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
- G06V40/00—Recognition of biometric, human-related or animal-related patterns in image or video data
- G06V40/10—Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
- G06V40/16—Human faces, e.g. facial parts, sketches or expressions
- G06V40/168—Feature extraction; Face representation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Computer Hardware Design (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种多gpu集群并行人脸搜索方法与系统,包括以下步骤:构建包括前置管理端和搜索服务端构成的人脸搜索系统,前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果并输出;搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端;以构建的人脸搜索系统进行新增人脸特征数据及人脸信息的存储,以及处理外部人脸搜索请求。本发明的人脸搜索方法与系统,支持高并发、低延时并可消除gpu计算下的人脸特征底库数据量的限制。
Description
技术领域
本发明涉及人脸搜索技术领域,具体而言涉及一种多gpu集群并行人脸搜索方法与系统,旨在针对超大型人脸库集群的搜索实现。
背景技术
人脸搜索的目的是根据输入的人脸照片(即一个对象)从海量的人脸数据(基于以往的海量的对象的照片所提取)中找到适配的结果,即与照片中的人脸对应的人是同一个人的照片。简而言之就是以图识图,根据一张包括了人脸的照片而搜索出在网上(数据库中)的所有照片。
在人脸搜索过程中,其原理是将需要待搜索的人脸特征值(浮点数组)与人脸特征底库中的所有人脸特征值进行欧式距离计算,距离最短的并且小于预设阈值则该人脸特征底库中人脸特征对应的人脸信息即为人脸搜索的结果。
当单个人脸特征底库数量(包含人脸特征数据及相关人脸信息)达到千万级甚至上亿级这种超大型海量规模时,对于高并发低延时的应用场景中,传统的cpu计算方式已经不能满足需求,需要借用gpu强大的浮点运算能力。由于人脸特征底库数量巨大,存储在内存中会造成大量的时间浪费在从内存到显存拷贝数据的操作上,所以必须直接存储在gpu显存中计算。
但是gpu的显存都是有限的,一个512维度浮点型的人脸特征的大小为2KB,常用的p4(显存不到8GB)显卡也只能存储300万人脸特征数据,同时需要一定的预留空间作为计算缓存。在一些应用场景中,例如公安安防相关的搜索条件下,以省级、或者国家级人员为底库的人脸搜索场景下,数量一般都在5000万以上甚至过亿,而一台服务器一般支持gpu的插口数量为4,则大约需要16张p4显卡和4台服务器。目前商用环境下,对于这样超大人脸特征底库的数量通常需要控制底库数量,例如控制在1000万-2000万以下,对底库数量的扩展性支持不佳,另外高并发低时延的技术要求满足不足。
高并发低时延的需求在这种超大数量人脸特征底库下显得尤为重要,对于实时性高的应用程序,当这种人脸搜索后端服务时间超长时,客户的体验会变得极差。例如,在安防的需求单个人脸特征底库数据达到上亿级别的场景无法满足,只能降低行政级别到市级别的人脸特征底库量。
发明内容
本发明目的旨在解决超大人脸底库下人脸搜索的底库量大小及系统结构限制和满足超大人脸特征底库量下的高并发低延时的人脸搜索应用需求的问题,提供一种多gpu集群并行人脸搜索方法与系统。
根据本发明的示例性实施例的多gpu集群并行人脸搜索方法,采用两层结构的存储和搜索处理,再进行重组合并递归的实现方式,包括基于两层机构的人脸数据的存储方式以及搜索方式,二者相互配合实现本发明的支持高并发、低延时并消除gpu计算下的人脸特征底库数据量的限制的人脸搜索。
根据本发明改进的第一方面,提出一种多gpu集群并行人脸搜索方法,包括以下步骤:
构建包括前置管理端和搜索服务端构成的人脸搜索系统,其中:
-前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果并输出;
-搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端;
以前述构建的人脸搜索系统进行新增人脸特征数据及人脸信息的存储,在存储过程中,前置管理端根据所有连接的搜索服务端的所有gpu的剩余容量的最大值确定存储的搜索服务端,所述搜索服务端根据本地所有的gpu剩余容量的进行存储,直到新增的人脸特征数据存储完毕;
所述前置管理端在接收到外部的人脸搜索请求时,将请求同时发送至所有连接的搜索服务端,接收到请求的搜索服务端同时在本地gpu存储的人脸特征数据中计算搜索出结果,并返回给前置管理端,前置管理端将所有搜索服务端返回结果计算合并出最优解,最后输出。
优选地,搜索服务端包括连接到前置管理端的节点搜索服务端以及子系统搜索服务端,所述子系统搜索服务端包括子节点前置管理端以及下级子系统搜索服务端,所述子节点前置管理端用于管理收到的人脸搜索请求并转发至下级子系统搜索服务端、并管理连接的下级子系统搜索服务端,以及重组分析合并下级子系统搜索服务端返回的搜索结果并输出;所述下级子系统搜索服务端用于存储人脸特征数据,以及接收子节点前置管理端的人脸搜索请求,控制下级子系统搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给子节点前置管理端。
优选地,所述人脸搜索系统包含至少一个节点搜索服务端以及至少一个子系统搜索服务端。
优选地,所述子系统搜索服务端包括至少一个子节点前置管理端以及至少一个下级子系统搜索服务端。
优选地,所述下级子系统搜索服务端具有与子系统搜索服务端相同的一级或者多级递归架构。
优选地,对于新增人脸特征数据及人脸信息的存储,其具体存储处理过程包括以下步骤:
步骤2-1、前置管理端接收新增人脸特征数据及相关人脸信息,记录新增人脸特征数据所需容量A;
步骤2-2、前置管理端根据与其连接的所有搜索服务端的剩余容量而计算获得搜索服务端的gpu剩余容量最大的搜索服务端,并记录其剩余容量值B;
步骤2-3、判断剩余容量值B是否大于新增人脸特征数据所需容量A:若大于,则将新增人脸特征数据及相关人脸信息发送至该搜索服务端,并置该搜索服务端的剩余容量为B-A;若小于,则裁剪出B容量大小的人脸特征数据及相关人脸信息,发送至该搜索服务端并将其剩余容量置0,然后将裁剪剩余的新增人脸特征数据及相关人脸信息作为新增人脸特征数据主体并置A=A-B,转至步骤2-2,直到所有的新增人脸特征数据存储完毕;
步骤2-3、搜索服务端收到前置服务端新增人脸特征数据请求后,若搜索服务端为子系统搜索服务端,则转至步骤2-1进行递归操作,否则,搜索服务机持久化人脸特征数据及其人脸相关信息并记录新增人脸特征数据所需容量C;
步骤2-4、搜索服务端计算找出本地所有gpu中剩余容量最大的gpu并记录其剩余容量D;
步骤2-5、判断剩余容量D是否大于新增人脸特征数据所需容量C:若大于,则将新增人脸特征数据存入该gpu显存中并且置该gpu剩余容量为D-C;如小于,裁剪出容量D大小的人脸特征数据加入该gpu显存,然后将裁剪剩余的新增人脸特征数据作为新增人脸特征数据的主体并置C=C-D,转至步骤2-5。
优选地,对于接收到外界调用对象的人脸搜索请求,所述人脸搜索系统被配置按照下述方式进行人脸搜索和结果返回:
步骤3-1、前置管理端接收人脸搜索请求,将请求发送给所有连接到前置管理端的搜索服务端,并等待所有的返回结果;
步骤3-2、搜索服务端接收到人脸搜索请求后,若搜索服务端为子系统搜索服务端则转至步骤3-1进行递归操作,否则控制节点搜索服务端同时开启与节点搜索服务端本地的gpu数量相同的线程数进行人脸搜索,并使得每个线程与唯一的一个gpu绑定;
步骤3-3、线程开始后,对其所对应的gpu存储的所有人脸特征数据进行欧式距离计算,并得出欧式距离最小的特征所对应的人脸信息;
步骤3-4、待所有线程工作结束,主线程接收所有线程得出的结果,并确定所有线程结果中欧式距离最小的特征对应的人脸信息;
步骤3-5、搜索服务端将欧式距离最小特征对应的人脸信息和欧式距离信息返回给前置管理端;
步骤3-6、前置管理端等待所有连接的搜索服务端返回结果,并比较所有搜索服务端返回结果的欧式距离,找出对应欧式距离最小及其对应的人脸信息返回给外界调用对象。
根据本发明改进的第二方面,本发明还提出一种多gpu集群并行人脸搜索系统,包括前置管理端和搜索服务端;
所述前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果并输出;
所述搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端;
其中,对于新增人脸特征数据及人脸信息的存储,所述前置管理端根据所有连接的搜索服务端的所有gpu的剩余容量的最大值来确定存储的搜索服务端,所述搜索服务端根据本地所有的gpu剩余容量的进行存储,直到新增的人脸特征数据存储完毕;
所述前置管理端在接收到外部的人脸搜索请求时,将请求同时发送至所有连接的搜索服务端,接收到请求的搜索服务端同时在本地gpu存储的人脸特征数据中计算搜索出结果,并返回给前置管理端,前置管理端将所有搜索服务端返回结果计算合并出最优解,最后输出。
优选地,所述搜索服务端包括连接到前置管理端的节点搜索服务端以及子系统搜索服务端:
所述子系统搜索服务端包括子节点前置管理端以及下级子系统搜索服务端;
-所述子节点前置管理端用于管理收到的人脸搜索请求并转发至下级子系统搜索服务端、并管理连接的下级子系统搜索服务端,以及重组分析合并下级子系统搜索服务端返回的搜索结果并输出;
-所述下级子系统搜索服务端用于存储人脸特征数据,以及接收子节点前置管理端的人脸搜索请求,控制下级子系统搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给子节点前置管理端。
优选地,所述搜索服务端对于新增人脸特征数据及人脸信息的存储,具体存储处理过程包括以下步骤:
步骤2-1、前置管理端接收新增人脸特征数据及相关人脸信息,记录新增人脸特征数据所需容量A;
步骤2-2、前置管理端根据与其连接的所有搜索服务端的剩余容量而计算获得搜索服务端的gpu剩余容量最大的搜索服务端,并记录其剩余容量值B;
步骤2-3、判断剩余容量值B是否大于新增人脸特征数据所需容量A:若大于,则将新增人脸特征数据及相关人脸信息发送至该搜索服务端,并置该搜索服务端的剩余容量为B-A;若小于,则裁剪出B容量大小的人脸特征数据及相关人脸信息,发送至该搜索服务端并将其剩余容量置0,然后将裁剪剩余的新增人脸特征数据及相关人脸信息作为新增人脸特征数据主体并置A=A-B,转至步骤2-2,直到所有的新增人脸特征数据存储完毕;
步骤2-3、搜索服务端收到前置服务端新增人脸特征数据请求后,若搜索服务端为子系统搜索服务端,则转至步骤2-1进行递归操作,否则,搜索服务机持久化人脸特征数据及其人脸相关信息并记录新增人脸特征数据所需容量C;
步骤2-4、搜索服务端计算找出本地所有gpu中剩余容量最大的gpu并记录其剩余容量D;
步骤2-5、判断剩余容量D是否大于新增人脸特征数据所需容量C:若大于,则将新增人脸特征数据存入该gpu显存中并且置该gpu剩余容量为D-C;如小于,裁剪出容量D大小的人脸特征数据加入该gpu显存,然后将裁剪剩余的新增人脸特征数据作为新增人脸特征数据的主体并置C=C-D,转至步骤2-5。
优选地,所述搜索服务端对于新增人脸搜索请求,具体搜索处理包括以下步骤:
步骤3-1、前置管理端接收人脸搜索请求,将请求发送给所有连接到前置管理端的搜索服务端,并等待所有的返回结果;
步骤3-2、搜索服务端接收到人脸搜索请求后,若搜索服务端为子系统搜索服务端则转至步骤3-1进行递归操作,否则控制节点搜索服务端同时开启与节点搜索服务端本地的gpu数量相同的线程数进行人脸搜索,并使得每个线程与唯一的一个gpu绑定;
步骤3-3、线程开始后,对其所对应的gpu存储的所有人脸特征数据进行欧式距离计算,并得出欧式距离最小的特征所对应的人脸信息;
步骤3-4、待所有线程工作结束,主线程接收所有线程得出的结果,并确定所有线程结果中欧式距离最小的特征对应的人脸信息;
步骤3-5、搜索服务端将欧式距离最小特征对应的人脸信息和欧式距离信息返回给前置管理端;
步骤3-6、前置管理端等待所有连接的搜索服务端返回结果,并比较所有搜索服务端返回结果的欧式距离,找出对应欧式距离最小及其对应的人脸信息返回给外界调用对象。
与现有技术相比,本发明的显著优点在于:
1、本发明的人脸搜索系统采用灵活多变的递推系统结构,使得存储容量和并发进一步突破物理条件的限制,可以理论和实际的容量任意扩充的特性;
2、将超大人脸特征库数据量的搜索时间间隔的转成gpu显存大小数据量的人脸搜索,使得任何超大规模的人脸库搜索时间都可量化成单gpu缓存大小的搜索时间;
3、分而治之再重组合并递归的系统处理,既用于系统模块间又用于模块内部多线程处理,和整个系统架构设计遥相呼应,使得响应时间被限制在单gpu线程处理时间级别,例如对于1亿数据量的人脸特征数据和人脸相关信息来说,如果每个典型容量gpu可存储100W条数据,则需要100个gpu即可完成存储,而在处理人脸搜索时,可进行同时并发线程进行检索运算,那么前置管理端等待搜索返回的时间,基本上就是每个gpu进行多线程运算和结果输出的时间,极大的减少和控制响应时间;
4、本发明充分利用整个搜索系统里所有资源,特别是gpu强大的浮点运算能力,并且做到所有gpu同时运行,化整为零,各司其职但又统一有效。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1是本发明示例性实施例的人脸搜索系统的示意图。
图2是本发明示例性实施例的人脸特征数据存储方法的流程示意图。
图3是本发明示例性实施例的人脸特征数据搜索处理方法的流程示意图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
根据本发明示例性实施例的多gpu集群并行人脸搜索系统,采用两层分而治之再重组合并递归的设计方式,将超大人脸特征库数据量的搜索时间间隔的转成gpu显存大小数据量的人脸搜索,使得任何超大规模的人脸库搜索时间都可量化成单gpu缓存大小的搜索时间;结合分而治之再重组合并递归的处理方式,既用于系统模块间又用于模块内部多线程处理,和整个系统架构设计遥相呼应,使得响应时间被限制在单gpu线程处理时间级别,从而解决解决超大人脸底库下人脸搜索的底库量大小及系统结构限制和满足超大人脸特征底库量下的高并发低延时的人脸搜索应用需求:一是消除gpu计算下的人脸特征底库数据量的限制,理论上底库数量可以无限扩大,只需要不断地叠加gpu服务器的数量即可,并且系统结构最大限度地利用分而治之而后组合地特点,采用递归性质的系统结构,满足绝大部分现实需求;二是最大限度地利用gpu计算提高并发量和降低延时,采用分而治之的策略将超大底库量数据平均分为gpu缓存大小的一个一个实体,使得所有gpu搜索运算在同一时刻计算,这样等同于一个超大人脸特征底库量的搜索时间约等于一个gpu缓存大小人脸特征底库数据量的搜索时间。
结合图1-3所示示例性实施例的人脸搜索系统包括前置管理端和搜索服务端。
前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果,并输出。
搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端。
其中,对于新增人脸特征数据及人脸信息的存储,前置管理端根据所有连接的搜索服务端的所有gpu的剩余容量的最大值来确定存储的搜索服务端,搜索服务端根据本地所有的gpu剩余容量的进行存储,直到新增的人脸特征数据存储完毕。
前置管理端在接收到外部的人脸搜索请求时,将请求同时发送至所有连接的搜索服务端,接收到请求的搜索服务端同时在本地gpu存储的人脸特征数据中计算搜索出结果,并返回给前置管理端,前置管理端将所有搜索服务端返回结果计算合并出最优解,最后输出。
在优选的实施例中,搜索服务端包括连接到前置管理端的节点搜索服务端以及子系统搜索服务端。节点搜索服务端可采用具有数据处理、存储、数据通信(无论是本地还是网络通信)功能的服务器或者其他高性能的计算终端实现。前置管理端采用具有数据处理、存储、数据通信(无论是本地还是网络通信)功能的服务器或者其他高性能的计算终端实现。与此类似的,在子系统可以采用类似或者同样的服务器架构设计。
子系统搜索服务端包括子节点前置管理端以及下级子系统搜索服务端。
子节点前置管理端用于管理收到的人脸搜索请求并转发至下级子系统搜索服务端、并管理连接的下级子系统搜索服务端,以及重组分析合并下级子系统搜索服务端返回的搜索结果并输出。
下级子系统搜索服务端用于存储人脸特征数据,以及接收子节点前置管理端的人脸搜索请求,控制下级子系统搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给子节点前置管理端。
结合图1所示,优选地,人脸搜索系统包含至少一个节点搜索服务端以及至少一个子系统搜索服务端。
优选地,子系统搜索服务端包括至少一个子节点前置管理端以及至少一个下级子系统搜索服务端。
优选地,下级子系统搜索服务端具有与子系统搜索服务端相同的一级或者多级递归架构,例如在图1所示的示例中,以一级子系统搜索服务端为例进行说明。在本发明的教导下,前述的至少一个子系统搜索服务端中还可以设置更多级的类似前置管理端与搜索服务端的层级架构,即递归关系,例如在图1所示的子系统搜索服务端下还包括下一层的前置管理端和下一层的搜索服务端,以此类推。
也就是说,在搜索服务端返回计算的欧氏距离(得分)以及对应人脸信息给前置管理端时,如果是子系统内的搜索服务端则返回的,则前置管理端将结果再返回给上一级,以此类推,每一级前置管理端都对返回数据进行合并计算出最优解(例如所有返回值中的欧式距离最小值以及对应的人脸信息),并返回给上一级,最上级的前置管理机也通过同样的方式确定最优解,返回给外部调用对象。
结合图1所示,在本发明的示例中,在一个子系统搜索服务端的架构下,以子节点为例进行命名和处理,其功能与第一级的前置管理端和搜索服务端的功能类似,并以此可向下一级递推。
如此,在前述构建的人脸搜索系统中,各层级的搜索服务端可被设定成定时或者以其他的方式和/或周期上报本级搜索服务端(例如包括节点搜索服务端和子系统搜索服务端)内所有gpu的总容量和已使用的容量,从而可确定剩余容量。前置管理端可获得所有连接的搜索服务端的gpu容量相关数据。则,前置管理端可根据所有搜索服务器的gpu容量信息均衡的将输入的人脸特征数据分配的所有连接的搜索服务端上。
结合图1、2所示,搜索服务端对于新增人脸特征数据及人脸信息的存储,具体存储处理过程包括以下步骤:
步骤2-1、前置管理端接收新增人脸特征数据及相关人脸信息,记录新增人脸特征数据所需容量A;
步骤2-2、前置管理端根据与其连接的所有搜索服务端的剩余容量而计算获得搜索服务端的gpu剩余容量最大的搜索服务端,并记录其剩余容量值B;
步骤2-3、判断剩余容量值B是否大于新增人脸特征数据所需容量A:若大于,则将新增人脸特征数据及相关人脸信息发送至该搜索服务端,并置该搜索服务端的剩余容量为B-A;若小于,则裁剪出B容量大小的人脸特征数据及相关人脸信息,发送至该搜索服务端并将其剩余容量置0,然后将裁剪剩余的新增人脸特征数据及相关人脸信息作为新增人脸特征数据主体并置A=A-B,转至步骤2-2,直到所有的新增人脸特征数据存储完毕;
步骤2-3、搜索服务端收到前置服务端新增人脸特征数据请求后,若搜索服务端为子系统搜索服务端,则转至步骤2-1进行递归操作,否则,搜索服务机持久化人脸特征数据及其人脸相关信息并记录新增人脸特征数据所需容量C;
步骤2-4、搜索服务端计算找出本地所有gpu中剩余容量最大的gpu并记录其剩余容量D;
步骤2-5、判断剩余容量D是否大于新增人脸特征数据所需容量C:若大于,则将新增人脸特征数据存入该gpu显存中并且置该gpu剩余容量为D-C;如小于,裁剪出容量D大小的人脸特征数据加入该gpu显存,然后将裁剪剩余的新增人脸特征数据作为新增人脸特征数据的主体并置C=C-D,转至步骤2-5。
对于一个超大人脸人特征底库量的人脸搜索请求,由于人脸特征数据均匀分布在所有连接的搜索服务端上,当前置管理端收到人脸搜索请求时,首先会将请求同时发送至所有的搜索服务端上,所有收到的搜索服务端同时在本机的gpu存储的人脸特征数据中计算搜索出结果并返回给前置管理端,前置管理端将所有返回结果确定最优解,例如确定一个欧氏距离的最小值,并返回给外界调用对象。
结合图1、3所示,搜索服务端对于新增人脸搜索请求,具体搜索处理包括以下步骤:
步骤3-1、前置管理端接收人脸搜索请求,将请求发送给所有连接到前置管理端的搜索服务端,并等待所有的返回结果;
步骤3-2、搜索服务端接收到人脸搜索请求后,若搜索服务端为子系统搜索服务端则转至步骤3-1进行递归操作,否则控制节点搜索服务端同时开启与节点搜索服务端本地的gpu数量相同的线程数进行人脸搜索,并使得每个线程与唯一的一个gpu绑定;
步骤3-3、线程开始后,对其所对应的gpu存储的所有人脸特征数据进行欧式距离计算,并得出欧式距离最小的特征所对应的人脸信息;
步骤3-4、待所有线程工作结束,主线程接收所有线程得出的结果,并确定所有线程结果中欧式距离最小的特征对应的人脸信息;
步骤3-5、搜索服务端将欧式距离最小特征对应的人脸信息和欧式距离信息返回给前置管理端;
步骤3-6、前置管理端等待所有连接的搜索服务端返回结果,并比较所有搜索服务端返回结果的欧式距离,找出对应欧式距离最小及其对应的人脸信息返回给外界调用对象。
在本发明的实施例中,欧氏距离的计算过程可基于现有的方式实现。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (11)
1.一种多gpu集群并行人脸搜索方法,其特征在于,包括以下步骤:
构建包括前置管理端和搜索服务端构成的人脸搜索系统,其中:
-前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果并输出;
-搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端;
以前述构建的人脸搜索系统进行新增人脸特征数据及人脸信息的存储,在存储过程中,前置管理端根据所有连接的搜索服务端的所有gpu的剩余容量的最大值确定存储的搜索服务端,所述搜索服务端根据本地所有的gpu剩余容量的进行存储,直到新增的人脸特征数据存储完毕;
所述前置管理端在接收到外部的人脸搜索请求时,将请求同时发送至所有连接的搜索服务端,接收到请求的搜索服务端同时在本地gpu存储的人脸特征数据中计算搜索出结果,并返回给前置管理端,前置管理端将所有搜索服务端返回结果计算合并出最优解,最后输出。
2.根据权利要求1所述的多gpu集群并行人脸搜索方法,其特征在于,所述搜索服务端包括连接到前置管理端的节点搜索服务端以及子系统搜索服务端;
所述子系统搜索服务端包括子节点前置管理端以及下级子系统搜索服务端;
所述子节点前置管理端用于管理收到的人脸搜索请求并转发至下级子系统搜索服务端、并管理连接的下级子系统搜索服务端,以及重组分析合并下级子系统搜索服务端返回的搜索结果并输出;
所述下级子系统搜索服务端用于存储人脸特征数据,以及接收子节点前置管理端的人脸搜索请求,控制下级子系统搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给子节点前置管理端。
3.根据权利要求2所述的多gpu集群并行人脸搜索方法,其特征在于,所述人脸搜索系统包含至少一个节点搜索服务端以及至少一个子系统搜索服务端。
4.根据权利要求2所述的多gpu集群并行人脸搜索方法,其特征在于,所述子系统搜索服务端包括至少一个子节点前置管理端以及至少一个下级子系统搜索服务端。
5.根据权利要求2所述的多gpu集群并行人脸搜索方法,其特征在于,所述下级子系统搜索服务端具有与子系统搜索服务端相同的一级或者多级递归架构。
6.根据权利要求2-5中任意一项所述的多gpu集群并行人脸搜索方法,其特征在于,对于新增人脸特征数据及人脸信息的存储,其具体存储处理过程包括以下步骤:
步骤2-1、前置管理端接收新增人脸特征数据及相关人脸信息,记录新增人脸特征数据所需容量A;
步骤2-2、前置管理端根据与其连接的所有搜索服务端的剩余容量而计算获得搜索服务端的gpu剩余容量最大的搜索服务端,并记录其剩余容量值B;
步骤2-3、判断剩余容量值B是否大于新增人脸特征数据所需容量A:若大于,则将新增人脸特征数据及相关人脸信息发送至该搜索服务端,并置该搜索服务端的剩余容量为B-A;若小于,则裁剪出B容量大小的人脸特征数据及相关人脸信息,发送至该搜索服务端并将其剩余容量置0,然后将裁剪剩余的新增人脸特征数据及相关人脸信息作为新增人脸特征数据主体并置A=A-B,转至步骤2-2,直到所有的新增人脸特征数据存储完毕;
步骤2-3、搜索服务端收到前置服务端新增人脸特征数据请求后,若搜索服务端为子系统搜索服务端,则转至步骤2-1进行递归操作,否则,搜索服务机持久化人脸特征数据及其人脸相关信息并记录新增人脸特征数据所需容量C;
步骤2-4、搜索服务端计算找出本地所有gpu中剩余容量最大的gpu并记录其剩余容量D;
步骤2-5、判断剩余容量D是否大于新增人脸特征数据所需容量C:若大于,则将新增人脸特征数据存入该gpu显存中并且置该gpu剩余容量为D-C;如小于,裁剪出容量D大小的人脸特征数据加入该gpu显存,然后将裁剪剩余的新增人脸特征数据作为新增人脸特征数据的主体并置C=C-D,转至步骤2-5。
7.根据权利要求2-5中任意一项所述的多gpu集群并行人脸搜索方法,其特征在于,对于接收到外界调用对象的人脸搜索请求,所述人脸搜索系统被配置按照下述方式进行人脸搜索和结果返回:
步骤3-1、前置管理端接收人脸搜索请求,将请求发送给所有连接到前置管理端的搜索服务端,并等待所有的返回结果;
步骤3-2、搜索服务端接收到人脸搜索请求后,若搜索服务端为子系统搜索服务端则转至步骤3-1进行递归操作,否则控制节点搜索服务端同时开启与节点搜索服务端本地的gpu数量相同的线程数进行人脸搜索,并使得每个线程与唯一的一个gpu绑定;
步骤3-3、线程开始后,对其所对应的gpu存储的所有人脸特征数据进行欧式距离计算,并得出欧式距离最小的特征所对应的人脸信息;
步骤3-4、待所有线程工作结束,主线程接收所有线程得出的结果,并确定所有线程结果中欧式距离最小的特征对应的人脸信息;
步骤3-5、搜索服务端将欧式距离最小特征对应的人脸信息和欧式距离信息返回给前置管理端;
步骤3-6、前置管理端等待所有连接的搜索服务端返回结果,并比较所有搜索服务端返回结果的欧式距离,找出对应欧式距离最小及其对应的人脸信息返回给外界调用对象。
8.一种多gpu集群并行人脸搜索系统,其特征在于,包括前置管理端和搜索服务端;
所述前置管理端用于接收人脸搜索请求并转发至搜索服务端,并管理连接的搜索服务端,以及重组分析合并返回的搜索结果并输出;
所述搜索服务端用于存储人脸特征数据,以及接收前置管理端的人脸搜索请求,控制搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给前置管理端;
其中,对于新增人脸特征数据及人脸信息的存储,所述前置管理端根据所有连接的搜索服务端的所有gpu的剩余容量的最大值来确定存储的搜索服务端,所述搜索服务端根据本地所有的gpu剩余容量的进行存储,直到新增的人脸特征数据存储完毕;
所述前置管理端在接收到外部的人脸搜索请求时,将请求同时发送至所有连接的搜索服务端,接收到请求的搜索服务端同时在本地gpu存储的人脸特征数据中计算搜索出结果,并返回给前置管理端,前置管理端将所有搜索服务端返回结果计算合并出最优解,最后输出。
9.根据权利要求8所述的多gpu集群并行人脸搜索系统,其特征在于,所述搜索服务端包括连接到前置管理端的节点搜索服务端以及子系统搜索服务端:
所述子系统搜索服务端包括子节点前置管理端以及下级子系统搜索服务端;
-所述子节点前置管理端用于管理收到的人脸搜索请求并转发至下级子系统搜索服务端、并管理连接的下级子系统搜索服务端,以及重组分析合并下级子系统搜索服务端返回的搜索结果并输出;
-所述下级子系统搜索服务端用于存储人脸特征数据,以及接收子节点前置管理端的人脸搜索请求,控制下级子系统搜索服务端的所有gpu并发进行人脸搜索计算并将搜索结果返回给子节点前置管理端。
10.根据权利要求9所述的多gpu集群并行人脸搜索系统,其特征在于,所述搜索服务端对于新增人脸特征数据及人脸信息的存储,具体存储处理过程包括以下步骤:
步骤2-1、前置管理端接收新增人脸特征数据及相关人脸信息,记录新增人脸特征数据所需容量A;
步骤2-2、前置管理端根据与其连接的所有搜索服务端的剩余容量而计算获得搜索服务端的gpu剩余容量最大的搜索服务端,并记录其剩余容量值B;
步骤2-3、判断剩余容量值B是否大于新增人脸特征数据所需容量A:若大于,则将新增人脸特征数据及相关人脸信息发送至该搜索服务端,并置该搜索服务端的剩余容量为B-A;若小于,则裁剪出B容量大小的人脸特征数据及相关人脸信息,发送至该搜索服务端并将其剩余容量置0,然后将裁剪剩余的新增人脸特征数据及相关人脸信息作为新增人脸特征数据主体并置A=A-B,转至步骤2-2,直到所有的新增人脸特征数据存储完毕;
步骤2-3、搜索服务端收到前置服务端新增人脸特征数据请求后,若搜索服务端为子系统搜索服务端,则转至步骤2-1进行递归操作,否则,搜索服务机持久化人脸特征数据及其人脸相关信息并记录新增人脸特征数据所需容量C;
步骤2-4、搜索服务端计算找出本地所有gpu中剩余容量最大的gpu并记录其剩余容量D;
步骤2-5、判断剩余容量D是否大于新增人脸特征数据所需容量C:若大于,则将新增人脸特征数据存入该gpu显存中并且置该gpu剩余容量为D-C;如小于,裁剪出容量D大小的人脸特征数据加入该gpu显存,然后将裁剪剩余的新增人脸特征数据作为新增人脸特征数据的主体并置C=C-D,转至步骤2-5。
11.根据权利要求9或10所述的多gpu集群并行人脸搜索系统,其特征在于,所述搜索服务端对于新增人脸搜索请求,具体搜索处理包括以下步骤:
步骤3-1、前置管理端接收人脸搜索请求,将请求发送给所有连接到前置管理端的搜索服务端,并等待所有的返回结果;
步骤3-2、搜索服务端接收到人脸搜索请求后,若搜索服务端为子系统搜索服务端则转至步骤3-1进行递归操作,否则控制节点搜索服务端同时开启与节点搜索服务端本地的gpu数量相同的线程数进行人脸搜索,并使得每个线程与唯一的一个gpu绑定;
步骤3-3、线程开始后,对其所对应的gpu存储的所有人脸特征数据进行欧式距离计算,并得出欧式距离最小的特征所对应的人脸信息;
步骤3-4、待所有线程工作结束,主线程接收所有线程得出的结果,并确定所有线程结果中欧式距离最小的特征对应的人脸信息;
步骤3-5、搜索服务端将欧式距离最小特征对应的人脸信息和欧式距离信息返回给前置管理端;
步骤3-6、前置管理端等待所有连接的搜索服务端返回结果,并比较所有搜索服务端返回结果的欧式距离,找出对应欧式距离最小及其对应的人脸信息返回给外界调用对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011507376.3A CN112613390B (zh) | 2020-12-18 | 2020-12-18 | 多gpu集群并行人脸搜索方法与系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011507376.3A CN112613390B (zh) | 2020-12-18 | 2020-12-18 | 多gpu集群并行人脸搜索方法与系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112613390A true CN112613390A (zh) | 2021-04-06 |
CN112613390B CN112613390B (zh) | 2022-11-22 |
Family
ID=75240685
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011507376.3A Active CN112613390B (zh) | 2020-12-18 | 2020-12-18 | 多gpu集群并行人脸搜索方法与系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112613390B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106341478A (zh) * | 2016-09-13 | 2017-01-18 | 广州中大数字家庭工程技术研究中心有限公司 | 一种基于Hadoop的教育资源共享系统及实现方法 |
US20180308208A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Compute optimization mechanism for deep neural networks |
US20180307295A1 (en) * | 2017-04-21 | 2018-10-25 | Intel Corporation | Interconnect fabric link width reduction to reduce instantaneous power consumption |
CN109033001A (zh) * | 2018-07-17 | 2018-12-18 | 北京百度网讯科技有限公司 | 用于分配gpu的方法和装置 |
CN109726626A (zh) * | 2018-09-27 | 2019-05-07 | 合肥博焱智能科技有限公司 | 基于gpu的人脸识别系统 |
CN110362407A (zh) * | 2019-07-19 | 2019-10-22 | 中国工商银行股份有限公司 | 计算资源调度方法及装置 |
CN111191584A (zh) * | 2019-12-30 | 2020-05-22 | 电信科学技术第十研究所有限公司 | 一种人脸识别方法及装置 |
-
2020
- 2020-12-18 CN CN202011507376.3A patent/CN112613390B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106341478A (zh) * | 2016-09-13 | 2017-01-18 | 广州中大数字家庭工程技术研究中心有限公司 | 一种基于Hadoop的教育资源共享系统及实现方法 |
US20180307295A1 (en) * | 2017-04-21 | 2018-10-25 | Intel Corporation | Interconnect fabric link width reduction to reduce instantaneous power consumption |
US20180308208A1 (en) * | 2017-04-24 | 2018-10-25 | Intel Corporation | Compute optimization mechanism for deep neural networks |
CN109033001A (zh) * | 2018-07-17 | 2018-12-18 | 北京百度网讯科技有限公司 | 用于分配gpu的方法和装置 |
CN109726626A (zh) * | 2018-09-27 | 2019-05-07 | 合肥博焱智能科技有限公司 | 基于gpu的人脸识别系统 |
CN110362407A (zh) * | 2019-07-19 | 2019-10-22 | 中国工商银行股份有限公司 | 计算资源调度方法及装置 |
CN111191584A (zh) * | 2019-12-30 | 2020-05-22 | 电信科学技术第十研究所有限公司 | 一种人脸识别方法及装置 |
Non-Patent Citations (2)
Title |
---|
IRA KEMELMACHER-SHLIZERMAN 等: "The MegaFace Benchmark: 1 Million Faces for Recognition at Scale", 《CVPR2016》 * |
张杰: "基于GPU的大规模人脸识别系统的设计与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
Also Published As
Publication number | Publication date |
---|---|
CN112613390B (zh) | 2022-11-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2021500649A (ja) | シャード・データベースのシャード・テーブルにレコードを記憶するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、シャード・データベースのシャード・テーブルからレコードを検索するためのコンピュータ実装方法、コンピュータ・プログラム製品、およびシステム、ならびにシャード・データベースを記憶するためのシステム | |
CN110784498B (zh) | 一种个性化数据容灾方法及装置 | |
CN107391502B (zh) | 时间间隔的数据查询方法、装置及索引构建方法、装置 | |
CN111241195B (zh) | 分布式系统的数据库处理方法、装置、设备及存储介质 | |
CN116955361A (zh) | 存储器内密钥范围搜索方法和系统 | |
CN110941618A (zh) | 一种海量异构数据存储方法及系统 | |
CN111917834A (zh) | 一种数据同步方法、装置、存储介质及计算机设备 | |
CN113806300B (zh) | 数据存储方法、系统、装置、设备及存储介质 | |
CN118227337B (zh) | 一种键值对存储系统的处理方法和装置 | |
WO2023273082A1 (en) | Method for constructing feature base library, feature retrieval method, and related device | |
CN115858322A (zh) | 日志数据处理方法、装置和计算机设备 | |
CN112613390B (zh) | 多gpu集群并行人脸搜索方法与系统 | |
CN113190551A (zh) | 特征检索系统的构建方法、特征检索方法、装置及设备 | |
CN116775712A (zh) | 联表查询方法、装置、电子设备、分布式系统和存储介质 | |
CN112181302A (zh) | 一种数据多级存储和访问方法及系统 | |
CN116028505A (zh) | 一种在分布式数据库中实现高可用序列的方法 | |
CN114791788B (zh) | 一种基于区块链的数据存储方法及装置 | |
CN111046246A (zh) | 标签更新方法及装置、分布式存储系统 | |
CN114138831A (zh) | 一种数据搜索方法、装置及存储介质 | |
CN115238006A (zh) | 检索数据同步方法、装置、设备及计算机存储介质 | |
CN111581420B (zh) | 一种基于Flink的医学图像实时检索方法 | |
CN111339245B (zh) | 数据存储方法、装置、存储介质及设备 | |
KR102236521B1 (ko) | 데이터를 처리하기 위한 방법 및 장치 | |
CN112487089B (zh) | 基于数据页路由的分布式存储方法及系统 | |
CN115277610B (zh) | 基于双活环境的消息分流发送方法、装置、设备及介质 |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No.568 longmian Avenue, gaoxinyuan, Jiangning District, Nanjing City, Jiangsu Province, 211000 Applicant after: Xiaoshi Technology (Jiangsu) Co.,Ltd. Address before: No.568 longmian Avenue, gaoxinyuan, Jiangning District, Nanjing City, Jiangsu Province, 211000 Applicant before: NANJING ZHENSHI INTELLIGENT TECHNOLOGY Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |