java多人脸识别在线课堂人脸识别签到系统的设计与实现论文
分类: Java springboot 专栏: java springboot 标签: 多人脸识别 考勤 学生 论文
2024-11-19 18:09:26 149浏览
本 科 毕 业 论 文
在线教学中人脸识别签到系统
Face recognition check-in system in online teaching
学院名称: 计算机科学与信息工程学院
专业班级: 信息管理与信息系统
学生姓名:
学生学号:
指导教师姓名:
指导教师职称:
2022 年 04 月
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得安阳工学院及其它教育机构的学位或学历而使用过的材料。对本研究提供过帮助和做出过贡献的个人或集体,均已在文中作了明确的说明并表示了谢意。
作 者 签 名: 日 期:
指导教师签名: 日 期:
使用授权说明
本人完全了解安阳工学院关于收集、保存、使用毕业设计(论文)的规定,即:按照学校要求提交毕业设计(论文)的印刷本和电子版本;学校有权保存毕业设计(论文)的印刷本和电子版,并提供目录检索与阅览服务;学校可以采用影印、缩印、数字化或其它复制手段保存论文;在不以赢利为目的前提下,学校可以公布论文的部分或全部内容。
作者签名: 日 期:
目 录
第 4 章 系统人脸识别技术的实现 16
在线教学中人脸识别签到系统
摘要:自2020年以来,新冠病毒在全球开始蔓延,在国家领导人的英明指挥与我国人民的积极配合下,疫情在国内的传播得到了很大控制。但在疫情常态化的当下,新冠病毒的传染率仍然不容小觑,甚至可能引发大面积的线下停课的现象。把课堂搬进网络,成为当代教育的另一种新型授课方式,也是实现高效率课堂教学的良好途径之一。根据官方数据调查,网课的增长率正逐步上升。在线教学时,一般分为教师和学生两个端口,但由于不能面对面的进行交流,进行打卡签到无疑是一项费时费力的工程,而人脸识别签到的应用可以极大的节省时间并提高签到效率,是人工智能与现实应用需求的完美结合。
本系统采用虹软人脸集成算法,利用深度学习的思想,首先采取个人的脸部特征生成人脸信息码,转换成字节存入相应的数据库中。当教师发布考勤签到时,学生登录学生端只需再次从视频流中调用生成的信息码,与数据库中的信息码进行相似度对比,根据相似度规则设定从而解决人脸签到的问题,实现在线签到。
关键词:人脸识别检测;考勤系统;在线课堂;
Face recognition check-in system in online teaching
Absrtact: Since 2020, the new coronavirus is spreading all over the world. Under the active command of the leaders of the state and the active cooperation of our inhabitant, the spread of the epidemic condition in China has been overwhelmingly controlled. But in the current situation of normalization of epidemic situation, the infection rate of COVID-19 is still not to be underestimated. It may even lead to a large number of offline classes. Moving the classroom into the network has become another new teaching method of contemporary education, and it is also one of the great methods to accomplish high-efficiency teaching. Survey based on official data, the growth rate of online courses is gradually rising. Online teaching is generally divided into two ports: teachers and students. However, due to the lack of face-to-face communication, clock in and sign in is undoubtedly a time-consuming and laborious project. Automatic face recognition could be enormously enhance learning efficiency and saving time. It is a perfect combination of artificial intelligence and practical application requirements.
The system adopts the Hongsoft face integration algorithm and uses the idea of deep learning. Firstly, the personal face features are used to generate the face information code, which is converted into bytes and stored in the corresponding database. When the teacher publishes attendance check-in, the student login only needs to call the generated information code from the video stream again, and compare the similarity with the information code in the database. According to the similarity rules, the problem of face check-in is solved and online check-in is realized.
Key words: Face recognition detection; Attendance system; In restricted classes;
引 言
随着信息化、智能化社会的发展,人工智能普遍运用于我们日常生活中,网络课堂也在时代的发展的需求下应运而生,给予了很多人优秀的网络学习资源。同时,处于疫情时代的教师和学生由于各种影响不能及时返回校园,在线课堂大大解决了上课的问题,也带动了在线课堂的快速发展。
科学高效的教学管理体系是提高教学质量和学生成绩的必要条件和重要前提。有效的考勤方式可以确保教学秩序的稳定形成,有利于提高教学工作的稳定发展。把课堂搬到网络,由于不能面对面交流观察,无法确定学生的上课状态,甚至还会出现学生“代课”或者主观放弃听课问题。面对如此形势,在线课堂的考勤需求也变得极为重要。本文通过分析和研究国内外现有的在线课堂签到方式,提出通过利用人脸识别技术来实现在线课堂的签到,选择采用虹软人脸识别算法来进行实现,该方法能够有效的提高在线课堂人脸识别签到的效率,并且能够防止代替上课现象。
第1章 绪论
本章的主要内容分为三个部分:课题研究的社会背景和意义,该课题在国内外的发展现状以及课题的主要研究内容、目标和任务。
1.1 课题研究背景及意义
随着信息化社会的不断发展以及社会各方面对自动识别身份快速而有效的验证需求,生物特征技术在近十几年中不断发展。生物特征作为人的一种外在属性,具有强大的唯一性和独特性,是生物识别技术中身份验证的理想依据。当前社会生物识别的主流技术主要有:虹膜识别,指纹识别,步态识别,静脉识别,视网膜识别,人脸识别等。[3]与其他识别方法相比,人脸识别由于具有直接方便的特点,使用者不需要拥有复杂设备,便可以实现身份识别,易于被用户所接受,促使考勤模式得到了更强有力的技术保障。在科技发展发面,使用人脸识别技术,我们还能够得到有关人物特征联系,方便利用与生物,科技和智能生活的领域,为我们的智慧化生活创造了技术基础。
利用人脸识别技术结合实际情况,实现智能化,提高便捷性。本课题就是在疫情常态化的大背景下利用人工智能相关技术对在线课堂进行考勤,对提升检查效率,加强监测力度,节省时间和空间成本,切合当下实际,服务当前社会,满足实际应用的需求。
1.2 国内外发展现状
1.2.1 人脸识别发展现状
自20世纪70年代以来,随着人工智能技术的兴起以及人类视觉研究的进展,人们逐渐对人脸图像的机器识别投入越来越多的热情,并形成了一个人脸识别研究领域。对这一领域的研究除了具有重大理论价值外,也极具实用价值。人脸识别技术是属于人工智能中生物识别功能中的一种,同时也是模式识别和计算机视觉的交叉领域。正是因为人脸作为独特的外在特征,具有明显的唯一性和独特性,所以人脸识别对现代生物识别技术具有强有力的优势保障,将人脸识别技术运用于生活和工作中,是提高社会智能化和科技化的有效措施,也是科技进步的现实基础和强大力量。
1.2.2 人脸识别的应用
当前的人脸识别技术主要被应用到了以下几个方面:
1. 刑侦案件侦破:当遇到刑事案件时,获取到嫌疑人人脸信息或其他面部特征描述,可以在警方居民大数据库进行查找和确认,提高破案的效率和准确性。
2. 入口检测登记:在某些场合(如飞机、高铁、海口、机密部门等)人脸检测是一种证明身份验证的重要手段,也是提高效率化的重要措施。
3. 区域监控:在一些公共场合的视频监控中,人脸技术中的跟踪、识别检测技术可以对异常情况和陌生人闯入进行管控。
4. 设备加密:对一些个人工具可以进行“密码锁”设置,如手机人脸识别,门户的密码锁功能,方便用户进一步管理自己的设施。
5. 特征分析:根据人脸识别技术还可以对人脸特征进行分析,对医学、档案馆、大数据进行信息对比和统计,有利于科研工作的进行。
1.3课题的主要研究内容及任务
本课题的主要研究内容是利用Spring boot框架,采用虹软人脸集成算法,利用深度学习的思想,首先采取个人的脸部特征生成人脸信息码,转换成字节存入相应的数据库中。人脸识别时,只需再次从视频流中调用生成的信息码,与数据库中的信息码进行相似度对比,根据相似度规则设定从而解决人脸签到的问题。
本次设计所涉及到的实时检测,需要开启视频预测功能,调用电脑的前置摄像头,当人像出现在画面中时可以进行一个实时的检测,并将检测到的目标和结果显示在电脑屏幕中。
在本次课题设计的过程中,总体的设计思路分为两部分,第一部分是进行系统架构,第二部分是实现视频目标检测功能。在系统架构部分,首先是针对这次设计,确定好主要功能和框架分类,根据不同需求以此来实现前端设计与布局的合理性。并且要明确教学中院系、专业以及课程的相互独立之处。针对视频检测功能的实现,是在虹软人脸识别算法的基础上,对每位学生进行人脸特征采集录取到相应的数据库中,而后进行摄像头调用,对捕捉到的人脸进行一个读取,计算捕捉到的人脸信息码相似度比值,从而判定是否为同一人进行签到,从而实现高效的在线考勤方式。
本课题研究的主要任务如下:
1. 针对课题的任务内容制定出详细规划;
2. 阅读与深度学习、Spring boot框架、人脸识别算法、卷积神经网络、特征提取和数据增强相关的资料以及文献;
3. 构思整体的设计思路;
4. 收集相关数据集;
5. 根据需求开始分模块进行编程;
6. 搭建环境进行模型训练;
7. 对系统的功能进行检测,确保所需功能都能实现;
8. 完成本课题的相关论文的撰写。
1.4 主要开发平台及工具
开发平台:Windows
开发语言:Java
主要框架:Spring boot
主要使用的库:Mysql Navicat
第2章 在线课堂人脸识别签到系统分析
本章内容从系统分析为出发点,对系统设计分析思路和可行性分析入手,进行必要的框架模块建构和可行性分析,以展示系统的可实施性。
2.1 系统的总分析思路
本系统按照功能作用划分可以分为管理员模块,教师模块和学生模块。在管理员信息管理模块中,通过接口采集学生人脸信息并可以进行教师和学生所属院系和专业管理,以及对学生、教师、课程三方面进行管理。在数据库管理方面采用Navicat工具,对数据进行修改和统计。教师模块中,教师可以对所担任课程进行课程考勤的发布和修改,从而发送到学生端。学生签到窗口设计有相对应的按钮来调用PC端摄像头来进行签到,采集到的信息结果录入数据库中,方便后期进行管理。系统流程设计如图2-1所示。
图2-1 系统流程图
在确定系统框架时,考虑到运行环境的选择和系统实现效果的最优化,通过对比分析最终选择了springboot作为系统的整体框架。springboot内嵌了servlet 容器,编译环境实现方便,而机器有java运行环境,可以将项目打包成jar包,可以有效避免样板代码无效输出,注释和XML配置,从而大大提高了生产力并节约了成本。
2.2 系统需求分析
2.2.1 在线课堂考勤的特点
课堂考勤作为教学手段的重要环节,而在线课堂中教育主体又脱离了统一教育地点及其空间的限制,其特点有:
1. 空间的可利用性,学生不再受到地点的限制,教师可以根据不同地点和其他条件的限制,充分利用现有资源,在网络上实施教学工作。
2. 学生主体数量扩大化,线下教育由于教室等条件的限制,教师要分班授课,但在线课堂完美的解决了这一问题,学生只需一定条件的设备就可以实现“多人上课”,并不会受到其他同学的影响,实现高效教学和学习。
3. 考勤工作的复杂性,受教师和学生主体数量的影响,课程具有多门化和丰富化的特点同时也为课堂考勤带来了相对应的挑战。
2.2.2在线课堂考勤的需求设想
课堂考勤系统应遵循考勤设计理念,能够快速统计出学生的通勤情况,并能够记录相应的考勤状态,分录出旷课,迟到信息,提出以下设想:
1. 首先,考勤系统应做到条理性和规范性要求,对院系,专业,班级进行明确划分,规范学生分类,这是考勤的必要基础。
2. 从ER图的关系来看,学生和教师的关系主要表现为:一个学生可以学习多门课程,但是一门课程只能由一名教师教授,一名教师可以教授多个学生。
3. 在线课堂实现的考勤系统,要做到识别准确率要高,还要保持系统的稳定性,如果系统不成熟导致的错误反而会影响教学工作的开展。
4. 在线课堂人脸识别的核心就是以“人”为本,识别算法要有高准确性的保证,以此来避免“代签”的问题。
2.3 可行性分析
2. 3.1 技术可行性
虹软ArcFolt人脸识别是本次设计需要实现的关键部分,相比较市面上主流的人脸识别方法,它具有更高效的人脸采集和识别效率,通过对比分析人脸的面部特征,在不同环境变化下、光度的强弱、以及被识别者的面部表情和姿态方面持有更高的识别率。着眼于当下的行业需求和市场发展来看,高速度、高精准的识别方式也将是大势所趋。本系统实现的基础离不开高效的识别方式,具备速度及精度才是本系统的关键部分,也是后续在使用中着重关注的部分。
综合以上可以看出,生物识别技术已经十分成熟,很多新兴的算法和网络结构优化方案推进着技术的进步,根据自己需要实现功能不同,选择合适的架构和识别方式,显然springboot框架和虹软人脸识别技术,凭借其较快的速度与令人满意的准确度,满足此次设计中对在线课堂中人脸识别考勤签到的需求。
2.3.2 经济可行性
针对设计实现过程来说,需要对虹软人脸识别算法进行不用程度的检测训练,这样可以在一定程度上极大地节省开发周期,所使用的硬件基本满足设计需求,其余的软件开发环境也易于安装,不需要花费额外的费用进行补充。
针对设计完成之后的实际应用环境,在当紧社会现实下,在线课堂将是成为新型授课大势所趋的方式,极大地解决了因为疫情或其他原因不能线下授课的问题,授课的宽度和广度也决定着在线课堂会有很好的发展趋势。人脸识别签到解决了线上授课打卡签到的问题,也同时加强了考勤制度的规范,对教学效率的提升具有很大帮助。
第3章 在线课堂人脸识别签到系统的系统设计
3.1系统设计目标及其原则
1. 系统设计目标
利用人脸识别技术,实现在线课堂的签到,能够同时方便教师和学生进行高效考勤工作,节省考勤时间,有效防止替代考勤的行为,提高考勤效率。教师和学生可以直观看到考勤状态并统计结果。
2. 系统设计原则
在线课堂考勤系统应该满足以下设计原则:
(1)安全性,系统开发首要考虑数据信息的安全,要做到学校师生信息资料的安全。
(2)实用性,从用户需求方面出发,系统设计要尽可能的实现简单上手,清晰明了的软件操作,以方便不用方面的用户进行使用。
(3)稳定性,系统开发的核心就是人脸识别技术,实现成熟高效的考勤。
(4)实时性,基于人脸识别的课堂考勤系统的实时性也是需要重点考虑的问题,要做到人脸跟踪,检测,采集时的技术性需求等。
3.2系统结构设计
论文所研究的基于人脸识别的课堂考勤系统包括人脸识别和考勤信息管理两大主要技术功能。系统体系结构设计是系统设计过程的层面,是系统开发的重要环节,可作为系统开发指导性的策略。
管理信息系统的体系结构发展经历了单机单用户模式、文件/服务器(File/Sever)模式、客户端/服务器(Client/Server)模式和浏览器/服务器(Browser/Server)模式等阶段。C/S和B/S模式是目前软件系统设计中主要采用的模式。在本系统中,考虑到课堂考勤中教室比较多,且相对集中的特点,为了方便管理与实际操作,采用C/S和B/S结合的混合体系结构,以数据库为服务器端。基于人脸识别的课堂考勤系统中,人脸识别模块采用C/S模式,考勤信息管理模块采用B/S模式,这样只要有浏览器,就可以对考勤信息进行操作。数据库服务器主要用于存储学生课堂考勤记录、学生个人信息、班级和院系等信息等。同时,通过浏览器,系统可以为用户提供请假管理、学生课堂考勤数据的查询输出等操作。基于人脸识别的课堂考勤系统中B/S模式如图3-1所示。
图3-1 B/S模式示意图
根据需求分析结果可以得出:在线课堂的人脸识别签到系统的主要技术分布在人脸的实现和系统的设计大概包括三个方面,分别是系统API (Application Programming Interface)、数据库服务器和系统界面显示。其中,系统API是系统显示和后台数据直接的接口,它包括人脸图像采集、人脸图像管理、人脸识别、人脸信息采集、系统设定等。学生课堂考勤管理系统采用B/S模式,利用Java开发,通过浏览器进行管理与访问。同时客户端、数据库系统和浏览器端相对独立,有利于保障数据库系统的安全和系统的独立性,能够让系统的运行更加方便快捷。基于人脸识别的学生课堂考勤系统的体系结构如图3-2所示。
图3-2 考勤系统结构体系
基于在线课堂的人脸识别签到系统主要包括人脸信息采集、课程考勤,签到信息管理等主要功能,它们相互联系又分别作用于系统的中枢部分,使整个系统的交互更加完善和有效,同时又分别作用于三种主题用户—管理员、教师、学生,考勤信息的实现。
3.3管理员系统模块功能设计
管理员通过采用Navicat数据库管理工具对学校院系专业、教师分配和学生信息进行管理,可以批量或单次对相应人员进行信息的修改。学生的签到信息存放在签到表中,管理员可通过数据库查看、添加、删除、修改学生信息、课程信息、教师信息等工作中对考勤信息登记处理,方便后期进行登记汇总。管理员的功能如图3-3所示。
图3-3 管理员功能图
3.4 教师系统模块功能设计
在教师端设计方面,考虑到上课前考勤手段需具备的快捷性和方便性,所以教师端界面功能设计具备简单的对课程考勤进行增删改查功能,能够方便教师进行一些基础的课程考勤发布,查询,修改和删除,以确保教师能够看到考勤信息的状态。通过对学生考勤时间的状态分类,能够分辨出学生是否迟到。简洁而有效的统计出学生考勤状态,以此将考勤效率不断提升优化,达到高效考勤的方式。教师的功能如图3-4所示。
图3-4 教师功能图
3.5 学生系统模块功能设计
为了方便学生进行考勤和学习,在学生模块的设计要做到简洁高效,使学生迅速进行考勤,节省考勤时间。方便学生查看自己的考勤记录,只保留学生对自己的考勤记录进行查看和签到功能,防止考勤信息被二次修改。
根据学生信息建立相应的数据表,存入相关信息。已经成功录取人脸信息和分配课程的学生,在任课教师发布考勤后,可以直接在学生端登录个人账号,点击签到按钮进行签到功能。后台接到指示后可以直接调用摄像头从视频流里获取一张照片进行个人特征码生成,从而和数据库中的信息进行相似度对比,从而输出考勤结果。
3.6 系统数据库设计
在线人脸识别签到系统数据库共包括九张表,每个表格代表相应的关系模型,设置数据表中的主键id为序号,具体的分析如下:
1. 管理员表包含管理员序号、管理员名称、管理员密码三个字段,如表3-1所示。
表3-1 管理员表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 管理员序号 |
uname | Varchar(255) | 否 | 否 | 管理员名称 |
upass | Varchar(255) | 否 | 否 | 管理员密码 |
2. 教师表包含教师序号、密码、姓名、教师编号、性别和任课名称字段,如表3-2所示。
表3-2 教师表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 教师序号 |
upass | Varchar(255) | 否 | 否 | 密码 |
realname | Varchar(255) | 否 | 否 | 姓名 |
teach_no | Varchar(11) | 否 | 否 | 教师编号 |
Sex | Varchar(255) | 否 | 否 | 性别 |
Class_name | Varchar(255) | 否 | 否 | 任课名称 |
3. 学生表表包含学生序号、密码、姓名、学号、性别、系别ID、专业ID、照片、令牌、人脸信息码、验证次数字段,如表3-3表所示。
表3-3 学生表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id | int(11) | 是 | 是 | 学生序号 |
upass | Varchar(255) | 否 | 否 | 密码 |
realname | Varchar(255) | 否 | 否 | 姓名 |
Stu_no | Varchar(255) | 否 | 否 | 学号 |
sex | Varchar(255) | 否 | 否 | 性别 |
sys_id | Varchar(11) | 否 | 否 | 系别ID |
major_id | Varchar(11) | 是 | 是 | 专业ID |
photo | Varchar(255) | 否 | 否 | 照片 |
token | Varchar(255) | 否 | 否 | 令牌 |
face_date | Longblob(0) | 否 | 否 | 人脸信息码 |
is_face | Varchar(255) | 否 | 否 | 验证是否本人次数 |
4. 系别表包含系别序号、系别ID两个字段,如表3-4所示。
表3-4 系别表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 系别序号 |
system_id | Varchar(255) | 否 | 否 | 系别ID |
5. 专业表包含专业序号、专业ID和系别ID三个字段,如表3-5所示。
表3-5 专业表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 专业序号 |
major_id | Varchar(255) | 否 | 否 | 专业ID |
system_id | Varchar(11) | 否 | 否 | 系别ID |
6. 课程分配表包含课程序号、课程名称、专业ID、教师ID和学生人数字段,如表3-6所示。
表3-6 课程分配表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 课程序号 |
course_name | Varchar(255) | 否 | 否 | 课程名称 |
major_id | Varchar(11) | 否 | 否 | 专业ID |
teach_id | Varchar(11) | 否 | 否 | 教师ID |
has_stu | Varchar(255) | 否 | 否 | 学生人数 |
7. 学生课程表包含课程排列序号、学生ID和课程ID三个字段,如表3-7所示。
表3-7 学生课程表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id_ | int(11) | 是 | 是 | 课程排列序号 |
stu_id | Varchar(11) | 否 | 否 | 学生ID |
course_id | Varchar(255) | 否 | 否 | 课程ID |
8. 教师端考勤表包含考勤序号、日期、开始时间、结束时间、课程ID、签到方式、签到时间、实际签到人数、应签到总人数、未签到人数和教师ID字段,如表3-8所示。
表3-8 教师端考勤表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id | int(11) | 是 | 是 | 考勤序号 |
date_ | Varchar(255) | 否 | 否 | 日期 |
start_ts | Varchar(255) | 否 | 否 | 开始时间 |
end_ts | Varchar(255) | 否 | 否 | 结束时间 |
course_id | int(11) | 否 | 否 | 课程ID |
has_attendance | Varchar(255) | 否 | 否 | 签到方式 |
cts_ | Varchar(255) | 是 | 是 | 签到时间 |
come_num | int(11) | 否 | 否 | 实际签到人数 |
all_num | int(11) | 否 | 否 | 应签到总人数 |
not_com_num | int(11) | 否 | 否 | 未签到人数和 |
Teach_id | int(11) | 否 | 否 | 教师ID |
9. 学生端考勤表包含考勤序号、登录ID、学生ID、日期、签到时间、详细时间、签到类型、是否迟到、课程ID、教师ID、课程开始时间和课程结束时间字段,如表3-9所示。
表3-9 学生端课程签到表
字段名 | 数据类型 | 主键 | 非空 | 描述 |
id | int(11) | 是 | 是 | 考勤序号 |
att_id | int(11) | 否 | 否 | 登录ID |
stu_id | int(11) | 否 | 否 | 学生ID |
date_ | Varchar(255) | 否 | 否 | 日期 |
Start_ts | Varchar(255) | 否 | 否 | 签到时间 |
cts | Varchar(255) | 否 | 否 | 详细时间 |
type | Varchar(255) | 否 | 否 | 签到类型 |
Is_late | Varchar(255) | 否 | 否 | 是否迟到 |
Course_id | int(11) | 否 | 否 | 课程ID |
Teach_id | int(11) | 否 | 否 | 教师ID |
Course_start_ts | Varchar(255) | 否 | 否 | 课程开始时间 |
Course_end_ts | Varchar(255) | 否 | 否 | 课程结束时间 |
第4章 系统人脸识别技术的实现
4.1 人脸识别技术原理
在人脸识别技术选择阶段通过对比分析“百度AI人脸识别”和“虹软人脸识别”两个市面上常用的接口方式,利用具体数据得出:人脸识别技术的精准测试常受光线强度、被试者的表情姿态、测试环境和视频设备的清晰度的影响。虹软人脸识别技术通过视频流将人脸五官关键点进行分析转码存入数据库再人脸特征队列进行人脸对比,而百度AI人脸识别技术则是利用视频流捕获的照片与上传的个人照片进行对比,从测试结果来看利用照片转码对比的方式避免了基础设备和自然环境的影响因素,识别精准度更高。
图4-1 虹软人脸识别原理
虹软ArcFolt人脸识别技术的实现流程是通过对人脸五官信息编码,使字节数组字符串进行Base64解码并生成图片,从而生成“人脸检测状态码”存入相应的学生数据库中。当课程考勤开始时,再次获取实时界面中人脸位置和五官关键点返回数据库和“人脸检测状态码”比较相似度。
图4-2 五官特征点定位
4.2 人脸采集
人脸识别技术离不开人脸信息的采集。在采集阶段首先要利用工具类首先将实时视频中的人脸图像提取出一张照片,根据算法从面部特征状态获取人脸信息值,接下来便将提取到的人脸FcaeUtis照片信息值转化为字节组存入相应的数据库中。
图4-3 人脸采集流程图
采集人脸信息关键代码如下:
faceData = FaceUtils.getFaceData(bytes);
catch (Exception e) {
e.printStackTrace();
map.put("status",0);
获取照片特征值的关键代码如下:
FaceFeature faceFeature = new FaceFeature();
int code=faceEngine.extractFaceFeature(imageInfo.getImageData(), imageInfo.getWidth(), imageInfo.getHeight(), imageInfo.getImageFormat(), faceInfoList.get(0), faceFeature);
System.out.println("特征值大小:" + faceFeature.getFeatureData().length);
System.out.println("特征值状态码:" + code);
Base64字符串转换主要代码如下。
// Base64解码
byte[] b = Base64Utils.decodeFromString(imgStr);
for (int i = 0; i < b.length; ++i) {
if (b[i] < 0) {// 调整异常数据
b[i] += 256;
4.3 人脸对比
人脸识别的核心在于如何在不同环境下,实现精准高速的进行人脸信息对比。根据光线,姿态和不同表情对人脸识别功能的影响进行测试,利用百度AI人脸识别和虹软Arcfolt识别在相同环境下进行对比,进行人脸识别检测。通过测试,百度人脸识别很容易受环境光线的影响,识别不出人物主体,错误率更高。而虹软人脸识别接口可以在3~5秒内迅速的对比出信息码的相似度,迅速给出对比结果。相比较于百度AI人脸识别接口,虹软人脸识别技术具有高速度、高精准、高效能的特点,从而能够使本系统运行更加稳定大大提升了课程考勤的效果。测试效果如图4-4所示。
图4-4 百度vs虹软测试对比图
此外,虹软人脸识ArcFace支持本地运行,不受网络速度的影响,响应速度快。在考虑到识别照片的私密性时,人脸数据储存在本地数据库,这样就避免了与服务端进行数据交互,从而避免引发数据泄露的风险,流程如图4-5所示。
图4-5 人脸对比流程图
特征值比对主要代码如下
public static CompareFace compare(byte[] sources,byte[] target){
CompareFace compareFace = new CompareFace();
FaceFeature targetFaceFeature = new FaceFeature();
targetFaceFeature.setFeatureData(target);
FaceFeature sourceFaceFeature = new FaceFeature();
sourceFaceFeature.setFeatureData(sources);
FaceSimilar faceSimilar = new FaceSimilar();
FaceEngine faceEngine = FaceUtils.getFaceEngine();
int scoreCode = faceEngine.compareFaceFeature(targetFaceFeature, sourceFaceFeature, FaceSimilar);
System.out.println("相似度状态码:"+scoreCode);
compareFace.setScoreCode(scoreCode);
compareFace.setScore(faceSimilar.getScore()); //引擎卸载
faceEngine.unInit();
return compareFace;
}
人脸检测识别码比对主要代码如下。
public class CompareFace {
private int scoreCode;//比对相似度状态码
private float score;//相似度
public int getScoreCode() {
return scoreCode; }
public void setScoreCode(int scoreCode) {
this.scoreCode = scoreCode; }
public float getScore() {
return score; }
public void setScore(float score) {
this.score = score; }
第5章 在线课堂人脸识别签到系统实现与测试
5.1 学生信息注册
本次系统设计的所有模块集合到一起,就可以实现对新学生信息添加入库的功能,管理员对学生进行学号、姓名、性别、所属院系和专业进行编排,并进行人脸信息采集,生成专属的人脸状态码,这样就实现了学生信息的登记。
部分关键代码如下所示:
1. 添加学生学号
s=etStuService.getByStuNo(s.getStu_no());
Map<String,Object> m=new HashMap<String,Object>();
if(s!=null){ m.put("status", 0);
m.put("msg", "该学号已使用,请换一个");
}else{m.put("status", 1);
m.put("msg", "该学号可用");}
2.在现有院系中选择学生应在的院系
//将现在所有的院系返回给前端
List<EtSystem> systems=etSystemService.list(null);
model.addAttribute("systems", systems);
model.addAttribute("pageInfo", pageInfo);
model.addAttribute("s", s);
添加结果如图5-1所示。
图5-1 学生信息注册
5.2 课程分配
课程分配是在线课堂正常教学的基础,将学生有序的按照院系和专业进行划分,实现教师一对多进行授课,而一个学生只能选择同一课程下的一个老师,这样可以将课程关系进行有效管理,避免出现授课差错。
部分关键代码如下所示:
1. 进行学生课程分配
EtCourse c=etCourseService.getById(req.getParameter("course_id"));
model.addAttribute("c", c);
EtTeach teach=etTeachService.getById(c.getTeach_id());
model.addAttribute("teach", teach);
List<EtSystem> systems=etSystemService.list(null);
model.addAttribute("systems", systems);
return "add_stu_to_course";
分配结果如图5-2所示。
图5-2 学生课程分配
5.3 教师考勤
当学生与课程成功进行绑定分配后,授课教师便可以从教师端直接登录专属账号,对所担任的课程进行考勤工作。可以简单地对课程考勤进行增删改查功能,方便教师管理正常打卡和迟到的学生,完成在线考勤。
部分关键代码如下所示:
1.增加新的课程考勤
EtTeach tl=(EtTeach) session.getAttribute("teachU");
if(o.getId()!=null){ o=etCourseAttendanceService.getById(o.getId());
}else{String date_=DateUtils.getNowDateString();
o.setDate_(date_);}
model.addAttribute("o", o);
model.addAttribute("pageNo", pageNo);
EtCourse c=new EtCourse();
c.setTeach_id(tl.getId()+"");
List<EtCourse> cli=etCourseService.list(c);
model.addAttribute("cli", cli);
return "courseAttendance_add";
创建新课程考勤如图5-3所示。
图5-3创建新课程考勤
5.4 学生签到
教师在上课确定上课时间范围,发布考勤后,学生便可以登录学生端进行刷脸签到,做好相应准备工作后,点击签到按钮调用摄像头后,便可以抓取视频帧照片,与数据库采集的人脸特征码进行相似度匹配,完成人脸对比后显示签到成功字样
部分关键代码如下所示:
1.判断是否检测到人脸
byte[] bytes = ImageUtils.base64ToByte(baseimg);//base64位图转成byte[]
FaceData faceData = null;
try {
faceData = FaceUtils.getFaceData(bytes);
} catch (Exception e) {
e.printStackTrace();
m.put("status",0);
m.put("msg","未检测到人脸-请正对摄像头重新识别-也可能你的浏览器没唤起摄像头");
2.人脸对比
EtCourseAttendance ca=etCourseAttendanceService.getById(o.getAtt_id());
ca.setCome_num(cn);
ca.setNot_come_num(cnn);
etCourseAttendanceService.update(ca);
m.put("status", "1");
m.put("msg", "签到成功");
m.put("obj",o.getStart_ts());
3.判断是否迟到
if(hm.compareTo(o.getEnd_ts())>0){
m.put("status", "0");
m.put("msg","已结束");
return m;
String late="";
if(hm.compareTo(o.getStart_ts())>0){
late="late";
学生签到界面图如图所示
图5-4 签到界面图
学生成功签到考勤结果如图5-5所示
图5-5 成功签到结果
任课老师同样可以在教师端查看本节课程签到的详细内容(为方便测试,本节课程共分配了三名学生),根据状态栏,可以直接明了的看到考勤结果。未打卡的学生签到状态栏里标注红色“待签到”字样,以便教师分辨。教师端考勤记录如图5-6所示。
图5-6 教师端考勤记录
为了测试学生超时签到情况,做出以下测试:当学生打卡时间超过教师设定的上课时间,签到结果会自动显示“已签到”状态,但可以自动判定出学生是否迟到,如图5-7所示。
图5-7 学生打卡“迟到”测试
5.5 案例测试
由于人脸识别技术会受到一定环境和姿态特征的影响,为了测试系统功能的全面性和完善性,根据人体性别、年龄、环境的不同,找取一些不同年龄阶段的人,参与学生人脸采集,进行人脸识别测试,从而检测本系统的适用的范围程度,以此来鉴定本系统人脸识别签到功能的稳定性和准确率。
5. 5.1 案例一
为了解决不同学生所处位置不同从而导致光线强度不一的情况下,选取光线“强度高”和“强度低”两种方式,来测定光线强度对识别效率的影响。根据测试结果可以得到,在正常光线下人脸识别速度大约在3~5秒可以完成,光线强度的高低导致识别时间大概延长4秒左右,但仍能精准识别对象,成功进行签到。如图5-8所示。
图 5-8 不同光线下人脸识别结果
5. 5.2 案例二
根据识别对象的不同,重新增添一名新学生的外貌特征值,根据常规考勤流程,测试在不同对象的主题下,人脸识别签到的完善性。在“计算机网络基础”课程里,分配三名学生进行课程学习。现将采集计算机科学与应用专业的“祝无双”同学的人脸信息,进行课堂签到测试。
采集“祝无双”学生信息,生成人脸特征码存入数据库中
图5-9 学生“祝无双”人脸采集成功图
当任课教师发布08:20-09:00的授课时间后,学生“张淼”和学生“祝无双”(已采集人脸)分别登陆各自的学生端账号进行课堂打卡签到,成功签到信息如下
图5-10学生签到测试成功图
总结与展望
本系统整体采用Java语言,基于springboot框架以及虹软人脸识别算法实现在线课堂中人脸识别功能签到。在移动课堂的教学中可以快速完成教学考勤,解决因在线问题不能面对面进行人工签到的问题。同时,在线课堂采用人脸识别的方式也能有效解决考勤过程中存在的相关性问题,如:效率低、工作量大,可实施过程复杂、数据管理困难等,方便而有效地节约了课堂时间,提高了教学效率。此外,目前使用的虹软人脸识别算法也较为成熟,能够保证该系统具有较高的准确率和稳定性。经过反复的测试和实践,本系统能有效实现在线课堂人脸识别签到,有利于智慧课堂的发展。
综合以上,有关深度学习方面的内容实现,不仅仅是要在底层逻辑上下功夫,所需要的硬件环境也是有很大要求的。前者在设计开始初期,查阅了很多相关的文献及视频资料,这对后续确定自己的设计思路起到了很大的帮助,节省了开发周期,避免了额外的工作量。其次在人脸识别算法的收集上,参考了论坛对于不同方式的讲解,用到了一些开源的数据,这对自己进行标注提供很大的帮助。
本次设计中也存在很多不足的地方。在前期测试时,首先采用了百度AI的人脸识别接口,但由于设备环境和识别准确率测试比值太低的情况下,导致人脸识别签到的实现不太稳定和完善,因此浪费了很多时间和精力。幸好及时查阅相关资料,更换算法的适用才使得系统能够顺利完成,今后一定要做好前期的准备工作,提高开发周期。期望在以后的工作和学习中,能够吸取本次经验,努力完善自己!
致谢
经过几个月的努力,本次毕业设计系统以及相关论文写作工作顺利完成。在本次设计开始之前,我对人脸识别的了解只存在于表面的了解,对于它的技术应用却有一种“鞭长莫及”的高深感。在韩老师的指导下,选取了相关课题进行系统的设计,但也因此,使我打开了新世界的大门。
人工智能的世界是丰富多彩的,这次系统的完整设计是我在大学期间完成的最完整的一次项目,由于之前只接触过一些简单的网页开发方面的知识,每走一步都是一次新的挑战与尝试。在这段时间里,学到了很多在深度学习有关的新的算法思想和相关知识,从开始的一无所知,到头脑里的知识脉络和整体的设计思路逐渐清晰,使得自己的设计项目一步一步完善起来,而每一次改善也是自己对学习成果的极大收获,每次成功都会有不言而喻的成就感。这次的论文作品还不是很成熟,有些许不足之处,但是这次写系统的经历对我来说却是最宝贵的。通过这次完整的流程走下来,我感受到做论文是真正需要特别用心去完成的一件事,需要自己在结合自身所做设计的基础上写出一篇完整的论文,要把握好整个设计的思路,有一个清晰的脉络,分清主次。
感谢韩老师在设计期间的帮助,特别是在设计初期,与韩老师交流的时候答复非常及时,这对自身环境的搭建起到了很大帮助。在之后的深度学习中,还有很长的路要走,兴趣是最好的老师,相信一定可以在之后的学习当中更上一层楼。同时也感谢帮助过我的各位同学,正是有你们一直的陪伴才使我收获了很多温暖和不可忘却的友谊,也同时感谢学校为我们提供了很好的学习环境。
时光匆匆,我们即将毕业也即将奔赴新的旅程,至此,是结束也是开始。此时此刻的自己心中满是不舍与感谢,感谢学校对我们的培育,感谢老师的悉心教导,感谢一路对我帮助过的所有同学,感谢你们的陪伴,谢谢你们!
参考文献
[1] 基于人脸识别技术的“智慧宿舍”管理平台设计[J]. 梁利亭.石家庄职业技术学院学报. 2020(02)
[2] ]三维人脸识别研究进展综述[J]. 罗常伟,於俊,于灵云,李亚利,王生进.清华大学学报(自然科学版). 2021(01)
[3] 樊引刚. 人脸表情识别系统的研究与实现[D].北京交通大学,2011.
[4] 人脸识别综合技术的发展[J]. 苏楠,吴冰,徐伟,苏光大.信息安全研究. 2016(01)
[5] 红外图像人脸识别方法[J]. 李江,郁文贤,匡刚要,宋海娜.国防科技大学学报. 2006(02)
[6] 深度学习人脸识别技术在考勤系统的应用[J]. 刘杰,孙立民.智能计算机与应用. 2020(02)
[7] 孙雅琪. 基于人脸识别的课堂考勤系统设计与实现[D]. 广西:桂林理工大学,2013. DOI:10.7666/d.D388805.
[8] 基于SpringBoot框架应用开发技术的分析与研究[J]. 熊永平.电脑知识与技术. 2019(36)
[9] 基于局部特征的表情不变3维人脸识别算法[J]. 郭蓓,达飞鹏.计算机辅助设计与图形学学报. 2019(07)
[10] 基于卷积神经网络的带遮蔽人脸识别[J]. 徐迅,陶俊,吴瑰.江汉大学学报(自然科学版). 2019(03)
[11] 高校学生考勤管理系统发展现状和需求分析研究[J]. 周克辉,罗玮,陈泰峰.电子测试. 2019(22)
[12] 基于OpenCV的人脸识别课堂考勤系统[J]. 金维香,邢晨.浙江水利水电学院学报. 2019(06)
[13] 基于深度卷积网络算法的人脸识别方法研究[J]. 龙海强,谭台哲.计算机仿真. 2017(01)
[14] 基于人脸识别技术应用的安全性研究与实践[J]. 刘涛,宋桂祥,张明,徐沛,刘浩宇.电信工程技术与标准化. 2021(12)
[15] 人脸识别技术风险法律规制问题研究[J]. 程莹.中国信息安全. 2021(10)
[16] 基于人脸识别下高校课堂考勤系统的分析[J]. 王登林,严义辉,吴文平,袁飞虎,李婷婷.计算机产品与流通. 2019(06)
[17] 智能人脸识别考勤系统[J]. 张心怡,李刚.电子制作. 2019(09)
[18] 基于Python的深度学习人脸识别方法[J]. 薛同来,赵冬晖,张华方,郭玉,刘旭春.工业控制计算机. 2019(02)
[19] 基于深度学习人脸识别技术在高校课堂点名中的设计及实现[J]. 陈章斌.兰州文理学院学报(自然科学版). 2018(06)
[20] 人脸识别技术的发展与应用[J]. 李国鑫.科技传播. 2018(19)
[21] 沈理,刘翼光,熊志勇. 人脸识别原理及算法 动态人脸识别系统研究[M]. 北京:人民邮电出版社,2014.10
[22] 基于SpringBoot微服务架构下的MVC模型研究[J]. 张雷,王悦.安徽电子信息职业技术学院学报. 2018(04)
[23] 张欣蓓,刘旭,王浩博,等. 基于人脸识别技术的课堂考勤系统设计与实现[J]. 无线互联科技,2019,16(2):68-70. DOI:10.3969/j.issn.1672-6944.2019.02.029.
好博客就要一起分享哦!分享海报
此处可发布评论
评论(0)展开评论
展开评论
您可能感兴趣的博客