基于深度学习的人脸识别考勤管理系统开发
2019-08-15文开福钟小明秦德浩
李 雄,文开福,钟小明,杨 辉,秦德浩
(1.江西合力泰科技有限公司 博士后科研工作站,江西 吉安 343700;2.华东交通大学 软件学院,南昌 330013)
0 引 言
随着企业管理制度的逐渐完善,企业对考勤数据的真实性、安全性及可靠性愈发重视。传统的证件、密码、射频卡等考勤方式,无法避免代打卡、成本高、不易携带或保管等现象,促使了生物特征识别技术的发展。生物特征识别技术是指将计算机与生物传感器等高新科技结合,通过识别个体固有的生理特征或行为特征进行个人身份鉴定。当前,常见的生物特征识别技术有指纹、声音、人脸、虹膜及多种生物特征混合识别等[1-2]。总体而言,生物特征识别技术具有高安全及便利等特点。
随着硬件和算法的发展,与其他生物特征识别技术相比,人脸识别的非接触式、易采集和友好等特点,使得该技术被广泛关注。人脸识别在实际应用中还面临一些挑战,如因化妆、佩戴饰品引起的人脸变化、光照环境变化可能降低识别的准确率,如何正确区分伪造的人脸图像等。
深度学习的概念来源于人工神经网络,是指包含有多隐层的神经网络。深度学习可以通过组合低层特征构造更为抽象的高层表示,以发现数据的本质特征表示。本文阐述了人脸识别考勤管理系统的原理,介绍了深度学习的相关概念及原理。并在此基础上,应用Java和Python语言构建了B/S架构的应用系统。该应用系统具有界面友好、操作方便等特点。
1 人脸识别考勤管理系统原理
考勤管理系统采集真实、可靠的考勤数据将有利于企业正确掌握员工的工作状态。因此,有必要提高识别准确率及优化系统响应效率等,本文将采用活体检测及深度学习技术达到这一目的。
1.1 活体检测
人脸识别技术在广泛应用的同时,也出现了针对人脸识别的身份伪造攻击,比如照片人脸攻击、视频人脸攻击及三维人脸模型攻击等方式。当前,主要采用基于人脸的活体检测技术以应对这些身份伪造攻击技术[3]。
在线活体检测接口具有准确率较高、便于使用等特点,该接口具有3个方面能力:人脸基础信息获取,其包括人脸框位置、人脸空间旋转角度、人脸置信度等信息的获取;人脸质量检测,判断人脸的遮挡、光照、模糊度、完整度等质量信息;基于图片的活体检测,基于单张图片,判断图片中的人脸是否为2次翻拍。本系统使用在线活体检测接口以应对身份伪造,提高数据的真实、可靠性。
1.2 人脸识别
人脸识别的准确率受到其姿势、光照、遮挡及表情等因素的影响,如何提取人脸的有效特征,快速、准确地区分个体是该研究中的主要问题[4]。早期研究者利用主成分分析法(Principal Component Analysis,PCA),将人脸图像的全局特征映射至低维特征子空间,仅关注全局特征将使得人脸识别方法鲁棒性较低。一些研究者提出结合局部特征如局部2值模式等方法。然而,这些方法仍面临识别准确率不足的困难。
深度学习模型是一种以数据为驱动的特征提取方法,该模型从大量数据中分层地提取抽象特征,并对不同层级的特征加以非线性组合,以达到抽取数据本质特征的目标。随着模型训练算法、计算硬件及模型正则等技术的发展,深度学习模型被广泛应用于目标检测、图像标注、图像识别及医学图像诊断等研究领域[5]。
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,CNN是一种让权重在不同位置共享的神经网络。该网络先选择一个局部区域去扫描整张图片,该区域被称之为特征检测器(Feature Detector)。如图1所示[6],典型的卷积神经网络主要由输入层、卷积层、下采样层(池化层)、全连接层和输出层组成。
图1 卷积神经网络的典型结构
设第i层的特征图为Hi,则卷积层Hi的生成过程可描述为式:
Hi=f(Hi-1⊗Wi+bi)
(1)
式中:Wi为传递至第i层的权值向量;符号⊗为卷积操作,bi为偏移向量。激励函数f,一般使用不饱和非线性函数ReLU函数如式(2)。相较于饱和非线性函数,不饱和非线性函数能较好地避免梯度爆炸或梯度消失问题,也能提高模型训练速度[7-8]。
f(x)=max(0,x)
(2)
卷积层之后的下采样层通常有两点作用:一个是降维;另一个则是保持特征尺度不变性。原始图像经过卷积层和下采样层的交替变换后,再接入一个全连接网络利用所提取的特征对图像进行分类。分类计算的结果是一个关于标签概率分布的向量:
Y(i)=P(L=li|H0;(W,b))
(3)
式中:H0为原始图像。式(3)为原始图像经过一系列的特征提取、组合变换后,得到标签概率。深度神经网络中权值参数W是利用训练数据反复训练模型,使得损失函数最小化确定下来。常见的损失函数有均方误差:
(4)
E(W,b)=L(W,b)+ω×WTW
(5)
式中:ω用以控制正则化的强度。CNN训练过程采用的是梯度下降算法。通过训练误差的反向传播,逐层修正网络中的权值参数W和偏值参数b:
(6)
(7)
学习速率η控制学习步长。
2 深度学习模型的实现
2.1 Keras
深度学习的广泛应用得益于诸多优秀的开源深度学习框架[9]。目前,常用的深度学习框架有Tensorflow、Caffe、Torch及Theano等。Keras是封装了Tensorflow、Computational Network Toolkit (CNTK)和Theano的高层神经网络应用程序接口API,Keras由纯Python编写而成并基于Tensorflow、Theano以及CNTK后端。Keras具有高度模块化和可扩充特性,能快速方便用户搭建神经网络原型,且还支持卷积神经网络(Convolurional Neural Network,CNN)模型与循环神经网络(Recurrent Neural Network,RNN)模型。为便于高效训练模型,Keras同时支持中央处理器(Central Procesing Univ,CPU)及图形处理器(Graphics Procesing Unit,GPU)训练模式。
2.2 网络结构及训练
为平衡图像识别准确度和模型训练成本等因素,Keras提供了友好的微调(Fine-tuning)模式。该模式支持用户导入已训练好的网络参数至深度网络结构,并在深度网络结构之上搭建定制的神经网络,再使用用户特定的数据集对定制网络的参数进行训练。具体过程如下:
(1)提取VGG16中Bottleneck特征。普遍认为,更深的网络具有比浅网络更强的表达能力,更能抽取复杂的特征。而 VGG16[10]共有16层,其中有13个卷积层和3个全连接层。由于大尺寸卷积核将导致训练过程所需学习的网络参数过大,故VGG网络采用3×3尺寸的卷积核以描述横、竖及斜对角像素的变化。VGG采用分段卷积网络,并采用Maxpooling技术。同时还采用了逐层训练法,使得网络更深且更宽。因此,理论上也能提取更为复杂的特征。
当深度网络模型中包含的参数较多时,为避免网络模型的欠拟合,需建立较大规模的数据集,但训练成本高昂。本文研究中,Keras中直接提供了VGG16接口,可直接将已训练好的网络参数导入,从而避免计算资源的浪费。
(2)接入分类层并参数微调。与其他人脸识别技术不同[11-12],VGG16训练是基于ImageNet数据集[13-16],是从上百万图片中提取的关于1 000个类别样本的分类特征,但其并不侧重于关注人脸区分的特征。为了更准确地识别人脸,本文在Bottleneck特征之后接入一个Flatten层、两个Dense以及Softmax输出层,并使用员工注册的人脸图像数据集对Flatten层、Dense层中的网络参数进行微调,如图2所示。值得注意的是,该训练过程中,VGG16网络中的13个卷积层的参数被固化。即在利用员工头像数据集训练时,VGG16网络参数并不发生改变。
图2 VGG16网络中Bottleneck特征
3 系统开发
3.1 系统物理实现方案
系统采用B/S结构设计,分为服务器端和主机端。企业员工上班/下班时,在各自的工作机位上通过浏览器访问考勤管理系统,从而进行打卡。员工工作机位可以是带有摄像头的笔记本或是外接摄像头的台式机,考勤管理系统通过摄像头捕捉用户的人脸信息。系统的物理实现方案,如图3所示。
图3 系统物理实现方案
管理员通过浏览器访问考勤管理系统,查看员工的考勤记录、登记用户的请假信息等。应用服务器、数据服务器上存放了注册用户的人脸样本信息、用户基本信息及考勤信息等。
3.2 软件层次图
人脸识别考勤管理系统主要由用户打卡、用户管理、考勤管理及考勤统计等功能模块组成。用户打卡模块的功能是采集用户的人脸图像,软件根据人脸信息,登记用户打卡时间;员工管理模块的功能是对新用户进行注册,对注册用户的个人信息进行维护;考勤管理模块的功能是实现企业考勤规则的定义比如节假日、上班时间及下班时间等以及考勤记录的查询、更改等;考勤统计模块的功能是对员工考勤信息进行统计。具体的软件层次图,如图4所示。
图4 软件层次图
4 系统应用案例
系统经过开发、测试及部署后的实际运行效果如图5所示。
系统测试结果:准确率为93.6%,响应时间为0.53 s。仿真实验结果表明,本系统的准确率和响应时间能较好地满足企业的考勤需求。进一步分析发现,识别错误通常是由于用户签到/签退时,人脸图像发生了抖动,导致图像模糊或者图像不完整。
(a)登陆页面
(b)打卡页面
5 结 语
相较于其他人脸特征提取方法,深度学习方法具有无人工干预、准确率高等优点。但其训练过程需要较高的运算资源,且训练数据集所需规模较大。就深度学习及模式识别现有发展趋势看,深度学习将在人脸识别领域被广泛应用,并将改变大部分传统应用系统的业务流程及性能。