APP下载

基于CNN 的人脸识别课堂考勤系统

2019-10-19王琴米丹周丽

现代计算机 2019年25期
关键词:考勤人脸人脸识别

王琴,米丹,周丽

(四川大学锦城学院,成都611731)

1 导论

1.1 算法描述

课堂是一个让学生获得知识、学习技能的场所,对每个学生的学习结果都起到了重要作用。但是在当今的大学校园中教室流动性较高,不同的课程所在的教室可能不同,因此学生没有固定的教室和座位,并且不同的课程人数也有多有少,这就为部分学生的缺勤提供了机会,为教师的教学带来了影响。因此,一个良好有效的考勤系统是保证课堂秩序、教师教学质量的关键。随着计算机技术的飞速发展以及人工智能的再次兴起,人脸识别技术也愈发完善,并且在公共安全、信息安全、金融等各个方面都有着广泛的运用,因此也随之出现了基于人脸识别的考勤方式。

1.2 实现代码

现有的考勤方式主要有人工考勤、磁卡考勤和指纹考勤,但是这三种考勤方式都不可避免的存在一些漏洞。人工考勤主要通过教师上课口头点名或手动签到的方式,这种方式不仅效率低下,花费时间,并且还存在代答到或代签到的现象。磁卡考勤主要通过机器刷卡的方式来考勤,这种方式较人工考勤来说效率较高,但仍然存在代刷卡的情况,此外,磁卡容易丢失、消磁,这也为考勤带来了不便。指纹考勤的主要原理是通过对比实时指纹与提前录入数据库中指纹的相似度来进行考勤,相似度越高,就说明是同一个人的可能性越大。指纹考勤的方式效率较高并且不会存在代考勤的现象,但是对于指纹磨损或打卡方式不正确的情况则不能快捷准确地识别。

基于人脸识别的考勤不仅效率高,准确度高,实时性强,并且还能有效杜绝代考勤现象的发生,是一种较理想的考勤方式。因此随着人工智能和人脸识别技术的发展和完善,基于人脸识别的考勤方式在不久的将来必会成为主流的考勤方式。

2 CNN概述

2.1 CNN简介

卷积神经网络(Convolutional Neural Network,CNN)[1]是一种带有卷积结构的深度神经网络,卷积结构可以减少深层网络占用的内存量,也可以减少网络的参数个数,缓解模型的过拟合问题[2]。卷积神经网络作为深度学习的代表算法之一,长期以来一直被广泛运用在各个方面,尤其是图像识别、人脸识别方面。与DNN全连接神经网络相比,CNN 的输入是一个图像,通过参数共享、局部感受利用了图像的局部信息通过卷积和池化提取图像特征,使神经网络需要训练的参数大大减少,但是却并没有降低准确率。

早期的卷积神经网络结构相对简单,如经典的LeNet-5 模型,主要应用在手写字符识别、图像分类等一些相对单一的计算机视觉应用领域中[3]。随着研究的深入以及计算机性能的提升,使得复杂网络模型的实现成为可能,由此提出了名为AlexNet 的CNN 网络模型,并且在图像识别等反面上取得了重大的突破。AlexNet 的网络框架与LeNet-5 类似,但网络层次、结构更加复杂。除此之外,AlexNet 还采用了几种新技术:①成功使用采用ReLu 作为激活函数,解决了传统的Sigmoid 激活函数在深度网络中的梯度弥散问题;②训练过程中采用dropout 随机忽略一部分神经元,以避免模型过度拟合,通过实践证明了dropout 的效果[4]。VGGNet、GoogleNet 等模型也是CNN 中非常经典的模型。

2.2 CNN的结构

CNN 网络的结构主要有五层,分别为:输入层、卷积层、池化层、全连接层和输出层。其经典模型如图1所示。

图1 卷积神经网络

(1)输入层(Input layer)

输入层通常为一张图像所含信息构成的矩阵,如50×50×3(50×50 代表图像的长、宽,3 代表图像的通道数,一般为R、G、B 三个通道),矩阵中的数据为图像中每个像素点的值。

(2)卷积层(Convolution layer)

卷积层主要增加输入图片的深度,用于学习输入数据的特征表示,将原始数据映射到隐藏层特征空间,并且通过Relu、Sigmoid、Tanh 等非线性激活函数实现去线性化。

(3)池化层(Pooling layer)

池化层主要作用是对卷积层得到的特征结果进行压缩,从而提取出更加重要的特征,并且通过减小矩阵的尺寸可以减少全连接的参数个数,加快计算速度,同时还可以有效防止过拟合现象的产生,池化层最常用的方法为最大池化和平均池化。

(4)全连接层(Full connected layer)

全连接层与DNN 中的全连接层相似却又不尽相同。CNN 中全连接层的主要目的是将经过卷积和池化后的特征进行整合,形成一层或多层全连接层,实现高阶的推理能力。

(5)输出层(Output layer)

输出层通常在全连接层后,用于输出网络的分类结果。

3 系统设计与实现

3.1 系统设计

在本系统中,主要采用OpenCV+CNN+MySQL 的方法来实现。首先通过OpenCV 实时获取摄像头进行人脸的检测与标定,再通过构建CNN 网络进行人脸识别,最后使用MySQL 对数据进行管理,实现完整的考勤功能。

3.2 采用工具

(1)OpenCV

OpenCV(Open Source Computer Vision Library,开源计算机视觉库)是一个开源的计算机视觉和机器学习软件库,是在BSD 许可下发布的,因此它可以免费用于学术和商业用途,使用户可以轻松利用和修改代码。它具有C++、Python 和Java 接口,支持Windows、Linux、Mac OS、iOS 和Android 平台[5]。OpenCV 在图像识别、人脸识别等方面上有重大的作用,因此被广泛的运用。

(2)MySQL

MySQL 是一个关系型数据库管理系统,是最流行的关系型数据库管理系统之一,将数据保存在不同的表中,这样就增加了速度并提高了灵活性[6]。而且MySQL 还为Python、C、C++、Java 等多种编程语言提供了接口,可以方便有效地管理、检查数据。除MySQL外,在本系统中还采用了Navicat for MySQL 这个可视化数据库管理工具对数据库进行管理,使用户对数据的结构、关系和内容有更加清晰的认识。

4 系统实现

系统主要分为两个模块,人脸识别(打卡)模块和查看记录模块。系统界面和组织结构分别如图2所示。

图2 系统界面图

图3 系统组织结构图

4.1 人脸识别模块

(1)人脸检测与标定

通过OpenCV 调用摄像头,将视频流实时显示在屏幕界面上,进行人脸检测与人脸标定,将检测到的人脸在视频流中框出来,再将检测到的人脸通过OpenCV中resize 函数调整大小并截取送入构建好的CNN 网络中进行识别。

人脸识别部分通过CNN 网络进行实现,构建流程为:

①收集全班同学的照片,每人10 张,并且要求不同表情、不同姿态,从而增加数据集的复杂度,使网络更有可信度。

②对收集的图片进行预处理:

1.对收集的图片进行处理,统一处理为:大小为60×60,RGB 三通道,jpg 格式的彩色图片,并且按照XXX(姓名缩写)_XX(00-09)的格式进行重命名。

2.根据所有人的类别给对应的图片打上类别标签,并将图片信息和类别信息相互对

应。

3.以7:2:1 的比例划分训练集、测试集和验证集,并分别存储在相应文件夹中。

宋萌枝的硕士论文《中国现代戏剧史上的蔷薇花——袁昌英戏剧研究》[2],也论及弗洛伊德精神分析学说、女性主义和唯美主义对袁昌英戏剧创作的影响,此外,还涉及到袁昌英对于莎士比亚浪漫戏剧和现代主义艺术手法的借鉴。

4.将图片信息和标签信息转化为numpy 库中的array 矩阵格式,方便后续网络的构建。

③搭建CNN 网络。

本系统中CNN 网络的结构总体基于LeNet-5 模型,结合实际情况进行了改进,主要为输入层、3 层卷积层(激活函数为ReLU)、3 层最大池化层、3 层全连接层(激活函数为ReLU)、输出层(激活函数为Softmax),并且采用了Dropout 防止过拟合。

④输入训练集图片数据对网络进行训练,通过划分小批次进行训练使得网络结果更加优化,并且通过验证集、测试集数据进行验证和测试,得出准确率。

⑤通过修改不同参数(如:卷积核的大小、将最大池化改为平均池化等)、增加网络复杂度、增加迭代次数等措施对网络结构进行优化,最终使准确率达到90%以上。

⑥将神经网络模型进行保存,便于其他模块的调用。

⑦将检测到的人脸送入已保存的CNN 网络中进行识别,得出识别结果。

4.2 查看记录模块

(1)数据库创建

通过Navicat for MySQL 可视化数据库管理工具创建studentinfo 数据库与student_information 数据表。数据表的结构如图4 所示。

图4 数据表结构图

(2)数据库写入

通过Python 中的pymysql 库连接已创建好的数据库,将识别到的人名与识别时间写入数据库中。

图5 数据库写入

(3)数据库导出

连接并查询数据库中的信息,再通过Python 中的xlwt 库创建一个Excel 表格,并将查询到的结果写入Excel 表格中。

图6 数据库导出

(4)数据显示

通过Tkinter 库的Treeview 函数在显示界面上创建一个表格,再通过Python 中的xlrd 库读取Excel 表格中的数据,并显示在界面上。

图7 查看记录

5 结语

相比于人工考勤和磁卡考勤来说,人脸识别考勤前期需要的工作非常繁杂,需要提前采集学生的照片信息,并且对照片进行统一格式的处理,再训练人脸识别的模型。但不可否认的是,人脸识别的考勤方式不仅方便、效率高、准确性高,而且极大程度上杜绝了代签到的情况。因此,人脸识别的考勤方式未来必将成为一种主流的考勤方式,虽然人脸识别技术的发展已经非常快速,但人脸识别的考勤方式仍然存在许多待解决的问题。例如怎样避免学生通过个人照片进行识别打卡、怎样降低光照、角度、遮蔽物这些因素对识别结果造成的影响,等等,这些都是现在亟待解决的问题。

猜你喜欢

考勤人脸人脸识别
国有企业考勤管理的问题和对策探究
人脸识别 等
有特点的人脸
玻璃窗上的人脸
人脸识别的“国标”来了
事业单位人员考勤管理存在的问题及对策
三级甲等医院应用PDCA循环提升考勤管理的创新
人脸识别技术研究与应用进展概述
荣耀畅玩7C:人脸识别
“领家系”可爱脸VS“高冷系”美人脸