建立特征数据库的方法和装置与流程

文档序号:16136368发布日期:2018-12-01 01:02阅读:496来源:国知局

本申请涉及通信领域,具体而言,涉及一种建立特征数据库的方法。

背景技术

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。人脸识别技术的核心部分则为人脸图像特征提取以及匹配与识别。一般而言,提取的人脸特征为归一化后的n维向量(n通常为128、512等)。通过对人脸库中的图像逐一提取人脸特征,可以建立一个人脸特征库。在相关技术中,当需要查找可疑人脸时,采用人脸识别算法提取可疑人脸的特征数据,然后与人脸特征库中的每一个特征进行对比,找出最相近的特征作为查找结果。

人脸识别主要用于身份识别,近年来已广泛用于政府、军队、银行、社会福利保障、电子商务、安全防务等领域。随着需求的不断提升,用于比对的人脸库可达百万、千万乃至亿级别,相关技术中的提取人脸特征后的查找过程计算量因此线性放大,使得人脸图像特征提取、匹配与识别的过程效率低下。

针对相关技术中在百万级以上人脸特征库中特征提取、匹配与识别效率低的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请的主要目的在于提供一种建立特征数据库的方法,以解决上述问题。

为了实现上述目的,根据本申请的一个方面,提供了一种建立特征数据库的方法,包括:

初始化特征数据库,其中,所述特征数据库包括第一特征集、目录集和第二特征集;将原始数据库中的特征元素按照第一预设规则添加到所述第一特征集中;所述第一特征集中的特征元素与所述目录集中的目录元素一一对应;所述目录集中各个目录元素分别指示第一特征集中对应特征元素来自于所述原始数据库中的哪个或哪些特征元素;将所述第一特征集中的所述特征元素按照第二预设规则添加到所述第二特征集中;所述第一特征集中的每一个特征元素对应所述第二特征集中的一个特征元素。

进一步的,如前述的方法,所述将原始数据库中的特征元素按照第一预设规则添加到所述特征数据库中,包括:s21.从所述原始数据库中获取欲添加到所述特征数据库中的特征元素;s22.判断所述第一特征集是否为空;s23.若所述第一特征集为空,则将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;s24.若所述第一特征集不为空,计算所述特征元素与所述第一特征集中各个特征元素的距离,比较各个所述距离,得到与所述特征元素的距离最小的所述第一特征集中的最近特征元素;所述最近特征元素与所述特征元素之间的距离为最近距离;s25.判断所述最近距离是否大于预设阈值;s26.若所述最近距离大于所述预设阈值,则将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;s27.若所述最近距离不大于所述预设阈值,则将所述最近特征元素替换为所述最近特征元素和所述特征元素的均值,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集中的对应目录元素中;s28.重复s21至s27,直至所述原始数据库中所有特征元素的身份信息都添加到所述目录集中。

进一步的,如前述的方法,所述特征元素为向量;所述s24中计算所述特征元素与所述第一特征集中各个特征元素的距离,包括计算所述特征元素与所述第一特征集中各个特征元素的点积。

进一步的,如前述的方法,所述将所述第一特征集中的特征元素按照第二预设规则添加到所述第二特征集中,包括:s31.通过sigmoid函数将所述第一特征集中的各个特征元素的各个值都投影为在0和1之间;s32.将所述所有值在0和1之间的各个特征元素按照第三预设规则投影为各个特征元素的各个值为0或1;s33.将所述各个值为0或1的各个特征元素添加到所述第二特征集中。

进一步的,如前述的方法,所述s32,包括:s321.获取欲投影的元素的值;s322.判断所述值是否大于0.5;s323.若所述值大于0.5,则将所述值投影为1;s324.若所述值不大于0.5,则将所述值投影为0;s325.重复s321至s324,直至将所述所有值在0和1之间的各个特征元素投影为各个特征元素的每个值为0或1。

为了实现上述目的,根据本申请的另一方面,提供了一种建立特征数据库的装置,包括:初始化单元、压缩单元和转换单元;所述初始化单元,用于初始化特征数据库,其中,所述特征数据库包括第一特征集、目录集和第二特征集;所述压缩单元,用于将原始数据库中的特征元素按照第一预设规则添加到所述第一特征集中;所述第一特征集中的特征元素与所述目录集中的目录元素一一对应;所述目录集中各个目录元素分别指示第一特征集中对应特征元素来自于所述原始数据库中的哪个或哪些特征元素;所述转换单元,用于将所述第一特征集中的所述特征元素按照第二预设规则添加到所述第二特征集中;所述第一特征集中的每一个特征元素对应所述第二特征集中的一个特征元素。

进一步的,如前述的装置,所述压缩单元,包括第一获取单元、第一判断单元、第一处理单元和第一计算单元;所述第一获取单元,用于从所述原始数据库中获取欲添加到所述特征数据库中的特征元素;所述第一判断单元,用于判断所述第一特征集是否为空;所述第一处理单元,用于在所述第一特征集为空时,将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;所述第一计算单元,用于在所述第一特征集不为空时,计算所述特征元素与所述第一特征集中各个特征元素的距离,比较各个所述距离,得到与所述特征元素的距离最小的所述第一特征集中的最近特征元素;所述最近特征元素与所述特征元素之间的距离为最近距离;所述第一判断单元,还用于判断所述最近距离是否大于预设阈值;所述第一处理单元,还用于在所述最近距离大于所述预设阈值时,将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;所述第一计算单元,还用于在所述最近距离不大于所述预设阈值时,计算所述最近特征元素和所述特征元素的均值;所述第一处理单元,还用于在所述最近距离不大于所述预设阈值时,将所述最近特征元素替换为所述均值,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集中的对应目录元素中。

进一步的,如前述的装置,所述特征元素为向量;所述第一计算单元用于计算所述特征元素与所述第一特征集中各个特征元素的距离,包括用于计算所述特征元素与所述第一特征集中各个特征元素的点积。

进一步的,如前述的装置,所述转换单元,包括投影单元和第二处理单元;所述投影单元,用于通过sigmoid函数将所述第一特征集中的各个特征元素的各个值都投影为在0和1之间;所述投影单元,还用于将所述所有值在0和1之间的各个特征元素按照第三预设规则投影为各个特征元素的各个值为0或1;所述第二处理单元,还用于将所述各个值为0或1的各个特征元素添加到所述第二特征集中。

进一步的,如前述的装置,所述投影单元,包括第二获取单元、第二判断单元和第二计算单元;所述第二获取单元,用于获取欲投影的元素的值;所述第二判断单元,用于判断所述值是否大于0.5;所述第二计算单元,用于在所述值大于0.5时,将所述值投影为1;所述第二计算单元,还用于在所述值不大于0.5,则将所述值投影为0。

在本申请实施例中,采用将大规模人脸特征库对应为特征库和目录库的方式,通过将特征库大幅度压缩,达到了在特征库中高效查找人脸特征的目的,从而实现了提高人脸特征查找效率的技术效果,进而解决了百万量级人脸识别特征库的特征查找效率低的技术问题。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请一个实施例提供的一种建立特征数据库的方法的流程示意图;

图2是本申请一个实施例提供的将原始数据库中的特征元素添加到特征数据库的流程示意图;

图3是本申请一个实施例提供的将第一特征集中的特征元素添加到第二特征集的流程示意图;

图4是本申请一个实施例提供的将值在0和1之间的特征元素投影为值为0或1的流程示意图;以及

图5是本申请一个实施例提供的一种建立特征数据库的装置的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

如图1所示,该方法包括如下的步骤s1至步骤s3:

s1.初始化特征数据库,其中,所述特征数据库包括第一特征集、目录集和第二特征集;

s2.将原始数据库中的特征元素按照第一预设规则添加到所述第一特征集中;所述第一特征集中的特征元素与所述目录集中的目录元素一一对应;所述目录集中各个目录元素分别指示第一特征集中对应特征元素来自于所述原始数据库中的哪个或哪些特征元素;

进一步地,如图2所示,所述s2包括:

s21.从所述原始数据库中获取欲添加到所述特征数据库中的特征元素;

s22.判断所述第一特征集是否为空;

s23.若所述第一特征集为空,则将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;

s24.若所述第一特征集不为空,计算所述特征元素与所述第一特征集中各个特征元素的距离,比较各个所述距离,得到与所述特征元素的距离最小的所述第一特征集中的最近特征元素;所述最近特征元素与所述特征元素之间的距离为最近距离;

更进一步地,如前述的方法,所述特征元素为向量;所述s24中计算所述特征元素与所述第一特征集中各个特征元素的距离,包括计算所述特征元素与所述第一特征集中各个特征元素的点积。

s25.判断所述最近距离是否大于预设阈值;

s26.若所述最近距离大于所述预设阈值,则将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;

s27.若所述最近距离不大于所述预设阈值,则将所述最近特征元素替换为所述最近特征元素和所述特征元素的均值,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集中的对应目录元素中;

s28.重复s21至s27,直至所述原始数据库中所有特征元素的身份信息都添加到所述目录集中。

具体地,例如,原人脸特征数据库包含m个人脸特征,其中m为100万,每个人脸特征为一个长度为n的一维向量(n通常为128、512等),则原数据库o为矩阵(m,n);

获取第一个人脸特征a1(0,2,3)(为简化处理,此处用n取3来举例),此时第一特征集k为空,则将a1(0,2,3)添加到第一特征集中,并将a1(0,2,3)在矩阵o(m,n)中的身份信息o_a1添加到目录集c的对应目录元素a中,此时第一特征集更新为k(a1),目录集更新为c(a),目录元素a更新为a(o_a1);

获取第二个人脸特征b1(0,5,8),此时第一特征集k已不为空,计算b1(0,5,8)与a1(0,2,3)的点积d=a1·b1=0·0+2·5+3·8=34,由于目前k中只有a1一个特征元素,所以a1为最近特征元素,44为最近距离;

预设阈值th为30,判断34大于预设阈值th,则将b1(0,5,8)添加到第一特征集中,并将b1(0,5,8)在矩阵o(m,n)中的身份信息o_b1添加到目录集c的对应目录元素b中,此时第一特征集更新为k(a1,b1),目录集更新为c(a,b),目录元素b更新为b(o_b1);

获取第三个人脸特征a2(0,2,4),此时第一特征集k已不为空,计算a2(0,2,4)与a1(0,2,3)的点积d1=a1·a2=0·0+2·2+3·4=16,计算a2(0,2,4)与b1(0,5,8)的点积d1=b1·a2=0·0+5·2+8·4=42,比较16<42,所以a1为最近特征元素,16为最近距离;

判断16小于预设阈值th=30,则将k中的a1替换为a1’=(a1+a2)/2=(0,2,7/2),并将a2在矩阵o(m,n)中的身份信息o_a2添加到目录集c的对应目录元素a中,此时第一特征集更新为k(a1’,b1),目录集更新为c(a’,b),目录元素a更新为a’(o_a1,o_a2);目录元素b为b(o_b1);

重复以上步骤,直至矩阵o(m,n)中所有特征元素的身份信息都添加到目录集c中;通过调节预设阈值th的大小,可以控制第一特征集k中元素的多少,即控制了第一特征集k的稀疏。

s3.将所述第一特征集中的所述特征元素按照第二预设规则添加到所述第二特征集中;所述第一特征集中的每一个特征元素对应所述第二特征集中的一个特征元素。

进一步地,如图3所示,所述s3包括:

s31.通过sigmoid函数将所述第一特征集中的各个特征元素的各个值都投影为在0和1之间;

s32.将所述所有值在0和1之间的各个特征元素按照第三预设规则投影为各个特征元素的各个值为0或1;

更进一步地,如图4所示,所述s32包括:

s321.获取欲投影的元素的值;

s322.判断所述值是否大于0.5;

s323.若所述值大于0.5,则将所述值投影为1;

s324.若所述值不大于0.5,则将所述值投影为0;

s325.重复s321至s324,直至将所述所有值在0和1之间的各个特征元素投影为各个特征元素的每个值为0或1。

s33.将所述各个值为0或1的各个特征元素添加到所述第二特征集中。

具体地,例如,取第一特征集k中的特征元素a1’(0,2,7/2);将a1’进行sigmoid转换,sigmoid函数的表达式为

因此s(a1’)=(1/2,1/(1+1/e2),1/(1+1/e7/2));再将s(a1’)进行二进制转换,即若值大于0.5,则将所述值投影为1,若值不大于0.5,则将所述值投影为0,因此bin_s(a1’)=(0,1,1);然后将bin_s(a1’)添加到第二特征集b_k中,则第二特征集b_k中的特征元素的值为0或1。

从以上的描述中,可以看出,本发明实现了如下技术效果:采用将大规模人脸特征库大幅度压缩为特征库和目录库的方式,通过调节压缩预设阈值来控制特征库的稀疏性,再进一步将特征库简化为二进制特征库,达到了在特征库中高效查找人脸特征的目的,从而实现了提高人脸特征查找效率的技术效果,进而解决了百万量级人脸识别特征库的特征查找效率低的技术问题。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

根据本发明实施例,还提供了一种用于实施上述建立特征数据库的方法的装置,如图5所示,该装置包括初始化单元、压缩单元和转换单元;

所述初始化单元,用于初始化特征数据库,其中,所述特征数据库包括第一特征集、目录集和第二特征集;

所述压缩单元,用于将原始数据库中的特征元素按照第一预设规则添加到所述第一特征集中;所述第一特征集中的特征元素与所述目录集中的目录元素一一对应;所述目录集中各个目录元素分别指示第一特征集中对应特征元素来自于所述原始数据库中的哪个或哪些特征元素;

进一步地,所述压缩单元,包括第一获取单元、第一判断单元、第一处理单元和第一计算单元;

所述第一获取单元,用于从所述原始数据库中获取欲添加到所述特征数据库中的特征元素;

所述第一判断单元,用于判断所述第一特征集是否为空;

所述第一处理单元,用于在所述第一特征集为空时,将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;

所述第一计算单元,用于在所述第一特征集不为空时,计算所述特征元素与所述第一特征集中各个特征元素的距离,比较各个所述距离,得到与所述特征元素的距离最小的所述第一特征集中的最近特征元素;所述最近特征元素与所述特征元素之间的距离为最近距离;

更进一步地,所述特征元素为向量;所述第一计算单元用于计算所述特征元素与所述第一特征集中各个特征元素的距离,包括用于计算所述特征元素与所述第一特征集中各个特征元素的点积。

所述第一判断单元,还用于判断所述最近距离是否大于预设阈值;

所述第一处理单元,还用于在所述最近距离大于所述预设阈值时,将所述特征元素添加到所述第一特征集中,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集的对应目录元素中;

所述第一计算单元,还用于在所述最近距离不大于所述预设阈值时,计算所述最近特征元素和所述特征元素的均值;

所述第一处理单元,还用于在所述最近距离不大于所述预设阈值时,将所述最近特征元素替换为所述均值,并将所述特征元素在所述原始数据库中的身份信息添加到所述目录集中的对应目录元素中。

具体地,例如,原人脸特征数据库包含m个人脸特征,其中m为100万,每个人脸特征为一个长度为n的一维向量(n通常为128、512等),则原数据库o为矩阵(m,n);

第一获取单元获取第一个人脸特征a1(0,2,3)(为简化处理,此处用n取3来举例),此时第一判断单元判断第一特征集k为空,则第一处理单元将a1(0,2,3)添加到第一特征集中,并将a1(0,2,3)在矩阵o(m,n)中的身份信息o_a1添加到目录集c的对应目录元素a中,此时第一特征集更新为k(a1),目录集更新为c(a),目录元素a更新为a(o_a1);

第一获取单元获取第二个人脸特征b1(0,5,8),此时第一判断单元判断第一特征集k已不为空,第一计算单元计算b1(0,5,8)与a1(0,2,3)的点积d=a1·b1=0·0+2·5+3·8=34,由于目前k中只有a1一个特征元素,所以a1为最近特征元素,44为最近距离;

预设阈值th为30,第一判断单元判断34大于预设阈值th,则第一处理单元将b1(0,5,8)添加到第一特征集中,并将b1(0,5,8)在矩阵o(m,n)中的身份信息o_b1添加到目录集c的对应目录元素b中,此时第一特征集更新为k(a1,b1),目录集更新为c(a,b),目录元素b更新为b(o_b1);

第一获取单元获取第三个人脸特征a2(0,2,4),此时第一特征集k已不为空,第一计算单元计算a2(0,2,4)与a1(0,2,3)的点积d1=a1·a2=0·0+2·2+3·4=16,计算a2(0,2,4)与b1(0,5,8)的点积d1=b1·a2=0·0+5·2+8·4=42,比较16<42,所以a1为最近特征元素,16为最近距离;

第一判断单元判断16小于预设阈值th=30,则第一处理单元将k中的a1替换为第一计算单元计算的a1’=(a1+a2)/2=(0,2,7/2),并将a2在矩阵o(m,n)中的身份信息o_a2添加到目录集c的对应目录元素a中,此时第一特征集更新为k(a1’,b1),目录集更新为c(a’,b),目录元素a更新为a’(o_a1,o_a2);目录元素b为b(o_b1);

重复以上步骤,直至矩阵o(m,n)中所有特征元素的身份信息都添加到目录集c中;通过调节预设阈值th的大小,可以控制第一特征集k中元素的多少,即控制了第一特征集k的稀疏。

所述转换单元,用于将所述第一特征集中的所述特征元素按照第二预设规则添加到所述第二特征集中;所述第一特征集中的每一个特征元素对应所述第二特征集中的一个特征元素。

进一步地,所述转换单元,包括投影单元和第二处理单元;

所述投影单元,用于通过sigmoid函数将所述第一特征集中的各个特征元素的各个值都投影为在0和1之间;

所述投影单元,还用于将所述所有值在0和1之间的各个特征元素按照第三预设规则投影为各个特征元素的各个值为0或1;

更进一步地,所述投影单元,包括第二获取单元、第二判断单元和第二计算单元;

所述第二获取单元,用于获取欲投影的元素的值;

所述第二判断单元,用于判断所述值是否大于0.5;

所述第二计算单元,用于在所述值大于0.5时,将所述值投影为1;

所述第二计算单元,还用于在所述值不大于0.5,则将所述值投影为0。

所述第二处理单元,还用于将所述各个值为0或1的各个特征元素添加到所述第二特征集中。

具体地,例如,第二获取单元取第一特征集k中的特征元素a1’(0,2,7/2);投影单元将a1’进行sigmoid转换,sigmoid函数的表达式为

因此s(a1’)=(1/2,1/(1+1/e2),1/(1+1/e7/2));投影单元再将s(a1’)进行二进制转换,即若值大于0.5,则将所述值投影为1,若值不大于0.5,则将所述值投影为0,因此bin_s(a1’)=(0,1,1);然后第二处理单元将bin_s(a1’)添加到第二特征集b_k中,则第二特征集b_k中的特征元素的值为0或1。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1