基于SeetaFace2人脸识别智慧课堂签到系统设计与实现
2020-05-18王世超崔洪振张伟高静傅田
王世超 崔洪振 张伟 高静 傅田
摘 要:国家和家长对学生教育的重视以及大学生数量的递增,因此各学校需要施行更加方便、可靠的教学措施,来保证教育质量。其中,学生的课堂考勤是保证教育质量的关键步骤。针对传统签到方式存在的缺点,該文设计基于SeetaFace2人脸识别智慧课堂签到系统,通过调用SeetaFace2人脸识别算法进行人脸与照片的对比并得出相似度,通过比较相似度与阈值,实现人脸识别,更好的督促学生上课,保证签到结果的准确性和可靠性。
关键词:SeetaFace2;人脸识别;智慧课堂;签到系统;信息管理
中图分类号:TP273.4 文献标识码:A 文章编号:2096-4706(2020)20-0001-06
Design and Implementation of Smart Class Sign-in System Based on
SeetaFace2 Face Recognition
WANG Shichao1,CUI Hongzhen1,ZHANG Wei1,GAO Jing1,FU Tian2
(1.School of Information Science and Engineering,Zaozhuang University,Zaozhuang 277160,China;
2.College of Intelligence and Information Engineering,Shandong University of Traditional Chinese Medicine,Jinan 250355,China)
Abstract:The state and parents attach importance to student education and the increasing number of college students. Therefore,schools need to implement more convenient and reliable teaching measures to ensure the quality of education. Among them,studentsattendance in class is the key step to ensure the quality of education. In view of the shortcomings of the traditional sign-in method,this paper designs a face recognition smart class sign-in system based on SeetaFace2,through calling the SeetaFace2 face recognition algorithm to compare the face and the photo,and get the similarity,by comparing the similarity and threshold,realize the face recognition,better supervise and urge students to attend class and ensure the accuracy and reliability of check-in results.
Keywords:SeetaFace2;face recognition;smart class;sign-in system;information management
0 引 言
目前,高校中存在多种课堂签到的方式,其中就有课堂点名、打卡点名、指纹识别签到等方式,但是这些方式存在着不同的问题。课堂点名效率低下,存在代替签到现象,占用大量课堂时间;考勤机打卡点名只认卡不认人,会有代替打卡现象;指纹识别考勤,由于干性皮肤、生理脱皮、指纹破损、假指纹等原因,造成很多人无法通过指纹验证和假冒指纹形成虚假考勤[1-4]。人脸考勤运用了人体生物特征技术,不但具有标记唯一的特点,而且易于管理,便于统计,并且准确度、实时性和可操作性都具有一定保证,相对于传统考勤方式,具有显著的优势[5,6]。基于SeetaFace2人脸识别签到系统是由作者设计并开发的,通过人脸识别的方式进行考勤签到的系统,解决了上述考勤方式的不足,实现了高效快速的课堂签到工作,减少课堂时间的浪费,提高学生的出勤率。该系统包括人脸识别考勤功能和学生、教师、课程等基本信息的管理功能,基于SeetaFace2算法完成人脸识别,结合Servlet、DbUtils、EasyUI、jQuery等实现系统功能,具有运行稳定、使用简便、操作灵活等特点。该系统经过大量的测试和修改,已经处于比较完善的阶段并具有投入实际使用的条件。
1 系统概述
1.1 开发环境
本系统采用如表1所示的开发环境。
1.2 开发技术说明
1.2.1 Ajax技术
与传统的应用不同,Ajax采用的是一种异步交互的处理方式。它相当于在浏览器客户端与服务器之间架设了一个桥梁、一个媒介,在它的帮助下可以消除网络交互过程中的处理、等待等缺陷[7]。Ajax异步JavaScript和XML,是一种页面与后台动态交互的网页开发技术,该技术使用CSS和HTML、DOM模型、HttpRequest对象、JavaScript分别完成表示、交互、与服务器通信以及调用等工作[8,9]。通过该技术可以在不重新加载整个网页的情况下,对网页的某部分内容进行更新。
1.2.2 SeetaFace2
由中科院计算所的山世光带领的科研团队研发的SeetaFace2人脸识别引擎是基于C++实现的,且不依赖于第三方库函数的人脸识别系统[10]。其中人脸识别引擎最主要的模块分为人脸检测,人脸对齐,人脸特征提取三步[11],如图1所示。
人脸检测(face detect):在图像中定位出人脸的位置,然后裁剪出包含人脸位置的矩形框,并进行填充、缩放到指定尺寸,对人脸图像进行标准化。
人脸对齐(face alignment):提取人脸关键点坐标,然后使用相似变换或放射变化等变换进行人脸对齐。该步骤目的就是把所有的人脸图片统一到一个固定的正脸姿态和大小,从而提高模型对人脸姿态变化的鲁棒性。
人脸特征提取(extract feature):使用深度学习等方法提取人脸的特征。
2 系统设计方案
2.1 需求分析
开发基于SeetaFace2人脸识别智慧课堂签到系统的目的是提供一个供学生、老师、管理员进行课堂签到、请假、选课以及各种信息管理的平台。因此,基于SeetaFace2人脸识别智慧课堂签到系统最基本的功能首先是能够进行学生、教师、课程、班级、成绩等信息的添加、修改、删除,最重要的是进行人脸识别签到,最后是一些扩展性的功能如:学生请假、学生选课、成绩分析、成绩单的导入和导出等功能。而且只有拥有账号的用户才能登录该系统进行相关的操作。系统功能模块如图2所示,系统数据信息流如图3所示,系统各功能模块的功能描述如表2所示。
2.2 系统设计
2.2.1 总体设计
根据需求及功能要求,本文将系统模块划分为管理员端,学生端,教师端三大部分以及学生、教师、管理员、班级、课程、考勤、请假、选课、成绩信息管理和系统管理九大功能模块,如图4所示。
2.2.2 签到功能设计
对该系统进行整体分析,学生端的考勤信息管理模块才是核心和重点。该模块具有的功能比较复杂,包含考勤列表的显示、人脸识别签到、搜索查询功能。学生需要在系统上传自己的证件照,系统在每次启动时都会将学生保存到系统的照片保存到人脸库中,当学生进入考勤信息管理界面点击添加考勤信息按钮后,将会跳转到添加考勤信息的界面,系统调用摄像头,学生点击拍照按钮后再点击确认按钮,系统会将拍摄所得到的照片与人脸库的照片进行对比,两张照片的相似比大于90%,则识别成功,系统页面跳转到选择考勤信息界面,学生选择相应的课程名称点击确认即可添加考勤信息,完成人脸识别签到。若两张照片的相似比小于90%,则识别失败,页面将显示重新签到和退出两个按钮,若选择重新签到,则将会再次跳转到添加考勤信息的界面,并调用摄像头进行拍照,再次进行人脸识别签到,若选择退出,则直接跳转到考勤列表界面。其考勤信息管理模块流程图如图5所示。
2.3 数据库设计
该系统中对于数据库的设计遵循的是数据库设计第三范式。数据逻辑本身以用户信息(包括学生信息、教师信息、管理员信息)、课程信息为主要数据,其中核心数据表主要由学生信息表(s_student)、教师信息表(s_teacher)、管理员信息表(s_admin)、课程信息表(s_course)、请假信息表(s_leave)、班级信息表(s_class)、考勤信息表(s_attendance)、成绩信息表(s_score)、选课信息表(s_selected_ course)九个表组成,数据表信息如表3所示。系统在数据交互和数据处理过程中主要依靠用户编号(studentId、teacherId、adminId)和课程编号(courseId)来建立联系。
3 系统设计与实现
3.1 系统的工作原理及数据交互
系统在设计实现中采用的是Ajax、Servlet、JSP、JDBC、DbUtils、EasyUI和jQuery框架。本系統在服务架构上采用的B/S架构模式,在系统前端开发中,采用JSP框架,页面管理主要依赖Web浏览器。该系统设计采用的是三层系统架构,分别是UI界面层、Servlet业务逻辑层和数据访问层,目的是为了提高系统内部功能接口的内聚性,降低接口之间的耦合性。图6为基于SeetaFace2人脸识别智慧课堂签到系统的工作原理及数据交互流程。
3.2 系统实现过程
3.2.1 登录
该功能是实现用户登录,界面主要由用户名、密码、验证码三个输入框和三个用户身份选择按钮以及登录按钮五大部分组成。用户通过输入相应的用户名、密码和验证码,选择相应的身份,点击登录按钮即可实现系统登录,进行下一步的系统操作。登录界面如图7所示。
3.2.2 签到功能
该功能是通过拍照上传照片,调用SeetaFace2人脸识别算法进行人脸识别,获取相应的相似比,并将该值与设定好的阈值进行对比,若相似比大于或者等于阈值,系统页面跳转到完善签到信息界面,完成考勤工作;若相似比小于阈值,则签到失败,可以选择再次进行人脸识别签到或者选择退出签到功能模块。人脸识别签到界面如图8所示。
3.3 关键代码
以下代码主要是实现用户登录时,系统通过对用户照片进行更新的功能,实现了系统显示照片与人脸库照片的一致性:
Properties prop = tool.getConfig();
String address=prop.getProperty("address.server");
SD sd=(SD)request.getSession().getAttribute("user");
String filepath=null;
String localfilepath=address+"\\LocalPhotos\\"+student.getSn()+"\\1.jpg";
try {
response.setContentType("text/html;charset=utf-8");
DiskFileFactory factory = new DiskFileFactory();
File f = new File(address);
if(!f.exists()) {
f.mkdirs();}
factory.setRepository(f);
ServletFileUpload fileUpload = new ServletFileUpload (factory);
fileUpload.setHeaderEncoding("utf-8");
List
PrintWriter writer = response.getWriter();
for(FileItem fileItem :fileItems) {
if (fileItem.isFormField()) {
String name = fileItem.getFieldName();
if (name.equals("name")) {
if (!fileItem.getString().equals("")) {
String value = fileItem.getString("utf-8"); }}
} else {
String filename = fileItem.getName();
if (filename!= null&&!filename.equals("") ) {
filepath=address+"\\upload\\"+student.getSn()+"\\0.jpg";
File file = new File(filepath);
file.getParentFile().mkdirs();
file.createNewFile();
InputStream in = fileItem.getInputStream();
FileOutputStream out = new FileOutputStream(file);
byte[] buffer = new byte[1024];
int len;
while((len=in.read(buffer))>0)
out.write(buffer,0,len);
in.close();
out.close();
fileItem.delete();
}}}
} catch (FileUploadException e) {
e.printStackTrace();}
以下代碼的功能是实现SeetaFace2算法的调用,本系统通过调用SeetaFace2人脸识别算法进行拍摄照片与人脸库照片的对比,从而得到相似比:
libs=libgcc_s_sjlj-1,libeay32,libquadmath-0,ssleay32, libgfortran-3,libopen-blas,holiday,SeetaFaceDetector200,SeetaPointDetector200,SeetaFaceRecognizer200,SeetaFaceCropper200,SeetaFace2JNI
libs.path=D:\\jar\\dllmoban
bindata.dir=D:\\jar\\dllmoban
以下代码的功能实现相似比与阈值的对比,从而判断拍摄照片同学是否与该用户匹配,实现签到功能:
float face;
face=facedb.getscore(filepath,localfilpath);
if (face>90) {
result="ok";
} else {
result="no";}
response.getWriter().write(a);
4 结 论
基于SeetaFace2人脸识别算法智慧教室签到系统继承了传统的人脸识别系统的人脸识别签到功能,在本系统中还加了请假功能、选课功能、成绩分析功能以及基本信息的管理。系统设计界面简洁、友好,易于用户操作,具有适用性,为各大学校的教学工作带来方便,提高学校的管理和教学水平。
参考文献:
[1] 杜路科,通旭明,梁俊花,等.基于人脸识别技术的课堂考勤系统 [J].电脑编程技巧与维护,2020(2):135-137.
[2] 张良杰.基于人脸识别的智慧教室签到管理子系统 [J].软件,2019,40(12):133-139.
[3] 甘鲁斌,吴重庆.基于人脸识别的智能教室系统 [J].电脑知识与技术,2019,15(23):203-204.
[4] 吴繁宇,唐浩祥,王学文,等.基于人脸识别的智慧教室管理系统 [J].中国高新科技,2019(4):35-37.
[5] 代美茹,王法胜.基于人脸图像的考勤系统设计 [J].电脑知识与技术,2020,16(21):5-7+22.
[6] 汪成龙,孙培宜,林晓鹏,等.基于SeetaFace的人脸识别门禁系统 [J].制造业自动化,2018,40(8):111-112+150.
[7] 吕振刚.基于Ajax技术的WEB研究 [J].石油知识,2020(4):50-51.
[8] 阳小兰,罗明.基于Spring+SpringMVC+MyBatis网上论坛的设计与实现 [J].黑龙江科技信息,2016(36):279-280.
[9] 施莹.Ajax技术在物联网信息系统中的应用 [J].无线互联科技,2020,17(8):149-150.
[10] 肖进.基于Seetaface人脸识别引擎的面授课堂智能管理系统的研究与实现 [D].江苏:江苏大学,2019.
[11] 侯雨静.基于计算机视觉的人脸检测与识别算法研究 [D].锦州:辽宁工业大学,2018.
作者简介:王世超(2000—),男,汉族,山东潍坊人,工学学士,主要研究方向:软件系统开发;通讯作者:崔洪振(1990—),男,汉族,山东滨州人,工学硕士,助教,主要研究方向:标签计算、深度学习;张伟(1970—),男,汉族,山东枣庄人,工学硕士,教授,主要研究方向:网络数据分析;高静(1998—),女,汉族,山东临沂人,工学学士,主要研究方向:软件系统开发;傅田(1999—),女,汉族,山东潍坊人,工学学士,主要研究方向:软件系统开发。