掌桥专利:专业的专利平台
掌桥专利
首页

一种基于深度学习的多状态人脸识别方法

文献发布时间:2023-06-19 11:32:36


一种基于深度学习的多状态人脸识别方法

技术领域

本发明属于图像识别技术领域,具体涉及一种基于深度学习的多状态人脸识别方法。

背景技术

人脸识别作为一项十分重要的技术,应用于我们生活的许多方面,但是很多方式还是较为传统,在识别效果和识别率上已经逐渐无法满足人们的需求。随着深度学习日益升温,而其又在人脸识别领域大放异彩,毫无疑问,基于深度学习的人脸识别将会在人脸识别领域引起新一轮的技术革命。

在基于深度学习的人脸识别技术中,最重要的为人脸数据集、卷积神经网络以及损失函数三个部分。其中,Softmax损失函数为常用的损失函数,Softmax损失函数是逻辑函数的泛化,它能将二分类推广到多分类,能将多分类函数以概率的形式展现出来,不仅降低了训练难度,而且能让多分类问题更容易收敛。但是Softmax不要求类内与类间的距离,存在区分不明显的问题,从而使最终的识别结果准确性较差。

综上所述,如何使人脸识别中区分更加明显,进而提高识别结果准确性,成为了本领域人员急需解决的问题。

发明内容

针对现有技术中存在的上述不足,本发明实际解决的问题是:使人脸识别中区分更加明显,进而提高识别结果准确性。

为解决上述技术问题,本发明采用了如下的技术方案:

一种基于深度学习的多状态人脸识别方法,包括:

S1、获取训练集;

S2、将训练集输入神经网络,完成对神经网络的训练,训练神经网络的损失函数

S3、获取待识别图像;

S4、将待识别图像输入训练后的神经网络,得到识别结果。

优选地,步骤S1包括:

S1、获取获取原始数据集;

S2、利用镜像、缩放、对比度变换、灰度变换、生成式对抗网络中的任意一种或多种对原始数据集进行数据增强,得到训练集。

优选地,所述神经网络为Inception-ResNet-v2。

优选地,所述神经网络中进行特征对比之前,利用L2范数归一化对特征数据进行归一化处理。

综上所述,本发明与现有技术相比具有以下技术效果:

(1)使用中心损失+softmax交叉熵损失作为总损失函数,可以明显加快模型收敛速度。中心损失虽然不直接对距离进行优化,但它能够保留之前的分类模型,并为每个分类指定一个类别中心。这使得提取到的同类图像特征都靠经类别中心,不同类的就会尽量远离,使人脸识别中区分更加明显,进而提高识别结果准确性。

(2)对获取的原始数据集进行了数据增强,从而得到训练集,能够得到更多的训练样本,从而达到更好的训练效果。

(3)本发明中,采用Inception-ResNet-v2神经网络,其识别准确率更高。

(4)选择L2范数归一化对特征数据进行归一化处理,更适用于Inception-ResNet-v2神经网络。

附图说明

图1为本发明公开的一种基于深度学习的多状态人脸识别方法的一种具体实施方式的流程图;

图2为镜像、缩放、对比度变换、灰度变换的示意图;

图3为GAN算法流程图;

图4为卷积过程示意图;

图5为平均池化层示意图;

图6为实验中两张图片的特征距离;

图7为实验中使用不同m值下的准确率的对比图;

图8为实验中使用不同损失函数的识别准确率的对比图。

具体实施方式

下面结合附图对本发明作进一步的详细说明。

如图1所示,本发明公开了一种基于深度学习的多状态人脸识别方法,包括:

S1、获取训练集;

S2、将训练集输入神经网络,完成对神经网络的训练,训练神经网络的损失函数

S3、获取待识别图像;

S4、将待识别图像输入训练后的神经网络,得到识别结果。

Softmax是逻辑函数的泛化,它能将二分类推广到多分类,能将多分类函数以概率的形式展现出来。在CNN分类中,有ground truth(监督训练的训练集的分类的准确性)是以热独编码(one-hot)的状态存在,那么理想的输出形式应该也是one-hot的形式。由于网络输出的幅值差别很大,所以就需要Softmax将输出值映射到区间[0,1]之中,相当于输出了每类的概率。Softmax以这样类似于one-hot的输出方式,不仅降低了训练难度,而且能让多分类问题更容易收敛。但是Softmax不要求类内与类间的距离区分不明显,用于人脸识别时,准确率较低。因此,本发明使用中心损失+softmax交叉熵损失作为总损失函数,可以明显加快模型收敛速度。中心损失虽然不直接对距离进行优化,但它能够保留之前的分类模型,并为每个分类指定一个类别中心。这使得提取到的同类图像特征都靠经类别中心,不同类的就会尽量远离,使人脸识别中区分更加明显,进而提高识别结果准确性。

具体实施时,步骤S1包括:

S1、获取获取原始数据集;

S2、利用镜像、缩放、对比度变换、灰度变换、生成式对抗网络中的任意一种或多种对原始数据集进行数据增强,得到训练集。

为了达到更好的训练效果,我们可以对人脸数据进行增强。这里可以利用各种基本的变换方法,或者生成一些新的数据。常用的方法有镜像,缩放以及对比度变换等。由于生成对抗网络(GAN)在合成图像方面的强大能力,也可以用GAN来生成一些真假难辨的图像,以此扩充样本数据的多样性。如图2及图3所示,分别为采用镜像、缩放、对比度变换、灰度变换,以及采用生成式对抗网络进行数据增强的示意图。

此外,在训练以及识别的过程中,对于图片还可以先进行人脸对齐操作,人脸对齐可直接采用开源的“多任务级联卷积网络”(Multi-task Cascaded ConvolutionalNetworks,简称MTCNN),它的精度非常的高。它能够检测各种复杂情况下的人脸信息,并完成人脸对齐任务;而且它的速度非常快,能够实时对齐。首先输入一张图片,通过不同的比例,对图片进行缩放。其次,用P-Net获取人脸窗口和边界框的回归向量,并用获得的回归向量对候选样本进行校准;接下来,R-Net将去除P-Net生成的错误候选框,并微调候选框,以及去除重叠框;最后在O-Net的处理下进一步去除重叠框,并标示出眼睛、嘴角、鼻尖这五个关键点。

具体实施时,所述神经网络为Inception-ResNet-v2。

如表1所示,Inception-ResNet-v2的识别率更高,因此,本发明中选择Inception-ResNet-v2作为神经网络。

表1

该网络的输入为160x160x3,它表示输入图片分辨率为160x160,3为红绿蓝三通道(RGB)。接着进入Stem模组,首先会经过3次卷积,卷积过程如图4所示,为了方便表示,这里选用5x5x3的方格来做简单的示意图。

如图所示5x5方格中的数字就代表图片该像素点的值,其取值范围为0-255。这里使用随机的3x3的卷积核对它进行卷积操作,因为输入为3通道,因此卷积核也应该为3。卷积核依次对5x5输入上的3x3区域进行卷积,即表格中对应的数值相乘,然后得到27个数值,将这27个数值相加就得到卷积后的结果。这里的步长(Stride)设置为1表示每次移动一格的距离,由于只有一个卷积核,最终的结果为4x4x1,这就是提取到的特征。

然后进入分支,分别进行卷积和最大池化,最大池化层的作用就是取最大值。接下来将两个分支进行堆叠,然后又进入分支,分别执行2个和4个卷积操作。之后再一次对分支进行堆叠;接下来又进入分支,分别执行卷积和最大池化操作,最后将分支结果叠加在一起。

下一步输入到Inception-resnet-A模组,对函数进行激活。该网络的输入为ReLU激活函数(Rectified Liner Units),它的作用是取最大值。引入该激活函数能使输出和输入呈非线性,这样便能训练深度神经网络。最大值输入后会产生4个分支,其中三个分支分别进行1次、2次、以及3次的卷积,最终三者汇集到一处,再进行一次卷积。之后与未作任何操作的分支进行相加,得到新的ReLU激活函数。

接下来进入到Reduction-A模组,首先叠加之前的输出作为输入,再分别给三个分支,分别进行一次最大池化,一次卷积和三次卷积,最后再将结果叠加起来。

后面的三个模组跟前面的类似,通过这三个模组进一步提取特征,并不断更新激活函数。然后进入到全局平均池化层,这一层的作用是在之前所获得的特征图中分块取平均值。在基于深度学习的人脸识别中,采用的是卷积神经网络来提取人脸的特征,因此,特征提取层在人脸识别中起着至关重要的作用。

如图5所示,在卷积神经网络诞生的初期,卷积层通过最大池化层,后面还需要连接多个全连接层,最后通过softmax进行分类。这样会使得全连接层参数过多,最终导致模型变得很大很臃肿。

后来,有研究者提出用全局平均池化层来代替全连接层的方法。后来经过证明,这一方法的效果非常好,它能够减少特征图谱的维度,接着输入到softmax,又不会造成过拟合,最重要的是它极大的减少了网络参数量。

平均池化完后来到辍学模组(Dropout),由于模型的参数太多或者训练的样本不够,训练的模型就会比较容易出现过拟合。这里的参数.是指经过Dropout模组后,20%的神经元将会被置为0。当模型没有Dropout时,前面的神经网络一般会得到多个不同的输出,通常会采用“取平均值”的方法来确定最终的结果。这样一来,就算有部分的神经元输出了错误的结果,也可以通过取平均值来减弱错误结果带来的影响。换句话说,如果错误的数值有的偏大,有的偏小,那么通过平均得到的结果就可能很接近正确值。而Dropout的作用就是随机停止一些隐藏神经元,这样一来,网络的结构就会改变。所以就产生了很多种不同的网络,然后对不同网络所产生的结果取平均值,也就会产生很多不同的拟合。相反的拟合就能够互相抵消,就进一步减少了过拟合。

除此之外,Dropout还能减少神经元之间的共同作用。Dropout停止了一些神经元的工作,这样就会使一些神经元不是总能同时出现,这就减弱了一些神经元的依赖效果。相当于减少了某些神经元需要同时出现,共同作用才能生成的结果。这也使得神经网络学到的特征更具有鲁棒性(鲁棒是指在异常和危险情况下系统的生存能力,这里减弱了神经元的依赖性,使得神经网络在丢失一些片段时,它仍能够从其他的片段中获得一些共同的特征)。

最后来到Softmax函数模组,它对网络起到调整作用,然后能够减少过拟合。

具体实施时,所述神经网络中进行特征对比之前,利用L2范数归一化对特征数据进行归一化处理。

归一化能将不同的数据转换到同一标准上,从而进行比较和加权。处理方法之一是“去除单位”,该方法能使得数据能够转化成纯数值,这样就不用考虑单位不同所带来的不便之处。此外,还有数据同趋化的处理方法,它能够处理不同性质的数据,使得它们的指标对评测方案的作用力同趋化,使其能够得到正确的综合结果。

由于本发明使用的是Inception系列网络,最后会采用欧式距离或余弦相似度来进行距离对特征进行对比,所以L2范数归一化是最好的选择。该方法定义为向量中的每一个数据除以向量的L2范数,向量(x

要使x归一化到L2范数,需要建立一个从x到x′的映射,使得x′的L2范数为1,即:

即:

为了验证本发明公开的基于深度学习的多状态人脸识别方法的效果,进行了如下实验:

1参数选择

为了保证一些参数选择的准确性,所以这里根据FaceNet官方测试结果选择参数。

(1)不同像素大小的图片对识别准确率的影响

表2不同像素下的识别准确率

从表2中可以看出,图像的像素对模型的准确率影响较小。总的来说,图片质量越高,识别率也会相应的提升,但是越高的图片质量将导致计算量增大,使得计算机的负荷加重,同时也需要更长的训练时间。综合考虑,选择25600像素即160x160像素的图片。

(2)不同的特征维度下的识别准确率

表3不同特征维度下的识别准确率

从表3中可以看出,当特征维度为128时,得到的识别率最高,因此本次选择128维。

(3)不同权重衰减下的识别准确率

表4不同权重衰减下的识别准确率

在训练神经网络时,通常会用到权重衰减,在每次更新结果时,权重衰减会乘以略小于1的因子,以此来防止权重变得过大。根据表中结果显示,5e-4的效果最好,那么就选择5e-4(5x10-4)作为权重衰减值。

2训练人脸识别模型

首先我们需要训练人脸识别模型,为了快速得到神经网络结构,本次使用了FaceNet模型(该模型由谷歌工程师提出,可用于人脸识别、人脸聚类和人脸验证)作为基础。里面包含了本次需要使用的Inception-ResNet-v2网络,还包含了两种损失函数,“三组元损失”和“中心损失+Softmax交叉熵损失”。训练的数据集为“中科院自动化研究所网络人脸图像”(CASIA-Webface该数据集由中科院课题组整理发布,这里采用经过清洗后的图像数据集,包含10575个人的共455594张人脸图像,每人有几十到几百张图像不等)。

训练过程第一步,使用MTCNN对CASIA-Webface数据集进行人脸对齐,并剪裁缩放到160x160分辨率。第二步将对齐后的数据集送入神经网络进行训练,特征维度选择128维,权重衰减选择5e-4。使用“中心损失+Softmax交叉熵”损失来衡量训练模型,最终得到一个训练好的人脸识别模型。

3评估训练模型的准确率

评估准确率使用数据集“自然界中带标签的人脸图像”(Labled Faces in theWild,简称LFW。包含5749人的共13233张图片,其中1680人包含了两张及以上的人脸图像,绝大部分人只有一张图像。它被广泛应用于评价人脸识别算法的准确性)。

评估的大致原理为:从LFW数据集中随机选择6000对人脸,其中3000对为同一个人的2张人脸图像,另外3000对为不同的两个人的各1张人脸图像。每次给出一对图片,并询问系统两张图像是否为同一个人,系统给出“是”或“否”,测试完6000对人脸后,将测试的结果与真实结果做对比,最终得出人脸识别的准确率。其在不同设置下的准确率如表5。

表5不同设置下的识别准确率

由表5中可以看出,采用余弦作为距离度量,并对图像进行翻转、减去均值、标准化操作,能够使得验证的准确率最高。

4判断两张图片是否为同一人

首先准备两张图片,然后使用MTCNN对它们进行对齐,得到头部的图像。之后使用已经训练好的模型对两张图片进行特征提取,并得到特征向量。用两个特征向量进行对比,得到特征距离。被测图片和结果如图6所示。

可以看出,距离值为0.9626,一般数值在1以内就可以判断两张图片中的人为同一个人。

5验证损失函数的性能

人脸对齐:使用CASIA-Webface作为训练集。采用MTCNN算法对待处理的数据进行人脸检测和对齐,对检测到的人脸特征做仿射变换,之后做归一化处理,最后输出160x160大小的图片。

训练模型:本次使用的网络为Inception-ResNet-v2,使用随机剪裁和随机翻转,权重衰减设置为5e-4。一批数据(Batch Size,使用训练集中的一小部分样本对模型权重进行一次反向传播的参数更新)设置为100,一代训练(epoch,使用训练集全部数据对模型进行一次完整的训练)设置为150,特征维度设置为128,超参数S设置为30。

测试:使用LFW数据集作为测试集,使用Cosine作为距离度量,对测试集进行翻转、减去均值、以及标准化操作。

设置m:由于参数m在损失函数中起到至关重要的作用,为了找出最佳m值,取m在0到1之间变化。最终得到的结果如图7所示。

当m为0.6时,识别准确率达到最大值,因此固定m=0.6。

由图8可以看出来,NA-Softmax损失函数的准确率高于其他函数,这也证实了改进函数的方法起到了一定的作用。

6人脸数据增强验证

6.1增强设置

(1)图像变换的增强中,主要采用镜像、缩放、对比度变换、灰度变换这几种方法。这里选择在训练的过程中对图片进行操作,即对输入的图片进行变换,然后输入到网络中进行训练。由于有四种方法,这里采用随机对图片执行上述变换操作,每种操作的概率为0.25。

(2)在GAN的人脸属性数据增强中,由于会生成大量的图片,所以我们使用较小的CelebA训练集,经过GAN后生成新的数据集。在生成的时候,可以选择生成的效果,比如改变头发的颜色,性别,年龄,有无眼镜,以及改变面部表情,如高兴、悲伤、愤怒等。

6.2验证识别准确率

该步骤仍然采用与之前相同的设置,然后用MTCNN算法对待处理的数据进行人脸检测和对齐,对检测到的人脸特征做仿射变换,之后做归一化处理,最后输出160x160大小的图片。之后用这些处理过的图片进行训练,最终得到训练模型。最后用LFW数据集测试,得到识别准确率。结果如表6所示。

表6不同数据增强下的识别率

根据表中的结果显示,三种数据增强的方式对识别率起到了一定的提升,其中CelebA图像变换增强+CelebA GAN增强的提升最大,但是总的效果还是比较微弱的。

7验证最高识别准确率

从表6可以看出,虽然使用CelebA图像变换增强+CelebA GAN增强的方式对识别准确率有所提升。但整体准确率还是比直接使用CASIA-Webface训练的模型的准确率要低一些。因此这里做一个最终的实验,使用前面所述的两种方式对CASIA-Webface数据集进行增强,其他的参数设置跟之前的一样。仍然按照之前的流程训练模型,最后在LFW数据集上进行验证。

最终的Accurary(准确率)达到了99.55%,这不仅得到了最高的识别准确率,也再一次验证了改进方法的有效性。

以上仅是本发明优选的实施方式,需指出是,对于本领域技术人员在不脱离本技术方案的前提下,还可以作出若干变形和改进,上述变形和改进的技术方案应同样视为落入本申请要求保护的范围。

相关技术
  • 一种基于深度学习的多状态人脸识别方法
  • 一种基于深度学习的人脸状态识别方法及其装置
技术分类

06120112965080