人脸识别方法及其模型训练方法与流程

文档序号:24185577发布日期:2021-03-09 13:36阅读:957来源:国知局
人脸识别方法及其模型训练方法与流程

1.本发明涉及人工智能技术领域,特别是涉及一种人脸识别方法及其模型训练方法。


背景技术:

2.随着现代科学信息产业的发展,身份认证技术已经转到了生物特征层面。当前的生物特征识别技术包括:指纹识别、视网膜识别、步态识别等。与其它识别方法相比,人脸识别由于具有直接、友好、方便等特点,使用者无任何心理障碍,易于为用户所接受,从而广泛应用于诸如刑侦破案、证件验证、视频监控、入口控制等领域。
3.早期的人脸识别系统采用传统的机器学习的方法,包括几何特征、局部特征分析等方法,但这些方法都存在着识别率不高、抗干扰能力差等缺点,这些对人脸识别系统的应用造成了极大的干扰。
4.近年来,随着人工智能的快速发展,采用训练后的人工神经网络来进行人脸识别是未来的发展趋势。现有技术中用于人脸识别的人工神经网络往往存在着误检率高、检测速度慢等缺陷,阻碍了人工神经网络在人脸识别领域的应用。
5.由此可见,人脸检测的人工神经网络如何克服上述缺陷,训练出误检率低、检测速度快的人工神经网络,进而提高人脸检测的检测准确率和检测速度,是目前亟需解决的问题。


技术实现要素:

6.本发明解决的技术问题是:如何提高人脸检测的检测准确率和检测速度。
7.为了解决上述技术问题,本发明实施例提供一种人脸识别模型训练方法,包括:a)获得人脸数据集,所述人脸数据集用于对人脸识别的待训练神经网络进行训练;b)对人脸数据集进行预处理,得到输入数据;c)将输入数据输入到待训练神经网络中,待训练神经网络对输入数据进行特征提取;d)根据待训练神经网络输出的输出向量来计算网络损失,包括采用如下算式来计算待训练神经网络的网络损失:其中,l表示网络损失,n表示每个批次训练样本的数量,s表示人脸向量映射超球体的半径,yi表示某一类人或某个人,m表示角度裕量,λ表示平衡参数,用于平衡算式中加号前后两部分的权重,xi表示某一类的向量,cyi表示第yi类样本的深度特征的中心,k表示网络第k层,wi表示第i层所有权重之和;e)根据网络损失来更新权重值;f)重复执行上述步骤c、步骤d、步骤e,直至网络损失收敛至低于预定的第一目标值;
g)将待训练神经网络中小于预设的第一阈值的权重值设置为0;h)重复执行上述步骤c、步骤d、步骤e,直至网络损失收敛至低于预定的第二目标值。
8.可选的,所述获得人脸数据集包括:采用本地摄像头和opencv来获取人脸数据集。
9.可选的,所述获得人脸数据集包括:从互联网上下载公开的人脸数据集。
10.可选的,所述获得人脸数据集还包括:对人脸数据集进行数据清理;所述对人脸数据集进行数据清理包括:获取第一神经网络,所述第一神经网络为经训练后的人脸识别神经网络;将人脸数据集输入到第一神经网络中,其中,将同一个人的照片放在同一个文件夹内进行输入,不同的文件夹对应于不同人的照片;针对各张照片,第一神经网络分别输出输出向量;针对各个文件夹,分别计算文件夹内所有照片的输出向量的平均值;计算各张照片的输出向量与该照片所在文件夹内所有照片的输出向量的平均值之间的距离,作为第一距离;删除第一距离大于预设的第二阈值的照片。
11.可选的,所述获得人脸数据集包括:从互联网上下载多位公众人物的照片组成人脸数据集,该人脸数据集中包括关于各位公众人物的照片多张。
12.可选的,所述对人脸数据集进行预处理包括:对于人脸数据集中的yuv图形,提取其在y方向上的分量作为待训练神经网络的输入。
13.可选的,所述对人脸数据集进行预处理包括:对人脸数据集中的照片进行随机旋转、随机翻转和/或随机裁剪。
14.可选的,所述待训练神经网络对输入数据进行特征提取包括:采用inception-resnet-v1网络结构的神经网络来对输入数据进行特征提取。
15.可选的,所述根据网络损失来更新权重值包括:计算网络损失对于各个网络权重值的导数,根据该导数和学习率来更新权重值。
16.可选的,所述第二目标值小于或等于所述第一目标值。
17.为了解决上述技术问题,本发明实施例还提供一种人脸识别方法,包括:采用如上所述的人脸识别模型训练方法来对待训练神经网络进行训练;采用训练后的待训练神经网络来进行人脸识别。
18.与现有技术相比,本发明的技术方案具有以下有益效果:在训练直至网络损失收敛至低于预定的第一目标值之后,将待训练神经网络中小于预设的第一阈值的权重值设置为0,然后继续进行训练,直至网络损失收敛至低于预定的第二目标值,能够让算法更有利于硬件中的稀疏模块去发挥更高的效果,从而减少了人脸识别算法运行的时间,加快了人脸识别的检测速度。
19.进一步的,采用全新设计的算法来计算网络损失,该算法将arcface损失函数与centerloss函数结合,能够使得同类分布更紧密,从而有助于降低误检率,提高人脸检测的准确率。
20.进一步的,在改进后的网络损失算法的基础上,再进一步增加对于权重值的l1正则化项,从而进一步增加权重值的稀疏程度,加快人脸识别的检测速度。
附图说明
21.图1为本发明实施例中人脸识别模型训练方法流程图;图2为现有技术中人脸识别算法的训练流程图;图3为本发明实施例中深度学习的人脸识别算法的训练流程图。
具体实施方式
22.根据背景技术部分的分析可知,现有技术中用于人脸识别的人工神经网络往往存在误检率高、检测速度慢等缺陷。
23.本发明在训练直至网络损失收敛至低于预定的第一目标值之后,将待训练神经网络中小于预设的第一阈值的权重值设置为0,然后继续进行训练,直至网络损失收敛至低于预定的第二目标值,同时采用全新设计的算法来计算网络损失,该算法将arcface损失函数与centerloss函数结合,再进一步增加对于权重值的l1正则化项,从而使得训练后的人脸检测神经网络的检测准确率更高、检测速度更快。
24.为使本领域技术人员更好地理解和实现本发明,以下参照附图,通过具体实施例进行详细说明。
25.实施例一如下所述,本发明实施例提供一种人脸识别模型训练方法。
26.参照图1所示的人脸识别模型训练方法流程图,以下通过具体步骤进行详细说明:s101,获得人脸数据集。
27.其中,所述人脸数据集用于对人脸识别的待训练神经网络进行训练。
28.在一些实施例中,可以采用本地摄像头和opencv来获取人脸数据集。具体的,通过完成python脚本,脚本可以开启本地计算机的摄像头,拥有本地人脸检测功能,并能将人脸检测出来的人脸截图保存在本地文件夹中。
29.对于志愿者的人脸样本,需要收集符合如下一些条件的照片:不同的光线条件、一天中的不同时间和/或不同的表情。
30.在另一些实施例中,可以从互联网上下载公开的人脸数据集。具体的,一些通用的数据集有lfw、celebfaces、vgg-face、megaface等,这些数据集都拥有几十万甚至上百万的人脸数据集,是作为人脸识别训练的有效数据集。但是这里面拥有很多数据噪音,本实施例中使用一种自动的方法清理已知数据集中的噪音。自动清理数据集的方法包括:在从互联网上下载公开的人脸数据集之后,还可以对人脸数据集进行数据清理。所述对人脸数据集进行数据清理具体可以包括以下步骤:获取第一神经网络,所述第一神经网络为经训练后的人脸识别神经网络;将人脸数据集输入到第一神经网络中,其中,将同一个人的照片放在同一个文件夹内进行输入,不同的文件夹对应于不同人的照片;针对各张照片,第一神经网络分别输出输出向量;针对各个文件夹,分别计算文件夹内所有照片的输出向量的平均值;计算各张照片的输出向量与该照片所在文件夹内所有照片的输出向量的平均值之间的距离,作为第一距离;删除第一距离大于预设的第二阈值的照片。
31.通过上述数据清理的方法可以有效的增加信噪比,自动的清理数据集。
32.在另一些实施例中,可以从互联网上下载多位公众人物的照片组成人脸数据集,该人脸数据集中包括关于各位公众人物的照片多张。具体的,从公众可以获得的平台,比如说百度图片,获得多位公众人物的多张图片。然后通过人脸检测网络截取图片中人脸的部分并调整大小作为网络需要的输入尺寸。
33.s102,对人脸数据集进行预处理,得到输入数据。
34.在一些实施例中,所述对人脸数据集进行预处理可以包括:对于人脸数据集中的yuv图形,提取其在y方向上的分量作为待训练神经网络的输入。
35.在另一些实施例中,所述对人脸数据集进行预处理可以包括:对人脸数据集中的照片进行随机旋转、随机翻转和/或随机裁剪。
36.一幅图像的效果会受到周围环境的光照强度、物体的反射和使用的相机的因素等影响。为了不让照片受到外部因素的影响,需要对输入图像进行白化处理。为了去除这些因素,我们将图片的像素值分布转化成均值为0和单位方差的数值。
37.但是对于需要应用在深度学习加速器上,如果能使用单通道图片的话会进一步缩小图片输入大小减少图片的计算量。所以在这里我们首先对于输入的yuv图形,仅仅提取y方向的分量作为网络的输入。通过这种方式减少了输入层图片的数据量。
38.同时也对于输入的人脸识别训练图片进行数据增强,数据增强的方式有:随机旋转,即将输入图片随机的旋转一部分角度;随机翻转,即将输入图片随机的左右或者上下翻转;随机裁剪,即将图片随机裁剪后并变换为原图片大小。
39.s103,将输入数据输入到待训练神经网络中,待训练神经网络对输入数据进行特征提取。
40.在一些实施例中,所述待训练神经网络对输入数据进行特征提取可以包括:采用inception-resnet-v1网络结构的神经网络来对输入数据进行特征提取。
41.步骤s102中准备好的输入的数据在训练的时候需要送进深度学习框架进行逐层的特征提取,并获得网络的输出。
42.通常一个深度学习网络由以下几种结构组成:卷积层、池化层、全连接层、dropout层等。通过这四种结构的不同组合可以获得不同的网络架构,本实施例中采用的网络结构是谷歌推出的inception-resnet-v1结构作为特征提取,支持任何推出的新的深度学习架构去更好的提取特征。
43.s104,根据待训练神经网络输出的输出向量来计算网络损失。
44.在一些实施例中,具体可以采用如下算式来计算待训练神经网络的网络损失:其中,l表示网络损失,n表示每个批次训练样本的数量,s表示人脸向量映射超球体的半径,yi表示某一类人或某个人,m表示角度裕量,λ表示平衡参数,用于平衡算式中加号前后两部分的权重,xi表示某一类的向量,cyi表示第yi类样本的深度特征的中心,k表示网络
第k层,wi表示第i层所有权重之和。
45.步骤s103中中获得了一个批次的输入人脸图片的网络输出结果,但是这个结果是否正确,或者说这个网络是否训练完毕,需要通过计算网络的损失值来判断,损失越小越好。
46.损失函数是一种计算网络损失的一种数学函数,对于人脸识别来说,目前常用的有突出效果的基于人脸识别的深度学习损失函数有如下几种:1)cross-entropy loss2)additive-margin softmax loss3)arcface loss目前的损失函数训练出来的模型,增大了不同类人之间的距离,但是同类人之间的距离还是不够紧密。同类之间的分布过于分散会增大人脸识别的误检率,所以如何缩小同类人之间的距离,使得同类之间的分布更加紧密是一个问题。
47.本发明通过设计一种新的损失函数,通过采取这种新的损失函数来训练人脸识别算法,可以减少同类之间的距离,从而达到降低人脸识别算法的误检率。
48.arcface是目前人脸识别中效果比较突出的一种损失函数,可以有效的增加不同类别之间的距离,arcface损失函数如下:经过我们的研究发现,这种损失函数训练出来的模型,对于同类之间的分布不够紧密,同类分布比价分散的缺点是,会增加人脸识别的误检率,出现的问题就是会把a识别成b。为了降低误检率,本发明在arcface的基础上,增加一个centerloss函数:其中,代表的是第类样本的深度特征的中心点。在模型训练中,再完成一个批
次的训练的时候,训练出来同属于一个类的深度特征获得平均值,通过这种方法可以使得类内的分布更加紧凑,减少误检率。现在改进的arcface损失函数为:其中,λ是一个平衡参数,通过调整λ的值可以平衡前后两个部分的权重。如果希望使得类内比较紧凑,需要使用较大的λ值。
49.由于我们是基于深度学习加速器平台的人脸识别模型,现在的深度学习网络加速器支持稀疏矩阵计算。如果我们能训练出来稀疏度比较高的网络,这样可以提高网络运行的速度。
50.对于增加模型的稀疏程度,可以继续通过改变损失函数来达到这样的效果。在损失函数中增加对于权重的l1正则化项,可以进一步的增加权重稀疏程度。l1正则化项为:最终改进后的人脸识别损失函数如下:其中,l表示网络损失,n表示每个批次训练样本的数量,s表示人脸向量映射超球体的半径,表示某一类人或某个人,m表示角度裕量,λ表示平衡参数,用于平衡算式中加号前后两部分的权重,表示某一类的向量,表示第类样本的深度特征的中心,k表示网络第k层,表示第i层所有权重之和。
51.通过以上对技术方案的描述可以看出:本实施例中,采用全新设计的算法来计算网络损失,该算法将arcface损失函数与centerloss函数结合,能够使得同类分布更紧密,从而有助于降低误检率,提高人脸检测的准确率。
52.进一步的,在改进后的网络损失算法的基础上,再进一步增加对于权重值的l1正则化项,从而进一步增加权重值的稀疏程度,加快人脸识别的检测速度。
53.s105,根据网络损失来更新权重值。
54.在一些实施例中,所述根据网络损失来更新权重值可以包括:计算网络损失对于各个网络权重值的导数,根据该导数和学习率来更新权重值。
55.s106,判断网络损失是否收敛至低于预定的第一目标值。
56.如果是,则进入后续步骤s107。
57.如果否,则重复上述步骤s103至步骤s105,直至网络损失收敛至低于预定的第一目标值。
58.s107,将待训练神经网络中小于预设的第一阈值的权重值设置为0。
59.深度网络加速器中,可以根据网络的稀疏性,进一步的压缩网络并采取稀疏矩阵
的乘法来加速。而稀疏矩阵的意思就是,一个矩阵中参数为零的个数要大于非零参数的个数。但是目前在模型训练的时候并没有考虑到部署在端上的原因而增加网络的稀疏性。
60.网络枝剪可以增加网络的稀疏性,做法如下设置合适的阈值,对于小于阈值的权重值设置为0。
61.根据这个原则,对于已经训练好的人脸识别网络,进行网络枝剪,获得更加稀疏的网络权重参数。
62.s108,判断网络损失是否收敛至低于预定的第二目标值。
63.如果是,则结束稀疏网络训练,得到人脸识别算法模型。
64.如果否,则重复上述步骤s103至步骤s105,直至网络损失收敛至低于预定的第二目标值。
65.其中,所述第二目标值小于或等于所述第一目标值,即步骤s106和步骤s107有助于减小网络损失,进而提高人脸识别模型的识别准确率以及识别速度。
66.如图2所示,为现有技术中人脸识别算法的训练流程;如图3所示,为本实施例中深度学习的人脸识别算法的训练流程。
67.通过以上对技术方案的描述可以看出:本实施例中,在训练直至网络损失收敛至低于预定的第一目标值之后,将待训练神经网络中小于预设的第一阈值的权重值设置为0,然后继续进行训练,直至网络损失收敛至低于预定的第二目标值,能够让算法更有利于硬件中的稀疏模块去发挥更高的效果,从而减少了人脸识别算法运行的时间,加快了人脸识别的检测速度。
68.实施例二如下所述,本发明实施例提供一种人脸识别方法。
69.与现有技术的不同之处在于,该人脸识别方法采用如本发明实施例中所提供的人脸识别模型训练方法来对待训练神经网络进行训练。因而该人脸识别方法能够在训练直至网络损失收敛至低于预定的第一目标值之后,将待训练神经网络中小于预设的第一阈值的权重值设置为0,然后继续进行训练,直至网络损失收敛至低于预定的第二目标值,能够让算法更有利于硬件中的稀疏模块去发挥更高的效果,从而减少了人脸识别算法运行的时间,加快了人脸识别的检测速度。
70.本领域普通技术人员可以理解,上述实施例的各种方法中,全部或部分步骤是可以通过程序指令相关的硬件来完成的,该程序可以存储于一计算机可读存储介质中,存储介质可以包括:rom、ram、磁盘或光盘等。
71.虽然本发明披露如上,但本发明并非限定于此。任何本领域技术人员,在不脱离本发明的精神和范围内,均可作各种更动与修改,因此本发明的保护范围应当以权利要求所限定的范围为准。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1