java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统

一、前言 学生的课堂考勤是高校教务管理工作中一项非常重要的内容。随着学生群体数与日俱增,部分高校采用了刷卡签到、指纹验证以及有约束性的人脸认证等考勤方式,但由于这些方式都存在显露的弊端,比如排队等候、弄虚作假等问题,难以得到大多数学校的认可。因此,多数学校至今沿用传统的手工考勤方式,工作量繁重,不满足智慧化校园建设的需求。
源码在文章结尾处!!!大家自行获取即可~
二、相关技术 本系统采用了 SpringCloud 架构构建多个服务端,使用 Vue 实现前端交互平台和管理页面,用 MySQL 数据库储存图片地址文本、日常考勤数据以及系统操作日志等;小人脸检测和识别算法与其他功能模块相互独立,并以子服务的形式分别部署于算法服务器和后端服务器。功能测试表明,整个系统运行效果良好,既能免去繁杂的手工考勤流程,又便利了高校统一管理,符合高校智慧化发展趋势。
本文在分析研究微小人脸检测和识别算法以及相关理论基础上,设计实现了 一个自动化考勤管理系统。该系统结合基于 ResNet 的小人脸识别技术,能大规模 检测并识别上课学生,教务管理者只需在管理平台添加课表,设置每节课的考勤时 间以及图像采集次数,系统便按照预定时间实现自动化考勤,快速完成学生的签到、签退工作,并给教务管理者呈现可视化、多样化的考勤统计结果。
三、考勤系统的详细设计与实现 1、系统核心模块设计 ①、基于微小人脸识别的模块设计
小人脸识别是考勤系统的核心模块之一,完成识别学生身份的功能。这个模块主要涉及到原图像处理、数据解析、小人脸检测、人脸对齐以及人脸识别等内容。小人脸识别流程如图 4-8 所示,系统按所需格式预先处理采集的图像,再调用小人脸检测算法,算法处理后,检测结果的先经过解析和提取,系统输出检测的总人数并且依次调用人脸对齐和人脸识别算法,算法输出识别结果后,判断是否还有未检测人员,如果有,则继续对齐和识别,直到所有检测到的学生都识别结束为止。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片

②、图像采集模块
图像采集是考勤系统的核心模块之一,完成图像的定时和定次抓拍功能,流程如图 4-11 所示,这个模块主要涉及到摄像头控制、定时器触发以及图片获取等步骤。定时器启动前,预先设置定时时间和采集次数。系统通过持续监听定时器来触发定时任务,当设定时间到时,执行一次图像获取指令,并且在图像获取后立即关闭摄像头,资源占用解除后,判断采集次数,如果次数够,则结束采集过程。否则, 直到完成预定次数的图像采集过程为止。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
③、考勤统计模块
考勤统计模块是考勤系统的核心模块之一,主要完成识别结果的处理和统计功能。
2、其他功能模块设计与实现 ①、信息管理模块
信息管理页面如图 5-1 所示,教务管理者可以浏览学生信息、课表信息以及选课页面的内容,通过页面操作来测试模块基本功能,测试结果见表 5-3。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-1 信息管理页面测试图java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
②、考勤汇总模块
【java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统】考勤汇总页面如图 5-2 所示,系统从学生和课程的角度分别展示某教室一学期的签到概况,包含课程应到、实到总数、学生答到状态等。引入 EasyExcel 框架简捷实现固定 sheet 和表头的表格导出功能,导出效果如图 5-3 所示,教务管理者可以根据需求下载考勤数据并导出 EXCEL 格式表。通过页面操作测试模块功能,测试结果见表 5-4。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-2 考勤汇总页面测试图
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片


java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-3 课程汇总概况导出效果图 ③、注册登录模块
测试页面如图 5-4 所示,用户在初次注册或者登录时,系统会有账号不能空值、密码必须三位数字以上等错误提示。采用 JWT 框架[36]解决使用者的 token 认证问题,用户每次交互请求时都会附上服务器指定的 token 值,根据值的不同来判断用户信息,故无须在服务端保存认证信息,有利于应用扩展。使用 Shiro框架解决身份验证、权限管理、加密控制等问题。通过页面操作来测试模块功能,测试结果见表 5-5。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片

java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-4 注册登录页面测试图
④、系统配置模块
系统配置页面如图 5-5 所示,教务管理者可以查看日志内容以及设置考勤时间和图像采集次数。采用 Spring 框架来解决定时器时间设置和获取的问题,把设定的时间存储在数据库中并根据定时器状态来实时获取时间、次数等参数。为了保证定时任务的执行,通过设定所有定时器为生效状态来应对课程变化情况,即便是教室无课也会触发定时器但不影响考勤统计结果,从而避免了动态生成定时任务的问题以及频繁设置考勤时间的困扰。对部分功能测试,内容见表 5-6。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片


java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-5 系统配置页面测试图
⑤、图像采集模块
这个模块主要涉及到摄像头控制、定时器触发以及图片获取等,Spring 支持Timer、Quartz 等多定时框架[39],其中 Quartz 复杂性最大、成本高,适用于多变的定时任务,而 Timer 的时间设定不够灵活,本文采用 Spring 自带的 SpringTask 定时器,通过注解的方式引入定时器,传入定时任务( Runnable) 和定时时间(CronTrigger)的参数,定时器启动后,Spring 容器会自动扫描定时任务,根据定时时间来执行指定任务。利用开源视觉库JavaCV[40]来实现摄像头控制和图像获取,通过 JavaCPP 间接调用 OpenCV 的库接口直接获取当前设备信息,相比于多媒体框架 JMF,JavaCV 在摄像头启动时无须预热,使用帧抓捕器直接获取视频帧。核心代码如图 5-6 所示,需要对各部分进行功能测试,测试内容见表 5-7。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片

⑥、考勤统计模块
这个模块主要涉及数据预处理、统计以及数据库存储。系统后端得到 JSON 格式的数据,通过预处理 Map 格式数据提取学号等有效信息。用字符串数组来存放非重复学号,统计识别的总人数,并与检测总人数比对,根据签到时间、学号、课程号等参数把识别结果记录到数据库中。对部分功能测试,内容见表 5-8。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片


⑦、小人脸识别模块
这个模块主要涉及小人脸检测、人脸识别和服务交互三个部分,检测效果如图5-7 所示,由绿色方框表示检测置信度较低的人脸,黄色窗体表示检测置信度较高的人脸,服务器识别反馈如图 5-8 所示,图中 personID 指识别人员标识,标识下面为阈值,阈值越小,准确度越高。识别反馈主要有人员 ID 及阈值,结果经处理直接存储在数据库中,无须前端页面展示,故用命令行交互窗口展示识别功能测试结果。后端用 Base64 编码采集结果并用 Post 请求方式调用小人脸检测算法,用MultiValueMap(一键多值映射类型)接收检测的结果并提取检测总人数。若有未识别人员的存在,则依次调用人脸对齐、识别算法,最后用 Map(一键单值映射类型)接收识别反馈结果。对部分功能测试,内容见表 5-9。
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片

java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-7小人脸检测效果图
java|SpringCloud+MySQL+Vue实现人脸识别智能考勤管理系统
文章图片
图 5-8小人脸识别反馈图
四、总结 本文在分析研究微小人脸检测和识别算法以及相关理论基础上,结合传统考勤系统的功能结构,设计并实现了一个基于微小人脸识别的智能考勤管理系统,主要工作如下:
1、设计了一个基于 SpringCloud 的考勤系统框架 为更好的细化系统功能,采用了微服务的思想,而 SpringCloud 是微服务解决方案中功能比较均衡、开发便捷高效的一个框架。因此,用 SpringCloud 框架设计了考勤管理系统:小人脸识别算法独立于系统其他模块,部署于算法服务器,服务器通过 Sidecar 异构的方式注册到 Eureka Server。系统后端可以通过服务交互的形式来请求调用小人脸检测、识别算法,算法和后端的小人脸模块共同完成小人脸识别功能。同时,系统后端也注册到 Eureka 中,算法服务器可以对系统的功能接口进行访问。把算法和系统模块分开,不仅能细化业务功能,也有利于分布式的开发,用不同的编程语言设计实现各部分功能。
2、实现了基于 ResNet 的微小人脸识别算法 通过研究微小人脸检测算法,学习了如何有效的训练一个小脸检测器;再结合现有的部分代码,在 Matlab 上成功的训练了一个基于 ResNet101 基础模型和 Wider Face 人脸数据集的小人脸探测器。历经 2 天时间和 50 次训练迭代,选取了评估效果最好的那组模型(平均精度达到 80%)用于算法中人脸检测功能。同时,使用了在 LFW 人脸数据集和 Inception ResNet V1 基础网络上训练好的人脸识别模型,完成小人脸检测后的识别功能。
3、实现了基于小人脸识别的考勤系统原型
通过框架设计和算法分析,在实现微小人脸算法的基础上,构建了一个考勤管理系统。这个系统包含核心功能模块:图像采集、考勤统计和小人脸识别模块,三者的互相协作完成了自动化考勤方式。还包含了其他功能模块,如注册登录、信息管理、系统配置等模块。系统的管理平台从简单实用的角度出发,用 Vue 前端框架实现了可交互式界面。不仅给教务管理者一个可视化数据展示平台,也能完成对学生、课表、考勤、参数的基本操作。最后,整个系统在测试使用中运行良好。
系统的特点如下:
①、采用微小人脸识别技术,能大规模有效的检测再逐一识别人脸,并且识别的过程是无感知、无约束性的,容易被学生接受;其次,它也是生物识别技术的一种,身份认证可靠,有效避免传统考勤方式中的代打、作假现象。
②、自动化的考勤方式和间断性的认证方式,能够快速完成签到、签退工作,大大节省了上课时间。
五、项目源码

百度云链接:https://pan.baidu.com/s/1m3ZCBSnSxirBtQ07ZL4iAg
提取码:yidl

    推荐阅读