基于人脸识别的自动课堂考勤系统的 设 计 与 实 现

第35卷第6期滨州学院学报2019年12月Vol.35,No.6Journal of Binzhou University Dec.,2019
基于人脸识别的自动课堂考勤系统的
设计与实现
宋锋1詁,刘瑞歌1
(1.滨州学院信息工程学院;2.滨州市智能制造工程技术研究中心,山东滨州256603)
摘要:为解决手工点名签到中存在的代人签到、费时费力以及指纹、虹膜等生物签到技术的使用难度大、不够方便的问题,使用Visual Studio2017集成开发平台,基于Entity Frame-work框架,利用Emgu CV图像库,开发了一套基于人脸识别的自动课堂考勤系统。在分析几种人脸识别算法以及Emgu CV图像处理库的基础上,设计了系统整体结构,阐述了系统的实现步骤及关键功能的实现技术。在实时的视频中,该系统可实现多人的自动检测、识别和考勤功能。
关键词:课堂考勤;自动考勤;人脸检测;人脸识别;Emgu CV库
档案管理系统中图分类号:TP391文献标识码:A EXDI:10.13486/jki.1673-2618.2019.06.015
高校课堂是学生学习知识、培养能力、提高个人综合素质的主要场所高的出勤率是教学效果的基础保障。课堂考勤是保证学生出勤率的有效措施,考勤记录可以让学生了解自己的学习出勤过程,也可以让教师及学校的管理人员了解学生的学习出勤情况。现在常用的课堂考勤主要是传统的教师按学生名单点名的方式,但是由于所教的班级较多,每个班级的学生较多,教师难以认识所有的学生,这使得学生代人上课、代人签到的情况时有发生。此外,手工点名的方式会造成课堂时间的浪费。为解决这些问题,出现了采用生物识别技术(如指纹図、虹膜间等)进行考勤的系统,但是指纹、虹膜等识别技术既要使用专业的设备,又要进行接触式的信息采集与检查,工作效率低,使用中也有诸多不便。非接触性人脸识别技术不仅使用非常方便,而且现在已经能进行准确率非常高的实时识别。为解决传统点名及指纹、虹膜等点名方式的问题,本文设计了一套基于人脸识别的自动课堂考勤系统(Automatic Classroom Attendance System Based on Face Recognition,简称ACASFR),该系统使用Visual Studio(VS)2017集成开发平台,利用Emgu CV图像处理库,对学生的人脸信息进行采集、训练、建立上课学生的人脸库,使用Entity Frame-work(EF)这个ORM框架,将系统所有的信息都存储在MS SQL Server2014数据库中,实现了教师信息、教师学期课程信息、班级信息、班级中的学生信息、课程中的学生信息的管理与维护,教师课堂考勤及考勤历史的查询统计等功能。
1人脸识别算法与图片处理库
ACASFR使用了几种常用的人脸识别算法,使用Emgu CV图像处理库,在实时视频图像中进行人脸的
检测与识别,本节对系统中用到的几种人脸识别算法和Emgu CV库进行简单介绍。
收稿日期:2019-06-19
基金项目:滨州学院双服务项目(BZXYSFW201706)
第一作者简介:宋锋(1979—),男,河北枣强人,讲师,硕士,从事计算机软件与理论、计算机视觉、图像检测与识别研究。E-mail:songfengl63@126
・90・
第6期宋锋,刘瑞歌基于人脸识别的自动课堂考勤系统的设计与实现
1.1EigenFace
EigenFace是在人脸识别的计算机视觉问题中使用的一组特征向量的名称。利用EigenFace进行识别的方法是Sirovich和Kirby开发的⑷,并被Matthew Turk和Alex Pentland在人脸分类中使用1X1。特征向量来源于人脸图像高维向量空间上概率分布的协方差矩阵。EigenFace本身构成了所有用于构造协方差矩阵的图像的基集。实现EigenFace的过程其实就是进行Principal Component Analyse(PCA)的过程,用于简化问题的处理,处理过程如下:在二维空间坐标内,到1个单位向量U,使得所有的数
据的在U上的投影之和最大。这样就能把数据尽可能分开,然后把训练样本和测试样本也都投影到单位向量U 上,计算这个样本与各个投影人脸之间的欧式距离,得出最小欧式距离的样本编号,就是最大概率的人脸0 1.2FisherFace
教师是园丁
Fisherface是由Ronald Fisher提出的⑷。Fisherface基于线性判别分析LDA(Linear Discriminant Analysis)理论,与EigenFace里面用到的PCA理论有相似之处,都是对原有数据进行整体降维映射到低维空间的方法,LDA和PCA都是从数据整体入手。LDA的降维步骤如下:
(1)计算数据集中每个类别样本的均值向量;
(2)通过均值向量,计算类间散度矩阵S b和类内散度矩阵S”;
(3)对S^S b W=AW进行特征值求解,求出S歩S b的特征向量和特征值;
(4)对特征向量按照特征值的大小降序排列,并选择前K个特征向量组成投影矩阵W;
(5)通过DXK维的特征值矩阵将样本点投影到新的子空间中,Y=XXW。
总的来说,LDA的中心思想就是最大化类间距离,最小化类内距离。由于LDA利用了类成员信息并抽取了一个特征向量集,该特征向量集强调的是不同人脸的差异而不是照明条件、人脸表情和方向的变化。
因此,相比EigenFace,采用Fisherface方法识别人脸,对光照、人脸姿态的变化更不敏感,有助于提高识别效果。
1.3LBPHface
LB玖Local Binary Pattern,局部二值模式)是一种用来描述图像局部特征的算子,由Ojala,Pietikain-en和Harwood"期提出,LBP特征具有灰度不变性和旋转不变性等显著优点。LBP特征计算简单、效果较好,在计算机视觉的许多领域都得到了广泛的应用,LBP特征比较出名的应用是用在人脸识别和目标检测中。
LBPH(Local Binary Patterns Histograms,LBP特征的统计直方图)是将LBP特征与图像的空间信息结合在一起。这种表示方法由Ahonen等⑷提出,他们将LBP特征图像分成加个局部块,提取每个局部块的直方图,然后将这些直方图依次连接在一起形成LBP特征的统计直方图LBPH。
1.4CascadeClassifier
CascadeClassfier中文名称为级联分类器,是将若干个分类器进行连接,构成的一种多项式级的强分类器。级联分类器使用前要先用目标的特征值去训练,对于人脸来说,通常使用Haar特征进行训练。
Haar特征是由Oren等皿」首次提出的,Messom和Barczak经过改进与发展,提出了积分直方加速Harr
特征的计算方法E11],Lienhart和Maydt等提出了Haar特征的多个模板种类问,后逐步形成OpenCV库中的Haar分类器。Haar特征也称为Haar-like特征,是一种简单且高效的图像特征。
1.5Emgu CV图像处理库
Emgu CV是OpenCV图像处理库的跨平台.NET包装器。OpenCV的全称是Open Source Com­puter Vision Library(开源计算机视觉库),它是专为计算效率而设计的,特别注重实时应用。它是用优化的C/C++编写的,可以利用多核处理。在图像处理方面,对开发人员来说是非常有益的〔词。
Emgu CV允许从.NET兼容语言(如C、VB、C#、VC++、Ironpython等)调用OpenCV函数。包装器可以由Visual Studio、Xamarin Studio和Unity编译,可以在WindowsLinuxMac OS X、iOS、Android
•91•
滨州学院学报
第35卷
和 Windows  Phone  上运行。
OpenCV 图像库中封装了一些常用的图像处理算法,例如EigenFace ,FisherFace ,LBHFace ,Cascade- Classifier, 在使用时,调用对应的类和方法即可。Emgu  CV 包装了 OpenCV 库,在Emgu  CV 库中也可以
方便地调用上述几个算法来实现人脸检测、模型训练及人脸识别等功能。
2系统的体系结构设计
ACASFR 可以使用任何类型的摄像头,使用人脸识别算法和Emgu  CV 图像库,从实时视频中自动进
行人脸检测、人脸识别与考勤工作,所实现的核心功能如下:创建与维护院系信息、班级信息、教师学期课
程信息;创建班级中学生基本信息,采集人脸图像信息;在实时的监控视频中自动进行人脸检测;利用上一 节所述的几类人脸识别算法进行人脸识别;根据识别出的人脸,在数据库中查询出对应的学生信息,并记 录考勤状态;管理员、教师可以查看考勤历史记录与考勤统计信息,学生可以查看自己的考勤历史记录信
息。
考虑了系统管理的方便性与有效性,还要增加管理员用户信息的管理、教师用户信息的管理、系统的
基本使用信息的管理、常用的一些字典信息的管理、学生图像信息的采集及人脸识别模型的训练等功能, ACASFR 逻辑上由4个层次构成,其整体结构设计如图1所示。
教师端
学生端
肉蒲之极乐宝鉴
看个人考勤
改登录密畀
录系统
勤信息统计
东乡论坛
勤信息査询 课
堂考勤
学生信息管理
期课程维「
改个人信息
修改登录密畀
销切换用『 登录系统
勤信息统『
勤信息査询
生信息管理 班
级信息管齐
用字典信息管理
系信息管理
统基本信息设置
师用户管畀
理员用户管理
修改登录密畀
注销切换用『 登录系统
Entity  Framework 框架数据缓存
髦羈务
羯傅零橙彈恤瓣訓嚳鬻
ADO.NET 技术操作数据库中的表
数据库缓存
数据库层
體教师表覽制院系表字典表班级表饕学生表驟考勤表
支持环境层操作系统及网络通信协议(TCP/IP)
图1 ACASFR 体系结构
(1) 支持环境层:系统采用C/S 结构运行于操作系统之上,利用网络通信协议(TCP/IP)与数据库服
务器进行通信。
(2) 数据库层:使用SQL  Server  2014数据库管理系统进行数据库管理,这个层次提供了 ACASFR 使
用的数据表及查询视图。
(3) 实体与业务逻辑层:该层基于EF 框架,实现了对数据库中的各个数据表的实体映射,并生成了对
单子论应的业务逻辑类,经过EF 框架映射后,对数据库的CRUD 几类操作,可以通过操作EF 实体类及业务
逻 辑类来完成。EF 框架基于ADO. NET 技术,可以将对EF 业务类的操作转换成ADO. NET 技术对数据
• 92
第6期宋锋,刘瑞歌基于人脸识别的自动课堂考勤系统的设计与实现
库中的数据表的操作,提高了开发效率。使用EF框架还可以将数据库中数据表结构的更新快速地更新到EF的实体类及业务类上,进一步提高开发效率。
(4)应用表示层:该层是各个具体功能的实现,该层通过调用基于EF框架的实体类与业务类,实现对数据库中数据表的CRUD操作,在执行查询时,还可以使用EF框架的数据缓存来提升查询效率。
3系统关键功能的实现西元国际广场
ACASFR的实现过程如下:
(1)在SQL Server2014数据库管理系统中建立名为kaoqindbr的课堂考勤数据库,并创建各个数据表及组合查询视图。
(2)在VS2017中创建kaoqin项目,并添加EF5.x DbContext生成器,按向导选择kaoqindb数据库所有的数据表,生成各个EF实体类及业务逻辑类。
(3)创建各个交互界面,完成管理员信息、院系信息、班级信息、系统基本信息、教师信息、教师学期课程信息、常用的字典表信息等各个基础模块功能。
(4)在学生管理模块中,完成学生基本信息功能,添加学生人脸信息,人脸信息可以使用摄像头采集,也可以使用学生的证件头像照片,将图片信息以二进制方式存储到数据库中。
(5)在学生基本信息及学生的人脸图像信息采集完成后,从数据库中将班级学生人脸信息下载到本地的电脑上,同时自动使用前面所述的几类常用算法进行人脸模型的训练,并生成本地的人脸模型数据。
(6)在上课时,ACASFR根据教师的学期课程信息、系统基本信息中设置的当前学期的开始日期,计算出当天的课程表信息。教师点击自己的课程表进行考勤,可以采取自动考勤和手动考勤两种方式。自动考勤使用摄像头中的实时视频,进行多人在线人脸检查及考勤,检测到的学生标记为正常出勤,未检测到的学生可以使用手工考勤模块进行考勤。
(7)学校管理人员及教师可以及时地查看各门课程的出勤统计情况,学生也可以查看自己的出勤历史记录情况。
ACASFR中的实时视频监控与定时图像采样、人脸分类器的训练、多尺度人脸检测、人脸识别、课堂考勤为系统中的关键技术问题。
3.1实时视频监控与定时图像采样
在采集与建立学生人脸信息库、课堂考勤过程中,都需要进行实时视频监控与定时图像采样的处理过程,该处理过程的工作流程如下:
(1)设置时钟1的定时间隔为0.1s,这样设置保证不造成死循环,方便后面的定时图像采样;
(2)定义全局的VideoCapture类的实例cap对象,并通过new VideoCapture()实例化打开摄像头;
(3)若摄像头打开成功,则启动时钟1事件,若摄像头打开不成功,则使用cap.Dispose()释放摄像头对象;
(4)在时钟1事件中通过Mat frame=cap.QueryFrame()方法,捕获一张视频图片,系统会自动利用前面设置的时钟的定时间隔0.1s进行不断的图像采样;
(5)若frame对象不为空,则进入人脸检测与识别处理流程。
3.2人脸分类器的训练
在采集与建立学生人脸信息库完成以后,要进行人脸分类器的训练,训练人脸分类器的流程如下:
(1)使用VectorOfMat images=new VectorOfMat()语句定义存入训练图像的矢量并进行实例化;
(2)使用VectorOflnt labels=new V ectorOflnt()语句,定义保存训练图像标签的矢量并进行实例化;
(3)遍历存放学生人脸图像的文件夹,将所有学生的图像(图像的宽和高都是100像素)存入images,
•93•
滨州学院学报第35卷
学生的ID存入labels;
(4)使用FaceRecognizer model定义一个人脸识别器,使用1.1~1.3节的某个算法进行实例化,这里以FisherFaceRecognizer()为例来实例化人脸识别器模型;
(5)使用model.Train(images,labels)方法来训练人脸识别模型;
(6)使用mode.write("l")将训练好的模型数据存入到pic文件夹的l 文件中去。
3.3多尺度人脸检测
Emgu CV封装器中提供了多尺度检测人脸的方法,可以在一张图像中检测到多个人脸信息,ACAS-FR系统中进行多尺度人脸检测的流程如下:
(1)使用CascadeClassifier face_cascade=new CascadeClassifier("haarcascade_frontalface_default. xml")语句生成级联分类器的实例;
(2)使用Cvlnvoke.CvtColor(img,frameGray,ColorConversion.Bgr2Gray)将3.1节采样的彩图像转换为灰度图像;
(3)使用Cvlnvoke.GaussianBlur(frameGray,frameGray,new Size(3,3),0,0)语句进行高斯滤波,减少灰度图像中的噪声;
(4)使用Rectangle[]facesDetect=face_cascade.DetectMultiScale(frameGray,1.3,2,new Size (80,80))语句进行多尺度人脸检测,并将检测结果存入一个矩形数组,以便于接下来的人脸识别。
3.4识别人脸
识别人脸的流程如下:
(1)遍历3.3节检测到的矩形数组facesDetect,定义当前的遍历变量为Rectangle face;
(2)使用Cvlnvoke.Rectangle(currentimage,face,new MCvScalar(0,255,0),2)为人脸标注出绿矩形边框;
(3)使用Mat imageFace=new Mat(frameGray,face).CloneO拷贝生成一份灰度人脸区域,识别时要使用灰度人脸;
(4)使用Cvlnvoke.Resize(imageFace,imageFace,new Size(100,100)),将图像调整为与训练模型时相同的宽度与高度,值都是100像素;
(5)使用FaceRecognizer.PredictionResult pr=new FaceRecognizer.PredictionResultO定义识别结果类;
(6)使用FaceRecognizer model定义识别模型,并使用1.1〜1.3节的某个算法来实例化model,这里选用的识别类与3.2节训练模型时的类一致,否则会出现错误,故以FisherFaceRecognizer()为例来进行实例化;
(7)使用pr=model.Predict(imageFace)得到识别结果,该结果中包含了识别出的人脸的ID、以及人脸与模型库中人脸的可信度距离两个关键值,在可信度距离高于某个阈值时,认为识别失败,否则认为识
别成功,进入课堂考勤流程。
3.5课堂考勤
在3.4节得到人脸的ID及可信度距离后,进入课堂考勤流程,在可信度距离低于设定的阈值时,认为识别有效,此时利用人脸的ID在EF框架中查询对应的学生信息。因为在识别过程中要反复地查询数据,若一直与数据库通信,会给人脸识别程序、数据库管理系统带来很大的压力;因此本文采取在人脸考勤初始化时,加载一个当前界面内的全局数据列表listStu,用于存入开放系统中的学生信息,在识别过程中的所有查询都是针对这个listStu进行的交互查询,不再连接和访问数据库,提高了程序的运行效率。查询到学生信息后,要更新该学生的信息,此时要连接数据库进行学生出勤状态的实时更新,并将学生的•94•

本文发布于:2024-09-22 19:45:02,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/54022.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:人脸   信息   学生   考勤   进行   图像
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议