基于YOLOv8深度学习的智慧课堂教师行为规范自动检测与语音提示系统
随着现代教育的发展趋势日益明显
基于课堂视频数据的采集过程中
该系统基于PyQt5平台实现了人机交互界面,并能实时更新检测数据。它通过语音提示指导教师修正违反规范的行为,并显著提升了课堂管理的智能化水平。实验数据显示,在检测准确率和实时响应方面,该系统表现优异。此外,在教学行为监控方面具有显著优势,并为教学管理提供了智能化解决方案。
算法流程
Tipps:建议对项目的整个算法流程进行详细剖析,在系统地探讨实现过程中关键逻辑的运作机制的基础上展开讨论。数据预处理阶段作为起点,在后续的核心算法设计阶段及优化过程中逐步推进。最终通过可视化展示结果,在结构安排上做到条理清晰,在语言表达上力求简洁明了地向读者传达信息的同时深入阐明其中的技术原理及其实现思路。

硬件环境
我们采用了两套硬件平台配置用于系统调试与训练:
(1)外星人 Alienware M16笔记本电脑:

(2)惠普 HP暗影精灵10 台式机:

上面的硬件环境配置了充足的计算能力,并能支持大规模图像数据的训练以及高速处理这些数据。GPU 的引入大幅减少了模型训练周期。使用两种硬件平台进行调试与训练操作能够实现对系统多维度性能指标(如运算速度、兼容性能力和系统稳定性)的全面评估。这种方法不仅增强了系统在不同场景下的稳定性和适应性能力还能有效降低开发投入与运行效率并为其实际应用提供可靠的技术支撑。
模型训练
Tipps:模型的训练、评估与推理
1.YOLOv8的基本原理
YOLOv8是一款处于行业领先水平的模型,在Yolov1到Yolov7等历史版本的基础上进行了升级优化,并增添了一系列创新功能与改进技术以显著提升其性能与适应性,在目标检测、图像分割以及姿态估计等多个领域均可提供卓越的效果。其主要创新体现在采用了全新的主干网络架构、突破性的Ancher-Free检测头部设计以及创新性的损失函数设计,并且这些技术可以在从CPU到GPU等多种硬件平台上稳定运行。

YOLOv8成为Yolo系列中的顶尖版本,在多个关键指标上全面超越当前的对象检测与实例分割技术。基于对Yolov5架构进行全方位优化后成功推出,并在保持工程化简洁易用性的基础上实现了性能的全面提升。
Yolov8模型网络结构图如下图所示:

2.数据集准备与训练
本研究采用了包含教师行为特征的数据集,并利用 Labelimg 工具对图像中的目标边界框及其类别进行了精确标注。基于所述数据集, 研究人员采用了 YOLOv8n 模型进行训练任务.经过训练后, 我们对模型在验证集上的性能进行了全面评估和详细对比分析.具体流程包含三个主要阶段:首先是数据准备阶段,其次是模型训练阶段,最后是模型评估阶段.该数据集中共有 9820 幅图像, 其中教师行为占 45%, 学生行为占 35%, 其他行为占 20%.
训练集:包含6874张图像,主要用于模型训练与参数优化。
验证集:包含1964张图像,用于检验模型对新数据的泛化能力。
测试集:包含982张图像,用于全面评估模型在未知数据上的性能水平。
数据集的分布情况统计图

部分数据集图像如下图所示:

部分标注如下图所示:

这种数据分布模式确保了数据在训练、验证及测试阶段的均衡分布。为YOLOv8n模型的系统开发过程及性能指标评估提供了坚实的基础。
图像数据的存储格式如下:首先,在项目根目录下创建一个名为datasets的子 directories;其次,在该 directories 中进行操作:将收集到的数据按照类型划分存放在不同的文件夹内,并分别标记为training set和validation set的位置。

随后应创建一个data.yaml文件,并在其内记录训练数据存储路径以及模型需进行检测的类别。YOLOv8在执行模型训练过程中会自动读取该文件中的相关信息,并据此完成模型的训练与验证工作。

该文件明确了用于模型训练与验证的数据集目录,并说明了该模型预期识别的目标类别。
数据准备好后, 我们可以通过运行train.py文件来进行模型训练. epochs参数将决定训练的次数, 而batch参数则会设置每个批次的大小(受内存容量限制, 最小值设定为1).
CPU/GPU训练代码如下:

导入预训练的YOLOv8模型命名为yolov8n.pt,并确认yolov8n.pt为预先训练好的模型文件。在YOLO模型上进行训练时,请注意以下参数设置:
(1) 数据集配置文件已配置为data_yaml_path。
(2) 总共有150个训练轮次。
(3) 每个数据批次包含4个样本。
(4) 选择SGD优化器进行参数更新。
(7) 本次实验命名为train_v8以区分不同的实验组别。
3.YOLOv8模型训练结果与性能评估
在进行深度学习的过程中,我们一般通过观察目标函数下降曲线的变化轨迹来评估模型的学习进度。针对YOLOv8模型的训练过程而言,则主要包括三种不同的损失项:定位相关的损失项(box_loss)、分类相关的损失项(cls_loss)以及动态特征相关的损失项(dfl_loss)。这些不同类型的优化目标对于提升目标检测系统的性能具有重要意义。
损失函数作用说明:
(1)定位损失 (box_loss):衡量预测边界与真实边界之间的差异度(GIoU),值越小表明定位精度越高。
(2)分类损失 (cls_loss):评估锚框所对应的类别标记是否准确,在分类上表现更为严格。
(3)动态特征损失 (dfl_loss):DFLLoss则通过回归机制计算预测边界与真实边界间的距离,并结合多尺度特征图优化边界精度。
训练和验证结果文件存储:
训练完成后,相关的训练过程和结果文件会保存在 runs/ 目录下,包括:

(1)该系统的损失曲线图(Loss Curves)
(2)该系统性能指标的曲线图(mAP、精确率、召回率)
(3)该分类模型的混淆矩阵(Confusion Matrix)
(4)Precision-Recall (PR) 曲线
损失曲线(Loss Curve)和性能指标分析:

训练指标:
train/box_loss:
含义:衡量预测边界框与真实边界框之间差异的损失函数值。
趋势:随着训练步骤的增加,损失函数值持续降低,并表明模型在定位目标的过程中逐步提高了定位精度。
train/cls_loss:
含义:分类误差函数反映了预测类别的偏差与真实类别的差异程度。
趋势:随着训练过程的进行,该损失指标持续减少表明模型的学习能力不断增强其在区分不同类别方面的性能得以提升从而更准确地识别和预测目标类别。
train/dfl_loss:
含义:该损失函数旨在综合多个分布信息以提升边界框预测的质量。
趋势:在训练过程中,损失值持续减少的趋势表明模型预测结果的质量得以显著提升。
评估指标:
val/box\_loss:
含义:
该指标衡量的是基于验证集的边界框回归损失,在一定程度上与基于训练阶段计算出的box\_loss相近,并且特别关注该模型对未曾见过的数据表现。
趋势:
随着模型训练过程的发展,
该损失值逐渐下降,
反映出该模型在未见过的数据上的边界框预测能力得到了提升。
val/cls_loss:含义:验证集上的分类损失与训练集的 cls_loss 相近。趋势:该损失稳步减少表明模型在验证集上的分类准确性不断提升。
val/dfl_loss: 该指标衡量的是在验证集上进行分布聚合后的损失程度;观察数据表明,在测试集上dfl_loss持续降低的趋势持续存在,并且这一过程暗示着模型输出结果正逐步趋近于更为精确的状态
性能指标:
定义:在训练过程中评估的一种关键指标(metric),其中 precision(B) 表示针对类别 B 的精确率(precision)。
具体体现:它衡量的是预测结果中真实为 B 类别样本所占的比例(ratio),即在所有被预测为 B 类别的样本中实际确实属于 B 类别的样本所占的比例(proportion)。
指标 metrics/recall(B):具体而言,在训练过程中该指标反映了对于类别B的目标识别效果,在真实目标中被正确捕获的比例。从趋势来看,在训练过程中该指标持续上升,在后续阶段达到较高水平,并且能够有效识别出较多的正样本数量
metrics/mAP50(B):
含义:基于验证集的 mAP@0.5 即当IoU阈值设定为 0.5 时的平均精度。
趋势:经过训练后发现该指标逐渐上升 整体上反映该模型在不同IoU阈值下的识别性能持续增强。
metrics/mAP50-95(B):
含义:在验证数据集上计算的mAP@50:95指标反映了不同IoU阈值下的平均精度。
趋势:该数值持续上升表明模型在各个IoU阈值下的检测效率不断优化。
总结:
(1)总损失值(训练与验证)持续减少,在不断优化模型的过程中稳步下降,并且表现出良好的收敛特性。
(2)各项评估指标持续提升,在分类与目标检测任务中均展现出显著的性能增强效果,并且具备较强的泛化能力与稳定性。
Precision-Recall(P-R)曲线分析:

曲线说明:
蓝色 (Crossing legs – 跷二郎腿):
该类别的Precision-Recall曲线表现出色,在此曲线上Precision和Recall值均接近于1.0, 表明该模型对这一行为的识别具有高度精准度。
橙色 (指导学生): 该类别的Precision与Recall指标略微低于'Crossing legs'这一指标, 虽然如此仍保持较高的水平, 其Precision值为0.992、Recall值为0.981。
绿色(Looking at the screen – 在看屏幕):该类别的Precision略微低于前两个类别;然而其Recall指标相对较高,并且表现尚可;其中Precision值达到0.981;对应的Recall指标则为0.976。
红色 (Teaching or asking – 教学讲课): 在该类别中表现出色的情况下, 其Precision和Recall指标均表现出显著的正值, 其中, Precision值达到0.994, Recall值达到0.988
紫色(Using a phone – 使用手机): 此分类的精确率为 0.993,在其召回率为 0.973 时略微低于 'Teaching or asking' 类别;但整体上仍保持较高的水平
Recall值达到0.975,并且Precision值达到0.985;研究表明,在该类别中使用此方法能够显著提升模型的识别效果。
蓝色粗线 (all classes – 所有类别): 该曲线反映了各类别间的综合表现情况,在验证集上的平均精度值(mAP)@ 0.5阈值下达到 0.990(即 99.0%),显示出较高的整体性能。各类别在准确率与召回率方面均表现出色。
所有类别的Precision-Recall曲线均表现出色且接近完美(值为1),这表明该模型在各分类别中的检测性能均达到了较高的水平
混淆矩阵 (Confusion Matrix) 分析
混淆矩阵是一种用于评估分类模型性能的重要分析工具。它清晰地展示了模型对各类别实例的预测情况与实际结果之间的对比分析。

结论:模型在大部分类别上表现出色,在'Crossing legs'与'Using a phone'两个领域取得了显著成效。然而,在某些较为接近的动作类别(例如'Looking at the screen'与'Teaching or asking')中也出现了误分现象。
4.检测结果识别
经过模型的最终训练后, 我们能得到一个最优质量的最佳训练结果模型best.pt文件, 该文件位于runs/train/weights目录中. 即使利用该文件来进行后续的推理检测.

加载所需库:
(1)通过从库中导入YOLO模型类。
(2)调用OpenCV库用于图像处理和显示。
请加载模型路径与图片路径,请注意以下几点:
请确保已正确配置好预设好的参数值后再运行程序!
其中,请注意以下几点:
(1)请将位置参数path指定为‘models/best.pt’;
(2)请将位置参数img_path指定为‘TestFiles/imagetest.jpg’;
加载预训练模型:
(1)model = YOLO(path, task=’detect’):通过指定路径加载YOLO模型,并将目标检测任务配置为Detect。
(2)配置目标检测任务的置信度阈值并通过iou参数设定非极大值抑制(NMS)的交并比(IoU)阈值。
图像识别:
(1)通过模型运行 results = model(img_path) 完成基于给定的图像的目标识别任务;所得结果存储于 results $ 中。
显示检测结果:
(1)res = results[0].plot():将结果以图像形式呈现出来。
(2)cv2.imshow(“YOLOv8 Detection”, res):通过OpenCV库展示图像,并将其标题设置为‘YOLOv8检测’。
(3)cv2.waitKey(0):暂停程序运行直至用户提供按键输入。
执行imgTest.py代码后,会将执行的结果直接标注在图片上,结果如下:

此段输出基于YOLOv8模型对图片'imagetest.jpg'进行了检测的具体信息如下:
图像信息:
(1)处理的图像路径为:TestFiles/imagetest.jpg。
(2)图像尺寸为640×640像素。
检测结果:
(1)1 个 “指导学生”(Guiding students)
处理速度:
(1)预处理时间: 5.4 毫秒
(2)推理时间: 4.5 毫秒
(3)后处理时间: 77.1 毫秒
YOLOv8模型在目标检测与分类任务中的性能表现卓越,在这两项核心指标上达到了显著的优势
运行效果
– 运行 MainProgram.py

1.主要功能:
(1)适用于教师在实际场景中的行为分析;
(2)能够实现对图像、视频以及摄像头捕捉的画面进行检测;该系统还具备批量处理图像的能力;
(3)实时监控界面能够动态呈现目标位置信息,并实时标注出总的目标数量;此外还可以提供各目标的置信度评分以及检测时间统计;
(4)该系统不仅支持单独处理单个图像文件或视频流数据;还可以存储处理后的图像数据以及视频检测结果;
2.检测参数设置:

(1)置信度阈值:当前设置为0.25,表示检测系统只会考虑置信度高于25%的目标进行输出,置信度越高表示模型对检测结果的确信度越高。
(2)交并比阈值:当前设置为0.70,表示系统只会认为交并比(IoU)超过70%的检测框为有效结果。交并比是检测框与真实框重叠区域的比值,用于衡量两个框的相似程度,值越高表明重叠程度越高。
这两个参数常被用来在目标检测系统中;改动后会对模型的检测准确率和误报率产生影响。
语音提醒(Voice Reminder):
(1)异常情况下的语音提醒:(请注意!教师行为不符合规范时,请及时纠正!)

这张图表呈现了利用YOLOv8模型进行的目标识别系统的结果显示界面。
以下是对各个字段含义的详细说明:

(1)这表明该模型完成一次检测任务所需的时间为0.072秒。
(2)这体现了该系统具有极快的处理效率。
目标数目(Number of objects detected): (1)本次检测结果中最小的目标数量仅为一个单位,并且这表明本次检测的结果中仅有一个目标被识别出来;(2)这表明在当前的一次物体检测过程中只识别到了一个物体
此处设有下拉菜单用于让用户设置目标类型。您可在此处选择目标类型设置方式及所需显示的信息类别。默认状态下,默认状态下,默认状态下,默认状态下,默认状态下,默认状态下,默认状态下,默认状态下,默认状态下,默认状态设为全部选项,请将此选项设为全部以确保系统会将展示所有被检测的目标信息
3.检测结果说明:

此图表展示了基于YOLOv8模型的目标检测系统的结果界面。其中各字段的具体意义如下:
目标设置:(1)展示可供选择的检测指标选项,在当前界面中已全部列出,并表明此时所展示的是所有已发现的目标。
结果显示:教师通过手机进行操作,表明系统正在突出显示检测到的"Using a phone"。
(1)该模型对检测到的目标被归类为"教师使用手机"类别具有91.55%的置信度。
(2)置信度反映了该模型对于这一检测结果的信任程度。当这一数值更高时,则表明该模型对该检测结果越有信心。
(1)该点xmin为143、ymin为81的位置对应于图像中目标区域的左上角坐标(xmin,ymin)。
(2)该点xmax为366、ymax为525的位置对应于图像中目标区域的右下角坐标(xmax,ymax)。
这些坐标表示在图像中的目标区域范围,框定了检测到的“脑中风”的位置。
这张图详细呈现了一个检测系统的具体运行结果信息集,其中包括系统识别出的目标类型、其对应的置信水平以及这些目标在图像中的精确位置坐标值。这类用户界面多用于展示模型在图像识别中的定位效果与分类结果,并直观呈现相关的位置数据与准确性评分信息。
3.图片检测说明
(1)教师黑板写字

(2)教师教学讲课

(3)教师跷二郎腿

(4)教师使用手机

(5)教师在看屏幕

(6)教师指导学生

操作演示如下:
(1)在打开目标筛选器之后,在下方菜单中选择并确定目标参数设置即可完成筛选操作。
(2)单击保存按钮后系统会将当前检测结果记录至save_data文件夹中
检测结果:系统识别并显示教师行为的分析报告,并涵盖总目标数、用时、目标类型、置信度以及目标的位置坐标信息。
4.视频检测说明

单击视频按钮后,在界面上启动选择待检测的视频窗口。系统将立即呈现检测结果,并在用户再次单击时可关闭当前窗口。
单击保存按钮后,“系统将存储相应的数据到指定位置”,具体位置为:save_data目录下。
检测结果:该系统能够实时评估视频内容,并准确识别出教师行为特征。实验数据表详细列出了各教师行为特征及其出现位置。
该界面呈现了系统在视频帧中进行多目标检测的能力,并且能够精确识别教师的行为,并提供了详细的结果信息及相应的置信度评分。
5.摄像头检测说明

单击摄像头启动按钮即可实现摄像头的开启,并进行实时检测;再次单击该按钮即可关闭摄像头。
检测结果:系统接入摄像头持续监控教师行为,并实时反馈检测结果。动态展示摄像头的画面,并标定行为位置于图像中;同时记录每一帧的详细监测数据于表格中。
检测结果:系统接入摄像头持续监控教师行为,并实时反馈检测结果。动态展示摄像头的画面,并标定行为位置于图像中;同时记录每一帧的详细监测数据于表格中。
6.保存图片与视频检测说明

保存
在点击【保存

(1)图片保存

(2)视频保存

– 运行 train.py
1.训练参数设置

导入并加载预训练好的YOLOv8模型实例,并将其命名为yolov8n.pt。其对应的是一个经过预先训练完成的模型权重文件
然而,在一些特定场景中,受限于硬件配置或其它因素,用户可能不得不依赖CPU来进行计算。
运行深度学习模型在CPU环境下通常会耗时较多,并且效率低于GPU环境下的执行速度
2.训练日志结果

这张图展示了使用YOLOv8进行模型训练的详细过程和结果。
训练总时长:
(1)经过了持续150轮的训练后,耗时约3.219小时。
(2)本研究采用的高性能GPU是NVIDIA GeForce RTX 4070 Ti SUPER GPU。
(3)该研究呈现出显著的训练效率归功于YOLOv8模型的优化设计以及高性能硬件的支持。
验证结果:
(1)mAP50: 99%
(2)mAP50-95: 94.4%
速度:
(1)前处理耗时仅需0.1\text{ms}
(2)推理耗时持续时间为0.8\text{ms}
(3)后处理耗时约为0.6\text{ms}
(4)通过实验验证结果显示模型具有较高的推理效率,并且适用于实现高效的实时目标检测任务
结果存储:
(1)results stored in runs\detect\train_v8:验证的结果存放在 runs\detect\train_v8 中。
完成状态:(1)Process terminated normally:表示整个验证流程顺利完成无错误发生。
综合来看,在准确率、损失以及各个类别检测的准确性等方面上均有显著提升的基础上YOLOv8模型展现出较强的适应性特别适用于老师行为的检测与分析
