CN112989091A - 人脸搜索方法、装置及边缘设备 - Google Patents
人脸搜索方法、装置及边缘设备 Download PDFInfo
- Publication number
- CN112989091A CN112989091A CN202110508273.7A CN202110508273A CN112989091A CN 112989091 A CN112989091 A CN 112989091A CN 202110508273 A CN202110508273 A CN 202110508273A CN 112989091 A CN112989091 A CN 112989091A
- Authority
- CN
- China
- Prior art keywords
- face
- matrix
- feature data
- module
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/58—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- 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
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Oral & Maxillofacial Surgery (AREA)
- Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Human Computer Interaction (AREA)
- Multimedia (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Library & Information Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Image Analysis (AREA)
Abstract
本发明提供一种人脸搜索方法、装置及边缘设备,针对人脸底库中需要根据数据容量进行循环多次计算欧氏距离和比对导致运算耗时长的问题,本发明将传统的在CPU中执行的循环计算转换成大矩阵内的点乘计算,减少运算时间,较传统CPU运算速度提高2‑4倍,大大提升了人脸搜索速度,使得人脸搜索不再成为应用程序的性能瓶颈。人脸检索还可以采用batch处理的方式,一次可以做到多张人脸照片的同时检索,实现高并发处理,将人脸检索吞吐量提升若干倍。
Description
技术领域
本发明涉及图像处理技术领域,尤其是人脸搜索,具体而言涉及一种针对海量人脸底库的情况下的人脸搜索方法、装置及边缘设备。
背景技术
人脸搜索的目的是根据输入的人脸照片(即一个对象)从海量的人脸底库中找到适配的结果,即与照片中的人脸对应的人是同一个人的照片。在现行的搜索方法中,一般通过暴力计算搜索对象与底库中的所有对象的欧氏距离或者余弦距离计算,对于一般场景可以使用欧式距离,即将搜索对象的人脸特征值(浮点数组)与底库中的所有人脸特征值进行欧式距离计算,将所有计算后的欧氏距离排序,选取距离最短所对应的人脸特征值及人脸信息对应作为搜索结果输出。当人脸底库中的数据较多,人流量较大时,对于这样的高并发、低延时的应用场景中,边缘设备往往需要耗费比较多的计算时间和计算资源在特征值的比对上。
而边缘设备中的CPU的浮点数运算能力偏弱,单纯使用CPU循环计算特征值与人脸底库中每一人脸特征值的欧式距离耗时很长,以常用的 2核A53+2核A73 的CPU实测,特征向量维度为512维,底库大小达到2万的规模时,做一次人脸检索大概需要70ms左右,而在例如医院、学校、大的社区等人流量较大且底库较多的应用场景下,人脸底库的数据容量(即存储的人脸信息)会达到几万以上,因此,传统的CPU计算方式耗时长,计算缓慢,已经不能满足需求。
发明内容
本发明的目的在于针对原先针对人脸底库中需要根据数据容量进行循环多次计算欧氏距离和比对导致的运算量大、耗时长的问题,提出一种高效的人脸搜索方法与装置,缩短CPU执行人脸搜索的运算时间,提升运算速度。
本发明的第一方面提出一种人脸搜索方法,尤其是适用于海量数据的人脸底库和/或高并发低延时要求的人脸搜索场景应用,所述的人脸搜索方法包括以下步骤:
接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X;
将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
将底库矩阵Y进行转置,获得转置矩阵Y’;
将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息。
优选地,所述将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的操作,采用矩阵运算加速库进行运算。
本发明的第二方面提出一种人脸搜索装置,包括:
用于接收输入的人脸搜索请求的数据接收模块,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X的输入特征矩阵构造模块;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y的底库矩阵构造模块,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
用于将底库矩阵Y进行转置,获得转置矩阵Y’的矩阵转置模块;
用于将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的矩阵点乘模块,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
用于取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息的搜索输出模块。
本发明的第三方面提出一种支持高并发的人脸搜索方法,包括以下步骤:
接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中;
判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q,Q为预设的并发量,且取值为大于2的正整数;
响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A;
将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
将底库矩阵B进行转置,获得转置矩阵B’;
将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C;
对所述矩阵C的每一行统计最小值及所在位置;以及
根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数,所述比对分数即为对应每一行的最小值。
本发明的第四方面提出一种支持高并发的人脸搜索装置,包括:
用于接收输入的人脸搜索请求的接收模块,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中队列处理模块;
用于判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q的判断模块,Q为预设的并发量,且取值为大于2的正整数;
用于响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A的第一矩阵构造模块;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B的第二矩阵构造模块,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
用于将底库矩阵B进行转置的转置模块,获得转置矩阵B’;
用于将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C的矩阵运算模块;
用于对所述矩阵C的每一行统计最小值及所在位置的统计模块;以及
用于根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数的结果输出模块,所述比对分数即为对应每一行的最小值。
本发明的第五方面提出 一种边缘设备,包括:
视频解码模块,被设置用以解码输入的视频流,并按照设置的周期进行帧图像提取;
人脸检测模块,被设置用以对提取的每一帧图像进行人脸检测,定位出人脸位置,并裁剪图像,获得人脸图像;
人脸特征提取模块,被设置用以提取人脸图像的特征数据;
人脸搜索模块,被设置用以根据前述任意一种方法来执行人脸搜索操作,其中以人脸特征提取模块提取的人脸图像的特征数据作为人脸搜索请求的人脸特征数据。
由本发明的各个方面的实施,本发明与现有技术相比,其显著的有益效果在于:
1.针对人脸底库中需要根据数据容量进行循环多次计算欧氏距离和比对导致运算耗时长的问题,本发明将传统的在CPU中执行的循环计算转换成大矩阵内的点乘计算,减少运算时间,还可以进一步通过加速矩阵运算库的使用,进一步提高人脸搜索的运算速度,较传统CPU运算速度提高2-4倍,大大提升了人脸搜索速度,使得人脸搜索不再成为应用程序的性能瓶颈,从另一方面提高了底库容量;
2. 人脸检索还可以采用batch处理的方式,一次可以做到多张人脸照片的同时检索,实现高并发处理,将人脸检索吞吐量提升若干倍;
3. 利用本发明的人脸检索方法,集成到边缘设备中,可以接入多路相机的视频输入,可以实现多路高发的人脸检索,由于边缘设备通常采用轻量级的CPU,不具备桌面级复杂架构和性能,例如为了兼顾功耗及性能,边缘设备的CPU一般采用2大核A73+2小核A53或者四核A55的架构,CPU的浮点数运算能力偏弱,单纯使用CPU循环计算特征值与人脸底库中每一人脸特征值的欧式距离耗时很长,而通过本发明的运算量的减少,使得边缘设备的应用可以更加拓展,突破传统高并发量带来运算负荷过高而影响其他应用的执行,或者导致系统崩溃的问题;
4. 本发明的人脸搜索方法在执行过程中,不需要特别限定多路输入的数量,或者严格限定进行一次人脸搜索的并发量,可根据实际输入确定即可,适应性好。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。另外,所要求保护的主题的所有组合都被视为本公开的发明主题的一部分。
附图说明
附图并不一定按比例绘制。在附图中,为了清晰起见,在每个图中,并非每个组成部分均被标记。其中:
图1是根据本发明实施例的人脸搜索方法的流程示意图。
图2是根据本发明实施例的计算机系统的原理框图。
图3是根据本发明实施例的在人脸底库中新增人脸特征数据的流程示意图。
图4是根据本发明实施例的在人脸底库中删除人脸特征数据的流程示意图。
图5是根据本发明实施例的人脸搜索装置的原理框图。
图6是根据本发明实施例的支持高并发的人脸搜索方法的流程示意图。
图7是根据本发明实施例的支持高并发的人脸搜索装置的原理框图。
图8是根据本发明实施例的边缘设备的原理框图。
具体实施方式
为了更了解本发明的技术内容,特举具体实施例并配合所附图式说明如下。
在本公开中参照附图来描述本发明的各方面,附图中示出了许多说明的实施例。本公开的实施例不必定意在包括本发明的所有方面。应当理解,上面介绍的多种构思和实施例,以及下面更加详细地描述的那些构思和实施方式可以以很多方式中任意一种来实施,这是因为本发明所公开的构思和实施例并不限于任何实施方式。另外,本发明公开的一些方面可以单独使用,或者与本发明公开的其他方面的任何适当组合来使用。
人脸搜索方法
结合图1所示实施例的人脸搜索流程的执行,以单个人脸搜索请求为例,本发明提出的人脸搜索方法的执行包括以下步骤:
S101、接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
S102、将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X;
S103、将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
S104、将底库矩阵Y进行转置,获得转置矩阵Y’;
S105、将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
S106、取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息。
其中,优选的方案中,所述将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的操作,采用矩阵运算加速库进行运算,例如Eigen矩阵计算加速库,在原先的CPU循环运行的基础上可提高运算速度2-4倍,可以有效的提升人脸搜索的速度。
前述的人脸搜索方法的执行可在例如计算机系统、服务器等硬件环境中实现。下面以图2所示的计算机系统为例进行说明。
图2示例性地表示了执行本发明的人脸搜索方法的计算机系统的硬件配置。计算机系统100包括处理器101、存储器102、通信模块103、I/O接口模块104、显示器105以及用户交互界面106,这些部件通过例如数据总线110相互连接,以集成或者独立的方式设置在板卡或者集成电路内。
处理器101可以采用基于X86或者ARM等架构的处理器,以实现运算与控制功能。
存储器102,通常包含ROM与RAM,用于存储可被处理器101执行的程序,以及存储可被处理器调用和处理的数据,这些程序例如包括人脸定位程序、人脸特征提取程序、人脸搜索程序等,这些数据可包含例如视频流数据、每一帧图像数据、人脸图像数据、人脸特征数据、人脸底库等。在本发明人脸搜索方法的执行过程中,处理器101通过读取和执行被记录在存储器102中的程序和数据来实施。
通信模块103,可选有线或者无线通信模块,例如基于蜂窝网络的3G、4G、5G或者Wifi模块等无线网络通信模块。
I/O接口模块104,用于提供外部设备连接到处理器与存储器构成的小系统的输入输出端口,实现数据与指令的传输,这些外外部设备例如外置存储器、传感器等。
显示器105由能够视觉上向用户通知信息的装置构成。例如,显示器可以是显示设备,诸如液晶显示器LCD。
用户交互界面106,包括接收用户操作的输入装置,诸如触控面板、鼠标、键盘、虚拟按键、图像拍摄按钮等。
结合图2所示的示例,人脸底库中包含预先登记的人脸信息以及对应的特征数据,并在在建立人脸底库后,可进行编辑操作,例如增加、修改与删除操作。
人脸底库中包含的人脸特征数据的浮点数向量维度以及所述提取获得的人脸特征数据的浮点数向量维度,由人脸特征值提取模型决定。在本发明的实施例中,对人脸特征值提取模型的类型和选用不做限制,例如基于Facenet模型进行的人脸特征值提取操作。
在人脸底库中,所存储的每个人脸特征数据包含人脸标识token以及人脸特征值,人脸标识token作为一个人脸信息的唯一标识,上层应用可以用该人脸标识token管理人脸相关的应用层信息,比如姓名,身份证号、手机号码、工号等。人脸特征值采用浮点数向量形式存储,维度为M。
通常,人脸特征值的维度大小与提取人脸特征值模型有关,模型确定后,维度也即确定。
人脸底库的管理
结合图3、4所示的流程,对于人脸底库的管理通常包括添加和删除人脸信息的操作。
人脸底库对应地设置有管理模块,用于实现对人脸底库的数据管理。
如图3所示的示例性实施例中,添加人脸信息的具体操作包括以下步骤:
1)管理模块接收到新增人脸特征值及相对应的人脸标识token;
2)在人脸底库记录的人脸标识token中查找所接收到的人脸标识token;
3)若在人脸底库中找到token,则表示本次操作是替换已有人脸信息,通过所接收到的人脸标识token在人脸底库中找到人脸标识的位置,查找到人脸特征值在人脸底库中的内存地址,将传入的人脸特征值拷贝到该位置,覆盖原有人脸信息,流程结束;
4)若在人脸底库中未找到token,则表示本次操作是新增人脸信息,比较当前人脸底库的人脸数m与脸库容量mmax,若m>=mmax (实际情况最多只可能m=mmax),则表示人脸数目已经达到人脸底库的容量,新增人脸失败,流程结束;
5)若m<mmax,则表示人脸数目尚未达到人脸底库的容量的上限,可以新增人脸,在人脸底库已经记录的人脸标识的末尾位置添加新增的人脸标识token,在人脸底库中特征值内存地址末尾,将传入的人脸特征值拷贝到该位置,更新现有脸库人脸数(+1),流程结束.
如图4所示的示例性实施例中,删除人脸信息具体操作包括以下步骤:
1)管理模块接收到删除人脸特征信息即相关人脸标识token
2)在人脸底库中记录的所有人脸标识token中查找接收到的人脸标识token
3)若未找到token,则表示人脸底库中不存在该人脸信息,流程结束;
4)若找到token,通过人脸标识token在人脸底库的人脸标识中的位置,查找到人脸特征值在底库中的内存地址,将该地址中的人脸特征值删除;
5)判断是否为最后一个人脸信息,若要删除的人脸位于最后位置,则直接更新现有脸库数(—-1),流程结束;
6)若要删除的人脸信息不位于最后位置,则将最后位置的人脸特征数据及人脸标识token拷贝到待删除人脸所在的位置,更新现有脸库数(-1),流程结束。
结合图1所示,由于人脸底库是本身即为N个M维的向量,可以将其拼接到一起,组成一个N*M的矩阵X,待检索人脸特征为一个M维的向量,可以看作是一个1*M的矩阵Y,我们将Y进行转置得到矩阵Y’,那么X* Y’即为一个1*N的矩阵,这个矩阵中的每个元就是由待检索人脸特征与人脸底库每个人脸特征的欧式距离所构成的向量。原先循环计算N次的多次乘法及加法可以转换成一个大矩阵点乘计算,如果采用Eigen矩阵计算加速库,可以将原先的运行速度提高2-4倍,可以有效的提升人脸搜索的速度。
人脸搜索装置
结合图5所示的本发明的人脸搜索装置200,其包括:
用于接收输入的人脸搜索请求的数据接收模块201,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X的输入特征矩阵构造模块202;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y的底库矩阵构造模块203,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
用于将底库矩阵Y进行转置,获得转置矩阵Y’的矩阵转置模块204;
用于将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的矩阵点乘模块205,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
用于取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息的搜索输出模块206。
支持高并发处理的人脸搜索方法
结合图6所示的另一实施例的流程,在图1所示的人脸搜索方法的基础上,本实施例的人脸搜索方法可支持高并发处理,并实现低延时。结合图6,具体处理过程包括以下步骤:
S301、接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
S302、将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中;
S303、判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q,Q为预设的并发量,且取值为大于2的正整数;
S304、响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A;
S305、将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
S306、将底库矩阵B进行转置,获得转置矩阵B’;
S307、将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C;
S308、对所述矩阵C的每一行统计最小值及所在位置;以及
S309、根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数,所述比对分数即为对应每一行的最小值。
其中,当在一个发送时间周期T范围内,如果队列中的所有人脸特征数据的数量P小于Q,即未达到预设阈值Q时,则补上(Q-P)个全为0的特征值,与P个人脸特征数据一起构造成Q*N的输入特征矩阵A。
优选地,所述将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C的运算处理,采用矩阵运算加速库进行运算。
综上,对于人脸搜索的请求,在图6所示的流程,其采用了batch的方式,即在一个周期内判断队列中是否达到预设的并发处理数量的人脸特征数据(对应于每个人脸搜索请求),如果达到了,则一起构造检索输入的矩阵,如果未达到并发处理数量,则补足缺失的特征值(补全的部分全部置0),与队列中已经存在的人脸特征数据一起构造检索输入矩阵,然后进行后续的运算。
由此,通过设定时间周期,可防止闲时队列一直未达到预设并发处理数量而导致部分待搜索人脸特征数据一直处于等待状态而不触发搜索的情况出现。
支持高并发处理的人脸搜索装置
结合图7所示的支持高并发的人脸搜索装置400,包括:
用于接收输入的人脸搜索请求的接收模块401,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中队列处理模块402;
用于判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q的判断模块403,Q为预设的并发量,且取值为大于2的正整数;
用于响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A的第一矩阵构造模块404;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B的第二矩阵构造模块405,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
用于将底库矩阵B进行转置的转置模块406,获得转置矩阵B’;
用于将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C的矩阵运算模块407;
用于对所述矩阵C的每一行统计最小值及所在位置的统计模块408;以及
用于根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数的结果输出模块409,所述比对分数即为对应每一行的最小值。
边缘设备
结合图8所示示例的边缘设备,其具有通常所见的计算机系统的框架与系统设计,例如具有计算单元(CPU)、存储单元(RAM+ROM)、数据通信接口模块、网络接口模块以及用户交互界面,在一些实施例中,边缘设备还集成了至少一种传感器和/或外部装置,例如定位装置。在这样的边缘设备中,通常以小型化、轻量化、低功耗为设计,使其通常能够被认为是对云端或因特网的依赖更少,或者可接入核心网络提供入口点的设备,在这样的边缘设备中可进行快速高效的运算。
在一些实施例中,边缘设备中的处理单元(CPU)、存储单元(RAM+ROM)、数据通信接口模块、网络接口模块以及用户交互界面可参考如图2所示的硬件系统设计,其中在CPU的设计上,尤其是可采用低功耗轻量化的设计,例如不使用桌面级的处理单元(例如多核多线程架构的Intel 酷睿系列或者AMD Ryzen系列处理单元),而是采用嵌入式系统设计,一般为arm架构的linux操作系统,为了兼顾功耗及性能,CPU可以采用2大核A73+2小核A53的设计或者四核A55的设计。
以人脸搜索业务处理为例,在边缘设备中,可支持多路摄像头的视频流同时输入,例如在地铁站、候车厅、商城等人流密集的场景应用下,可根据现场物理地域范围以及监控摄像头的布设即,配置一个或者多个边缘设备。每个边缘设备对应与设定的多个摄像头配套并进行图像处理。
作为可选的实施例,边缘设备500包括:
视频解码模块501,被设置用以解码输入的视频流,并按照设置的周期进行帧图像提取;
人脸检测模块502,被设置用以对提取的每一帧图像进行人脸检测,定位出人脸位置,并裁剪图像,获得人脸图像;
人脸特征提取模块503,被设置用以提取人脸图像的特征数据;
人脸搜索模块504,被设置用以根据前述任意一种方法来执行人脸搜索操作,其中以人脸特征提取模块提取的人脸图像的特征数据作为人脸搜索请求的人脸特征数据。
前述的视频解码模块、人脸检测模块、人脸特征提取模块、人脸搜索模块被设置成以指令集的方式存储在边缘设备的存储单元中,并可被处理单元调用与执行,实现对应的功能。
多路摄像头采集的视频流可通过网络输入给边缘设备,边缘设备调用执行存储单元中的视频解码程序进行解码,进行图像提取。
然后,调用执行人脸检测程序,对提取到的图像进行人脸检测,确定图像中人脸的位置,可采用现有的人脸检测算法实现,例如预先训练好的基于CNN网络的人脸检测算法或者利用开源OpenCV对人脸进行检测。
在确定人脸在图像中的位置后,可进行对应的裁剪,获得人脸图像。然后再调用执行人脸关键点提取程序,提取人脸图像中的人脸关键点特征值,可以采用现有的特征值提取算法实现,例如基于Openface、Face_recognition、Insightface三种中任意一种算法进行提取,对应地,提取的人脸特征值的维度与所采用的提取算法(即模型)相关,上述三种特征值提取算法对应的人脸特征值的维度分别是128、128、512。当然,在另外的实施例中,人脸特征值还可以采用其他的提取算法,例如Dlib算法,获得的特征值的维度为68维。
由此,按照以上方式进行处理,边缘设备可获得每一路摄像头输入的视频流中对应的某一帧图像(多路即多帧)中的至少一个人脸特征数据(一帧图像中可能有多个人脸需要搜索确定身份),则其作为待搜索的对象,通过本发明前述实施例的人脸搜索方法,尤其是图1或者图6流程所示示例的搜索方法,执行人脸搜索处理,可实现快速的计算,减少边缘设备的CPU运算时间,提高搜索的效率。
人脸搜索测试
我们采用开源数据中的人脸底库进行测试,脸库数量:2W,特征维度768维,CPU:2核A73+2核A53,各个测试方法以计算100次测试结果的均值为计。测试结果如下表所示。
从测试结果可见,采用传统的CPU循环运算的方式,以单个人脸搜索请求为例,是采用本发明CPU矩阵点乘运算的平均耗时的2倍,而在本发明进一步采用Eigen矩阵加速库进行大矩阵内的点乘运算的加速计算后,平均耗时进一步缩短。
在并发处理数为10的测试结果中,采用本发明的人脸搜索以及在Eigen矩阵加速库的使用下,将batch=10的耗时进行平均后,传统CPU循环运算的方式的平均耗时达到采用本发明搜索方法的平均耗时的4倍,平均耗时的降低更加明显。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (10)
1.一种人脸搜索方法,其特征在于,包括以下步骤:
接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X;
将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
将底库矩阵Y进行转置,获得转置矩阵Y’;
将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息。
2.根据权利要求1所述的人脸搜索方法,其特征在于,所述人脸底库中包含的人脸特征数据的浮点数向量维度以及所述提取获得的人脸特征数据的浮点数向量维度,由人脸特征值提取模型决定。
3.根据权利要求1所述的人脸搜索方法,其特征在于,所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,所述人脸标识token作为一个人脸信息的唯一标识,所述人脸特征值采用浮点数向量形式存储,维度为M。
4.根据权利要求1-3中任意一项所述的人脸搜索方法,其特征在于,所述将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的操作,采用矩阵运算加速库进行运算。
5.一种支持高并发的人脸搜索方法,其特征在于,包括以下步骤:
接收输入的人脸搜索请求,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中;
判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q,Q为预设的并发量,且取值为大于2的正整数;
响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A;
将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
将底库矩阵B进行转置,获得转置矩阵B’;
将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C;
对所述矩阵C的每一行统计最小值及所在位置;以及
根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数,所述比对分数即为对应每一行的最小值。
6.根据权利要求5所述的支持高并发的人脸搜索方法,其特征在于,当在一个发送时间周期T范围内,如果队列中的所有人脸特征数据的数量P小于Q,即未达到预设阈值Q时,则补上(Q-P)个全为0的特征值,与P个人脸特征数据一起构造成Q*N的输入特征矩阵A。
7.根据权利要求5所述的支持高并发的人脸搜索方法,其特征在于,所述将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C的运算处理,采用矩阵运算加速库进行运算。
8.一种人脸搜索装置,其特征在于,包括:
用于接收输入的人脸搜索请求的数据接收模块,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将所述人脸搜索请求包含的人脸特征数据构造成1*M的输入特征矩阵X的输入特征矩阵构造模块;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵Y的底库矩阵构造模块,其中N个人脸特征数据中的每个人脸特征数据包含浮点数向量,维度为M;其中N为正整数;
用于将底库矩阵Y进行转置,获得转置矩阵Y’的矩阵转置模块;
用于将转置矩阵Y’与输入特征矩阵X相乘,得到1*N的矩阵Z的矩阵点乘模块,所述矩阵Z中的每个元即为所述人脸搜索请求包含的人脸特征数据与人脸底库中的每个人脸特征数据的欧氏距离所构成的向量;
用于取矩阵Z中的所有元的最小值作为距离最短的特征值,输出对应的人脸信息的搜索输出模块。
9.一种支持高并发的人脸搜索装置,其特征在于,包括:
用于接收输入的人脸搜索请求的接收模块,所述人脸搜索请求包含从作为待搜索对象的人脸照片中提取获得的人脸特征数据,所述人脸特征数据包含浮点数向量,维度为M,M为正整数;
用于将人脸搜索请求对应的人脸特征数据插入到待搜索人脸特征数据队列中队列处理模块;
用于判断在一个预设的发送时间周期T范围内,所述队列中的人脸特征数据数目是否达到预设阈值Q的判断模块,Q为预设的并发量,且取值为大于2的正整数;
用于响应于达到预设阈值Q,将队列中的所有人脸特征数据构造成Q*M的输入特征矩阵A;否则,继续接收人脸搜索请求,直到预设时间节点T达到,补齐特征值并构造Q*M的输入特征矩阵A的第一矩阵构造模块;
用于将人脸底库中包含的N个人脸特征数据拼接,构造成N*M的底库矩阵B的第二矩阵构造模块,N为正整数;所述人脸底库中存储的每个人脸特征数据包含人脸标识token以及人脸特征值,其中人脸标识token作为一个人脸信息的唯一标识,其中人脸特征值采用浮点数向量形式存储,维度为M;
用于将底库矩阵B进行转置的转置模块,获得转置矩阵B’;
用于将转置矩阵B’与输入特征矩阵A相乘,得到Q*N的矩阵C的矩阵运算模块;
用于对所述矩阵C的每一行统计最小值及所在位置的统计模块;以及
用于根据每一行统计最小值的所在位置,在人脸底库中找到对应位置的人脸标识token,则获得所有待搜索人脸特征数据的人脸标识token及比对分数的结果输出模块,所述比对分数即为对应每一行的最小值。
10.一种边缘设备,其特征在于,包括:
视频解码模块,被设置用以解码输入的视频流,并按照设置的周期进行帧图像提取;
人脸检测模块,被设置用以对提取的每一帧图像进行人脸检测,定位出人脸位置,并裁剪图像,获得人脸图像;
人脸特征提取模块,被设置用以提取人脸图像的特征数据;
人脸搜索模块,被设置用以根据权利要求1-4中的任意一项,或者根据权利要求5-7中的任意一项所述的方法执行人脸搜索操作,其中以人脸特征提取模块提取的人脸图像的特征数据作为人脸搜索请求的人脸特征数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110508273.7A CN112989091A (zh) | 2021-05-11 | 2021-05-11 | 人脸搜索方法、装置及边缘设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110508273.7A CN112989091A (zh) | 2021-05-11 | 2021-05-11 | 人脸搜索方法、装置及边缘设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112989091A true CN112989091A (zh) | 2021-06-18 |
Family
ID=76337479
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110508273.7A Pending CN112989091A (zh) | 2021-05-11 | 2021-05-11 | 人脸搜索方法、装置及边缘设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112989091A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247941A (zh) * | 2017-06-22 | 2017-10-13 | 易容智能科技(苏州)有限公司 | 一种高硬件弹性的精准人脸采样和识别方法 |
US20190087686A1 (en) * | 2017-09-21 | 2019-03-21 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for detecting human face |
CN111552828A (zh) * | 2020-04-26 | 2020-08-18 | 上海天诚比集科技有限公司 | 一种1比n人脸比对方法 |
CN111625687A (zh) * | 2020-07-30 | 2020-09-04 | 南京讯思雅信息科技有限公司 | 一种在媒资视频库中通过人脸快速搜索人物的方法及系统 |
-
2021
- 2021-05-11 CN CN202110508273.7A patent/CN112989091A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107247941A (zh) * | 2017-06-22 | 2017-10-13 | 易容智能科技(苏州)有限公司 | 一种高硬件弹性的精准人脸采样和识别方法 |
US20190087686A1 (en) * | 2017-09-21 | 2019-03-21 | Baidu Online Network Technology (Beijing) Co., Ltd. | Method and apparatus for detecting human face |
CN111552828A (zh) * | 2020-04-26 | 2020-08-18 | 上海天诚比集科技有限公司 | 一种1比n人脸比对方法 |
CN111625687A (zh) * | 2020-07-30 | 2020-09-04 | 南京讯思雅信息科技有限公司 | 一种在媒资视频库中通过人脸快速搜索人物的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI773189B (zh) | 基於人工智慧的物體檢測方法、裝置、設備及儲存媒體 | |
CN107704506B (zh) | 智能应答的方法和装置 | |
WO2022037541A1 (zh) | 图像处理模型训练方法、装置、设备及存储介质 | |
US20210142069A1 (en) | Video retrieval method, and method and apparatus for generating video retrieval mapping relationship | |
US20230057010A1 (en) | Term weight generation method, apparatus, device and medium | |
CN103189853A (zh) | 用于提供高效情境分类的方法和装置 | |
CN114942984B (zh) | 视觉场景文本融合模型的预训练和图文检索方法及装置 | |
WO2021169641A1 (zh) | 人脸识别方法和系统 | |
WO2021179631A1 (zh) | 卷积神经网络模型压缩方法、装置、设备及存储介质 | |
CN109165307B (zh) | 一种特征检索方法、装置和存储介质 | |
WO2022028147A1 (zh) | 图像分类模型训练方法、装置、计算机设备及存储介质 | |
WO2022161302A1 (zh) | 动作识别方法、装置、设备、存储介质及计算机程序产品 | |
CN113239218B (zh) | 在具有npu的设备上并发执行人脸搜索的方法 | |
CN113901981A (zh) | 设备聚类方法、装置、计算机设备及存储介质 | |
CN109871457A (zh) | 基于图像的数据处理方法、装置、电子设备和存储介质 | |
CN111008589A (zh) | 人脸关键点检测方法、介质、装置和计算设备 | |
JP2009252237A (ja) | 最適画像方向を決定する方法、命令セットを実行するプログラム、および最適画像方向を決定するシステム | |
CN112989091A (zh) | 人脸搜索方法、装置及边缘设备 | |
CN116959059A (zh) | 一种活体检测的方法、装置以及存储介质 | |
CN115359400A (zh) | 视频识别方法、装置、介质及电子设备 | |
CN112182382B (zh) | 数据处理方法、电子设备及介质 | |
US11120251B2 (en) | Face capturing method and related apparatus | |
CN113515701A (zh) | 信息推荐方法及装置 | |
CN115905653A (zh) | 特征数据存储方法和基于特征数据的目标对象分析方法 | |
CN113240071A (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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20210618 |