中小学学生行为跟踪与分析系统
随着社会的发展,教育和安全问题越来越受到重视。在课堂上,对中小学生的行为进行追踪与分析,有助于了解学生的上课状态,及时发现不良行为并进行干预,保障学生的安全与健康。本研究旨在开发一种中小学生行为追踪与分析系统,通过对学生行为的实时监测和分析,为教育工作者提供有益的信息,以提高教育质量和保障学生安全。 随着课程改革的不断深入,课堂研究的逐渐兴起,课堂观察作为研究课堂的一种方法开始受到学界的关注与中小学教师的青睐。近年来人工智能技术的兴起,为教育信息化、个性化、智能化的发展提供了一个全新的思路,该场景需求围绕人工智能技术服务于课堂教学,尝试建立基于人工智能的课堂行为分析系统,为促进学生个性化成长,辅助改进课堂教学、打造智能高效、富有智慧的课堂教学环境提供了一条新的探索之路。
中小学学生行为跟踪与分析系统是一个综合管理系统,它集图像采集和处理、语音采集与处理、人脸识别以及信息管理系统于一身,运用最新的人脸识别、行为分析、视频结构化和大数据等技术,实现作弊检测,课堂专注度分析,人脸考勤等功能,助力学生的个性化学习,教师的专业化成长、高效精细的教学管理。
图1 系统架构图
该系统运用最新的人脸识别、行为分析、视频结构化和大数据等技术,实现作弊检测,课堂专注度分析,人脸考勤等功能,助力学生的个性化学习,教师的专业化成长、高效精细的教学管理。
中小学学生行为跟踪与分析系统是一个综合管理系统,它集图像采集和处理、语音采集与处理、人脸识别以及信息管理系统于一身,系统功能主要包括课堂行为异常检测、课堂专注度分析、人脸注册和动态点名四个部分。
课堂异常行为检测是指通过人工智能技术对学生课堂行为进行实时监测和分析,发现学生出现异常行为时及时报警,以便教师及时干预和纠正,提高课堂管理效率和学生学习效果。
该功能包括以下详细介绍:
(1)监测和分析学生课堂行为:通过人工智能技术,对学生课堂行为进行监测和分析,包括坐姿、注意力等方面;
(2)异常行为类型:将动作自主规定为正常、传纸条、低头偷看、东张西望等四种类型,其中后三种行为均属于异常行为;
(3)异常行为记录与统计:系统可以记录学生的异常行为情况,并进行统计分析,以便教师更好地了解学生的课堂表现;
(4)异常行为干预和纠正:教师可以根据系统标记的异常行为,及时干预和纠正学生的异常行为,提高管理效率。
人脸注册功能模块主要是通过摄像头获取视频流,采用静默活体检测技术,借助开源模型,对视频流的单帧图片进行人脸检测,对检测到的人脸进行活体检测,若大于阈值,则判定为活体,否则为非活体,并检测到的活体存储在人脸数据库中,实现人脸注册功能。教师可以在系统中对学生进行人脸注册。在注册过程中,系统会要求学生面对摄像头进行人脸采集。采集完成后,系统会自动进行人脸检测和活体检测。如果检测结果为活体,学生的人脸信息将被存储在人脸数据库中,完成注册。
该功能包括以下详细介绍:
(1)人脸检测
人脸检测是基于视频流进行的。摄像头采集的视频流会经过人脸检测算法的处理,以便在视频中识别出人脸。常用的人脸检测算法包括基于深度学习的卷积神经网络(CNN)等。这些算法可以识别出人脸的位置、大小和关键点,为后续的活体检测做好准备。
(2) 活体检测
在识别出人脸后,需要对检测到的人脸进行活体检测,以确保获取到的人脸信息是真实的。活体检测通常基于深度学习技术,如卷积神经网络(CNN)等。在检测过程中,系统会分析人脸图像的纹理、颜色、形状等特征,并与预设的活体检测阈值进行比较。如果特征值大于阈值,则判定为活体;否则为非活体。
(3)人脸数据存储
经过人脸检测和活体检测后,检测到的活体人脸信息会被存储在人脸数据库中,以便教师在后续的教学管理中进行身份核实。
(4)人脸信息管理
教师可以在系统中对学生的人脸信息进行管理,包括添加、删除和查询学生人脸信息。当学生信息发生变化时,如转学、退学等,教师可以在系统中对学生的人脸信息进行相应操作。此外,教师还可以通过系统查询学生的人脸信息,了解学生身份是否真实有效。
(5)安全保护
为了保护学生隐私,系统需要采取一定的安全措施。在人脸采集和识别过程中,系统应遵循相关法律法规,确保学生的人脸信息不被泄露。
(6)异常处理
在人脸注册过程中,可能会出现一些异常情况,如学生人脸信息无法识别、学生拒绝参加人脸采集等。针对这些异常情况,系统需提供相应的处理措施,如重新采集人脸信息、手动输入学生信息等,以确保学生身份真实有效。
动态点名功能模块为学生通过摄像头完成签到,可多人同时签到,主要借助dlib库实现人脸识别功能,对人脸特征进行提取,在视频流中抓取人脸特征,然后将要识别的对象与人脸数据库中的图片进行距离计算,实现人脸识别,完成动态点名功能。
该功能包括以下详细介绍:
(1)对视频流进行人脸检测,以识别出参与签到的学生。人脸检测可以基于 dlib 库等开源工具,通过卷积神经网络(CNN)等算法实现。在检测过程中,系统会分析视频流中的每一帧图像,找出其中的人脸,并记录人脸的位置、大小、关键点等信息。
(2)人脸识别。在提取人脸特征后,系统会将要识别的对象与人脸数据库中的图片进行距离计算,实现人脸识别。常用的距离计算方法包括欧几里得距离、余弦相似度等。如果计算得到的距离小于预设的阈值,则判定为匹配成功,表示学生已签到;否则为匹配失败,表示学生未签到。
课堂专注度分析是指通过人工智能技术对学生上课情况进行实时监测和分析,以便教师及时干预和纠正,提高课堂管理效率和学生学习效果。
该功能包括以下详细介绍:
(1)监测和分析学生课堂行为:通过人工智能技术,对学生课堂专注度进行监测和分析,包括行为、情绪、头部姿态等方面;
(2)专注度分析报告:系统可以根据学生课堂专注度的监测和分析结果,生成专注度分析报告,供教师参考;
(3)专注度记录和统计:系统可以记录每个学生课堂专注度的情况,并进行统计分析,以便教师更好地了解学生的学习状况;
(4)课堂行为干预和纠正:教师可以根据系统专注度记录情况,及时干预和纠正学生的上课状态,提高管理效率。
系统建设严格按照如下原则
1)数据挖掘:收集学生的行为数据,并采用数据挖掘方法对数据进行分析和处理;2)机器学习和人工智能技术:利用机器学习和人工智能技术,建立学生行为预测模型,并根据预测结果进行分析;3)多元分析和数据可视化:采用多元分析和数据可视化技术,对学生行为进行综合分析和展示,以便更好地了解学生课堂情况;4)文献检索:通过阅读相关文献突破项目重难点。
本项目采用人工智能等技术,对学生课堂行为进行检测与分析,学生行为检测系统的功能架构图如下所示:
(1)视频异常检测模块从摄像头或者本地视频中获取视频流,采用多人姿态估计技术,自顶向下先进行目标检测,对检测到的人进行单人的关键点检测,是否有转头、低头、传递物品等异常行为,若有,则截取该帧视频图片并进行异常行为动作的标记。
(2)课堂专注度分析模块主要通过摄像头或者视频获取视频流,进行图像帧的序列处理,并利用yolov5进行目标检测,对检测到的人体通过行为识别、头背部姿态估计、面部遮挡、面部表情分析等方式进行注意力评估,可视化最终结果。
(3)人脸注册功能模块主要是通过摄像头获取视频流,采用静默活体检测技术,借助开源模型,对视频流的单帧图片进行人脸检测,对检测到的人脸进行活体检测,若大于阈值,则判定为活体,否则为非活体,并检测到的活体存储在人脸数据库中,实现人脸注册功能。
(4)动态点名功能模块为学生通过摄像头完成签到,可多人同时签到,主要借助dlib库实现人脸识别功能,对人脸特征进行提取,在视频流中抓取人脸特征,然后将要识别的对象与人脸数据库中的图片进行距离计算,实现人脸识别,完成动态点名功能。
YOLOv5是一种单阶段目标检测算法,仅仅使用一个CNN网络直接预测不同目标的类别与位置。将其划分为4个通用的模块,具体包括:输入端、基准网络、Neck网络与Head输出端,该 算法在YOLOv4的基础上添加了一些新的改进思路,使得其速度与精度都得到了极大的性能提升。
MOT 获取单个连续视频并以特定帧速率 (fps) 将其拆分为离散帧以输出:
检测每帧中存在哪些对象、标注对象在每一帧中的位置、关联不同帧中的对象是属于同一个对象还是属于不同对象。
检测器得到bbox → 生成detections → 卡尔曼滤波预测→ 使用匈牙利算法将预测后的tracks和当前帧中的detecions进行匹配(级联匹配和IOU匹配) → 卡尔曼滤波更新
课堂作弊检测共由五个顺序处理部分组成:
该模块负责从本地视频源或摄像头视频源中读取视频序列,并将其转换为图像帧序列,速度为12fps。这个模块使用OpenCV这个计算机视觉库来实现。
视频源读取模块是整个课堂行为追踪与分析系统的第一个模块,它的主要任务是从本地视频源或摄像头视频源中读取视频序列,并将其转换为图像帧序列,速度为12fps。该模块的实现离不开计算机视觉库的支持,这里我们选择使用 OpenCV 这个广泛应用的库来实现。
OpenCV 是一个跨平台的计算机视觉库,它提供了丰富的函数和接口,可以方便地处理视频流、图像和特征。在这个模块中,我们将使用OpenCV的 VideoCapture类来读取视频源,并将视频序列转换为图像帧序列。VideoCapture 类提供了一个简单的方法,即可以通过调用read()函数从视频文件或摄像头中读取图像帧。
在实际应用中,我们需要考虑如何优化视频源读取模块的性能,以保证系统在处理大量视频数据时能够稳定运行。为此,我们可以采用以下策略:
使用硬件加速:例如使用GPU加速,可以大幅度提高视频处理的速度。
调整帧率:根据实际需求,我们可以适当调整帧率,以降低处理速度,从而节省计算资源。
采用多线程:通过将视频源读取模块设计为多线程,可以实现并发处理,进一步提高系统的性能。
总之,视频源读取模块作为整个课堂行为追踪与分析系统的起点,通过使用 OpenCV库,可以方便地从本地视频源或摄像头视频源中读取视频序列,并将其转换为图像帧序列,为后续模块提供数据支持。同时,在实际应用中,我们还需要考虑性能优化问题,以确保系统在处理大量视频数据时能够稳定高效地运行。
该模块使用Yolo算法对图像帧进行目标检测,并检测出图像中的所有人。然后,为每个人打上锚框,并将他们送往下一个模块。Yolo是一种基于深度学习的目标检测算法,可以在实时视频处理中快速准确地检测出目标。
作为课堂行为追踪与分析系统的核心模块之一,目标检测模块负责对每一帧图像进行目标检测,以找到图像中的所有人。
目标检测是一件比较实际的且具有挑战性的计算机视觉任务,其可以看成图像分类与定位的结合,给定一张图片,目标检测系统要能够识别出图片的目标并给出其位置,由于图片中目标数是不定的,且要给出目标的精确位置,目标检测相比分类任务更复杂。近几年来,目标检测算法取得了很大的突破。比较流行的算法可以分为两类,一类是基于Region Proposal的R-CNN系算法(R-CNN,Fast R-CNN, Faster R-CNN),它们是two-stage的,需要先使用启发式方法(selective search)或者CNN网络(RPN)产生Region Proposal,然后再在Region Proposal上做分类与回归。而另一类是Yolo,SSD这类one-stage算法,其仅仅使用一个CNN网络直接预测不同目标的类别与位置。第一类方法是准确度高一些,但是速度慢,但是第二类算法是速度快,但是准确性要低一些。 Yolov5(You Only Look Once v5)算法是Yolo第五版改进的目标检测器,它采用了卷积神经网络对图像进行端到端的训练,能够实现对多种目标的实时检测。相较于传统目标检测算法,Yolov5 具有检测速度快、准确率高等优势,这使得它成为实时视频处理中目标检测的理想选择。
在目标检测模块中,我们首先使用 Yolov5 算法对每一帧图像进行预处理,从而在图像中识别出所有人的目标。接着,我们对检测到的目标进行锚框处理,为每个人打上锚框,以便将他们送往下一个模块进行后续处理。
在实际应用中,为了提高目标检测模块的性能,我们采用以下策略:
总之,目标检测模块在课堂行为追踪与分析系统中起着关键作用,通过使用 Yolov5 算法对图像帧进行目标检测,为每个人打上锚框,从而为后续模块提供准确的数据。在实际应用中,我们还需不断优化目标检测模块的性能,以满足实时视频处理的需求。
该模块使用 alphapose 模型对多人的姿态进行估计。alphapose 是一种基于深度学习的人体姿态估计算法,可以准确地估计人体关节的位置和姿态,将估计好的姿态送往下一个模块。
多人体姿态估计模块是课堂行为追踪与分析系统中一个关键模块,它负责对多人的姿态进行精确估计。
为了实现这一目标,我们选择了 AlphaPose 模型,这是一种基于深度学习的区域多人姿态估计算法,具备准确估计人体关节位置和姿态的能力。目前多人姿态估计的方法分为两类:一种是自顶向下,另一种是自底向上。自顶向下检测方法是先检测图片中的每个人的边界框,再独立检测每个人体边界框中的姿态。这种方法的缺点是高度依赖人体边界框的检测质量,如果人体边界框定位不准确,就无法正确预测人体姿态。自底向上是先检测出图像中的所有关节点,然后拼接得到人体骨架,这种方法的缺点是当人体距离相近时,关节点的分组容易出现模棱两可的情况,肢体关节不知道如何匹配到相应的骨架。Alphapose采用的是自顶向下的方法。
AlphaPose 模型是一种基于单人关键点检测的人体姿态估计算法,它由多个卷积神经网络组成,可以实时地对图像中的每个人体进行姿态估计。AlphaPose 模型通过预测人体关键点的坐标,然后利用这些坐标计算出人体关节的位置和姿态。相较于传统人体姿态估计算法,AlphaPose 具有检测速度快、准确率高等优势,这使得它成为课堂行为追踪与分析系统中多人体姿态估计的理想选择。AlphaPose 模型的训练过程主要分为两个阶段。第一个阶段是关键点检测,即识别人体关节的位置。在这个阶段,AlphaPose 使用卷积神经网络对图像进行处理,并预测人体关键点的坐标。第二个阶段是姿态估计,即根据关键点坐标计算人体关节的位置和姿态。在这个阶段,AlphaPose 利用人体关键点之间的几何关系,通过优化算法计算出人体关节的位置和姿态。
异常行为回归预测模块是一个基于深度学习的模块,主要用于分析学生课堂上的行为。该模块通过估计好人体姿态图后,进行回归预测,并对学生的动作进行多分类问题。这里使用了全连接神经网络来实现,以便对学生的行为进行准确的分类。
该模块根据估计好的人体姿态图进行回归预测,并对学生的动作进行多分类问题。此模块使用深度学习算法,全连接神经网络来实现。
在这个模块中,我们共分了19 个标签,它们分别对应着不同的学生行为。这些行为包括正常坐姿不动、正常低头写字、正常伸懒腰、举右手低、举左手低、举右手高、举左手高、起立、抬手、右伸手、左伸手、右伸手、左伸手、右转身、左转身、右转头、左转头、上课睡觉和严重低头。这些标签有助于模型对学生行为进行细致的分类。
经过多分类问题后,接下来根据预测出来的十九个标签进行单分类问题,以判断学生处于以下四种状态中的哪一种:正常、传纸条、低头偷看和东张西望。这样的分类结果有助于教师了解学生在课堂上的行为状况,以便有针对性地进行管理和指导。
通过运用深度学习算法中的全连接神经网络,异常行为回归预测模块能够有效地分析学生课堂上的行为,并对其进行准确的分类。这有助于提高教学质量,促进学生课堂上的良好行为。
可视化模块是一个重要的组成部分,它负责将异常行为回归预测模块所分析的结果进行可视化展示。该模块对每个学生的异常状态进行抓拍,并记录异常行为发生的时间。然后,根据异常行为发生的时间、种类和数量,绘制异常行为时间曲线。最后,将异常行为状态抓拍的图片、异常行为的记录和异常行为时间曲线传到前端客户端进行展示。
这个模块会对每个学生的异常状态进行抓拍,并记录下异常行为发生的时间。这样一来,教师就可以直观地了解学生在课堂上的异常行为情况。
接着,可视化模块会根据异常行为发生的时间、种类和数量,绘制异常行为时间曲线。这条曲线有助于教师进一步了解学生异常行为的分布情况,以便有针对性地进行干预和辅导。
最后,可视化模块会将异常行为状态抓拍的图片、异常行为的记录和异常行为时间曲线传到前端客户端进行展示。在前端客户端上,教师可以通过浏览器或其他设备查看学生的异常行为情况。这样的展示方式既方便又直观,有助于教师更好地关注学生的行为变化,提高教学质量。
总之,可视化模块通过抓拍异常行为、记录异常行为发生时间和绘制异常行为时间曲线等方式,将异常行为回归预测模块的分析结果呈现出来,为教师提供直观、便捷的异常行为查看和分析工具。这有助于提高教学质量,促进学生课堂上的良好行为。
该部分通过对学生的姿态检测,可以有效的辅助老师有效监督学生的学习上课情况,对学生的上课行为进行分析及评分,避免出现课堂不认真听讲、考试作弊等不良的行为。课堂专注度分析模块有群体专注曲线,头部姿态专注度评分曲线,情绪专注度评分曲线,行为专注度评分曲线,通过头背部姿态估计、传递动作识别等综合统计,抉出最佳行为。
该模块负责从本地视频源或摄像头视频源中读取视频序列,并将其转换为图像帧序列,速度为12fps。这个模块使用OpenCV这个计算机视觉库来实现。
该模块使用Yolo算法对图像帧进行目标检测,并检测出图像中的所有人。然后,为每个人打上锚框,并将他们送往下一个模块。Yolo是一种基于深度学习的目标检测算法,可以在实时视频处理中快速准确地检测出目标。
该模块使用 alphapose 模型对多人的姿态进行估计。alphapose 是一种基于深度学习的人体姿态估计算法,可以准确地估计人体关节的位置和姿态,将估计好的姿态送往下一个模块。
根据行为识别、头背部姿态估计、面部遮挡、面部表情分类上述这几项数据进行模糊综合分析,最后得到注意力是否集中的评估结果。
行为识别:我们设置了19个标签分别对应不同的学生行为,如正常坐姿不动、正常低头写字、正常伸懒腰、举右手低、举左手低、举右手高、举左手高、起立、抬手、右伸手、左伸手、右伸手、左伸手、右转身、左转身、右转头、左转头、上课睡觉和严重低头。
将其重新分类,得到第一类:正常坐姿不动、正常低头写字;第二类:举右手低、举左手低、举右手高、举左手高、抬手;第三类:正常伸懒腰、起立、;第四类:上课睡觉、严重低头;第五类:右伸手、左伸手、右伸手、左伸手、右转身、左转身、右转头、左转头。根据输入的关键点坐标输入模型,提取预测结果中的最大概率类别,预测行为动作类别。
头背部姿态估计:通过PnPPoseEstimator中的Facial landmarks包括眼睛、鼻子、嘴巴、耳朵等部位的几何中心或关键点进行头背部姿态估计,获得头背部姿态:包括头背部的位置、方向、旋转角度等信息,通常用三维坐标系中的旋转矩阵表示。这是一个用于头背部姿态估计的工具,它使用深度学习技术对图像或视频中的人物头背部姿态进行分析和估计。该工具基于卷积神经网络和循环神经网络的模型,能够识别和区分不同的头背部姿态,包括颈部、肩部、背部等部位。通过使用 PnPPoseEstimator,可以对人物头背部姿态进行精确的估计和分析。
面部遮挡:从人体关键点数据中提取面部关键点得分。通过切片操作,提取了面部关键点部分得分,然后,通过求轴向最大值,并判断其是否小于预设的遮挡阈值,来判断面部是否被遮挡。我们还需判断判断嘴巴是否被遮挡,同样地,通过求轴向最大值,并判断其是否小于预设的遮挡阈值,来判断嘴巴是否被遮挡。
面部表情分析:从人体关键点数据中提取面部关键点坐标。通过切片操作,提取了面部关键点坐标部分,使用面部预测模型获取面部表情,该模型的预测函数,它接收面部关键点坐标作为输入,并返回预测的面部表情。该模型通过脸的宽度、嘴巴张开程度、眼睛睁开程度、头部倾斜程度、两嘴角中间位置占据上下唇高度比例,最后分情况讨论,张嘴,可能是开心或者惊讶,没有张嘴,可能是正常和疑惑,得到“开心”、“惊讶”、“正常”、“疑惑”四种面部表情。
模糊综合评:将得到的行为识别、头背部姿态估计、面部遮挡、面部表情分类上述这几项数据进行模糊综合分析。对动作预测进行重新分类,并计算动作预测中的等级。对面部表情预测进行重新分类,并计算面部表情预测中的等级。如果 面部遮挡存在,还需将其考虑在内。对头部姿势预测进行重新分类,并计算头部姿势预测中的等级。同样,如果头部遮挡存在,还需将其考虑在内。
通过处理过的动作、面部表情和头部姿势预测结果计算出二级评价因素、一级评价因素,将两级因素相结合,得到最终的评价结果。这个评价结果可以用于对预测结果的准确性和可靠性进行评估。
可视化模块是一个重要的组成部分,使用了OpenCV库中的 Image 和 ImageDraw 类来实现图像的绘制。它负责将注意力评估模块所分析的结果进行可视化展示。在显示屏上绘制骨骼关键点、绘制目标检测框和动作分类,在屏幕上显示学生的目标检测框和注意力评估结果,包括群体专注曲线,头部姿态专注度评分曲线,情绪专注度评分曲线,行为专注度评分曲线和评价因素。若显示结果冲突,会提示请正视摄像头。这样一来,教师就可以直观地了解学生在课堂上的课堂专注度情况。
人脸注册功能分为以下五个部分
该部分负责从屏幕上识别出镜头中的人脸,并对镜头中出现的人脸进行比较,选择离镜头最近最大的人脸。该部分使用face_recognition中的FaceBoxesLocation人脸检测器实现。
人脸检测部分是人脸注册功能的核心第一部分,FaceBoxes模型对人脸进行识别并选取最近的人脸。FaceBoxes是一个足够轻量的人脸检测器,由中国科学院自动化研究所和中国科学院大学的研究者提出,旨在实现CPU下的实时人脸检测。该模型的创新点在于提出了Rapidly Digested Convolutional Layers (RDCL)实现快速的特征提取,极大提高了模型的运行速度;提出了Multiple Scale Convolutional Layers (MSCL)来获取多尺度的特征,主要是参考了GoogleNet中的inception模块来实现;提出了anchor densification strategy(anchor box稠密化策略),改善人脸检测的查全率。
该部分会检测视频中的所有人脸并返回一个人脸位置信息列表。在人脸检测中,通常需要使用一个矩形框框来表示人脸的位置和大小,这个矩形框的位置和大小信息就是通过 FaceBoxesLocation 对象来表示的。进行人脸检测时,通常会返回一个包含多个 FaceBoxesLocation 对象的列表,每个 FaceBoxesLocation 对象都代表了一个检测到的人脸的框框位置信息。通过这个列表,可以获取每个检测到的人脸的位置和大小信息,并进行后续的处理,例如人脸识别、人脸对比等操作。
该部分对人脸检测中检测到的每张人脸进行静态活体检测,并且根据静态活体识别结果和人脸位置信息来显示相应的提示文本。该部分使用face_recognition中的SilentFaceDetector静态活体检测实现。
静态活体检测部分的主要用途是检测图像中的人脸,并提取人脸的关键点坐标。人脸静态活体检测是一种利用计算机视觉技术,对人脸图像进行分析和比对,以检测人脸图像是否为活人的技术。与动态检测相比,静态检测可以在不运行被检测软件的情况下进行,因此可以检测到更深层次的漏洞和错误,但是需要耗费更多的时间和精力。静态检测技术可以应用于软件开发过程中的代码审查、质量控制和安全漏洞检测等方面。FaceRecognition 库中的 SilentFaceDetector 是一个基于深度学习的人脸检测器,它使用预训练的卷积神经网络来检测图像中的人脸。与传统的人脸检测器(如 Haar 特征分类器)相比,SilentFaceDetector 具有更高的准确性和鲁棒性。
在该部分中,SilentFaceDetector类进行的操作是对人脸位置信息进行静默活体识别,并将识别结果存储到列表中,结果包含检测到的人脸在图像中的位置和大小。
该部分采用的技术来自小视科技团队开源的活体检测模型MiniFASNetV1和MiniFASNetV2。该模型采用自研的剪枝轻量级网络作为 backbone 训练模型,使用 Softmax + CrossEntropy Loss 作为训练分类的监督。使用不同尺度的图片作为网络的输入训练数据,增加模型间的互补性,从而进行模型融合。
该部分通过求解人脸的关键点坐标数组的姿态(旋转和平移矩阵),在屏幕上输出人脸姿态对应的坐标轴,并定义一个容忍误差,用于判断人脸在视频帧中的边界范围是否超出一定范围,以此对人脸进行识别和处理,判断人脸的位置和姿态是否合理。该部分使用face_recognition中的PnPPoseEstimator头部姿态估计实现。
头部姿态估计是人脸识别的关键,用于对人脸进行识别和处理,判断人脸的位置和姿态是否合理。在该部分中使用的PnPPoseEstimator 是 FaceRecognition 库中的一个面部姿态估计器,它用于估计人脸图像中面部特征点的位置和姿态。这些特征点包括眼睛、鼻子、嘴巴、耳朵等,通过估计这些特征点的位置和姿态,可以得到人脸的精确几何形状,从而用于人脸识别、人脸比对等任务。
PnPPoseEstimator 使用深度学习模型进行训练,并使用优化算法来最小化模型损失函数。在训练过程中,它使用了大量的人脸图像数据集,如 LFW、CelebA 等,以学习面部特征点的位置和姿态的先验概率分布。通过最大化模型对训练数据的似然性,它可以得到最佳的面部姿态估计结果。
用户打开人脸注册功能时初始化人脸数据库并加载已有的人脸数据库数据信息。人脸数据库中存储的信息包括学生姓名、编码及学生照片。人脸编码通过dlib库中的人脸检测模型获取。根据用户操作,可以对人脸数据库中的数据信息进行增加或者修改。
人脸注册功能通过cv2打开摄像头进行注册。该部分通过将视频拆分成每一帧,设置人脸框对人脸进行识别,并截取注册成功的人脸图像保存到人脸数据库中。
可视化模块是人脸注册的重要组成部分,该部分将摄像头所拍到的画面显示在屏幕上,并设置一个人形框,用户需要在保证自己的脸在框中来进行人脸的识别及处理。接着可视化模块会将一帧一帧的图像返回到模型中进行人脸的识别及处理,也就是人脸注册的过程,在注册的过程中,屏幕上会有相应的文字提示来帮助用户进行人脸注册。注册完成后,用户输入名字完成注册,注册结果会保存在人脸数据库中并在人脸数据库列表中显示注册的人像及名字。
动态点名功能由五个顺序处理部分组成:
该模块负责从本地视频源或摄像头视频源中读取视频序列,并将其转换为图像帧序列,速度为12fps。这个模块使用OpenCV这个计算机视觉库来实现。
该模块借助基于C++开源库 dlib中的深度学习模型实现的人脸识别项目face_recognition,首先检测出人脸,并框出人脸面部轮廓的位置,识别出人脸关键点,接着采用头部姿态估计更准确地定位人脸的位置和方向,然后将进入到下一个模块。
人脸检测模块可以说是动态点名部分最开始也是最重要的一个部分,通过对每一帧图像进行检测,识别出人脸位置等信息。
dlib 是一个功能强大的 C++ 库,主要用于计算机视觉、机器学习和数据处理等领域。它提供了许多实用的工具和算法,以便开发人员能够快速实现各种图像处理任务。dlib 库的主要功能包括:
图像处理:dlib 提供了丰富的图像处理功能,如图像缩放、裁剪、旋转、滤波等。这些功能可以方便地对图像进行预处理,提高后续算法的性能。
特征提取:dlib 库包含了许多常见的特征提取算法,如 SIFT、SURF、HOG、LBP 等。这些算法可以帮助开发人员从图像中提取出有用的特征信息,用于分类、匹配和识别等任务。
机器学习:dlib 提供了一些基本的机器学习算法,如分类、回归、聚类等。此外,它还支持使用支持向量机 (SVM) 和决策树等技术进行分类和回归。
人脸识别:dlib 库内置了人脸检测、人脸关键点检测和人脸识别等算法。这些算法可以帮助开发人员实现人脸识别、人脸对比等任务。
姿态估计:dlib 提供了头部姿态估计算法,可以估计人脸图像中的旋转角度和倾斜程度,从而更精确地定位人脸在图像中的位置。
数据库和文件处理:dlib 库支持各种常见的数据存储格式,如 JSON、XML、CSV 等。此外,它还提供了数据库接口,方便开发人员进行数据存储和管理。
跨平台支持:dlib 库可以在多种操作系统上运行,包括 Windows、Linux 和 macOS 等。这使得开发人员可以在不同环境下方便地使用 dlib 库实现图像处理任务。
总之,dlib 库为开发人员提供了一个便捷、高效的图像处理工具集,有助于快速实现各种计算机视觉任务。
在本模块主要借助dlib库提供的人脸识别功能,首先进行人脸位置的识别,然后对检测到人脸的图像进行68个人脸关键点的提取,同时,为了提高人脸识别的准确性和稳定性,采用头部姿态估计算法更准确地定位人脸的位置和方向,头部姿态估计是指通过计算机视觉技术对人头部的姿态进行估计和分析,通常包括对人脸、眼睛、嘴巴等特征点的定位和分析,从而减少人脸识别的错误率和误判率。
该模块主要就是实现对人脸面部特征的编码,将其转为特征向量,然后将编码好的人脸特征向量输入到下一个模块。
该模块也是基于dlib提供的人脸识别功能进行人脸特征点的编码,借助face_encodings函数,将关于人脸的68个关键点输入到函数中输出一个128维的人脸特征向量,便于进行之后的人脸匹配模块。
该模块相对来说也较为简单,但是也是人脸检测与人脸匹配模块之间的一个重要步骤,人脸编码模块将提取出的人脸特征编码为一个唯一的数字代码,以便计算机能够将它们与已知的人脸图像进行比较。
人脸匹配算法是指将一张人脸图像与另一张人脸图像进行比较,以确定它们是否属于同一个人的过程。人脸匹配算法是人脸识别技术的重要组成部分,可以用于身份验证、安全控制、人脸搜索等领域。常用的人脸匹配算法包括:几何特征匹配算法、基于神经网络的匹配算法、基于谱聚类的匹配算法、基于图像相似度的匹配算法。这里我们通过计算欧氏距离来进行人脸匹配。
导入face_recog 模块作为实现人脸识别的框架。在这个库中,包含了多种人脸识别算法和模型,如卷积神经网络 (CNN) 等。基于神经网络的匹配算法通过训练神经网络模型,将人脸图像转化为高维向量,然后计算这两个向量之间的相似度来确定是否匹配。我们根据已知的人脸编码,对输入数据中的人脸编码进行比较和匹配,计算它们之间的距离,并返回匹配的标签并对匹配度进行排序,以便后续进行人脸识别等操作。
人脸匹配算法的性能受到多种因素的影响,如人脸图像的质量、光照条件、角度、表情等。因此,在项目的实现中,需要挑选合适的视频数据集来进行测试保证算法的实现度较好,并进行相应的调整和优化。
这个模块负责将动态点名的结果进行可视化展示。这个模块会对每个学生的的人脸进行抓拍,并于人脸数据库进行匹配,若匹配成功则代表这个学生出席,点名成功显示已签到,否则不显示。这样一来,教师就可以直观地了解学生在课堂上的出席情况。
动态点名可视化模块用于处理和分析摄像头捕捉到的帧数据,在初始化时,我们设置了已知的人员名字,并在后续处理中对跳过的数据进行了处理,以增加抖动效果。通过实现视频画面可视化,在视频画面中绘制人脸的位置和标签,并且可以根据设定的阈值来过滤掉概率较低的人脸,并在画面上绘制人脸的位置和标签。最后,将动态点名的结果传到前端客户端进行展示。
动态点名可视化模块通过绘制人脸的位置和标签可以直观地展示已签到的学生姓名,可以直观找到未签到的学生,对教师考察课堂出勤情况具有重要作用。
最后,可视化模块会将点名时抓拍到的学生照片进行展示,方便教师了解到学生的状态,这样的展示方式既方便又直观,有助于教师更好地了解学生现状,提高教学质量。动态点名可视化模块通过抓拍学生人脸并进行匹配显示出席情况等方式,将学生出勤情况呈现出来,为教师提供直观、便捷的查看出席情况的工具,这有助于提高学生课堂出勤率,避免逃课等行为。
界面设计使用python的QT框架实现,主要分为三大模块:
导入 PyQt5.QtCore 模块中的 QSize 类,主要作用是获取或设置一个矩形区域的大小。QSize 类通常用于设置控件的大小,例如按钮、文本框等控件的大小。通过导入 QSize 类,可以使用其构造函数和成员函数来创建和操作一个 QSize 对象。构造函数可以创建一个 QSize 对象,并指定其宽度和高度。可以为程序提供一种方便的方式来获取和设置控件的大小,从而实现图形用户界面的构建。
从 PyQt5.QtGui 模块中导入 QImage、QPixmap 和 QIcon 包,主要作用是提供图像处理和图标绘制功能。这三个类分别提供了不同的图像处理和图标绘制功能,如下所述:
QImage 类:提供了对图像文件的读取、保存和处理功能。可以通过 QImage 类的构造函数读取不同格式的图像文件,可以使用 QImage 类的成员函数进行图像处理。
QPixmap 类:提供了对位图图像的处理功能。QPixmap 类类似于 QImage 类,但是它使用的是 QPixmap 类型的像素数据,而不是 QImage 类型的像素数据。通过 QPixmap 类的构造函数,可以创建一个 QPixmap 对象,可以使用 QPixmap 类的成员函数进行位图处理。
QIcon 类:提供了图标绘制功能。通过 QIcon 类的构造函数,可以创建一个 QIcon 对象,并指定其图标的文件名,可以使用 QIcon 类的成员函数进行图标操作。
总结起来,从 PyQt5.QtGui 模块中导入 QImage、QPixmap 和 QIcon 包,可以为程序提供强大的图像处理和图标绘制功能,从而实现丰富的图形用户界面。
从 PyQt5.QtWidgets 模块中导入的几个类和函数主要用于构建和管理图形用户界面(GUI)的各个组件。以下是每个导入项的作用描述:
QListWidget 类:是一个用于显示列表项的控件。通过 QListWidget 类,可以创建和管理一个列表,并在列表中添加、删除和修改列表项。与 QComboBox 和 QTreeView 相比,QListWidget 的列表项是平面布局的,没有嵌套关系。QListWidget 控件通常用于需要显示大量简单列表项的场景,比如文件列表、程序菜单等。
QListWidgetItem 类:用于表示 QListWidget 中的每个列表项。通过此类,可以设置和获取列表项的文本、图标、背景色等属性。它是 QListWidget 控件中常用的子类,提供了许多方法和属性,用于设置和获取列表项的文本、图标、背景色等属性,以及检查和设置列表项的选中状态。这些方法和属性使得 QListWidget 控件更加灵活和功能丰富,可以满足各种复杂的界面需求。
QWidget 类:它是 PyQt5 中的一个基础窗口部件,是所有窗口部件的父类。它提供了一个矩形的绘制区域,可以在屏幕上绘制,并接收鼠标、键盘和其它事件。每一个 QWidget 部件都是矩形的,并且它们按垂直轴顺序排列。一个 QWidget 部件可以被它的父窗口部件或者它前面的窗口部件盖住一部分。
QInputDialog 类:它用于向用户显示一个输入对话框,以便用户输入一些信息。它继承自 QDialog 类,因此它具有与 QDialog 类相同的基本特性,如对话框的标题、大小、位置等。与 QDialog 类不同的是,QInputDialog 类还包含一个输入框和一个确认按钮,用户可以在输入框中输入信息,然后通过确认按钮将输入的信息传递给父窗口。
QLineEdit 类:QLineEdit 是 PyQt5 中的一种常用控件,用于输入单行文本。它可以在运行时动态获取,也可以添加图片、输入密码等功能。
QMessageBox 类:用于创建一个消息对话框。通过 QMessageBox 类,可以设置对话框的类型(如信息、警告、确认等)、标题、文本等属性,并根据用户的回应执行相应的操作。它是 Qt 应用程序开发框架中的一个常用组件,是一种弹出式对话框,用于显示消息和允许用户对消息进行反馈。QMessageBox 可以显示不同类型的消息,例如提示、警告、错误和询问等,每种类型的对话框都有不同的图标和默认操作。用户可以通过单击不同的标准按钮对消息进行反馈,每个标准按钮都有一个预定义的文本、角色和十六进制数。
综上,从 PyQt5.QtWidgets 模块中导入的这些类和函数,提供了构建和管理图形用户界面所需的基本组件和功能。这些组件和功能可以帮助开发者创建丰富多样的界面,实现与用户的交互。
客户端界面采用主窗口和多个子窗口组成。主窗口包含菜单栏、数据上传功能区和可视化展示区域。
菜单栏位于主窗口顶部,包括课堂作弊检测、人脸注册、课堂动态点名模块、课堂专注度分析模块等菜单项。
数据上传功能区位于主窗口左下部,有视频上传按钮。
可视化展示区域位于主窗口中部,用于展示用户上传的视频、分析结果、文字记录等。
当用户点击菜单栏中的不同功能时,对应功能的实现代码会被调用。例如,点击课堂作弊检测菜单项时,会调用相应的检测算法并对结果进行展示。
用户点击视频上传按钮时,触发视频上传功能。上传成功后,根据用户选择的视频,实现对应的功能。
可视化展示区域根据用户上传的视频、分析结果、文字记录等信息进行展示。例如,上传视频后,可视化展示区域会显示视频的预览图、分析结果和相关文字记录。
用户点击菜单栏中的不同功能时,会触发相应的功能实现。例如,点击课堂作弊检测菜单项时,会弹出课堂作弊检测对话框,让用户选择要检测的视频。
用户点击视频上传按钮时,会弹出文件选择对话框,让用户选择要上传的视频文件,方便用户选择。
用户可以在可视化展示区域查看上传的视频、分析结果和文字记录等信息。
主界面采用简约风格,组件样式统一,保持界面美观。
优化代码实现,提高界面的响应速度,使操作流畅。
对话框和提示信息使用友好的语言,让用户容易理解。
系统规划与立项:
系统开发与测试:
系统维护与升级:
数据安全与保护:
系统培训与指导:
需求分析:
方案设计:
系统开发:
系统集成与部署:
系统维护与升级:
命名规范:
代码缩进:
代码注释:
代码风格:
代码安全性:
代码可维护性:
代码性能优化:
学生行为数据接口:用于获取学生行为数据,如学生在线学习记录、答题情况、学习习惯等。
学生档案接口:用于获取学生基本信息,如学生姓名、年龄、性别、班级等。
行为分析接口:用于对学生行为数据进行分析,生成分析报告,如学生学习情况分析、学科表现分析等。
数据查询接口:用于查询学生行为数据和分析报告,支持多种查询条件,如时间、学科、学生等。
请求参数:描述请求的参数,如学生 ID、时间范围等。
回复参数:描述接口返回的结果,如学生行为数据、分析报告等。
JSON 格式:使用 JSON 格式返回数据,支持数据的快速解析和处理。
身份认证:接口需要进行身份认证,确保只有授权的用户可以访问。
数据加密:对敏感数据进行加密处理,如学生行为数据、分析报告等。
响应时间:接口响应时间应尽量短,确保系统的高效性。
吞吐量:接口应支持高并发请求,确保系统的稳定性和承受能力。
为每个接口提供详细的文档,包括接口说明、请求参数、回复参数、示例代码等,便于开发者理解和使用。
中小学学生行为跟踪与分析系统项目的研究进度计划分为三个阶段,共计 20天。在每个阶段,研究团队需要完成相应的任务,确保项目按计划进行。同时,在项目进行过程中,需要不断收集反馈,对系统进行改进和优化,以满足项目的实际需求。以下是具体设计进度计划:
第一阶段学习语音识别与视频检测相关领域知识,完成环境部署任务。该阶段主要确定研究的目标、研究内容、研究方法、数据来源、样本选择、数据收集和数据处理等内容。该阶段的工作重点是确定研究的具体方案和实施计划,以及确定数据收集和处理的方法和工具;
第二阶段完成概要设计与详细设计。该阶段主要负责收集和处理研究所需的数据。数据收集可以通过网络查找,视频监控等方式进行。数据处理可以通过数据清洗、数据转换、数据整合等方式进行。该阶段的工作重点是确保数据的准确性和可靠性,以及保证数据的完整性和一致性。对收集到的数据进行分析和处理,并建立基于大数据和机器学习的学生行为预测模型。该阶段的工作重点是选择合适的算法和模型;
第三阶段完成项目总体工作,进一步完善项目框架布局,优化界面,完成项目最终模型,整理项目全部内容。该阶段的工作重点是对模型进行优化和验证,确保预测模型的准确性和可靠性。确保预测模型的实际应用效果,并评估项目的效果和可行性。总结研究的结果和发现,并撰写技术文档,确定研究结论和建议,以及对研究过程和结果进行评估和总结。
本项目的质量保证期为项目进行时的20天。在此期间,研究团队需要对项目成果进行持续改进和优化,以确保项目的稳定性和可靠性。
项目阶段 及里程碑 | 阶段划分 | 计划开始时间 | 计划结束时间 |
---|---|---|---|
A-项目准备阶段 | 7.18 | 7.20 | |
B-需求设计阶段 | 7.21 | 7.25 | |
C-项目建设阶段 | 7.26 | 8.1 | |
D-系统测试阶段 | 8.2 | 8.11 | |
E-正式环境搭建阶段 | 7.26 | 8.11 | |
F- 试运行阶段 | 8.2 | 8.11 | |
F- 上线运行阶段 | 8.2 | 8.11 | |
G- 项目验收阶段 | 8.11 | 8.11 |
本项目实施策略主要包括以下几个方面:
本项目实施原则主要包括以下几个方面:
在项目实施过程中,各团队成员需承担以下责任:
在项目实施过程中,为确保项目系统正常运行,对本项目所涉及的软硬件资源、网络环境等进行维护、管理和优化。运维工作贯穿项目实施的整个生命周期,包括项目启动、运行、维护和终结阶段。
根据项目的特点和需求,运维内容包括以下几个方面:
在项目实施过程中,可能遇到各种突发事件,如系统故障、网络中断、数据泄露等。为确保项目顺利进行,需建立应急响应策略,包括以下几个方面: