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

一种基于深度残差网络的人脸识别身份认证方法

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


一种基于深度残差网络的人脸识别身份认证方法

技术领域

本发明涉及身份认证中的隐私保护技术领域,尤其涉及一种基于深度残差网络的人脸识别身份认证方法。

背景技术

得益于计算机和网络技术的日新月异的发展,各种高新技术在不断改变我们生活方式的同时,也带来了一些难以避免的问题,身处这样一个大数据时代,每个人记忆中都一定随时记得至少三四个密码,如银行卡、电子邮箱、各种网站登录、网上银行和手机密码等,在觉得繁琐的同时,我们也会产生焦虑,比如在银行ATM办理业务输入密码时,总担心是否会泄露个人信息及密码,因而人们会希望出现一种新的拥有更高安全性且更加便捷的操作方式的认证方法来代替这种传统的认证方式。随着微电子和通信技术的发展,人脸识别技术是图像分析中最成功的应用,近年来发展得越来越成熟,在实际应用中取得了巨大的成果。使用人脸识别技术进行身份验证,具有安全、可靠、快速的特点,易于配合电脑与安全、监控、管理系统连接,实行信息化管理,逐渐成为取代传统识别方式的重要身份验证手段。近年来,人脸识别技术在图片处理、模式识别、计算机视觉、认知科学和人工神经网络等领域成为热点研究课题。人脸识别技术,指的是在给定某个场景的包含人脸的静态图像或动态视频的情况下,使用存储着若干已知身份的人脸图像的数据库来鉴别和验证该场景中的单个或多个人的身份的技术。

近年来,人脸识别的相关研究方向都取得了很大的进展,其中,深度学习+大数据(海量的有标注人脸数据)逐渐成为了人脸识别领域的主流技术路线,各种深度更深、识别能力更强的神经网络纷纷浮出水面。深度学习的一个重要研究方向就是设计各种神经网络。人脸识别技术按照不同的任务需求大致分为人脸检测、人脸对齐和人脸识别这三个步骤。人脸检测(Face Detection)是检测出图片中是否包含人脸以及人脸在图像中的位置的一种技术。人脸检测算法输入一张图片进行人脸检测,然后会输出描述人脸在图片中位置的人脸框坐标(可能是0个或1个或多个人脸框)。人脸检测算法输出的人脸坐标框一般是一个正朝上的正方形,或者也有可能是一个正朝上或者带旋转方向的矩形。目前,人脸检测算法大多是包括一个“扫描”和“判断”的过程,算法的大体思想是通过扫描一张图片,产生多个候选区,再判断各个候选区是否是人脸,最后筛选出最佳的人脸候选区。人脸对齐(FaceAlignment)是定位出人脸五官关键点在图片上的坐标的一种技术。人脸对齐算法输入一张人脸图片,输出的是人脸五官关键点的坐标序列。在进行人脸对齐时,会预先设定好五官关键点的数量,常见的有5点、68点和90点等等的人脸对齐。目前,使用各种深度学习框架,实现了很多人脸对齐技术,取得了很好的匹配效果,这些技术一般都是基于人脸检测的坐标框,按照一些预先设定好的规则将人脸区域从图片中识别出来,然后缩放到一定的尺寸,最后进行关键点位置的计算。人脸识别(Face Recognition)是通过神经网络或其他方法提取人脸的特征值,然后比对特征值,来判断两个人脸图片是否代表同一个人,或者通过和注册在库中N个身份对应的特征进行逐个比对,找出一个与输入特征相似度较高的特征,从而识别该图片的身份。

现有的人脸识别技术已在各类身份认证系统中得到广泛应用,主要是通过与数据库中信息进行在线对比来判别是否是同一人及身份的真伪,其缺点在于,一方面系统中存储人脸特征的数据库有泄露或被盗用的风险,信息安全不能保证;另一方面由于现有人脸识别身份认证技术对计算、存储资源的需求,不适合大规模的运算,因此基于深度学习的人脸识别技术在移动端的应用还不够成熟。

发明内容

针对现有技术存在的不足,本发明提出了一种基于深度残差网络的人脸识别身份认证方法,应用于安全身份信息智能平台,利用深度学习技术实现移动终端的人脸识别。

本发明所采取的技术方案是:

一种基于深度残差网络的人脸识别身份认证方法,包括以下步骤:

步骤1:人脸数据收集与处理;

步骤1.1:收集人脸图片并按照人名进行分类,并分别保存到不同的文件夹,以此来创建人脸身份识别的数据集;

步骤1.2:利用人脸检测MTCNN算法的多任务级联卷积神经网络进行人脸检测,提取出图片中的人脸部分;经过人脸检测MTCNN算法检测并筛选到人脸图片框,再将图片的尺寸进行统一,得到处理后的数据集,总共产生两个训练集和一个测试集;

步骤1.2.1:利用P-Net获取候选窗口和边界回归向量,同时,候选窗口根据边界框进行校准,利用非极大化抑制(NMS)方法去除重叠的窗体,在原图像上截取出P-Net所确定的图像片段,并将其尺寸进行统一;

步骤1.2.2:将经过P-Net确定的包含候选窗体的图片在R-Net网络中选用全连接的方式进行训练,进行细化处理;利用边界框向量微调候选窗口,再利用非极大值抑制算法去剔除重叠窗口;

步骤1.2.3:用全连接的方式进行训练对O-Net网络进行训练,进行细化处理,利用边界框向量微调候选窗口,再利用非极大值抑制算法去剔除重叠窗口,同时标定人脸关键点位置;

步骤2:构建深度残差网络模型Inception-ResNet-v1网络模型和Mobile-ResNet网络模型,提取人脸特征值;

步骤2.1:构建Inception-ResNet-v1网络模型;将Inception网络与残差网络结合,在Inception模块上加入一个恒等映射;

步骤2.1.1:在TensorFlow的计算图中分别运用slim.conv2d、tf.nn.relu6构建卷积层和ReLU6激活函数,然后构建Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C这三个模块;所构建的这三个模块是Inception-ResNet-v1网络模型的主体部分,其中,ReLU6激活函数的函数表达式如下,

这三个模块均使用1×1卷积降低特征层通道数,经过中间卷积层后,再次使用1×1卷积升高特征层通道数,使每个模块的输入和输出特征层通道数相等;

步骤2.1.2:使用Stem、Reduction-A和Reduction-B这三个模块逐步增大特征层通道数,同时缩小特征图的尺寸,以承接Inception-ResNet-A、B、C这三个模块;

步骤2.1.3:用slim.avg_pool2d和slim.fully_connected构造出Inception-ResNet-v1网络模型的均值池化层和全连接层,即构建出网络的基本结构;

步骤2.1.4:通过slim.BatchNorm模块,在所有的卷积层和全连接层后加入批规范化层(BatchNorm),提高模型精度。

步骤2.1.5:使用TensorFlow提供的slim.l2_regularizer模块对网络各层进行L2正则化,对卷积层和全连接层进行L2正则化,提高模型的泛化能力。

步骤2.1.6:使用slim.dropout模块在TensorFlow的计算图中添加dropout层,防止深度神经网络的过拟合现象,并同时提高模型在测试集的验证精度;

步骤2.2:构建Mobile-ResNet网络模型;该网络模型利用depthwise_separable_ResNet模块代替MobileNet的深度可分离卷积模块(depthwise_separable_convolution);

步骤2.2.1:构建MobileNet网络;

所述的MobileNet网络是由depthwise_separable_convolution模块按照逐渐增大特征层通道数、同时逐渐缩小特征图尺寸的方式堆叠而成,最终将每个特征图缩小为一个点;

步骤2.2.2:给MobileNet的深度可分离卷积模块(depthwise_separable_convolution)加入一个残差网络的恒等映射,形成depthwise_separable_ResNet模块;

步骤2.2.3:使用步骤2.2.1中的堆叠方式,构建Mobile-ResNet网络模型;加深网络模型的层数,加大输出维数,使用步骤2.2.2中形成的depthwise_separable_ResNet模块代替原本的depthwise_separable_convolution模块;

步骤3:选择损失函数与计算准确率;

步骤3.1:选择输出维度低的Tripletloss损失函数与Centerloss损失函数进行人脸特征值压缩,通过训练,对Tripletloss损失函数的间隔值Margin,Centerloss损失函数α和γ这两个参数进行调节;

步骤3.2:使用欧氏距离作为评估距离大小的方法,通过LFW数据集,来判断两张人脸图片是否属于同一个人,进而根据判断结果计算准确率;

步骤3.2.1:LFW数据集中包含训练集、测试集和验证集,将测试集图片分别输入Inception-ResNet-v1网络模型和Mobile-ResNet网络模型,经过深度神经网络提取出一个特征值,对特征值进行归一化,使特征值映射到[-1,1]之间的欧氏空间,归一化公式如下:

其中,x

计算两张人脸图片的欧氏距离dist,以该欧氏距离的平方作为两张图片的人脸距离(Face Distance),

步骤3.2.2:设定一个阈值数组threshold作为判断阈值,将数组threshold内的值依次取出,求出每个threshold值在LFW验证集上的准确率,找出准确率最高的threshold值作为best_threshold;使用插值函数预测散点的趋势,求出更加精确的阈值best_threshold,以最终的best_threshold值作为判断两个特征向量是否代表同一个人的分界线。

所述散点为,以threshold值为横坐标、准确率为纵坐标得到的一系列散点;

步骤3.2.3:按照步骤3.2.1所述的计算欧氏距离的方法,计算出每一对图片的人脸距离,然后与设定阈值进行比较,如果计算得到的人脸距离大于设定阈值,则可预测两张图片属于不同人的人脸,否则就可预测两张图片属于同一人的人脸;

如果预测结果与实际相同则代表预测成功,否则代表预测失败,预测成功的人脸对数除以总共实验的人脸对数就是当前测试的网络模型的识别准确率;

步骤4:调节损失函数参数;选定Inception-ResNet-v1网络模型作为训练网络,选定RMSprop优化器作为训练的优化器,然后调节损失函数的参数,并进行对比训练;通过训练,对Tripletloss损失函数参数Margin以及节Centerloss损失函数参数α和λ进行调节。

步骤5:对深度残差网络模型进行训练;

步骤5.1:在LFW训练集中挑选图片batch,生成输入队列,对输入前的图片进行随机裁剪和随机翻转;

步骤5.2:构建Inception-ResNet-v1网络模型,向该网络模型输入数据并进行神经网络权值的初始化;输入队列按batch给Inception-ResNet-v1网络模型输入数据,并使用tf.truncated_normal_initializer从截断的正态分布中输出随机值来为神经网络权值进行初始化;

步骤5.3:构建Centerloss损失函数,通过神经网络的输出计算损失Loss值;

步骤5.4:设置学习率learning_rate,选择优化算法,根据损失值计算梯度更新网络权值进行网络训练;

步骤5.5:实现评估算法;每经过一定数量的迭代,就通过LFW数据集来计算一次Inception-ResNet-v1网络模型的准确率,并找到判断阈值;

步骤6:基于实际人脸识别对系统模型进行简化;

步骤6.1:改进判定阈值,利用LFW数据集作为验证集,选择不同的误识率,来验证Inception-ResNet-v1网络模型和Mobile-ResNet网络模型的准确率和拒识率;

步骤6.2:对特征值进行压缩;

步骤6.3:缩小网络模型容量,保证准确率不降低的前提下,减少模型所占容量。

步骤7:利用人脸识别身份认证系统实现离线人脸识别方法,具体包括以下步骤:

步骤7.1:拍摄人脸并生成人脸特征二维码;

获取人脸图片,模型进行人脸图片处理,统一图片尺寸,通过神经网络提取出该照片的特征值并调用zxing库生成二维码,从而将特征值存储于二维码内作为用户的身份证明;

步骤7.2:验证用户出示二维码并比对用户人脸信息是否为同一人。

对对方出示的二维码进行扫码,解读二维码所含人脸特征值,对对方人脸进行拍照,提取并计算出拍摄到的人脸图片的特征值,并与之前在二维码中提取出的特征值进行比对,调用zxing库判断是否为同一人,显示人脸距离(Face Distance),大于1代表判断为不同人,且值越大代表人脸差距越大,小于1时代表判断为同一人,且值越小代表人脸差距越小,为同一人则显示验证成功,否则显示验证失败。

采用上述技术方法所产生的有益效果在于:

本发明提供一种基于深度残差网络的人脸识别身份认证方法,能实现离线识别的功能,离线识别不仅是能够在没有联网的情况下完成人脸识别功能,而且还不需要部署服务器,不会产生网络延时。所使用的网络模型为最终得到的实验模型k,为了尽可能的减少网络模型的容量,通过实验探究的方式,逐步的修改网络模型的层数和各层通道数,在保证模型精度不大幅度下降的情况下,尽量的减少模型的容量,最终找到的最佳修改方案将原本96M的模型缩小到39M,在将模型固化之后,移植到移动端的模型容量仅有30M。能够提供安全、可靠、精准、快速的以人脸识别为基础的身份认证系统。

附图说明

图1为本发明具体实施方式的采集人脸特征值流程图;

图2为本发明具体实施方式的人脸识别身份认证流程图;

图3为本发明具体实施方式构建的Inception-ResNet-v1深度残差网络模型示意图;

图4为本发明具体实施方式构建的Mobile-ResNet深度残差网络模型示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。

一种基于深度残差网络的人脸识别身份认证方法,包括以下步骤:

步骤1:人脸数据收集与处理,如图1所示;

步骤1.1:收集人脸图片并按照人名进行分类,并分别保存到不同的文件夹,以此来创建人脸身份识别的数据集;

步骤1.2:利用人脸检测MTCNN算法的多任务级联卷积神经网络进行人脸检测,提取出图片中的人脸部分;经过人脸检测MTCNN算法检测并筛选到人脸图片框,再将图片的尺寸进行统一,本实施例中统一缩放为160×160像素,得到处理后的数据集,总共产生两个训练集和一个测试集;

步骤1.2.1:利用P-Net获取候选窗口和边界回归向量,同时,候选窗口根据边界框进行校准,利用非极大化抑制(NMS)方法去除重叠的窗体,在原图像上截取出P-Net所确定的图像片段,并将其尺寸进行统一缩放至24×24;

步骤1.2.2:将经过P-Net确定的包含候选窗体的图片在R-Net网络中选用全连接的方式进行训练,进行细化处理;利用边界框向量微调候选窗口,再利用非极大值抑制算法去剔除重叠窗口;

步骤1.2.3:用全连接的方式进行训练对O-Net网络进行训练,进行细化处理,利用边界框向量微调候选窗口,再利用非极大值抑制算法去剔除重叠窗口,同时标定人脸关键点位置;识别出更加准确的脸部区域,即更接近真实人脸的区域。

O-Net网络比R-Net多一层卷积层,功能与R-Net类似,用全连接的方式进行训练,进行细化处理。利用边界框向量微调候选窗口,再利用非极大值抑制算法去剔除重叠窗口,同时标定5个人脸关键点位置。

步骤2:如图3,图4所示,构建深度残差网络模型Inception-ResNet-v1网络模型和Mobile-ResNet网络模型,提取人脸特征值;

步骤2.1:构建Inception-ResNet-v1网络模型;将Inception网络与残差网络结合,在Inception模块上加入一个恒等映射;使残差网络的结构可以极大地加速训练,解决深度神经网络梯度弥散的问题,提高网络的准确率,降低误识率。

步骤2.1.1:在TensorFlow的计算图中分别运用slim.conv2d、tf.nn.relu6构建卷积层和ReLU6激活函数,然后构建Inception-ResNet-A、Inception-ResNet-B、Inception-ResNet-C这三个模块;所构建的这三个模块是Inception-ResNet-v1网络模型的主体部分,其中,ReLU6激活函数的函数表达式如下,

在输入大于等于6时输出为6,ReLU6相比于ReLU激活函数多了一个上界。

这三个模块均使用1×1卷积降低特征层通道数,经过中间卷积层后,再次使用1×1卷积升高特征层通道数,使每个模块的输入和输出特征层通道数相等;而大大降低中间层的特征层通道数,从而降低模型参数量。

步骤2.1.2:使用Stem、Reduction-A和Reduction-B这三个模块逐步增大特征层通道数,同时缩小特征图的尺寸,以承接Inception-ResNet-A、B、C这三个模块;

步骤2.1.3:用slim.avg_pool2d和slim.fully_connected构造出Inception-ResNet-v1网络模型的均值池化层和全连接层,即构建出网络的基本结构;

步骤2.1.4:通过slim.BatchNorm模块,在所有的卷积层和全连接层后加入批规范化层(BatchNorm),用于加快Inception-ResNet-v1模型的训练速度,提高模型精度。

步骤2.1.5:使用TensorFlow提供的slim.l2_regularizer模块对网络各层进行L2正则化,对卷积层和全连接层进行L2正则化,防止Inception-ResNet-v1模型训练时出现过拟合现象,并同时提高模型的泛化能力。

步骤2.1.6:使用slim.dropout模块在TensorFlow的计算图中添加dropout层,防止深度神经网络的过拟合现象,并同时提高模型在测试集的验证精度;

步骤2.2:构建Mobile-ResNet网络模型;该网络模型利用depthwise_separable_ResNet模块代替MobileNet的深度可分离卷积模块(depthwise_separable_convolution);

步骤2.2.1:构建MobileNet网络;

所述的MobileNet网络是由depthwise_separable_convolution模块按照逐渐增大特征层通道数、同时逐渐缩小特征图尺寸的方式堆叠而成,最终将每个特征图缩小为一个点;

步骤2.2.2:给MobileNet的深度可分离卷积模块(depthwise_separable_convolution)加入一个残差网络的恒等映射,形成depthwise_separable_ResNet模块;

步骤2.2.3:使用步骤2.2.1中的堆叠方式,构建Mobile-ResNet网络模型;但是为了增强模型的表达能力,需要加深网络模型的层数,加大输出维数,同时为解决深度神经网络的梯度消失的问题,使用步骤2.2.2中形成的depthwise_separable_ResNet模块代替原本的depthwise_separable_convolution模块;

步骤3:选择损失函数与计算准确率;

步骤3.1:本发明方法需要将人脸特征值压缩到128字节以下,故选择输出维度低的Tripletloss损失函数与Centerloss损失函数进行人脸特征值压缩,通过训练,对Tripletloss损失函数的间隔值Margin,Centerloss损失函数α和γ这两个参数进行调节;

步骤3.2:使用欧氏距离作为评估距离大小的方法,通过LFW数据集,来判断两张人脸图片是否属于同一个人,进而根据判断结果计算准确率,如图2所示;

步骤3.2.1:选择一共有6000对人脸的LFW测试集,其中3000对属于同一个人2张人脸图片,另外3000对属于不同的人每人1张人脸图片。LFW数据集中包含训练集、测试集和验证集,将6000对人脸图片依次测试集图片分别输入Inception-ResNet-v1网络模型和Mobile-ResNet网络模型,经过深度神经网络提取出一个特征值,对特征值进行归一化,使特征值映射到[-1,1]之间的欧氏空间。归一化公式如下:

其中,x

计算两张人脸图片的欧氏距离dist,以该欧氏距离的平方作为两张图片的人脸距离(Face Distance),

步骤3.2.2:从0到4以0.01为间隔取值,得到一个阈值数组threshold,设定一个阈值数组threshold作为判断阈值,将数组threshold内的值依次取出,求出每个threshold值在LFW验证集上的准确率,找出准确率最高的threshold值作为best_threshold;使用插值函数预测散点的趋势,求出更加精确的阈值best_threshold,以最终的best_threshold值作为判断两个特征向量是否代表同一个人的分界线。

所述散点为,以threshold值为横坐标、准确率为纵坐标得到的一系列散点;

步骤3.2.3:按照步骤3.2.1所述的计算欧氏距离的方法,计算出每一对图片的人脸距离,然后与设定阈值进行比较,如果计算得到的人脸距离大于设定阈值,则可预测两张图片属于不同人的人脸,否则就可预测两张图片属于同一人的人脸;

如果预测结果与实际相同则代表预测成功,否则代表预测失败,预测成功的人脸对数除以总共实验的人脸对数就是当前测试的网络模型的识别准确率;

步骤4:调节损失函数参数;选定Inception-ResNet-v1网络模型作为训练网络,选定RMSprop优化器作为训练的优化器,然后调节损失函数的参数,并进行对比训练;通过训练,对Tripletloss损失函数参数Margin以及节Centerloss损失函数参数α和λ进行调节。

步骤4.1:选定Inception-ResNet-v1网络模型作为训练网络,选定RMSprop优化器作为训练的优化器,然后调节损失函数的参数,进行对比训练。

采用数据量比LFW训练集小的训练集a作为训练集;

为提高识别稳定性,设置保留概率keep_probability=0.8;

考虑到计算机GPU能力,统一设置一次训练所选取的样本数batch_size为30。

步骤4.2:通过训练调节Tripletloss损失函数参数Margin。

步骤4.2.1:设置分段学习率,先采用较大的学习率(0.1),样本训练次数过半后再设置较小的学习率(0.01、0.001)进行精细调整。

步骤4.2.2:以每1000个迭代(iteration)作为一个epoch。训练网络400个epoch,学习率设置为:0~199epoch:0.1,200~299epoch:0.01,300~400epoch:0.001。

步骤4.2.3:设置Tripletloss损失函数的参数Margin=0.8进行训练,损失Loss与准确率Accuracy在经过400epoch的训练以后逐渐趋于平稳,证明学习率与训练epoch数设置是合理的。

步骤4.2.4:再设置不同的Margin值来进行训练,探究准确率随参数Margin值的变化。从训练结果得出参数Margin设置为1时准确率最高为0.865。

步骤4.3:通过训练调节Centerloss损失函数参数α和γ。

步骤4.3.1:设置学习率为:0~199epoch:0.1,200~299epoch:0.01,300~400epoch:0.001。

步骤4.3.2:设置Centerloss损失函数参数α=0.9,λ=0.1进行训练。Loss的收敛速度明显快于使用Tripletloss时的收敛速度,Accuracy很快趋于平稳,即达到平稳的时间比Tripletloss损失函数短。

步骤4.3.3:为了节省训练时间适当缩小训练epoch次数,重新设置学习率为0~99epoch:0.1,100~149epoch:0.01,150~200epoch:0.001。

步骤4.3.4:调节不同Centerloss损失函数参数α,λ进行训练,寻找最佳的参数设置。具体为:

设置参数α为0.9不变,调节参数λ的值,当λ设置为0.1时Accuracy最高为0.950,且当设置λ为0.01到0.12之间的值时,Accuracy的变化并不明显;

设置参数λ为0.1不变,调节参数α的值,当参数α设置为0.9时,Accuracy最高为0.950,且当α设置为0.5到1.2之间的值时,Accuracy的值变化也不明显。

综上操作步骤,Centerloss的参数设置为λ=0.1,α=0.9;故选用Centerloss作为训练时的损失函数参数,并设置λ=0.1,α=0.9,使用ADAM优化器进行训练。

步骤5:对深度残差网络模型进行训练;

步骤5.1:在LFW训练集中挑选图片batch,生成输入队列。为了提高深度残差网络模型精度,增强模型稳定性,对输入前的图片进行随机裁剪(random crop)和随机翻转(random flip);

步骤5.2:构建Inception-ResNet-v1网络模型,向该网络模型输入数据并进行神经网络权值的初始化;输入队列按batch给Inception-ResNet-v1网络模型输入数据,并使用tf.truncated_normal_initializer从截断的正态分布中输出随机值来为神经网络权值进行初始化;

步骤5.3:构建Centerloss损失函数,通过神经网络的输出计算损失Loss值;

步骤5.4:设置学习率learning_rate,选择优化算法,根据损失值计算梯度更新网络权值进行网络训练;

步骤5.5:实现评估算法;每经过一定数量的1000个迭代(iteration),就通过LFW数据集来计算一次Inception-ResNet-v1网络模型的准确率,并找到判断阈值;

步骤6:基于实际人脸识别对系统模型进行简化;

步骤6.1:改进判定阈值。利用LFW数据集作为验证集,选择不同的误识率,来验证Inception-ResNet-v1网络模型和Mobile-ResNet网络模型的准确率和拒识率;

步骤6.1.1:使用LFW数据集作为验证集,LFW数据集用3000对属于同一个人2张人脸图片,3000对属于不同的人每人1张人脸图片来进行测试;

步骤6.1.2:预设5个误识率值:0.00033,0.00067,0.001,0.002,0.003,通过训练来确定不同误识率下的准确率和阈值;

步骤6.1.3:采用数据量比训练集a大的训练集b来训练Inception-ResNet-v1网络。使用训练集b训练时首先设置随机失活(dropout)层的参数keep probability=0.8,设置学习率为0~399epoch:0.1,400~599epoch:0.01,600~800epoch:0.001;

步骤6.1.4:在Inception-ResNet-v1网络模型大小为96M、Mobile-ResNet网络模型大小为91M,即模型大小相当的情况下,Inception-ResNet-v1网络模型在各个误识率下的准确率都明显高于Mobile-ResNet网络模型,故采用InceptionResNetv1网络模型作为基本模型;

步骤6.1.5:由Inception-ResNet-v1网络的训练结果可以看出,误识率选择0.001时准确率为0.934,由于准确率=1-(误识率+拒识率)/2,则可计算出拒识率为0.131;误识率选择0.002时准确率为0.961,拒识率为0.076。如果提高误识率到0.002以上,拒识率并没有明显降低,但是却会增大不同人的人脸识别为同一人的概率,使得安全性降低;

步骤6.1.6:加入两个准确率,一起作为判别标准:Accuracy1表示为控制误识率等于0.001时,Inception-ResNet-v1网络模型的准确率,并设置此时的阈值为threshold1;Accuracy2表示为控制误识率等于0.002时,Inception-ResNet-v1网络模型的准确率,并设置此时的阈值为threshold2;

步骤6.2:对特征值进行压缩;

步骤6.2.1:fc1为Inception-ResNet-v1网络模型最后的全连接层,将Inception-ResNet-v1网络输出的特征

式中,1≤i≤n,x

步骤6.2.2:通过LFW数据集计算出准确率Accuracy

步骤6.2.3:如果(x

步骤6.2.4:将特征值整数化以后,随机统计出一定数量100张人脸图片的128维特征值在数据空间的分布情况;

步骤6.2.5:通过统计,得到输出特征值范围,输出的特征值多在-40~40以内,使用-127~127之间的整数值存储特征值有一部分数据空间被浪费,能在原来整数化的基础上将特征值扩大3倍。故将特征向量映射到[-381,381]之间的欧氏空间,如下式:

出现大于127或小于-127的数据,则将该数据记为127或-127,最后进行四舍五入取整。如下式:

步骤6.2.6:在验证准确率时,由步骤6.2.5可知,特征值扩大了3倍,因此两个特征值的欧氏距离评分会扩大9倍,所以需要将计算出的欧氏距离除以9。

步骤6.3:缩小网络模型容量,保证准确率不降低的前提下,减少模型所占容量。

步骤6.3.1:为减少网络层次,如表1所示,将Inception-ResNet-A、B、C这三个模块的层数均减少20%和40%,得到实验模型a和实验模型b。

表1减少网络层数的修改方案

采用参数设置和整数化方法,分别进行网络训练。如表2结果可知减少网络层数的效果所能带来的网络模型的容量减少并不明显。

表2减少网络层数的实验训练结果

步骤6.3.2:将Inception-ResNet-A、B、C这三个模块的中间层通道数均减少30%、50%、60%、70%分别得到实验模型c、d、e、f,从中选出模型最小的那个实验模型,具体修改方案如表3所示。

表3减少网络模块中间层通道数的修改方案

如表4结果所示,将Inception-ResNet-A、B、C这三个模块的中间层通道数减少60%,也就是实验模型e的修改比例是最合适的。

表4减少网络模块中间层通道数的训练结果

步骤6.3.3:进一步的减少Inception-ResNet-B、C网络模块的输出层通道数,Inception-ResNet-A、B、C网络模块的输出层通道数分别为256、896、1792。为了找到最合适的修改方案,以200为间隔对步骤3.2中得到的最合适的模型e进行修改,如表5的修改方案所示,分别得到网络模型g、h、i、j,从中选出准确率下降幅度小,同时模型大小尽可能小的模型。

表5减少网络模块输出层通道数的修改方案

如表6所示,实验模型g、h依次减少200、400个Inception-ResNet-B、C模块的输出层通道数时,模型精度有略微的下降,当减少600个Inception-ResNet-B、C模块的输出层通道数时(实验模型i),模型精度出现了大幅度的下降,此时只减少Inception-ResNet-C模块400个输出层通道数、减少Inception-ResNet-B模块600个输出层通道数(实验模型j),模型的精度也没有得到明显上升。因此确定减少Inception-ResNet-B、C模块400个输出层通道数,也就是实验模型h的修改方案最为合适。

表6减少网络模块输出层通道数的训练结果

步骤6.3.4:将减少网络模块特征层通道数和减少网络模块层数结合起来,也就是将实验模型h和实验模型a的修改方案结合,得到的实验模型为最终应用于本发明系统的网络模型。最终的实验模型的模型容量为39M,相比于未精简的Inception-ResNet-v1网络模型的96M,减少了59.4%的容量,而准确率Accuracy、Accuracy1、Accuracy2仅下降了0.003、0.0012、0.013。

步骤7:利用人脸识别身份认证系统实现离线人脸识别方法,具体包括以下步骤:

步骤7.1:拍摄人脸并生成人脸特征二维码;

获取人脸图片,模型进行人脸图片处理,统一图片尺寸,通过神经网络提取出该照片的特征值并调用zxing库生成二维码,从而将特征值存储于二维码内作为用户的身份证明;

步骤7.2:验证用户出示二维码并比对用户人脸信息是否为同一人。

对对方出示的二维码进行扫码,解读二维码所含人脸特征值,对对方人脸进行拍照,提取并计算出拍摄到的人脸图片的特征值,并与之前在二维码中提取出的特征值进行比对,调用zxing库判断是否为同一人,显示人脸距离(Face Distance),大于1代表判断为不同人,且值越大代表人脸差距越大,小于1时代表判断为同一人,且值越小代表人脸差距越小,为同一人则显示验证成功,否则显示验证失败。

一、本发明的目标是提取出人脸图片的特征值,通过对比不同人脸图片的特征值来判断不同的人脸图片是否属于同一个人。为实现高精度的人脸识别功能,需要收集和处理用于训练和验证的人脸数据集,采用TensorFlow深度学习框架,搭建神经网络以及损失函数,通过训练深度残差网络来实现人脸识别。

二、人脸识别问题一般使用准确率最高时的阈值作为判断阈值,但是本发明需要尽可能地降低不是同一人识别为同一人的概率,使得冒充识别通过的概率尽可能低,也就是误识率要尽可能低,从而提高验证的安全性;由于本发明是实时的面对面识别验证,需要拍摄规范的正面照,从而降低同一人的人脸识别为不同人的可能性,也就是拒识率可以适当的放宽。因此本发明使用误识率较低(0.001或0.002)时的阈值作为判断阈值,并以此时准确率作为模型精度的评价标准。

三、针对于移动端,为便于人脸特征数据的存取,需要将人脸特征值存储于一个二维码之内,按照设计需求,在这个二维码之内还需存储签名等信息,由于用于存储特征值的空间被限制在128字节以内,故需要严格限制所提取的特征值的大小。将提取出的128维浮点数特征值转化为一定范围(-127~127)内的整数特征值,从而使原本需要1024字节存储空间的特征值降低到128字节,使特征值存储空间降低了87.5%,使这个特征值能存储到一个二维码中。

四、针对移动端空间资源有限,通过改进和精简网络模型,减少网络特征层通道数和网络层数,逐步的将网络模型的大小从96M缩小到39M,减少了59.4%的容量,模型在误识率为0.001和0.002时的准确率分别为0.920和0.945,相比于未精简的Inception-ResNet-v1网络模型的0.932和0.958,仅有0.012和0.013的下降。

五、将TensorFlow深度学习框架训练的网络模型,移植到移动端,在移动端实现人脸识别身份认证系统的基本功能,完成本发明人脸识别身份认证系统的构建。

本实施方式是将人脸识别作为控制机制应用于身份认证系统。本发明基于TensorFlow Mobile(TFM)轻量级深度学习框架,TensorFlow训练会生成检查点文件(checkpoint)和图文件(Graph),检查点文件保存的是网络的权重,图文件保存的是网络的计算图。通过Tensorflow提供的工具将检查点文件和图文件冻结在一起,生成冻结模型文件(freeze graph)。TFM所使用的模型为就是该冻结模型文件。

基于上述描述过程,基于深度残差网络的人脸识别身份认证系统进行设计与实现。系统利用Mobile TensorFlow移动端深度学习框架在Android端实现了人脸识别身份验证系统,将原39M的网络模型固化之后移植到移动端的的容量为30M。

相关技术
  • 一种基于深度残差网络的人脸识别身份认证方法
  • 一种基于深度残差网络的人脸识别方法
技术分类

06120112965143