人脸识别数据库的构建方法、人脸识别方法、装置及设备
技术领域
本申请涉及人脸识别技术领域,尤其涉及一种人脸识别数据库的构建方法、人脸识别方法、装置及设备。
背景技术
人脸识别技术因为其识别率的越来越高和应用的便利性而得到了越来越广泛的应用,例如,视频监控、访问控制、智能身份证等。目前,随着摄像头的普及,越来越多的场景如无人值守的自助类商业场景、安防场景都需要在用户无感知的情况下,识别出出现在摄像头中的用户的身份。
目前,局部敏感性哈希方案是一种主流的用于海量高维数据的近似最近邻快速查找技术,其原理是将原始数据空间中的两个相邻数据点通过相同的映射或投影变换后,这两个数据点在新的数据空间中仍然相邻的概率很大,而不相邻的数据点被映射到同一个桶的概率很小。因此,如果能够找到一个或一些hash函数,使得经过哈希映射变换后,原始数据空间(即待识别的目标人脸图像的数据空间)中相邻的数据落入相同的桶,这样,只需要将目标人脸图像的数据进行哈希映射得到其桶号,然后取出该桶号对应桶内的所有数据,再进行线性匹配即可查找到与目标人脸图像相同或相近的人脸图像,从而确定目标人脸图像对应的用户的身份。
然而,如果想通过上述局部敏感性哈希方案得到较准确的识别结果,需要针对大量或海量数据找到一个或一些hash函数,使得经过哈希映射变换后,原始数据空间中相邻的数据落入相同的桶内,而如何选取hash函数以达到最好的识别效果是非常困难的,需要进行大量的运算,而且当原始数据空间发生变化时,需要重新选取hash函数,使得人脸识别过程繁杂且效率低下。
发明内容
本申请实施例的目的是提供一种人脸识别数据库的构建方法、人脸识别方法、装置及设备,以实现人脸识别过程简单易行,提高人脸识别的效率并减少资源消耗。
为解决上述技术问题,本申请实施例是这样实现的:
本申请实施例提供的一种人脸识别数据库的构建方法,所述方法包括:
将多个人脸图像的图像特征空间拆分为多个人脸特征子空间;
对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息;
根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库。
可选地,所述根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,包括:
合并所述聚类中心点信息得到特征空间中心码本,并合并所述数据所属类别信息得到人脸特征空间类别库;
基于所述特征空间中心码本和所述人脸特征空间类别库,构建所述人脸识别数据库。
可选地,所述合并所述聚类中心点信息得到特征空间中心码本,包括:
根据所述聚类中心点信息,确定每个人脸特征子空间对应的子特征空间中心码本;
计算多个人脸特征子空间分别对应的子特征空间中心码本的笛卡尔积,得到所述特征空间中心码本。
可选地,所述方法还包括:
获取预先存储的多个人脸图像;
对每个人脸图像进行特征提取,得到每个人脸图像的图像特征。
可选地,所述对每个人脸图像进行特征提取,得到每个图像的图像特征,包括:
基于深度学习的人脸识别模型对每个人脸图像进行特征提取,得到每个图像的图像特征。
可选地,所述将预先存储的多个人脸图像的图像特征空间拆分为多个人脸特征子空间,包括:
根据每个人脸图像的浮点特征的维度,将所述多个人脸图像的图像特征空间划分为多个特征分组;
根据人脸图像的数量,确定每个特征分组中包含的数据的类别的数量;
根据每个特征分组中包含的数据的类别的数量和所述特征分组的数量,确定人脸特征子空间的数量;
基于所述人脸特征子空间的数量,将所述多个人脸图像的图像特征空间拆分为人脸特征子空间。
可选地,所述对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,包括:
根据每个人脸特征子空间中包含的浮点特征的维度,计算不同维度之间的欧式距离;
根据所述不同维度之间的欧式距离,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
可选地,所述基于所述特征空间中心码本和所述人脸特征空间类别库,构建所述人脸识别数据库,包括:
基于所述特征空间中心码本和所述人脸特征空间类别库构建人脸特征的倒排索引;
基于所述人脸特征的倒排索引构建所述人脸识别数据库。
本申请实施例还提供的一种人脸识别方法,所述方法包括:
将目标人脸图像的图像特征拆分为多个人脸子特征集;
对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息;
根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别。
可选地,所述根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别,包括:
合并所述每个人脸子特征集所属的子空间的类别信息,得到所述目标人脸图像的图像特征所属的类别信息;
从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述方法还包括:
对每个人脸子特征集进行聚类,得到每个人脸子特征集的子聚类中心点信息;
合并所述子聚类中心点信息得到所述目标人脸图像的特征空间中心码;
从人脸识别数据库中的特征空间中心码本中,获取与所述目标人脸图像的特征空间中心码之间的距离小于预设距离阈值的目标特征空间中心码;
获取所述目标特征空间中心码对应的图像特征所属的类别信息;
相应的,所述从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果,包括:
从获取的图像特征所属的类别信息中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果,包括:
从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像;
分别计算所述预选图像与所述目标人脸图像之间的相似度,将与所述目标人脸图像之间的相似度的数值最大的预选图像作为对所述目标人脸的识别结果。
本申请实施例提供的一种人脸识别数据库的构建装置,所述装置包括:
特征空间拆分模块,用于将多个人脸图像的图像特征空间拆分为多个人脸特征子空间;
聚类模块,用于对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息;
数据库构建模块,用于根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库。
可选地,所述数据库构建模块,包括:
合并单元,用于合并所述聚类中心点信息得到特征空间中心码本,并合并所述数据所属类别信息得到人脸特征空间类别库;
数据库构建单元,用于基于所述特征空间中心码本和所述人脸特征空间类别库,构建所述人脸识别数据库。
可选地,所述合并单元,用于根据所述聚类中心点信息,确定每个人脸特征子空间对应的子特征空间中心码本;计算多个人脸特征子空间分别对应的子特征空间中心码本的笛卡尔积,得到所述特征空间中心码本。
可选地,所述装置还包括:
图像获取模块,用于获取预先存储的多个人脸图像;
特征提取模块,用于对每个人脸图像进行特征提取,得到每个人脸图像的图像特征。
可选地,所述特征提取模块,用于基于深度学习的人脸识别模型对每个人脸图像进行特征提取,得到每个图像的图像特征。
可选地,所述特征空间拆分模块,包括:
分组单元,用于根据每个人脸图像的浮点特征的维度,将所述多个人脸图像的图像特征空间划分为多个特征分组;
类别数量确定单元,用于根据人脸图像的数量,确定每个特征分组中包含的数据的类别的数量;
子空间数量确定单元,用于根据每个特征分组中包含的数据的类别的数量和所述特征分组的数量,确定人脸特征子空间的数量;
特征空间拆分单元,用于基于所述人脸特征子空间的数量,将所述多个人脸图像的图像特征空间拆分为人脸特征子空间。
可选地,所述聚类模块,包括:
计算单元,用于根据每个人脸特征子空间中包含的浮点特征的维度,计算不同维度之间的欧式距离;
聚类单元,用于根据所述不同维度之间的欧式距离,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
可选地,所述数据库构建单元,用于基于所述特征空间中心码本和所述人脸特征空间类别库构建人脸特征的倒排索引;基于所述人脸特征的倒排索引构建所述人脸识别数据库。
本申请实施例提供的一种人脸识别装置,所述装置包括:
图像特征拆分模块,用于将目标人脸图像的图像特征拆分为多个人脸子特征集;
聚类模块,用于对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息;
识别模块,用于根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别。
可选地,所述识别模块,包括:
合并单元,用于合并所述每个人脸子特征集所属的子空间的类别信息,得到所述目标人脸图像的图像特征所属的类别信息;
识别单元,用于从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述聚类模块,还用于对每个人脸子特征集进行聚类,得到每个人脸子特征集的子聚类中心点信息;
所述装置还包括:
合并模块,用于合并所述子聚类中心点信息得到所述目标人脸图像的特征空间中心码;
第一获取模块,用于从人脸识别数据库中的特征空间中心码本中,获取与所述目标人脸图像的特征空间中心码之间的距离小于预设距离阈值的目标特征空间中心码;
第二获取模块,用于获取所述目标特征空间中心码对应的图像特征所属的类别信息;
相应的,所述识别单元,用于从获取的图像特征所属的类别信息中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述识别单元,用于从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像;分别计算所述预选图像与所述目标人脸图像之间的相似度,将与所述目标人脸图像之间的相似度的数值最大的预选图像作为对所述目标人脸的识别结果。
本申请实施例提供的一种人脸识别数据库的构建设备,所述设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
将多个人脸图像的图像特征空间拆分为多个人脸特征子空间;
对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息;
根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库。
本申请实施例提供的一种人脸识别设备,所述设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器执行以下操作:
将目标人脸图像的图像特征拆分为多个人脸子特征集;
对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息;
根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别。
由以上本申请实施例提供的技术方案可见,本申请实施例通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请一种人脸识别数据库的构建方法实施例;
图2为本申请一种人脸识别方法实施例;
图3为本申请一种人脸识别的应用程序的界面示意图;
图4为本申请一种人脸识别方法实施例;
图5为本申请一种人脸识别数据库的构建过程的处理逻辑示意图;
图6为本申请一种人脸特征子空间划分示意图;
图7为本申请一种人脸识别数据库的构建装置实施例;
图8为本申请一种人脸识别装置实施例;
图9为本申请一种人脸识别数据库的构建设备实施例;
图10为本申请一种人脸识别设备实施例。
具体实施方式
本申请实施例提供一种人脸识别数据库的构建方法、人脸识别方法、装置及设备。
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
实施例一
如图1所示,本申请实施例提供一种人脸识别数据库的构建方法,该方法的执行主体可以为终端设备或服务器,其中的终端设备可以是个人计算机等,服务器可以是独立的一个服务器,也可以是由多个服务器组成的服务器集群。本申请实施例中为了提高人脸识别数据库的构建效率,该方法的执行主体以服务器为例进行详细说明。该方法具体可以包括以下步骤:
在步骤S102中,将多个人脸图像的图像特征空间拆分为多个人脸特征子空间。
其中,多个人脸图像可以多个不同用户的面部图像,对于其中的任一用户其面部图像的数目可以是一张,也可以是多张,具体如10张或15张等。图像特征空间可以是由多个图像特征所组成的图像特征组合,人脸图像的图像特征可以包括几何特征和代数特征等,几何特征可以是以面部器官的形状及其几何关系为基础的特征,包括几何特征曲率和面部几何特征点等。几何特征曲率可以是人脸的轮廓线曲率。面部几何特征点包括眼睛、鼻子、嘴巴等各个器官,以及它们之间的相对位置和距离。上述特征具有位置、视点和大小等不变性。选取的几何特征可以具有一定的独特性,这样可以反映出不同人脸之间的差别,同时又具有一定的弹性以消除时间跨度、光照等因素的影响。代数特征是将人脸图像用特定的变换方法投影在降维子空间而形成的特征,例如,经过奇异值变换得到的奇异值特征,或经过K-L变换得到的特征脸特征,或经过小波变换后得到的小波特征等,此外,人脸图像的图像特征还可以包括颜色特征、形状特征、纹理特征和空间关系特征等。
在实施中,多个人脸图像可以通过多种方式获取,例如,可以通过购买或奖励的方式从不同的用户处购买其个人的包含其面部的图像,或者,用户注册某网站或应用程序时上传的其个人的包含其面部的图像,如注册支付宝时上传用户的人脸图像等,或者,用户主动上传的其个人的包含其面部的图像等。其中,具体通过何种方式获取人脸图像,本申请实施例对此不做限定。获取到多个人脸图像后,可以对每个人脸图像进行分析,具体可以包括:首先进行人脸检测,即在每张人脸图像中确定所有人脸(如果存在)的位置、大小、位姿等,然后,对于检测到的人脸的图像进行特征提取,其中,对人脸图像进行特征提取的方式可以包括多种,例如,通过预先训练的特征提取模型或人脸识别模型等对人脸图像进行特征提取,或者,可以通过如傅里叶Fourier变换算法、窗口傅里叶Fourier变换(Gabor)算法或小波变换算法等算法获取相应的人脸图像的图像特征。在本申请实施例的具体应用中,为了能够获得较好的人脸的识别或检索的结果,且避免出现游离数据(指人脸图像的图像数目较少的用户)的干扰,可以选取至少包含有预定数目的人脸图像的用户的全部图像(即多个人脸图像)作为基础数据库,其中,预定数目可以是10或15等,如果用户的总数目为2000万,则上述基础数据库中应该包括5亿张人脸图像,可见,在人脸图像的数量上已经满足了海量的要求。然后,可以通过上述提供的体征提取方式分别对每一张人脸图像进行特征提取,得到每一张人脸图像的图像特征,即得到5亿张人脸图像的图像特征。可以将得到人脸图像的图像特征进行特征组合,例如,可以分别提取每一张人脸图像的颜色特征、纹理特征、形状特征和空间关系特征,然后,可以将提取的5亿张人脸图像的颜色特征组合,将提取的5亿张人脸图像的纹理特征组合,提取的5亿张人脸图像的形状特征组合和提取的5亿张人脸图像的空间关系特征组合,再将上述组合后的特征进行特征组合,最终得到多个人脸图像的图像特征空间(即5亿张人脸图像的图像特征空间)。
可以预先设置图像特征空间的划分机制,该划分机制可以将较大的图像特征空间划分成多个相对较小的,该划分机制具体可以根据实际情况设定,例如,可以根据图像特征空间的不同图像特征的类别进行划分,这样,可以将多个人脸图像的图像特征空间划分成多个人脸特征子空间,从而得到不同类别的人脸特征子空间,每一个人脸特征子空间可以包括一种类别的图像特征,也可以包括多个类别的图像特征等。此外,对于多个人脸图像,可以为每个人脸图像进行标记,以使其与相应的用户的信息相匹配,其中的用户的信息可以包括用户的身份信息,例如用户的身份证号码、性别、年龄等。例如,可以为不同的人脸图像设置编号,如分别用1、2、3、4和5等表示,然后,可以分别为不同的人脸图像匹配相应的用户的信息,如果人脸图像A对应的编号为1,人脸图像A对应的用户的信息为信息a,则信息a也可以与编号1相对应,即人脸图像A对应于1,信息a对应于1。可见,通过编号可以将人脸图像和相应的用户的信息联系起来。
在步骤S104中,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
其中,聚类中心点信息可以包括聚类中心点的位置、名称和编码等信息。每个人脸特征子空间的数据所属类别信息可以是每个人脸特征子空间中包含的数据的类别信息,数据的类别可以包括多种,具体可以根据实际情况设定,例如,可以根据数据的内容的不同,分别设置不同的类别,对于其中的数据内容相同或相似的数据,可以将其设置到同一类别下。
在实施中,聚类可以是将物理或抽象对象的集合分成由类似的对象组成的多个类的过程。聚类不同于分类,聚类所要求划分的类别是未知的,而分类则是将数据划分到已知的一个或多个类别中的过程。聚类可以通过聚类算法实现,例如,划分方法、层次方法、基于密度的方法、基于网格的方法和基于模型的方法,其中,划分方法还可以包括K-MEANS算法、K-MEDOIDS算法、CLARANS算法、k-均值和k-中心算法等。层次方法也可以包括BIRCH算法、CURE算法、CHAMELEON算法等。基于密度的方法可以包括DBSCAN算法、OPTICS算法和DENCLUE算法等。基于网格的方法也可以包括STING算法、CLIQUE算法和WAVE-CLUSTER算法等。基于模型的方法可以是基于统计的模型的聚类算法或基于神经网络的聚类算法等。在实际应用中,除了上述聚类算法以外,还可以包括多种聚类算法,例如,传递闭包法,布尔矩阵法,直接聚类法,相关性分析聚类和基于统计的聚类方法等。
以下以划分方法威力进行聚类的信息说明,具体可以如下:通过上述步骤S102的处理,得到了多个多个人脸图像的图像特征空间,然后,通过预定的划分或拆分机制将上述图像特征空间拆分为多个人脸特征子空间,每一个人脸特征子空间可以代表一个聚类。而且多个人脸特征子空间满足下列条件:(1)每一个人脸特征子空间至少包含一个数据纪录;(2)每一个数据纪录属于且仅属于一个人脸特征子空间;对于人脸特征子空间的数目,该算法首先会给出一个初始的划分或拆分方法,然后,通过反复迭代的方法改变人脸特征子空间,使得每一次改进之后的划分或拆分方案都较前一次好,即同一人脸特征子空间中的记录越近越好,而不同人脸特征子空间中的纪录越远越好。这样基于上述方法可以对每个人脸特征子空间进行聚类,最终,得到了每个人脸特征子空间的聚类中心点信息和每个人脸特征子空间中的数据所属类别信息。
在步骤S106中,根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,确定人脸识别数据库。
在实施中,通过上述步骤S104得到的每个人脸特征子空间的聚类中心点信息和每个人脸特征子空间中的数据所属类别信息具有一定的对应关系,比如,人脸特征子空间的聚类中心点信息可以是组成人脸特征子空间中的数据所属类别信息的一项重要信息,即人脸特征子空间的聚类中心点信息是人脸特征子空间中的数据所属类别信息中的一项信息。这样,可以将每个人脸特征子空间的聚类中心点信息合并到相应的人脸特征子空间中的数据所属类别信息中,最终得到合并后的每个人脸特征子空间中的数据所属类别信息。然后,可以将合并后的每个人脸特征子空间中的数据所属类别信息再进一步进行组合,得到一个相对较大的人脸特征数据所属类别信息,可以将该人脸特征数据所属类别信息作为人脸识别数据库中的数据,这样,可以基于人脸识别数据库中的人脸特征数据所属类别信息在众多(如2000万)的用户中检索和识别其中的某一位用户。
需要说明的是,上述人脸识别数据库是通过将每个人脸特征子空间的聚类中心点信息合并到相应的人脸特征子空间中的数据所属类别信息中,最终通过数据组合等方式实现的,而在实际应用中,人脸识别数据库的确定并不限于上述实现方式,可以包括其他多种方式,例如,分别将多个人脸特征子空间的聚类中心点信息进行合并,得到合并后的聚类中心点信息,然后,再分别将多个人脸特征子空间中的数据所属类别信息进行合并,得到合并后的数据所属类别信息,最后,可以将合并后的聚类中心点信息和合并后的数据所属类别信息设置到人脸识别数据库中,作为人脸识别数据库中的数据。
通过上述方式可以得到人脸识别数据库,该人脸识别数据库的使用可以参见下述相关内容:
如图2所示,本申请实施例提供一种人脸识别方法,该方法的执行主体可以为终端设备或服务器,其中的终端设备可以是个人计算机等,服务器可以是独立的一个服务器,也可以是由多个服务器组成的服务器集群。该方法具体可以包括以下步骤:
在步骤S202中,将目标人脸图像的图像特征拆分为多个人脸子特征集。
其中,目标人脸图像可以是待检索或待识别的目标用户的人脸图像。
在实施中,可以通过多种方式触发人脸识别机制执行,例如,可以预先设置有用于人脸识别的应用程序,如图3所示,用户可以通过该应用程序中的相应按键,主动上传待检索或待识别的目标用户的人脸图像,上传完成后,可以点击该应用程序中的识别或检索按键,此时,该应用程序获取用户上传的待检索或待识别的目标用户的人脸图像,可以将其发送给服务器,服务器接收到待检索或待识别的目标用户的人脸图像后,可以提取目标人脸图像的图像特征,并将目标人脸图像的图像特征拆分为多个人脸子特征集,或者,当需要对某用户(即目标用户)的身份进行验证时(比如,目标用户在线购物完成进行结算时,或目标用户在线下店铺购物完成进行结算时等),执行身份验证的终端设备可以启动其摄像设备,并通过该摄像设备拍摄目标用户的人脸图像,拍摄完成后,可以将拍摄的目标用户的人脸图像发送给服务器,服务器接收到拍摄的目标用户的人脸图像后,可以提取目标人脸图像的图像特征,并将目标人脸图像的图像特征拆分为多个人脸子特征集。其中,提取目标人脸图像的图像特征,并将目标人脸图像的图像特征拆分为多个人脸子特征集的具体处理过程可以参见上述步骤S102中的相关内容,在此不再赘述。
在步骤S204中,对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息。
上述步骤S204的具体处理可以参见上述步骤S104中的相关内容,在此不再赘述。
在步骤S206中,根据每个人脸子特征集所属的子空间的类别信息,以及预先确定的人脸识别数据库,对目标人脸图像对应的目标人脸进行识别。
在实施中,可以将通过上述步骤S204得到的每个人脸子特征集所属的子空间的类别信息与通过上述步骤S102~步骤S106得到的人脸识别数据库中的数据所属类别信息进行匹配计算,从中查找到与每个人脸子特征集所属的子空间的类别信息相同或相似的数据所属类别信息,然后可以提取出查找到的相同或相似的数据所属类别信息对应的人脸图像,可以分别将提取出的人脸图像与目标人脸图像进行相似度计算,将与目标人脸图像之间的相似度数值最大的提取出的人脸图像作为对目标人脸图像对应的目标人脸的识别结果。
需要说明的是,还可以输出相似度的数值较大的多个人脸图像,以供用户选择,具体地,可以设定相似度阈值,可以分别将提取出的人脸图像与目标人脸图像进行相似度计算,得到的相似度数值分别与上述相似度阈值比较,并将相似度数值大于相似度阈值的提取出的人脸图像输出给用户,即可以将相似度数值大于相似度阈值的提取出的人脸图像发送给用户的终端设备,终端设备可以显示相似度数值大于相似度阈值的人脸图像,用户可以从上述人脸图像中查找或选取目标人脸图像对应的目标人脸,从而得到对目标人脸图像对应的目标人脸的识别结果。
本申请实施例提供一种人脸识别数据库的构建方法和人脸识别方法,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
实施例二
如图4所示,本申请实施例提供了一种人脸识别方法,该方法的执行主体可以为服务器或者该方法可以由终端设备和服务器共同实现,其中的终端设备可以是个人计算机等,服务器可以是独立的一个服务器,也可以是由多个服务器组成的服务器集群。本申请实施例中为了提高人脸识别数据库的构建效率,该方法的执行主体以服务器为例进行详细说明,对于由终端设备和服务器共同实现的按情况,可以参见下述相关内容,在此不再赘述。该方法具体包括如下内容:
目前人脸识别作为一种用户核实身份的新型方式,人脸识别技术因为其识别率的越来越高和应用的便利性而得到了越来越广泛的应用,例如,视频监控、访问控制、智能身份证等。目前,随着摄像头的普及,越来越多的场景如无人值守的自助类商业场景、安防场景都需要在用户无感知的情况下,识别出出现在摄像头中的人是谁,此过程在本质上是一种1比N的检索、识别方法,亦即在***留存的人脸特征库中检索采集到的人脸图像所对应的用户的信息。人脸图像的检索速度与N规模成正比,当***的后台数据库是一个包含了数亿级别用户的数十亿张人脸图像时,如果仍然通过与数据库中的每一个对比的方式进行检索,则时间消耗是非常大的。为此可以构造有效识别人脸的数据库和识别机制,在保证高准确率的前提下快速完成对人脸图像对应的用户的识别。其中,构造有效识别人脸的数据库和识别机制的处理可以参见下述步骤S402~步骤S420提供的人脸识别方法,具体内容如下:
在步骤S402中,获取预先存储的多个人脸图像。
在实施中,多个人脸图像可以通过多种方式获取,例如,用户注册某网站或应用程序时上传的其个人的包含其面部的图像,如注册支付宝时上传用户的人脸图像等,或者,在某网站或应用程序中进行实名认证时上传的用户的人脸图像,如用户对支付宝账户进行实名认证时,需要上传用户的图像,该图像中需要包括用户的人脸图像等,或者,用户主动上传的其个人的包含其面部的图像,或者,还可以通过购买或奖励的方式从不同的用户处购买其个人的包含其面部的图像等。本申请实施例中,具体采用何种方式获取人脸图像不做限定。上述步骤S402的具体处理过程可以参见上述实施例一中步骤S102的相关内容,在此不再赘述。
需要说明的是,上述获取多个人脸图像的方式除了上述提供的方式外,还可以通过其它多种方式,本申请实施例对此不做限定。
考虑到在进行人脸识别时,不同用户之间的人脸是存在一定差异的,而这些差异都存在于用户的人脸图像中,这样就需要对人脸图像进行特征提取,以便查找出不同用户之间的差别,从而达到人脸识别的目的,其中对人脸图像进行特征提取的处理方式,具体可以参见以下步骤S404。
在步骤S404中,对每个人脸图像进行特征提取,得到每个人脸图像的图像特征。
上述步骤S404的具体处理过程可以参见上述实施例一中步骤S102的相关内容,在此不再赘述。
此外,考虑到目前常用的深度学习方法,可以基于深度学习方法对人脸图像进行特征提取,则上述步骤S404的处理可以包括以下内容:基于深度学习的人脸识别模型对每个人脸图像进行特征提取,得到每个图像的图像特征。
其中,基于深度学习的人脸识别模型可以由大量的简单神经元组成,每层的神经元接收更低层的神经元的输入,通过输入与输出之间的非线性关系,将低层特征组合成更高层的抽象表示,并发现观测数据的分布式特征,通过自下而上的学习形成多层的抽象表示。根据学习到的网络结构,可以将输入的数据映射到各种层次的特征,并利用分类器或者匹配算法对顶层的输出单元进行分类识别。
在实施中,深度学习具体可以通过多种方式实现,例如稀疏编码方式或受限玻尔兹曼机方式等。可以通过上述实现方式进行深度学习,基于深度学习,可以对人脸识别模型进行训练,从而得到识别准确率较高的人脸识别模型。需要说明的是,人脸识别模型可以是由服务器预先构建并训练后得到,也可以是第三方提供的人脸识别模型,本申请实施例对于人脸识别模型的来源不做限定。通过上述方式得到基于深度学习的人脸识别模型后,可以将上述步骤S402中得到的多个人脸图像的数据输入到上述人脸识别模型中,通过人脸识别模型的计算,从中提取出每个人脸图像的图像特征。
在步骤S406中,根据每个人脸图像的浮点特征的维度,将上述多个人脸图像的图像特征空间划分为多个特征分组。
在实施中,每张人脸图像中可以包括多个维度的浮点特征,例如,每张人脸图像中的浮点特征包括600维,具体形式可以如{0.01123412,0.9879,-1.13412,……,1.3341},此外,用于标记用户的标识可以是用户的身份证号码。由于每个人脸图像的浮点特征包括预定数目的维度,因此,可以基于每个人脸图像的浮点特征的维度来对多个人脸图像的图像特征空间进行分组,例如,如图5所示,用户的总数目为2000万,则上述多个人脸图像中应该包括5亿张人脸图像,由于每一张人脸图像中都包括600维浮点特征,可以按照75维浮点特征作为一组,将每一张人脸图像为8组,即若浮点特征的维度数值为1-600,则每一张人脸图像根据浮点特征划分为1-75,76-150,151-225,226-300,301-375,376-450,451-525和526-600等8组,然后,可以将相同浮点特征的、不同人脸图像的数据划分为一组,即将5亿张人脸图像的浮点特征为1-75的数据划分为一组,将5亿张人脸图像的浮点特征为76-150的数据划分为一组,以此类推,最终可以得到8个特征分组,也即是通过上述方式,可以将上述多个人脸图像的图像特征空间划分为8个特征分组。
在步骤S408中,根据人脸图像的数量,确定每个特征分组中包含的数据的类别的数量。
在实施中,考虑到人脸图像的数量可能较大,例如上述示例中包括5亿张人脸图像,这样就需要适当的减少处理的数据量或将需要处理的数据量进行分散处理,以减小对服务器的处理压力,为此,可以设定每个特征分组中包含的数据的类别的数量,以使得该类别的数量的平方得到的数值与人脸图像的数量相同或相近。其中的相近的处理方式可以通过设置阈值的方式确定,或者,以人脸图像的数量为基准,使得该类别的数量的平方得到的数值与人脸图像的数量的差值小于人脸图像的数量即可等。
例如,如图5所示,基于上述示例,人脸图像包括5亿张,这样,可以设置每个特征分组中包含的数据的类别的数量为20000(20000x20000=4亿≈5亿),这样,每个特征分组中包括20000类数据。
在步骤S410中,根据每个特征分组中包含的数据的类别的数量和上述特征分组的数量,确定人脸特征子空间的数量。
在实施中,由于每个特征分组中包含的数据的类别的数量已经通过上述步骤S408的处理确定,上述特征分组的数量已经通过上述步骤S406的处理确定,根据特征分组的数量和每个特征分组中包含的数据的类别的数量,两者的乘积即可以为人脸特征子空间的数量。例如,基于上述示例,如图5所示,人脸图像包括5亿张,每个特征分组中包含的数据的类别的数量为20000,且共有8个特征分组,因此,20000x8=160000,即人脸特征子空间的数量为160000。其中,上述得到的人脸特征子空间也可以称为Voronoi空间,可以如图6所示。
在步骤S412中,基于上述人脸特征子空间的数量,将上述多个人脸图像的图像特征空间拆分为人脸特征子空间。
确定拆分的人脸特征子空间后,可以分别对每个人脸特征子空间进行量化处理(也即是积量化处理),积量化处理的原理是基于高维数据计算欧氏距离(该欧氏距离在人脸识别场景可等同于相似度,两张人脸图像的高维数据特征距离越近则可认为图像的相似度越高,反之越低),欧氏距离各维度之间是相互独立的,因此,可以多个人脸图像的图像特征空间拆分为人脸特征子空间,对每个人脸特征子空间进行计算完成后再分别相加,即可得到人脸图像的量化空间。此外,还可以将多个人脸图像的数据集按维度进行拆分,然后对每个拆分内部进行分别量化,量化后的结果再进行组合,构成一个大的量化空间,具体可以参见下述步骤S414和步骤S416的处理。
在步骤S414中,根据每个人脸特征子空间中包含的浮点特征的维度,计算不同维度之间的欧式距离。
在步骤S416中,根据所述不同维度之间的欧式距离,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
在步骤S418中,合并上述聚类中心点信息得到特征空间中心码本,并合并上述数据所属类别信息得到人脸特征空间类别库。
在实施中,合并聚类中心点信息,即将聚类中心点信息对应的聚类中心点进行合并,生成全部的子空间中心点,即特征空间中心码本;同时,合并数据所属类别信息对应的数据所属类别,可以生成每一条数据所属的子空间编码,为便于计算,上述子空间编码可以全部采用二进制编码,编码长度可以为8x16=128(20000<216)。
其中,对于合并上述聚类中心点信息得到特征空间中心码本的具体处理方式可以包括多种,例如可以通过直接将聚类中心点信息进行组合实现,或者可以通过下述方式实现:根据上述聚类中心点信息,确定每个人脸特征子空间对应的子特征空间中心码本;计算多个人脸特征子空间分别对应的子特征空间中心码本的笛卡尔积,得到上述特征空间中心码本。
在实施中,可以基于通过上述方式得到的聚类中心点信息生成每个人脸特征子空间对应的子特征空间中心码本,可以基于子特征空间中心码本,进行笛卡尔积计算,其中,笛卡尔积可以通过下述方式表示:
C=C1×C2×…×Cm
其中,C表示特征空间中心码本,Cm表示第m个子特征空间中心码本,m表示子特征空间中心码本的数量。通过上述表达式,可以计算得到子特征空间中心码本的笛卡尔积,其结果即为特征空间中心码本。
在步骤S420中,基于上述特征空间中心码本和上述人脸特征空间类别库,构建人脸识别数据库。
上述步骤S420的具体处理过程可以参见上述实施例一中步骤S106的相关内容,在此不再赘述。
上述步骤S420的具体处理除了可以通过上述步骤S106的方式处理外,还可以通过其它方式实现,以下还提供一种可行的处理方式,具体可以包括以下步骤一和步骤二。
步骤一,基于上述特征空间中心码本和上述人脸特征空间类别库构建人脸特征的倒排索引。
其中,倒排索引源于需要根据属性的值来查找记录,倒排索引的索引表中的每一项都包括一个属性值和具有该属性值的各个记录的地址,由此可见,倒排索引不是由记录来确定属性值,而是由属性值来确定记录的位置。
在实施中,可以为上述特征空间中心码本和上述人脸特征空间类别库分别设置相应的属性值,然后,可以基于两者的属性值确定特征空间中心码本和人脸特征空间类别库的存储地址,从而,基于属性值和相应的存储地址,可以构建人脸特征的倒排索引。
步骤二,基于上述人脸特征的倒排索引构建人脸识别数据库。
在实施中,可以直接将上述人脸特征的倒排索引,上述特征空间中心码本的存储位置和属性值,以及上述人脸特征空间类别库的存储位置和属性值的组合作为人脸识别数据库,或者,也可以对上述人脸特征的倒排索引进行某种指定的数据处理,得到处理后的数据作为人脸识别数据库中的数据等。
通过上述处理过程得到了人脸识别数据库,该人脸识别数据库可以用于人脸识别场景中,可以从人脸识别数据库中检索或识别出当前待识别的用户的身份信息。其中的具体处理可以参见以下步骤S702~步骤S716的内容。
在步骤S702中,将目标人脸图像的图像特征拆分为多个人脸子特征集。
其中,目标人脸图像可以是由摄像头实时采集的图像,也可以是通过其它来源获取的图像,例如,目标用户预先存储的一张个人图像等,本申请实施例对此不做限定。需要说明的是,人脸子特征集与上述人脸特征子空间在其含义上可以不存在本质差别,而仅是其中包含的数据量大小的区别等。
在实施中,首先,需要抽取目标人脸图像的600维浮点特征,然后,可以将目标人脸图像拆分成8组人脸子特征集,其具体处理过程可以参见上述实施例一中步骤S202的相关内容,在此不再赘述。
在步骤S704中,对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息。
在实施中,可以分别判定拆分出的8组人脸子特征集中的每个人脸子特征集所属的子空间类别信息,其具体处理过程可以参见上述实施例一中步骤S204或实施例二中步骤S414和步骤S416的相关内容,在此不再赘述。
在步骤S706中,对每个人脸子特征集进行聚类,得到每个人脸子特征集的子聚类中心点信息。
在步骤S708中,合并每个人脸子特征集所属的子空间的类别信息,得到上述目标人脸图像的图像特征所属的类别信息。
在实施中,可以将8组人脸子特征集所属的子空间的类别信息合并为空间编码,即目标人脸图像的图像特征所属的类别信息,其具体处理过程可以参见上述实施例一中步骤S204或实施例二中步骤S414和步骤S416的相关内容,在此不再赘述。
在步骤S710中,合并上述子聚类中心点信息得到目标人脸图像的特征空间中心码。
上述步骤S706~步骤S710的具体处理过程可以参见上述实施例一中步骤S204或实施例二中步骤S414和步骤S416的相关内容,在此不再赘述。
考虑到一个人的人脸图像中的图像特征可能会被聚类到相似的子空间内,因此,可以通过下述步骤S712~步骤S714的方式降低上述情况的影响,具体可以参见下述内容。
在步骤S712中,从人脸识别数据库中的特征空间中心码本中,获取与目标人脸图像的特征空间中心码之间的距离小于预设距离阈值的目标特征空间中心码。
其中,预设距离阈值可以根据实际情况设定,具体如2或5等,本申请实施例对此不做限定。
在实施中,可以分别计算目标人脸图像的特征空间中心码与人脸识别数据库中的特征空间中心码本中的各个特征空间中心码之间的海明距离,然后,可以将得到的各个海明距离的数值与预设距离阈值相比较,从中选取小于预设距离阈值的海明距离的数值,并以此从人脸识别数据库中确定出相应的目标特征空间中心码。
在步骤S714中,获取上述目标特征空间中心码对应的图像特征所属的类别信息。
在步骤S716中,从获取的图像特征所属的类别信息中查找与目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对目标人脸的识别结果。
上述步骤S716的具体处理过程可以参见前述相关内容,在此不再赘述。
此外,如果不考虑到目标人脸图像中的图像特征可能会被聚类到相似的子空间内的情况,则可以不需要执行获取目标人脸图像的聚类中心点等,而是直接基于目标人脸图像的图像特征所属的类别信息进行人脸识别,即合并每个人脸子特征集所属的子空间的类别信息,得到目标人脸图像的图像特征所属的类别信息;从人脸识别数据库中查找与目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对目标人脸的识别结果。其具体处理可以参见上述相关内容,在此不再赘述。
此外,上述从人脸识别数据库中查找与目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对目标人脸的识别结果的处理过程可以多种多样,以下在提供一种可选的处理方式,具体可以包括以下步骤一和步骤二。
步骤一,从人脸识别数据库中查找与目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像。
步骤二,分别计算预选图像与目标人脸图像之间的相似度,将与目标人脸图像之间的相似度的数值最大的预选图像作为对目标人脸的识别结果。
需要说明的是,对于上述步骤S716的处理也可以通过上述步骤一和步骤二的方式处理,具体内容可以如下:从获取的图像特征所属的类别信息中查找与目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像;分别计算预选图像与目标人脸图像之间的相似度,将与目标人脸图像之间的相似度的数值最大的预选图像作为对目标人脸的识别结果。
需要说明的是,通过上述处理方式,可以从人脸识别数据库中将符合上述条件的人脸图像提取出来,此时查询量级已经大大缩小,平均为3000条数据,这样,可以较快的速度进行被查询的人脸图像的图像特征(或人脸特征)与提取出的人脸图像的图像特征的线性比对,根据线性比对确定的相似度进行排序,并且统计出现次数最多的用户标识,即可认为是目标人脸图像的目标人脸即为上述用户标识对应的用户。
本申请实施例提供一种人脸识别方法,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
实施例三
以上为本申请实施例提供的人脸识别方法,基于同样的思路,本申请实施例还提供一种人脸识别数据库的构建装置,如图7所示。
所述人脸识别数据库的构建装置包括:特征空间拆分模块801、聚类模块802和数据库构建模块803,其中:
特征空间拆分模块801,用于将多个人脸图像的图像特征空间拆分为多个人脸特征子空间;
聚类模块802,用于对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息;
数据库构建模块803,用于根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库。
本申请实施例中,所述数据库构建模块803,包括:
合并单元,用于合并所述聚类中心点信息得到特征空间中心码本,并合并所述数据所属类别信息得到人脸特征空间类别库;
数据库构建单元,用于基于所述特征空间中心码本和所述人脸特征空间类别库,构建所述人脸识别数据库。
本申请实施例中,所述合并单元,用于根据所述聚类中心点信息,确定每个人脸特征子空间对应的子特征空间中心码本;计算多个人脸特征子空间分别对应的子特征空间中心码本的笛卡尔积,得到所述特征空间中心码本。
本申请实施例中,所述装置还包括:
图像获取模块,用于获取预先存储的多个人脸图像;
特征提取模块,用于对每个人脸图像进行特征提取,得到每个人脸图像的图像特征。
本申请实施例中,所述特征提取模块,用于基于深度学习的人脸识别模型对每个人脸图像进行特征提取,得到每个图像的图像特征。
本申请实施例中,所述特征空间拆分模块801,包括:
分组单元,用于根据每个人脸图像的浮点特征的维度,将所述多个人脸图像的图像特征空间划分为多个特征分组;
类别数量确定单元,用于根据人脸图像的数量,确定每个特征分组中包含的数据的类别的数量;
子空间数量确定单元,用于根据每个特征分组中包含的数据的类别的数量和所述特征分组的数量,确定人脸特征子空间的数量;
特征空间拆分单元,用于基于所述人脸特征子空间的数量,将所述多个人脸图像的图像特征空间拆分为人脸特征子空间。
本申请实施例中,所述聚类模块802,包括:
计算单元,用于根据每个人脸特征子空间中包含的浮点特征的维度,计算不同维度之间的欧式距离;
聚类单元,用于根据所述不同维度之间的欧式距离,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
本申请实施例中,所述数据库构建单元,用于基于所述特征空间中心码本和所述人脸特征空间类别库构建人脸特征的倒排索引;基于所述人脸特征的倒排索引构建所述人脸识别数据库。
本申请实施例提供一种人脸识别数据库的构建装置,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
实施例四
以上为本申请实施例提供的人脸识别数据库的构建装置,基于同样的思路,本申请实施例还提供一种人脸识别装置,如图8所示。
所述人脸识别装置包括:图像特征拆分模块901、聚类模块902和识别模块903,其中:
图像特征拆分模块901,用于将目标人脸图像的图像特征拆分为多个人脸子特征集;
聚类模块902,用于对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息;
识别模块903,用于根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别。
本申请实施例中,所述识别模块903,包括:
合并单元,用于合并所述每个人脸子特征集所属的子空间的类别信息,得到所述目标人脸图像的图像特征所属的类别信息;
识别单元,用于从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
本申请实施例中,所述聚类模块902,还用于对每个人脸子特征集进行聚类,得到每个人脸子特征集的子聚类中心点信息;
所述装置还包括:
合并模块,用于合并所述子聚类中心点信息得到所述目标人脸图像的特征空间中心码;
第一获取模块,用于从人脸识别数据库中的特征空间中心码本中,获取与所述目标人脸图像的特征空间中心码之间的距离小于预设距离阈值的目标特征空间中心码;
第二获取模块,用于获取所述目标特征空间中心码对应的图像特征所属的类别信息;
相应的,所述识别单元,用于从获取的图像特征所属的类别信息中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
本申请实施例中,所述识别单元,用于从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像;分别计算所述预选图像与所述目标人脸图像之间的相似度,将与所述目标人脸图像之间的相似度的数值最大的预选图像作为对所述目标人脸的识别结果。
本申请实施例提供一种人脸识别装置,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
实施例五
基于同样的思路,本申请实施例还提供一种人脸识别数据库的构建设备,如图9所示。
该人脸识别数据库的构建设备可以为上述实施例提供的服务器等。
人脸识别数据库的构建设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1001和存储器1002,存储器1002中可以存储有一个或一个以上存储应用程序或数据。其中,存储器1002可以是短暂存储或持久存储。存储在存储器1002的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对人脸识别数据库的构建设备中的一系列计算机可执行指令。更进一步地,处理器1001可以设置为与存储器1002通信,在人脸识别数据库的构建设备上执行存储器1002中的一系列计算机可执行指令。人脸识别数据库的构建设备还可以包括一个或一个以上电源1003,一个或一个以上有线或无线网络接口1004,一个或一个以上输入输出接口1005,一个或一个以上键盘1006。
具体在本实施例中,人脸识别数据库的构建设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对人脸识别数据库的构建设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
将多个人脸图像的图像特征空间拆分为多个人脸特征子空间;
对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息;
根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
合并所述聚类中心点信息得到特征空间中心码本,并合并所述数据所属类别信息得到人脸特征空间类别库;
基于所述特征空间中心码本和所述人脸特征空间类别库,构建所述人脸识别数据库。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
根据所述聚类中心点信息,确定每个人脸特征子空间对应的子特征空间中心码本;
计算多个人脸特征子空间分别对应的子特征空间中心码本的笛卡尔积,得到所述特征空间中心码本。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
获取预先存储的多个人脸图像;
对每个人脸图像进行特征提取,得到每个人脸图像的图像特征。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
基于深度学习的人脸识别模型对每个人脸图像进行特征提取,得到每个图像的图像特征。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
根据每个人脸图像的浮点特征的维度,将所述多个人脸图像的图像特征空间划分为多个特征分组;
根据人脸图像的数量,确定每个特征分组中包含的数据的类别的数量;
根据每个特征分组中包含的数据的类别的数量和所述特征分组的数量,确定人脸特征子空间的数量;
基于所述人脸特征子空间的数量,将所述多个人脸图像的图像特征空间拆分为人脸特征子空间。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
根据每个人脸特征子空间中包含的浮点特征的维度,计算不同维度之间的欧式距离;
根据所述不同维度之间的欧式距离,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
基于所述特征空间中心码本和所述人脸特征空间类别库构建人脸特征的倒排索引;
基于所述人脸特征的倒排索引构建所述人脸识别数据库。
本申请实施例提供一种人脸识别数据库的构建设备,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
实施例六
基于同样的思路,本申请实施例还提供一种人脸识别设备,如图10所示。
该人脸识别设备可以为上述实施例提供的服务器或终端设备等。
人脸识别设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1101和存储器1102,存储器1102中可以存储有一个或一个以上存储应用程序或数据。其中,存储器1102可以是短暂存储或持久存储。存储在存储器1102的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对人脸识别设备中的一系列计算机可执行指令。更进一步地,处理器1101可以设置为与存储器1102通信,在人脸识别设备上执行存储器1102中的一系列计算机可执行指令。人脸识别设备还可以包括一个或一个以上电源1103,一个或一个以上有线或无线网络接口1104,一个或一个以上输入输出接口1105,一个或一个以上键盘1106。
具体在本实施例中,人脸识别设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对人脸识别设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
将目标人脸图像的图像特征拆分为多个人脸子特征集;
对每个人脸子特征集进行聚类,得到每个人脸子特征集所属的子空间的类别信息;
根据所述每个人脸子特征集所属的子空间的类别信息,以及构建的人脸识别数据库,对所述目标人脸图像对应的目标人脸进行识别。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
合并所述每个人脸子特征集所属的子空间的类别信息,得到所述目标人脸图像的图像特征所属的类别信息;
从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
对每个人脸子特征集进行聚类,得到每个人脸子特征集的子聚类中心点信息;
合并所述子聚类中心点信息得到所述目标人脸图像的特征空间中心码;
从人脸识别数据库中的特征空间中心码本中,获取与所述目标人脸图像的特征空间中心码之间的距离小于预设距离阈值的目标特征空间中心码;
获取所述目标特征空间中心码对应的图像特征所属的类别信息;
相应的,所述从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果,包括:
从获取的图像特征所属的类别信息中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为对所述目标人脸的识别结果。
可选地,所述可执行指令在被执行时,还可以使所述处理器:
从所述人脸识别数据库中查找与所述目标人脸图像的图像特征所属的类别信息相匹配的人脸图像作为预选图像;
分别计算所述预选图像与所述目标人脸图像之间的相似度,将与所述目标人脸图像之间的相似度的数值最大的预选图像作为对所述目标人脸的识别结果。
本申请实施例提供一种人脸识别设备,通过将多个人脸图像的图像特征空间拆分为多个人脸特征子空间,然后,对每个人脸特征子空间进行聚类,得到每个人脸特征子空间的聚类中心点信息和数据所属类别信息,再根据每个人脸特征子空间的聚类中心点信息和数据所属类别信息,构建人脸识别数据库,以便后续可以通过人脸识别数据库对目标人脸图像对应的目标人脸进行识别,这样,通过将一个较大的图像特征空间拆分为多个较小的人脸特征子空间,然后通过对人脸特征子空间的聚类分析和特征比对,从而简化了人脸识别的过程,而且,特征空间的拆分、聚类分析等的处理速度快于局部敏感性哈希方案中选取hash函数的处理速度,使得人脸识别被快速完成,从而提高了人脸识别的效率并减少了资源消耗。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。