基于人脸识别技术的考勤系统设计分析
2021-11-20陈晖
陈晖
(中兴软件技术(济南)有限公司 山东省济南市 250000)
1 人脸识别技术原理
人脸识别技术是提取人的面部特征信息对用户的身份进行识别判定,相比指纹、虹膜等生物识别技术,人脸识别技术体现出非强制性与非接触性的优势,用户无需被动配合识别设备即可完成高效、智能化的身份识别。人脸识别的基本流程包括图像采集、人脸检测、图像预处理、特征提取及人脸识别等步骤:
首先,系统通过图像采集设备获取包含人脸的照片,拍摄过程中可能会受到拍摄角度、光照环境、图像清晰度、图像大小不统一等客观因素的影响,系统就需要通过丰富训练的人脸数据库对照片进行图像预处理,解决拍摄角度不佳的问题,并对图片进行适当的伸缩变换,保证图像的统一性,解决图像大小不统一的问题,采用灰度变换解决光照环境及图像清晰度的问题。其次,人脸检测及定位,利用人脸与非人脸区域的特征差异标定出人脸位置,为后续人脸区域的特征提取做准备。第三步进行图像预处理,包括灰度变换、直方图均衡化等处理方法,为提高人脸特征提取的准确性,还需要通过人脸对齐、归一化等图像预处理技术提高人脸的标准性。第四步提取人脸特征,人脸识别技术中提取的面部物征包括几何视觉特征、形状与纹理特征、变换域特征、代数特征等,其中几何视觉特征是指人脸五官特征,这种特征提取容易,计算量小,但是光照变化、人头部姿势变化会影响到特征提取效果。形状与纹理特征是指人脸物理性差异导致的成像边缘轮廓、灰度信息及颜色信息的差异,提取这类特征具有旋转不变性的优势,但是要求图像具有更高的分辨率。变换区域特征是指对图像进行傅里叶变换、小波变换等获取图像在另一个域的特征,提取这类特征可以有效解决几何形变的问题。代数特征是指将二维图像展开为一维向量,通过正交变换消除样本之间的相关性,最终获得依次递减的特征值所对应的一组特征向量。第五步进行特征对比。在提取到合适的人脸特征后再通过分类器对人脸进行分类,分类器可计算输入人脸与数据库中人脸的匹配值,如果计算结果满足设定的阈值即可输出人脸身份信息,完成特征对比。常见的分类器包括最近邻分类器、支持向量机分类器、Adaboost级联分类器等。第六步,身份匹配及验证。完成特征对比后获得人脸在数据库中的匹配对象,输出人类对象的身份信息,验证识别结果。
2 系统功能需求
本研究提出的考勤系统的基本业务流如下:考勤系统管理员具有系统管理与用户权限管理的权限,能够建立普通用户。企业员工在管理员模块注册账号,采集普通企业员工的个人信息,企业员工的个人信息包括基本信息及人脸信息两部分,系统检测人脸图片质量,采集到的人脸图片与系统要求相符,避免因为角度问题或光照问题导致人脸图片质量与系统要求不符。考勤时间即为企业规定的员工上下班时间。在考勤打卡时开启系统摄像头采集人脸信息,将采集到的数据与数据库录入的人脸信息进行检测匹配,匹配成功即为考勤成功。企业员工能够登录自己注册的账号查看考勤结果。
系统具有数据管理、人脸信息管理及用户登录等功能。通过系统数据管理功能可以查询、修改数据,并能够对系统进行初始化操作,管理员通过初始化操作将企业员工的个人基本信息及人脸信息输入数据库中。人脸信息管理主要是在用户注册系统账号时采集人脸信息,员工需要提交两到三张人脸照片,系统人脸识别模块将人脸信息转变为人脸特征向量,再将其保存于数据库中。通过人脸图像信息管理功能能够添加、修改人脸信息及员工的基本信息,此处需要注意,人脸信息存储于数据库时主要是特征向量,这一向量对人无可视性,因此无法查询人脸信息,只能查询人脸信息输入情况。虽然检测系统在既定范围内具有鲁棒性,但是仍然需要定期更新一次人脸数据库,才能保证人脸信息的时效性与安全性。用户登录功能可以根据用户类型设定不同的权限,系统管理员具有最高权限,能够修改所有用户的信息,普通员工权限相对较低,通常只能够查询自己的个人信息。
3 基于人脸识别的考勤系统设计
3.1 系统运行环境
本研究提出的基于人脸识别的考勤系统主要运行于带有摄像头的电脑主机,经过检测系统软件基本环境需求如下:采用Win10 Professional 64bit,显卡NvidiaGTX1060,CPU采用Inter第七代酷睿,i5 700,内存16G。本系统主要适用于中小型公司,因此对数据库的存储容量、传输速度要求相对较低,因此采用MySQL数据库,体积小且访问速率高。
3.2 软件框架设计
目前软件设计架构主要包括多层系统结构及客户端-服务器两种方式。多层系统结构主要是将大程序拆分成几个子目标程序,每个子程序又有固定的逻辑及功能关系,子程序又能够拆分为功能划分更细致的子功能。多层系统结构应用最为普遍的为4层结构,包括业务逻辑层、表示层、数据访问层、应用层等。多层系统结构具有结构简单、研究简单、目标设计简单的优势,且程序系统与子程序互相独立,每个子程序均能够单独检测,提高了接口调试的便利性。当然其不足在于可养护性较差,设计功能不佳且繁琐,系统升级也比较复杂,程序拓展功能较差,一旦用户请求暴增需要逐级修改代码,导致架构扩展十分困难。客户端-服务器模式主要包括主服务器、子客户端两大模块,客户端组件向服务器组件发送请求,服务器针对客户端的需求提供对应服务。服务器能够同时完成多个客户端的服务申请。相比上述多层系统结构,客户端-服务器结构在程序拓展方面的优势十分突出,该结构将信息数据存储为内存信息模块的形式,信息模块可以复制,且信息模块并未应用中央信息库,因此大大提高了程序的可扩展性。且该结构会对特殊功能的处理单元封装成特定的处理单元,需要添加新功能时可以重新建立新的处理单元,需要缩减相关功能时直接将对应的处理单元去掉即可。
本研究软件框架设计综合了多层系统结构及客户端-服务器两种模式的优点,系统整体架构采用多层系统结构方式,数据库、模型更新的访问操作则采用客户端-服务器模式。系统结构包括UI操作层、应用功能层、内部逻辑层及数据接口层,UI操作层的主要功能是提供简洁的人机交互界面,包括考勤图像、员工信息及考勤信息的显示,应用功能层主要实现与用户交互的操作,包括人脸图像采集、人脸检测识别、修改或存储考勤信息等。内部逻辑层即为系统后台,主要功能的处理考勤数据,训练神经网络模型;数据库接口层主要功能包括存储员工信息与考勤信息,并提供对应的接口。
3.3 人脸检测模块的设计
人脸测试模块的主要功能包括测试、识别及录入人脸图像信息,系统先通过实时测试摄像头抓取人脸图像,通过深度学习神经网络模型对抓取到的人脸图像进行检测、评估,根据要测结果记录员工的考勤信息。本文提出的人脸识别系统中,人脸的查找采用OpenCV内部设计的级联检测器,该检测器中包含有视觉库,视觉库中的脸部级联分类器是训练好的,只需加载级联文档,即可利用级联检测器中的人脸检测功能模块,实现人脸信息的动态或静态检测。待检测的人脸图像载入系统后,系统会由摄像头或视频资料中获取人脸的帧图片,然后对图片进行预处理。根据摄像机的编码,视频资料的文件名调取VideoCapture函数,读取摄像头中的图像,再对其进行灰度转换,图像的预处理即可完成。然后再对人脸图像进行检测,在输入图像中提取边界并框取出来。
3.4 人脸识别模块的设计
完成人脸检测后即进行人脸识别,在训练分类器时要使用一定数量的图像作为训练集,一个优秀的训练集一定是涵盖了人脸变化的各种情况。比如只需要识别正面的人脸,训练集图像中仅有正面人脸即可满足训练要求;如果识别图像中的人脸是侧脸或者向上的角度,则训练集中也可包含对应角度的人脸图像,否则人脸识别算法很难完成这类图像的识别。因此需要通过数据预处理模块对人脸图像进行预处理,尽量避免这类问题。摄像头采集到的人脸图像与神经网络输入的图片大小不统一,需要通过伸缩变换统一图片的大小,并将多余的边框填充为黑色。对人脸图像按照注册编号保存于本地数据库,并能够以图像的本地路径为标准从数据库中读取图像。
搭建卷积神经网络采用python+keras+tensorflow 做后台,网络结构包括4层卷积层、2层最大池化层及全连接层,其中Activation函数以Relu为激活函数,结合全连接及Dropout层搭建网络。在卷积神经网络中,卷积类似于图像处理中提取特征的操作,池化包括最大池化和平均池化,类似于降维处理;Dense全连接层即经典的神经网络全连接。为了实现更高的训练速,避免过拟合的问题,Dropout训练时会按照特定的概率随机丢弃一些神经元;Flatten用于卷积层与全连接层之间,卷积输出的多维数据通过Flatten拍扁为一维数据输送至全连接层;最后一层采用Softmax函数作为激活涵数,该函数在多分类的情况下应用非常普遍。员工基本信息与考勤信息采用MySQL数据库进行操作与管理,采用Python3中PyMySQL连接MySQL数据库。
4 系统运行界面
系统运行界面包括登录界面、管理员界面、员工注册界面、考勤识别界面及员工信息界面。通过登录界面登录系统,输入正确的用户名及密码,选择正确的用户类型即可登录,如数据库中不存在用户信息,登录界面显示登录失败。管理员界面主要用于员工信息的录入操作,通常只有管理员才能进入该界面,在该界面可以采集员工的人脸信息及基本信息。数据采集完成后点击“训练”即开始训练神经网络模型;此外,管理员还可以通过管理界面查询员工的签到信息、个人信息数据等。企业员工通过员工注册界面录入个人信息,填写完基本资料后即采集人脸信息。点击“采集”系统会自动启动摄像采集员工图片,当摄像窗口中显示出大小正确、人脸位置准确、图像清晰的图像信息时,系统会自动完成人脸识别,并保存于本地文件夹。采集人脸图像信息时可以多拍摄几张不同角度的图片,提高数据质量及训练模型的鲁棒性,避免人脸发生细微变化导致模型识别失败。考勤识别界面主要进行人脸识别,人脸对准摄像头后系统会自动框出识别到的人脸,完成识别后通过员工信息界面可查询到员工信息,点击“确定”即表示打卡成功。