基于人脸识别的智慧教室签到管理子系统

2019-01-02 09:01张良杰
软件 2019年12期
关键词:智慧教室人脸识别二维码

摘  要: 传统的课堂到课签到管理方式多为教师或学委点名,该方式费时费力,容易引发替点、代课现象和教师不识学生现象,学生考勤签到的电子化、智能化势在必行。分析了常见的电子化考勤签到管理方案,设计一种基于人脸识别的智慧教室签到管理子系统,通过人脸识别、座位二维码扫描和课堂现场随机码校验的三部曲,在尽可能的降低现有教室改造程度基础上,完成学生上课签到管理的信息化及智能化。

关键词: 人脸识别;智慧教室;签到管理;二维码;随机码

中图分类号: TP3    文献标识码: A    DOI:10.3969/j.issn.1003-6970.2019.12.030

本文著录格式:张良杰. 基于人脸识别的智慧教室签到管理子系统[J]. 软件,2019,40(12):133139

Wisdom Classroom Check-in Management Subsystem Based on Face Recognition

ZHANG Liang-jie

(Department of Information Engineering, Fujian Agriculture And Forestry University Dongfang College, Fuzhou 350715, China)

【Abstract】: The traditional way of classroom check-in management mostly make a roll call by teachers or commissary in charge of studies. This way is time-consuming and laborious. It is easy to cause substitution and the phenomenon of teachers do not recognize students. The electronic and intelligent check-in of student attendance is imperative. We analyzed common electronic attendance check-in management solutions, and design a wisdom classroom check-in management subsystem based on face recognition. Through the trilogy of face recognition, seat QR code scanning and random code verification, the informationization and intelligence of students' check-in management are completed on the basis of minimizing the degree of existing classroom renovation as much as possible.

【Key words】: Face recognition; Wisdom classroom; Check-in management; QR code; Random Code

0  引言

大学生一直以来是被小到家庭大到社会国家都寄予厚望的一个群体,代表着国家和民族的未来和希望。然而当今大学已不再是过去辉煌的象牙塔,厌学逃课之风席卷各大高校。据有关调查表明,在校大学生中,逃过课的学生人数占到85%,从未逃过课的仅占15%,同时还发现,从未逃过课的学生大多为大一新生,而大二以上的学生逃课现象严重。

传统的课堂到课签到管理方式多为教师或学委点名,喊到谁的名字该学生就答到,然而该方式费时费力,学生人数众多时,比如马哲、毛概之类的一两百人的大课,要么抽点,要么花费更多时间点名,况且效果不佳,一声“到”,只闻其声不见其人,替点现象随之出现,更有甚者,出现了“代课”的市场,一节课10元到50元不等,实乃教育之哀矣!该方式还存在另一个问题,教师上了一学期的课,对大多数的学生的名字和人对不上,想要知道某个学生是谁或者某个学生有没有来时,就只能通过问其他同学了。因此,依托高校信息化的建设,学生考勤签到的电子化、智能化势在必行。

早在几年前,签到管理应用已经出现,类似于阿里巴巴的钉钉,服务于各企业的打卡服务如雨后春笋般而出,它们的共同特点是定位打卡,然而定位的方式很容易就被破解了,通過伪造GPS数据绕过定位机制,而且在室内定位并不精确,显然用于学生考勤签到略显鸡肋。

在学术界,涉及考勤签到管理,特别是学生课堂的签到管理,国内外学者早已研究多年。主要的方法有:运用Arduino和RFID射频标签结合创建签到记录[1];通过内置蓝牙智能芯片的学生校园卡标识签到[2];通过扫描指纹然后判断GPS定位是否在指定范围内判断出席还是缺席[3];结合RFID技术和人脸识别进行在场确认[4];对标识学生的二维码进行扫描识别来进行课堂签到[5];或者单纯使用人脸识别进行签到的[6-7];也有直接利用各高校教室已部署的监控摄像头进行人脸识别从而进行上课考勤管理[8]。这些方法都在一定程度上解决了考勤签到问题,推动了考勤签到的电子化、智能化的发展,然而也存在些许缺陷,要么部署RFID识别器、指纹扫描机等硬件设备繁琐、成本高,要么考勤签到过程需要排队、浪费时间,要么识别不够准确,比如直接利用各高校教室已部署的监控摄像头进行人脸识别就有可能因为光线、摄像头分辨率等原因造成后面几排的学生无法识别人脸,并且这些方法大多都不能很好的预防代签到现象,更无法解决教师不识学生现象。

本文设计一种基于人脸识别的智慧教室签到管理子系统,关注课堂上的签到,通过人脸识别、座位二维码扫描和课堂现场随机码校验的三部曲,在尽可能的降低现有教室改造程度基础上,完成学生上课签到管理的信息化及智能化,学生亦可以通过本系统查看自己的课程表和签到记录,对于出勤率低于学校规定的课程云服务会通过App提醒学生,教师也可以通过本系统及时了解学生到课情况以及实时的签到座位表,便可以一定程度上解决替点、代课现象和教师不识学生现象。

1  人脸识别

人脸是人体结构的一个重要的组成部分,形成了独特的生物特征,相对于其他生物特征,比如:指纹、掌纹、声音、虹膜、步态等等,人脸并不需要额外的动作配合,它就在那里,能更加便捷的进行采集用于生物特征识别。人脸识别技术是计算机视觉领域的典型应用,特别是近年来,随着技术的发展成熟,被广泛用于门禁、考勤、酒店、机场等各应用领域,甚至于超市的自助收银台也开始大规模的部署人脸识别应用。

广义的人脸识别包括图像采集、人脸检测、人脸对齐、特征表示等过程[9]。人脸识别的典型流程主要包括:人脸检测、特征定位、预处理、特征提取、特征对比、决策判断等阶段。

人脸识别应用的核心是特征提取,过去几十年,全世界的研究者们提出了很多非常有效的特征提取和人脸识别算法,极大的促进了人脸识别技术的发展。最经典的算法有LBP(Local Binary Patterns,局部二值模式)、HOG(Histogram of Oriented Gradient,方向梯度直方图)、PCA(Principal Component Analysis,主成分分析)、LDA(Linear Discriminant Analysis,线性判别分析)、SVM(Support Vector Machines,支持向量机)等等。有单独应用这些算法进行人脸识别的,也有结合若干算法比如PCA、LDA和SVM融合进行特征提取和识别的[10],也有采用一些较新的方法比如结合曲波变换和轮廓波变换提取特征然后用SVM进行分类识别的[11],也有基于三元组损失函数的改进型OpenFace开源深度学习网络进行识别的[12],等等,这些的研究成果都在不断的提高人脸识别的识别率和便利性。

就本系统而言,由于人脸图像的获取是在手机端,总体上分为三个阶段:人脸检测、活体检测、识别验证。从开发的角度,业界广泛应用开源的开发框架OpenCV和dlib进行开发,已经有轮子了就不需要重复自己造轮子。本系统的人脸识别功能的开发也是基于OpenCV和dlib进行。

1.1  人脸检测

人脸检测是第一步,手机终端App通过摄像头(前置)获取视频流,首先要通过视频流检测到人脸才能进行后续的动作,未经人脸检测的活体检测和识别验证毫无意义,并且浪费时间和资源。

人脸检测是目标检测的一种应用,主要依照人脸的眼睛、鼻子、嘴巴、下巴、眉毛等脸部特征。OpenCV主要采用基于Haar-Cascade的人脸检测,可以实时工作在CPU上,但检测错误情况会时常出现,比如把非人脸检测成人脸,在OpenCV 3.3之后的版本中引入了新的基于DNN的人脸检测,提高了识别率。dlib在人脸检测上相对优于OpenCV,基于68个特征点的特征提取可以很精确的检测出人脸,如图1所示,dlib有两种运行模式,一种是运行于CPU上的HOG算法模式,另一种是运行于GPU上的CNN算法模式。

图1  dlib的人脸68个特征点

Fig.1  68 feature points of face in dlib

而现代的智能手机大都可以利用自带相机硬件所支持的人脸检测模式去检测人脸,以Android为例,Android 5.0版本开始引入了新的camera2 API,相较于旧的camera API,配合HAL3有更先进的API架构和摄像体验。在camera2 API中内置了人脸检测模式,如表1所示。

表1  camera2 API的人脸检测模式

Tab.1  Face detection mode of camera2 API

模式 支持程度

STATISTICS_FACE_DETECT_MODE_FULL 完全支持

STATISTICS_FACE_DETECT_MODE_SIMPLE 简单支持

STATISTICS_FACE_DETECT_MODE_OFF 不支持

本系统的人脸检测部分采用camera2 API和OpenCV结合的方式,在手机本身具备简单或完全支持模式时采用camera2 API方式最快最有效率的检测,否则切换到OpenCV的检测模式。

1.2  活体检测

在安全日益成为全球性问题的当今,人们对系统的安全性也更加的关注,人脸识别就像传统的信息系统一样容易受到攻击,而活体检测就是用来阻止人脸攻擊,可想而知,诸如支付宝之类的金融应用,如果被有心人盗用他人信息用一张假脸登录、支付,那可是很可怕的事情。

主要的人脸攻击的手段有三种:照片攻击(包括纸质照片和电子屏幕上的照片)、视频攻击、面具攻击或3D人脸模型攻击。而面具攻击或3D人脸模型攻击相对难度较大,因而一般的非金融应用的活体检测主要是杜绝照片攻击和视频攻击。主要是通过图像或视频的质量、颜色纹理、材料、运动变形等方面判别是活体还是非活体,或者说是真脸还是假脸。

在过去的若干年,专家学者们提出了一些方面用来进行活体检测,比如:通过提取经过高斯滤波后的峰值信噪比、均方误差、结构相似度等8维度的图像质量评估指标,通过二次判别分析进行判别是真脸还是假脸[13];通过高光反射、颜色差异性、模糊性等进行图像失真分析,然后结合K均值聚类和SVM进行判别是真脸还是假脸[14];结合HSV空间的人脸多级LBP特征和YCbCr空间的人脸LPQ特征,然后通过SVM进行判别是真脸还是假脸[15];通过眼睛的长宽比检测是否眨眼来判别是真脸还是假脸[16];通过角度径向变换提取特征来判别是否是3D人脸模型攻击[17]。当然还有直接采用深度学习的方式进行活体检测,这些都极大的促进了活体检测技术的进步。

本系统通过结合如式(1)的峰值信噪比和如式(2)的结构相似度来训练SVM进行图像质量评估,主要用来判别是否是照片攻击和视频攻击,再通过如式(3)的眼睛长宽比检测眨眼来最终判别是真脸还是假脸。本系统的活体检测基于OpenCV实现。

(1)

(2)

(3)

1.3  识别验证

在人脸检测和活体检测全部通过后,最后就要进行识别验证了。

本系统的人脸检测和活体检测全部是通过手机终端App进行,但受限于手机的运算资源,真正的识别验证必然要放在云端(或服务器端)为佳,因而采用基于dlib的开源人脸识别库face_recognition搭建人脸识别环境,face_recognition对dlib调用进行封装,提供了简单易用的命令与接口,它在LFW人脸数据库上测试有高达99.38%的识别率,可以说是功能强大又易上手的开源人脸识别库。

识别验证的流程如图2所示。对于图2描述的获取128维人脸特征向量的具体流程如图3所示。

图2  face_recognition识别验证流程

Fig.2  Face_recognition verification process

图3  获取128维人脸特征向量流程

Fig.3  Get 128-dimensional face feature vector process

2  系统总体架构与模块

本系统由基于Android的学生终端、基于云端的存储与计算服务和基于Web的管理端三大模块构成,总体架构如图4所示。

2.1  基于Android的学生终端

Android的终端App由登录模块、签到模块、历史统计模块、课程表模块以及设置和个人信息管

理模块构成,App首页如图5所示。在本终端的签到(核心)模块中,采用了签到验证三部曲,即人脸识别、座位二维码扫描、课堂现场随机码校验,人脸识别如图6所示,成功后需要在1分钟内完成后续的扫描座位二维码和输入现场随机码,否则本次的人脸识别就失效了,目的是尽可能的防止替点或代签到现象,如图7所示。本App终端采用Android 5.0版本以后引入的camera2 API和OpenCV结合的方式,调用摄像头(前置)进行人脸检测,将检测到的人脸视频流以多帧静默拍照后进行活体检测,活体检测通过后传送到云端进行识别验证。在座位二维码扫描方面,App终端采用成熟的Google开源框架ZXing调用摄像头进行二维码的扫描识别。

图4  系统总体架构

Fig.4  System architecture

图5  App首页

Fig.5  Home page of App 图6  App的人脸和活体检测

Fig.6  Face and live detection of App 图7  1分钟内完成签到

Fig.7  Check-in within 1 minute

2.2  基于云端的存储与计算服务

从技术上,云服务分为两大部分,一部分是采用基于dlib深度学习模型的开源人脸识别库face_ recognition搭建人脸识别环境,然后使用Python语言编写socket多线程服务接口接收终端App的人脸识别请求,另一部分是采用Linux+Tomcat+MySQL+ Java架构搭建基于HTTP的Web接口服务,Linux操作系统高效、安全、稳定,采用了主流开源的MySQL作为底层数据存储,体积小、效率高、可移植性强,在MySQL数据库之上建立DAO层、业务逻辑和模型层以及接口层,以JSON为数据格式为App终端和Web终端提供基于HTTP的Web接口服务。基于成熟LTMJ架构的云服务,提供了稳健、可靠的云端存储与计算,Web服务接口设置基于timestamp+key的权限验证,能在一定程度上保障了接口调用的安全。云服务的架构如图8所示。

图8  云服务架构

Fig.8  Cloud service architecture

2.3  基于Web的管理端

Web管理端采用HTML+CSS+JavaScript实现,采用前后端分离架构,通过jQuery框架的Ajax方式请求云服务所提供的接口。Web管理端的使用者分為两类,一类是管理员,可以对学生、教师等人员信息进行管理,可以进行课程、教室以及课程表的管理,可以对系统进行全局参数设置;另一类是教师,可以查看更新自己的个人信息,可以查看自己的课程表,如图9所示,可以对每次课发布现场随机码,如图10所示,并查看实时签到座位表,如图11所示。

图9  教师个人的课程表

Fig.9  Teacher's personal curriculum

图10  教师通过Web管理端发布课堂现场随机码

Fig.10  Release random code of classroom through web

图11  实时签到座位表

Fig.11  Real time check-in seat list

3  系统的其他关键技术

系统所涉及到的其他相关关键技术主要有座位二维码生成识别算法、出勤率低的提醒技术、学生签到有效性验证算法、课程是否是当前时间正在上课的判别方法等。

3.1  座位二维码生成识别算法

二维码是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息。一维码存储信息有限,二维码成为了补充和替代一维码的一种方案,但二维码并非只有一种编码方式,常见的码制有Data Matrix、MaxiCode、Aztec、QR Code、Vericode、PDF417、Ultracode、Code 49、Code 16K等等,不同的码制在信息密度、校验功能等方面都有相应差异。最常见、使用最广泛的要数QR Code二维码了,它具有识读速度快、信息容量大、占用空间小、保密性强、可靠性高的优势。本系统的座位二维码所使用的也是QR Code码。

在座位二维码的生成算法上,考虑到二维码的信息是公开的,不必做复杂的加密,但直接以明文的方式生成又显得简单暴露,最终采取了基于Base64编码的生成算法。因座位二维码需要包含教室信息(教室编号)和座位信息(座位编号),故而把教室信息和座位信息利用“@”进行合成形成原始字符串,例如字符串“56@E301”就表示E301教室的56号座位。有了原始字符串后,首先采用md5算法获取原始字符串的散列值,然后把32位的散列值按8位形成前后四个部分,分别与原始字符串拼凑形成新的字符串,最后通过Base64编码获得最终的编码字符串,例如原始字符串“56@E301”,就有了以“56”、“@”、“E301”分隔开的四个位置,把md5的32位散列值按8位分别插入形成新的字符串,最后通过Base64编码得到编码字符串为“YTkwM2I0 YzM1Njc1MTMyMDdjQGQxMjg4MGFhRTMwMW YxNDEyMTRm”,有了编码字符串,就可以通过网上很多免费甚至开源的二维码生成工具生成二维码图案,本系统采用Google开源框架ZXing生成。座位二维码生成算法如图12所示,识别算法反之即可。

3.2  出勤率低的提醒技术

保障学生的课堂出勤率便是签到管理系统的意义所在,所以本系统设计之初就考虑了对于出勤率低于学校规定的课程,云服务会通过App提醒学生。

主要通过课程的已完成学时和学生签到次数(默认是一次课即两节课签到一次,或者按照后台管理设置的课程属性规定)进行对比,超过两次(即三次及三次以上)或者后台管理设置规定次数则向该学生的终端App推送提醒信息,如图13所示。学生通过App的提醒信息模块查看违规课程并及时联系任课老师进行相应处理,如图14所示。

3.3  学生签到有效性验证算法

签到功能是在学生的Android终端App上实现,虽然已经采用人脸识别、座位二维码扫描、课堂现场随机码校验的签到验证三部曲,但由于相近专业甚至是相近年级的班级都有可能同一学期上同一门课,即便是同一个班的同一门课也可能被安排在同一天甚至是同一间教室,为了保证签到的有效性,防止非法签到,在云服务端需要对每次的签到进行有效性验证。首先判别学生的专业、年级以及输入

图12  座位二维码生成算法

Fig.12  Seat QR code generation algorithm

图13  向学生的终端App推送提醒信息

Fig.13  Push reminders to students' App

图14  提醒信息模块查看违规课程

Fig.14  Remind information module to view record

的现场随机码是否与该课程匹配,然后判别签到的教室和当前的星期是否与该课程匹配,最后判别签到时间是否在该课程上课前10分钟和上课后5分钟内,即每次课的签到只有15分钟时间,例如某课程08:00上课,则有效签到时间是07:50到08:05之间,目的是为了防止学生过早的签到和迟到现象,而且签到需要教师发布的课堂现场随机码,正常情况下教师会提前5到10分钟到达教室。算法如图15所示。

图15  学生签到有效性验证算法

Fig.15  The algorithm for verifying the

validity of student check-in

3.4  课程是否是当前时间正在上课的判别方法

教师通过Web终端查看自己的课程表,点击课程表的课程进入签到管理页面需要判别该课程是否是当前时间正在上课的课程,判别标准是当前的星期是否匹配,以及当前时间是否在该课程上课时间的前10分钟和后95分钟内(一节课45分钟,两节课加课间5分钟为95分钟,或者按照后台管理设置的课程和课间时间)。若不是当前時间正在上课的课程,教师无法进入该课程进行查看实时的签到座位表以及随机码发放和已上学时的管理,如图16所示。

图16  教师无法进入不是当前时间正在上课的课程

Fig.16  Teachers cannot enter courses that

are not currently in class

4  结语

在考勤签到管理日益重要,电子化、智能化日益流行的今天,本文设计了一种基于人脸识别的智慧教室签到管理子系统,关注课堂上的签到,通过人脸识别、座位二维码扫描和课堂现场随机码校验的三部曲,在尽可能的降低现有教室改造程度基础上,完成学生上课签到管理的信息化及智能化。通过本校2017级计算机科学与技术专业的实际课程的使用情况,效果良好,综合人脸识别成功率达到98.6%,有个别由于光线角度等原因需要二次识别。签到管理子系统作为智慧教室系统中重要的子系统,也是智慧校园重要的组成部分,在未来的研究中我们考虑到还可以加入相应的扩展,比如课程及教室智能管理、教室设备智能管理、学生学情分析等等,进一步增强系统的功能和实用性。

參考文献

[1]Hameed S, Saquib S M T, Hassan M U, et al. Radio Frequency Identification (RFID) Based Attendance & Assessment System with Wireless Database Records[J]. Procedia-Social and Behavioral Sciences, 2015, 195: 2889-2895.

[2]Lodha R, Gupta S, Jain H, et al. Bluetooth Smart Based Attendance Management System[J]. Procedia Computer Science, 2015, 45: 524-527.

[3]Nagothu S K, Kumar O P, Anitha G. GPS Aided Autonomous Monitoring and Attendance System[J]. Procedia Computer Science, 2016, 87: 99-104.

[4]Khaled Mohammed, A. S. Tolba, Mohammed Elmogy. Multimodal student attendance management system (MSAMS)[J]. Ain Shams Engineering Journal, 2018, 9: 2917–2929.

[5]王龙. 基于二维码的课堂签到管理系统设计与实现[J]. 软件工程, 2019, 22(06): 13-16.

[6]牛亚运, 仲梁维. 融合人脸识别与数据分析的智能签到系统设计[J/OL]. 软件导刊: 1-6[2019-07-25]. http: //kns. cnki. net/kcms/detail/42. 1671. TP. 20190624. 1359. 034. html.

[7]吴美香, 邓园园, 裴枫华, 余松森, 潘家辉. 基于人脸识别的移动课堂考勤系统的设计与实现[J]. 软件, 2018, 39(01): 5-8.

[8]吴宗胜. 基于人脸识别的课堂视频考勤系统设计[J]. 物联网技术, 2019, 9(06): 87-89.

[9]景晨凯, 宋涛, 庄雷, 刘刚, 王乐, 刘凯伦. 基于深度卷积神经网络的人脸识别技术综述[J]. 计算机应用与软件, 2018, 35(01): 223-231.

[10]徐竟泽, 吴作宏, 徐岩, 曾建行. 融合PCA、LDA和SVM算法的人脸识别[J]. 计算机工程与应用, 2019, 55(18): 34-37.

[11]Suparna Biswas, Jaya Sil. An efficient face recognition method using contourlet and curvelet transform[J]. Journal of King Saud University - Computer and Information Sciences, 2017.

[12]Kevin Santoso, Gede Putra Kusuma. Face Recognition Using Modified OpenFace[J]. Procedia Computer Science, 2018, 135: 510-517.

[13]Fernandes S L, Bala G J. Developing a Novel Technique for Face Liveness Detection[J]. Procedia Computer Science, 2016, 78: 241-247.

[14]T. Faseela, M. Jayasree. Spoof Face Recognition in Video Using KSVM[J]. Procedia Technology, 2016, 24: 1285-1291.

[15]Boulkenafet Z, Komulainen J, Hadid A. Face Spoofing Detection Using Colour Texture[J]. IEEE Transactions on Information Forensics and Security, 2016.

[16]Tereza S, Jan C. Real-Time Eye Blink Detection using Facial Landmarks[C]. 21st Computer Vision Winter Workshop, 2016.

[17]Hamdan B, Mokhtar K. The detection of spoofing by 3D mask in a 2D identity recognition system[J]. Egyptian Informatics Journal, 2017: S1110866517303067.

猜你喜欢
智慧教室人脸识别二维码
人脸识别 等
二维码
揭开人脸识别的神秘面纱
让严肃的二维码呆萌起来
浅谈未来教室
浅谈基于智慧教室环境下小学数学课堂教学的应用与实施
二维码,别想一扫了之
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别