人脸识别方法和人脸识别设备
技术领域
本发明人脸识别技术领域,特别是涉及一种人脸识别方法和人脸识别设备。
背景技术
Triplet(三元组)损失函数是一种在训练模型时候使用的损失函数,通常用在人脸识别模型的训练中,首次在FaceNet(人脸网络)中被使用。由于从特征向量的维度直接减少了同一类特征向量的类内间隔,同时增大了不同特征向量间的类间间隔,方法原理简单直接,取得了不错的训练效果。但是由于这种训练方法在人脸网络训练时,需要衡量两组图片的损失,因此会使得模型需要更长时间的训练才能收敛到一个更好的精度。
目前,Triplet损失函数使用了欧式距离来测量锚定图片与正样本、锚定图片与负样本之间的相似度,从而确定损失的值。计算损失是为了将正样本与锚定图片的特征拉近,并将负样本与锚定图片的特征推远,从而达到同类样本在样本空间中聚类。所以锚定图片与正样本的差值越小,损失也就越小,锚定图片与负样本的差值越小,损失则会越大。因此锚定图片与正样本被拉近时,也要考虑减少锚定图片与负样本的距离,使得损失函数最终的损失值变小,但是在这个过程中并不能确定在拉近过程当中的锚定图片是否就是正样本这一簇的簇中心。理论上,该簇正样本最终聚类的平均位置,才应该是该簇的簇中心。这样在训练过程中,虽然多次训练后最终会使负样本远离正样本的簇中心,但收敛过程中可能会让损失无法进行平滑下降,而是在某些地方产生波折,这些波折则会影响损失函数的收敛速度,最终会影响人脸识别模型的训练速度。
发明内容
基于此,有必要提供一种人脸识别方法以及一种人脸识别设备。
第一方面,本发明提出一种人脸识别方法,所述方法包括:
建立人脸识别模型;
从提供的样本库中选择锚定图片、与锚定图片同类型的正样本以及与锚定图片不同类型的负样本,利用损失函数对所述人脸识别模型进行至少一个阶段的训练直至模型收敛,所述损失函数至少包括第一Triplet损失函数,所述第一Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离以及用于增加损失值收敛难度设定参数;
根据所述人脸识别模型,抽取目标人脸图像的特征,作为目标人脸的人脸特征保存至数据库中;
将采集的人脸图像输入所述人脸识别模型,获取采集的人脸图像的特征,计算与保存的目标人脸特征的相似度,输出人脸识别结果。
上述人脸识别方法,第一Triplet损失函数中加入了正样本与负样本之间的距离作为损失项,当负样本远离锚定图片时,正样本与负样本的距离也被考虑,这使得负样本是远离正样本和锚定图片这一整体,即让负样本远离正样本簇中心的位置。如此,在收敛过程中,既能确保锚定图片与正样本被拉近时越来越接近正样本的簇中心,让负样本远离正样本的簇中心,同时还可以减少收敛线路的曲折,从而让损失更快更平滑的减小,因此,可以提高损失函数的收敛速度,进而提高人脸识别模型的训练速度。
在其中一个实施例中,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin为负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离之间的距离,α为用于增加损失值收敛难度的设定参数。
在其中一个实施例中,所述损失函数还包括第二Triplet损失函数,所述第二Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离以及用于增加损失值收敛难度的设定参数,所述第二Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin为负样本,i为样本数量,i大于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||1为正样本与负样本之间的距离,||f(xia)-f(xip)||1为正样本与锚定图片之间的距离,||f(xia)-f(xin)||1为负样本与锚定图片之间的距离之间的距离,α为用于增加损失值收敛难度的设定参数;
所述利用损失函数对所述人脸识别模型是进行两个阶段以上的训练,其中,在第一阶段利用第二Triplet损失函数进行训练,在第二阶段利用第一Triplet损失函数进行训练。
在其中一个实施例中,所述在第一阶段利用第二Triplet损失函数进行训练,是训练至第二Triplet损失函数收敛至最小值,所述在第二阶段利用第一Triplet损失函数进行训练,是训练至第一Triplet损失函数收敛至最小值。
在其中一个实施例中,所述利用损失函数对所述人脸识别模型进行至少一个阶段的训练的过程中,还包括提供验证人脸样本库,利用人脸识别模型的提取验证人脸特征,验证人脸识别模型的准确性;
所述利用第二Triplet损失函数进行训练,是在设定的第二迭代次数内训练至验证准确率不再升高时为止,所述利用第一Triplet损失函数进行训练,是在设定的第一迭代次数内训练至验证准确率不再升高时为止,第二迭代次数大于第一迭代次数。
在其中一个实施例中,所述损失函数还包括第三Triplet损失函数,所述第三Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离、负样本与负样本之间的距离以及用于增加损失值收敛难度的设定参数;所述第三Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,||f(xin)-f(xil)||2为负样本与另一个同类型负样本之间的距离,a1和α2均为用于增加损失值收敛难度的设定参数;
所述利用损失函数对所述人脸识别模型是进行三个阶段的训练,其中,在第二阶段利用第一Triplet损失函数进行训练,在第三阶段利用所述第三Triplet损失函数。
在其中一个实施例中,所述损失函数还包括第三Triplet损失函数,所述第三Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离、负样本与另一个同类型负样本之间的距离以及用于增加损失值收敛难度的设定参数;所述第三Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin和xil均为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,||f(xin)-f(xil)||2为负样本与负样本之间的距离,a为用于增加损失值收敛难度的设定参数,λ为用于控制正则项限制程度的设定参数;
所述利用损失函数对所述人脸识别模型是进行三个阶段的训练,其中,在第二阶段利用第一Triplet损失函数进行训练,在第三阶段利用所述第三Triplet损失函数。
在其中一个实施例中,所述输出人脸识别结果之后,包括:
若采集的人脸图像与目标人脸图像匹配,进行点名;或者
若采集的人脸图像与目标人脸图像匹配,发出解锁指令。
在其中一个实施例中,所述第一Triplet损失函数中的损失项还包括负样本与另一个同类型负样本之间的距离,所述第一Triplet损失函数为:
xia为锚定图片,xip为正样本,xin为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,||f(xin)-f(xil)||2为负样本与另一个同类型负样本之间的距离,a为用于增加损失值收敛难度的设定参数,λ为用于控制正则项限制程度的设定参数。
第二方面,本发明实施例还一种人脸识别设备,包括存储器及处理器,所述存储器中储存有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如上任一实施例中所述的人脸识别方法的步骤。
附图说明
图1为本发明一实施例中的人脸识别方法的流程示意图;
图2为本发明一实施例中损失函数收敛过程中的锚定图片和正负样本的示意图;
图3为本发明另一实施例中损失函数收敛过程中的锚定图片和正负样本的示意图;
图4为本发明一实施例中的人脸识别装置的结构示意图;
图5为本发明一实施例中的电子设备的结构示意图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如背景技术所述,目前的Triplet损失函数使用了欧式距离来测量锚定图片与正样本、锚定图片与负样本之间的相似度,从而确定损失的值。计算损失是为了将正样本与锚定图片拉近,并将负样本与锚定图片推远。所以锚定图片与正样本的差值越小,损失也就越小,锚定图片与负样本的差值越小,损失则会越大。因此锚定图片与正样本被拉近时,也要考虑减少锚定图片与负样本的距离,使得损失函数最终的损失值变小,但是在这个过程中并不能确定在拉近过程当中的锚定图片是否就是正样本这一簇的簇中心。理论上,该簇正样本的平均位置,才应该是该簇的簇中心。这样在训练过程中,虽然多次训练后最终会使负样本远离簇中心,但过程可能会让损失无法进行平滑下降,而是在某些地方产生波折,这些波折则会影响损失函数的收敛速度,最终会影响人脸识别模型训练速度。
基于此,本发明实施例提出一种Triplet损失函数,该损失函数可以应用至人脸识别场景中,该损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离以及负样本与锚定图片之间的距离,可以提高损失函数的收敛速度,进而提高人脸识别模型的训练速度。本发明实施例提出一利用上述Triplet损失函数的人脸识别方法,可以提高人脸识别模型的训练速度,如图1所述,该人脸识别方法包括步骤102至步骤108:
步骤102:建立人脸识别模型。
可采用轻量化卷积神经网络模型建立人脸识别模型,网络参数少,有利于提高人脸识别模型的训练速度,尤其后续采用本发明实施例中损失函数训练人脸识别模型时,优势更为明显。
具体地,所述建立人脸识别模型可以包括建立基于mobilenetv2深度学习的轻量化卷积神经网络结构,所述轻量化卷积神经网络结构的深度卷积神经网络层数为11层,各层各神经元的初始权值、偏置参数均在正负1之间,各层的卷积核分别为1、3、7,其中,输入层的卷积核大小为3*3,输出层的卷积核大小1*1,池化层的卷积核大小为7*7,卷积步长为1、2。
具体地,所述建立人脸识别模型也可以包括建立基于mobilenetv3深度学习的轻量化卷积神经网络结构,所述轻量化卷积神经网络结构的深度卷积神经网络层数为20层,各层各神经元的初始权值、偏置参数均在正负1之间,各层的卷积核分别为1、3、5、7,其中,输入层的卷积核大小为3*3,输出层的卷积核大小1*1,池化层的卷积核大小为7*7,卷积步长1、2,输入层使用224*224*3矩阵,输出层使用1*1*1280矩阵。
步骤104:选择锚定图片、与锚定图片同类型的正样本以及与锚定图片不同类型的负样本,利用损失函数对所述人脸识别模型进行至少一个阶段的训练直至模型收敛,所述损失函数至少包括第一Triplet损失函数,所述第一Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离以及用于增加损失值收敛难度的设定参数。如图2所示,第一Triplet损失函数中加入了正样本210与负样本220之间的距离作为损失项,当负样本220远离锚定图片230时,正样本210与负样本220的距离也被考虑,这使得负样本220是远离正样本210和锚定图片230这一整体,即让负样本220远离更加接近簇中心的位置。如此,既能确保锚定图片与正样本被拉近时越来越接近正样本的簇中心,让负样本远离正样本的簇中心,同时也利用第一Triplet损失函数训练人脸识别模型时,可以减少收敛线路的曲折,从而让损失更快更平滑的减小。
具体地,正样本可以选择跟相似度跟锚定图片最高的样本,负样本相似度可以选择跟锚定图片最低的样本。在其他实施例中,可以选定一批跟锚定图片同类型的样本,然后取平均,作为该正样本,同理,可以选定一批与锚定图片不同类型的样本,然后取平均,作为该负样本。用于增加损失值收敛难度的设定参数可以是一个经验参数,可设置该设定参数大于或等于0.5,以免训练初期损失值过小导致中断训练,该设定参数具体可以为1。
在其中一个实施例中,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin为负样本,i为样本数量,i大于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,a为设定参数,用于增加损失值的收敛难度,使得收敛更加平滑,收敛效果越好,可设置a大于或等于0.5,以免训练初期损失值过小导致中断训练,a具体可以为1。
在另一个实施例中,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin为负样本,i为样本数量,i大于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||1为正样本与负样本之间的距离,||f(xia)-f(xip)||1为正样本与锚定图片之间的距离,||f(xia)-f(xin)||1为负样本与锚定图片之间的距离,a为设定参数,用于增加损失值的收敛难度,可设置a大于或等于0.5,以免训练初期损失值过小导致中断训练,a具体可以为1。
在另一个实施例中,所述第一Triplet损失函数的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离、负样本与锚定图片之间的距离以及用于增加损失值收敛难度的设定参数,还包括负样本与负样本之间的距离,第一Triplet损失函数在加入正样本与负样本的距离作为损失项的基础上,进一步引入负样本与同类型负样本之间的距离作为损失项,此举在收敛过程中可以避免一味拉大正样本与负样本距离时可能会使得负样本远离负样本自身的类中心,引入负样本与负样本之间的距离作为损失项可以确保负样本也在不断逼近负样本自身的类中心,同时,负样本与正样本簇中心的距离也是在不断拉大,则可使得负样本的簇中心能在收敛过程中远离正样本簇中心的位置,最终可以提高损失函数的收敛速度,还能进一步提高训练精度,有利于人脸识别模型取得最优参数。
如图3所示,第一Triplet损失函数中加入了正样本210与负样本220之间的距离作为损失项,还加入了负样本220与负样本240之间的距离,当负样本220远离锚定图片230时,正样本210与负样本220的距离也被考虑,这使得负样本220是远离正样本210和锚定图片230这一整体,即让负样本220远离正样本簇中心的位置,同时,负样本220与负样本240的距离也在不断拉近,确保负样本220接近负样本自身的类中心。
所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin和xil均为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,||f(xin)-f(xil)||2为负样本与另一个同类型负样本之间的距离,a1和α2均为用于增加损失值收敛难度的设定参数,可设置a1和α2均大于或等于0.5,以免训练初期损失值过小导致中断训练,a1和α2均具体可以为1。或者,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin和xil均为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||1为正样本与负样本之间的距离,||f(xia)-f(xip)||1为正样本与锚定图片之间的距离,||f(xia)-f(xin)||1为负样本与锚定图片之间的距离,||f(xin)-f(xil)||1为负样本与另一个同类型负样本之间的距离,a1和α2均为用于增加损失值收敛难度的设定参数,可设置a1和α2均大于或等于0.5,以免训练初期损失值过小导致中断训练,a1和α2均具体可以为1。
或者,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin和xil均为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于等于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||2为正样本与负样本之间的距离,||f(xia)-f(xip)||2为正样本与锚定图片之间的距离,||f(xia)-f(xin)||2为负样本与锚定图片之间的距离,||f(xin)-f(xil)||2为负样本与负样本之间的距离,a为设定参数,用于增加损失值的收敛难度,可设置a大于或等于0.5,以免训练初期损失值过小导致中断训练,a具体可以为1。λ为用于控制正则项限制程度的设定参数,范围可以是0至1,具体可以是0.2,由于λ为用于控制正则项限制程度的设定参数,是一个辅助的损失项,故取值不宜过大。
或者,所述第一Triplet损失函数为:
其中,xia为锚定图片,xip为正样本,xin和xil均为负样本,xil为跟xin同类型的负样本,i为样本数量,i大于1小于等于N,N大于等于1,f为对应样本的特征值,||f(xip)-f(xin)||1为正样本与负样本之间的距离,||f(xia)-f(xip)||1为正样本与锚定图片之间的距离,||f(xia)-f(xin)||1为负样本与锚定图片之间的距离,||f(xin)-f(xil)||1为负样本与另一个同类型负样本之间的距离,a为设定参数,用于增加损失值的收敛难度,可设置a大于或等于0.5,以免训练初期损失值过小导致中断训练,a具体可以为1。λ为用于控制正则项限制程度的设定参数,范围可以是0至1,具体可以是0.2,由于λ为用于控制正则项限制程度的设定参数,是一个辅助的损失项,故取值不宜过大。
关于人脸识别模型的训练,可以包括2个以上训练阶段,各个训练阶段使用的损失函数可以不相同,具体地,可以先获取与训练阶段数相同的损失函数,并对这些损失函数的训练速度进行从快到慢的排序,可以参考经验训练速度进行排序,然后各个训练阶段按照该排序来选择损失函数,随着训练阶段的推移,使用收敛速度越慢的损失函数。如此,可以提高收敛精度,训练出更好的人脸识别模型,总体收敛速度也不会过慢。
本发明实施例可以提供4个损失函数,其中,第一Triplet损失函数为:
第二Triplet损失函数为:
第三Triplet损失函数为:
或者,第三Triplet损失函数为:
所述第四Triplet损失函数为:
或者,所述第四Triplet损失函数为:
第一至第四Triplet损失函数中各个参数的具体限定参见前述实施例,不再赘述。其他实施例中,本发明实施例还可以包括softmax(归一化指数)损失函数等。
进一步地,以下实施例分别描述了人脸识别模型的训练过程分为2个阶段、3个阶段和4个阶段的情形。
在其中一个实施例中,人脸识别模型可以包括2个训练阶段,在第一阶段利用第二Triplet损失函数进行训练,在第二阶段利用第一Triplet损失函数进行训练。或者,在第一阶段利用第四Triplet损失函数进行训练,在第二阶段利用第三Triplet损失函数进行训练。或者,在第一阶段利用第二Triplet损失函数或第一Triplet损失函数进行训练,在第二阶段利用第三Triplet损失函数进行训练。或者,在第一阶段利用第二Triplet损失函数或第一Triplet损失函数进行训练,在第二阶段利用第四Triplet损失函数进行训练。因为第二Triplet损失函数采用一范数求距离,第一Triplet损失函数是利用二范数求距离,因此第一Triplet损失函数的训练速度会慢些,因此,可以先利用第二Triplet损失函数对人脸识别模型进行第一阶段的训练,然后利用第一Triplet损失函数进行第二阶段的训练。同理,第三Triplet损失函数收敛速度比第四Triplet损失函数收敛速度慢。因为第三和四Triplet损失函数因为比第一Triplet损失函数和第二Triplet损失函数多了一个损失项,其训练速度一般来说会比第一Triplet损失函数和第二Triplet损失函数要慢些。
在其中一个实施例中,人脸识别模型可以包括3个训练阶段,在第一阶段利用第二Triplet损失函数进行训练,在第二阶段利用第一Triplet损失函数进行训练,在第三阶段利用第三Triplet损失函数进行训练。或者,在第一阶段利用第二Triplet损失函数进行训练,在第二阶段利用第一Triplet损失函数进行训练,在第三阶段利用第四Triplet损失函数进行训练。
在其中一个实施例中,人脸识别模型可以包括4个训练阶段,在第一阶段利用第二Triplet损失函数进行训练,在第二阶段利用第一Triplet损失函数进行训练,在第三阶段利用第四Triplet损失函数进行训练,在第四阶段利用第三Triplet损失函数进行训练。
具体地,所述利用第二Triplet损失函数进行训练,是训练至第一Triplet损失函数收敛至最小值。具体地,所述利用第一Triplet损失函数进行训练,是训练至第一Triplet损失函数收敛至最小值。具体地,所述利用第三Triplet损失函数进行训练,是训练至第三Triplet损失函数收敛至最小值。具体地,所述利用第四Triplet损失函数进行训练,是训练至第四Triplet损失函数收敛至最小值。
具体地,所述利用损失函数对所述人脸识别模型进行至少一个阶段的训练的过程中,还包括提供验证人脸样本库,利用人脸识别模型的提取验证人脸特征,验证人脸识别模型的准确性。然后,利用第一Triplet损失函数进行训练,是在设定的第一迭代次数内训练至验证准确率不再升高时为止。同理,利用第二Triplet损失函数进行训练,是在设定的第二迭代次数内训练至验证准确率不再升高时为止。同理,利用第三Triplet损失函数进行训练,是在设定的第三迭代次数内训练至验证准确率不再升高时为止。同理,利用第四Triplet损失函数进行训练,是在设定的第四迭代次数内训练至验证准确率不再升高时为止。
需要说明的是,训练速度越慢的Triplet损失函数,迭代次数可以设置为越低。第一至第四Triplet损失函数中,训练速度的从快到慢的顺序为第二Triplet损失函数、第一Triplet损失函数、第四Triplet损失函数、第三Triplet损失函数,那么,第一迭代次数至第四迭代次数从低到高的顺序为,第三迭代次数、第四迭代次数、第二迭代次数、第一迭代次数。在人脸识别模型训练分多个阶段时,前训练阶段采用收敛速度较快的Triplet损失函数,后训练阶段采用收敛速度较慢的Triplet损失函数,设置后训练阶段迭代次数小于前训练阶段,可以一定程度减小后训练阶段的训练压力。其他实施例中,迭代次数的大小排序也可以不做限定。
步骤106:根据所述人脸识别模型,抽取目标人脸图像的特征,作为目标人脸的人脸特征保存至数据库中。
对于人脸识别模型为深度卷积神经网络模型的情形,抽取特征可以从全连接层抽取,也可以是从卷积层抽取。
步骤108:将采集的人脸图像输入所述人脸识别模型,获取采集的人脸图像的特征,计算与保存的目标人脸特征的相似度,输出人脸识别结果。
本发明实施例中的人脸识别方法,可以应用至人脸解锁系统,例如基于人脸识别的门禁系统,还可以应用至桌面点名系统等等,此处不做限定。步骤108中,输出人脸识别结果之后,包括根据人脸识别结果输出控制指令的步骤,若采集的人脸图像与目标人脸图像匹配,进行点名;例如采集的A用户人脸与保存的A用户目标人脸匹配,说明A用户出勤了,完成对A用户的点名。具体地,桌面点名系统包括处理器、摄像头和显示器,处理器内置本发明实施例中训练得到的人脸识别模型。或者,输出人脸识别结果之后,若采集的人脸图像与目标人脸图像匹配,发出解锁指令。
桌面点名系统可以用于学校学生出勤点名,提供的样本库包括不同年龄段的样本库,在模型应用阶段,可根据检测人群的年龄选用相应的人脸识别模型进行人脸识别,可以提高人脸识别的正确率。在其中一个实施例中,提供的样本库包括第一样本库、第二样本库、第三样本库、第四样本库和第五样本库,其中,第一样本库中年龄范围在3至6岁的人脸占比大于预设值,利用所述第一样本库训练出来的人脸识别模型作为第一人脸识别模型;第二样本库中年龄范围在7至12岁的人脸占比大于预设值,利用所述第二样本库训练出来的人脸识别模型作为第二人脸识别模型;第三样本库中年龄范围在13至15岁的人脸占比大于预设值,利用所述第三样本库训练出来的人脸识别模型作为第三人脸识别模型;第四样本库中年龄范围在16至18岁的人脸占比大于预设值,利用所述第四样本库训练出来的人脸识别模型作为第四人脸识别模型;第五样本库中年龄范围在18至28岁的人脸占比大于预设值,利用所述第五样本库训练出来的人脸识别模型作为第五人脸识别模型;预设值可以是80%。得到训练的人脸识别模型后,检测学校学生的年龄阶层,根据学校学生的年龄阶层选择相应的人脸识别模型,然后进行后续的人脸识别。
其他实施例中,样本库也可以采用标准样本库,可以利用标准样本库训练出一通用人脸识别模型,然后利用该通用人脸识别模型进行人脸识别。
本发明实施例中的人脸识别方法,解决传统triplet函数在收敛过程中速度较慢,收敛不够平滑的问题。引入正样本与负样本之间的距离作为损失项,当负样本远离锚定图片时,正样本与负样本的距离也被考虑,这使得负样本是远离正样本和锚定图片这一整体,即让负样本远离正样本簇中心的位置。如此,在收敛过程中,既能确保锚定图片与正样本被拉近时越来越接近正样本的簇中心,让负样本远离正样本的簇中心,同时还可以减少收敛线路的曲折,从而让损失更快更平滑的减小,因此,可以提高损失函数的收敛速度,进而提高人脸识别模型的训练速度。因为减少了收敛线路的曲折,故如限定了训练时间,也能有利于提高训练模型在限定时间下能达到的精度。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图4为本发明一个实施例中的人脸识别装置的结构示意图。如图4所示,该装置300包括:
人脸识别模型建立模块310,用于建立人脸识别模型;
人脸识别模型训练模块320,用于从提供的样本库中选择锚定图片、与锚定图片同类型的正样本以及与锚定图片不同类型的负样本,利用损失函数对所述人脸识别模型进行至少一个阶段的训练直至误差收敛,所述损失函数至少包括第一Triplet损失函数,所述第一Triplet损失函数中的损失项包括正负样本之间的距离、正样本与锚定图片之间的距离以及负样本与锚定图片之间的距离;
人脸特征保存模块330,用于根据所述人脸识别模型,从抽取目标人脸图像的特征向量,作为目标人脸的人脸特征保存至数据库中;
比对模块340,用于将采集的人脸图像输入所述人脸识别模型,获取采集的人脸图像的特征向量,计算与保存的人脸特征的相似度,输出人脸识别结果。
上述人脸识别装置中各个模块的划分仅用于举例说明,在其他实施例中,可将人脸识别装置按照需要划分为不同的模块,以完成上述人脸识别装置的全部或部分功能。
关于人脸识别装置的具体限定可以参见上文中对于人脸识别方法的限定,在此不再赘述。上述人脸识别装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
本申请实施例还提供了一种计算机可读存储介质。一个或多个包含计算机可执行指令的非易失性计算机可读存储介质,当所述计算机可执行指令被一个或多个处理器执行时,使得所述处理器执行本发明实施例中人脸识别方法的步骤。
一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行本发明实施例中的人脸识别方法。
本申请实施例还提供了一种人脸识别设备。该人脸识别设备可以为包括台式电脑、手机、平板电脑、PDA(PersonalDigitalAssistant,个人数字助理)等的任意终端设备。请参阅图5,该人脸识别设备400包括处理器410及存储器420,该电子设备400所包括的处理器410执行存储在存储器420上的计算机程序时实现如上任一实施例中的人脸识别方法的步骤。具体地,人脸识别设备400还包括显示器和摄像头,均与处理器410连接。
本申请所使用的对存储器、存储、数据库或其它介质的任何引用可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM),它用作外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。