【文档+项目+数据集】基于YOLO11+Flask的学生课堂活动检测系统
2026/6/26 3:22:55 网站建设 项目流程

本文涉及的全部源码、训练好的模型权重、数据集、配套文档已整理打包,文末附下载链接,方便读者一键复现与二次开发。

在传统课堂管理中,教师难以实时、准确地掌握学生的课堂行为状态,人工观察效率低且易遗漏,导致教学反馈滞后。针对这一痛点,本文设计并实现了一套基于YOLO11深度学习框架的学生课堂活动检测系统。系统使用包含5879张实际场景图片的数据集,训练了可识别举手、阅读、写作、玩手机、低头、靠在桌子上六类行为的检测模型,mAP@0.5达到0.86606。同时基于Flask和Layui开发了Web检测系统,支持图片上传、视频文件分析及实时摄像头检测,为课堂教学行为分析提供了高效、便捷的智能化工具。

一、研究背景

当前,课堂行为分析主要依赖人工观察或传统计算机视觉方法,前者耗时费力且主观性强,后者受限于特征设计,泛化能力差,难以应对复杂光照、遮挡及多姿态变化。随着深度学习目标检测技术的成熟,YOLO系列模型在实时性与精度上取得突破,但针对学生课堂特定行为的专用数据集和系统仍较为匮乏。本系统利用自建的多类别课堂行为数据集,结合YOLO11的高效检测能力,实现了对六类典型课堂行为的精准识别。基于Flask构建的轻量级Web平台,降低了使用门槛,使教师无需专业编程即可通过浏览器完成检测任务。该技术不仅有助于教师及时获取学生参与度、注意力分布等量化数据,优化教学策略,也为智慧课堂、教育信息化提供了可落地的技术方案,具有重要的应用价值与推广意义。

二、应用场景

场景一:智慧教室互动反馈系统
实时检测学生举手、阅读、写作等行为,自动生成课堂参与度热力图。教师可据此调整提问节奏,对低头或玩手机的学生进行针对性提醒,提升互动效率。

场景二:在线考试防作弊监考
在远程考试中识别学生玩手机、低头、靠在桌子上等异常姿态,结合时间戳生成作弊风险报告。系统自动标记可疑行为并推送监考员,降低人工监考压力。

场景三:特殊教育注意力训练
针对注意力缺陷学生,持续监测其阅读、写作、低头等行为时长。当连续低头或玩手机超过阈值时,触发视觉或听觉提示,辅助康复师进行行为干预训练。

场景四:自习室专注度管理
在无人值守自习室中,统计学生玩手机、靠在桌子上等分心行为比例。当区域分心率超过设定值时,自动播放轻音乐或通过APP推送提醒,营造沉浸学习环境。

三、主要工作内容

本文的主要内容包括以下几个方面:

1. 搜集与整理数据集
搜集整理实际场景中学生课堂活动检测数据集的相关数据图片,并进行相应的数据预处理,为模型训练提供训练数据集。最终数据集一共包含5879张图片,其中训练集包含4706张图片,验证集包含1173张图片。分6个检测类别:[‘hand-raising’, ‘reading’, ‘writing’, ‘using phone’, ‘bowing the head’, ‘leaning over the table’]。

2. 训练模型
基于整理的数据集,根据最前沿的YOLO11目标检测技术训练目标检测模型,实现对需要检测的对象进行有效检测的功能。

3. 模型性能评估
对训练出的模型在验证集上进行了充分的结果评估和对比分析,主要目的是为了揭示模型在关键指标(如Precision、Recall、mAP50和mAP50-95等指标)上的表现情况。

4. 可视化系统制作
基于训练出的目标检测模型,搭配Layui前端框架和Flask后端,开发了一款界面简洁的Web检测系统,可支持图片、视频以及摄像头检测,同时可以将检测结果进行保存。

四、软件核心功能介绍及效果演示

软件主要功能

1. 可用于实际场景中的学生课堂活动检测数据集检测,有6个检测类别:[‘hand-raising’, ‘reading’, ‘writing’, ‘using phone’, ‘bowing the head’, ‘leaning over the table’];
支持图片、视频及摄像头进行检测,同时支持图片的批量检测;
界面可实时显示目标位置、目标总数、置信度、用时等信息;
支持图片或者视频的检测结果保存;
支持将图片的检测结果保存为csv文件;

软件初始界面如下图所示:

界面参数设置说明

置信度阈值:也就是目标检测时的conf参数,只有检测出的目标框置信度大于该值,结果才会显示;
交并比阈值:也就是目标检测时的iou参数,对检测框重叠比例iou大于该阈值的目标框进行过滤;

检测结果说明

显示标签名称与置信度:表示是否在检测图片上标签名称与置信度,显示默认勾选;
总目标数:表示画面中检测出的目标数目;
目标选择:可选择单个目标进行位置信息、置信度查看。
目标位置:表示所选择目标的检测框,左上角与右下角的坐标位置。

主要功能说明

以下是简要的操作描述。

(1)图片检测说明
点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹。点击保存按钮,会对检测结果进行保存,存储路径为:save_data目录下,同时会将图片检测信息保存csv文件。

(2)视频检测说明
点击视频按钮,打开选择需要检测的视频,就会自动显示检测结果,再次点击可以关闭视频。点击保存按钮,会对视频检测结果进行保存,存储路径为:save_data目录下。

(3)摄像头检测说明
点击打开摄像头按钮,可以打开摄像头,可以实时进行检测,再次点击,可关闭摄像头。

(4)保存图片与视频检测说明
点击保存按钮后,会将当前选择的图片(含批量图片)或者视频的检测结果进行保存。检测的图片与视频结果会存储在save_data目录下。

五、模型的训练、评估与推理

1. YOLO11介绍

YOLO11是Ultralytics最新推出的目标检测模型,在检测精度与推理速度之间实现了更优的平衡。其核心优势包括:采用改进的骨干网络与颈部结构,在COCO等基准上mAP进一步提升;同时保持轻量化设计,支持从边缘设备到云端的高效部署。此外,YOLO11延续了Ultralytics的多任务支持特性,可无缝切换检测、分割、姿态估计等任务。在学生课堂活动检测场景中,该模型能够快速识别学生举手、阅读、书写、使用电子设备等行为,对密集小目标(如面部朝向、手势)的召回率较高,且推理延迟低,适合实时课堂监控或离线分析,为教育行为研究提供可靠的技术支撑。

2. 数据集准备与训练

本文主要基于YOLO11进行模型训练,训练完成后对模型在验证集上的表现进行全面的性能评估及对比分析。

通过搜集关于实际场景中学生课堂活动检测数据集的相关图片,并使用Labelimg标注工具对每张图片进行标注,分6个检测类别:[‘hand-raising’, ‘reading’, ‘writing’, ‘using phone’, ‘bowing the head’, ‘leaning over the table’]。

最终数据集一共包含5879张图片,其中训练集包含4706张图片,验证集包含1173张图片。

数据集各类别数目分布情况如下:

部分图像及标注如下图所示:

准备好数据集后,将图片数据放置在项目目录中。同时需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。YOLO在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:

path:E:\datasets\det_student_classroom_v2train:train/imagesval:val/imagesnc:6names:["hand-raising","reading","writing","using phone","bowing the head","leaning over the table"]#举手、阅读、写作、玩手机、低头、靠在桌子上

数据准备完成后,通过调用train.py文件进行模型训练,训练代码如下:

fromultralyticsimportYOLOif__name__=='__main__':model=YOLO('best.pt')model.train(data='./data.yaml',imgsz=(640,640),workers=1,batch=8,epochs=150)

模型常用训练超参数说明:

  • epochs:训练轮数,本文设置为150
  • batch:批次大小,本文设置为40
  • imgsz:输入图像尺寸,本文设置为[640, 640]
  • optimizer:优化器,本文使用auto

3. 训练结果评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。各损失函数作用说明:

  • 定位损失box_loss:预测框与标定框之间的误差,越小定位得越准;
  • 分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
  • 动态特征损失dfl_loss:用于回归预测框与目标框之间距离的损失函数。

本文训练结果如下:

我们通常用PR曲线来体现精确率和召回率的关系,本文训练结果的PR曲线如下。mAP表示Precision和Recall作为两轴作图后围成的面积。本文模型目标检测的mAP@0.5值为0.86606,mAP@0.5:0.95值为0.69763,Precision为0.86541,Recall为0.82799。

混淆矩阵如下:

4. 使用模型进行推理

模型训练完成后,我们可以得到一个最佳的训练结果模型best.pt文件,在runs/train/weights目录下。我们可以使用该文件进行后续的推理检测。

图片检测代码如下:

fromultralyticsimportYOLOimportcv2# 所需加载的模型目录path='weights/best.pt'# 需要检测的图片地址img_path='test.jpg'# 加载预训练模型model=YOLO(path,task='detect')# 检测图片results=model(img_path)res=results[0].plot()cv2.imshow('Detection Result',res)cv2.waitKey(0)

六、可视化系统制作

本系统采用Flask作为后端框架,其轻量灵活、扩展性强的特性便于快速构建RESTful API,结合Python生态中丰富的图像处理库,为检测算法提供高效支撑;前端选用Layui,凭借其简洁的模块化设计与丰富的UI组件,无需复杂前端工程即可实现响应式布局与交互反馈,降低开发与维护成本。系统界面以卡片式布局组织功能入口,操作流程清晰直观,用户可一键切换图片、批量、视频及摄像头实时检测模式,检测结果实时展示并支持本地保存。各功能模块通过Flask蓝图进行路由解耦,用户管理模块控制权限,模型配置模块动态加载不同检测模型,检测任务统一调用底层推理引擎,结果经JSON传递至前端渲染,形成“配置-检测-存储-回显”的闭环协作,兼顾专业性与易用性。

系统界面展示:

随项目附带的源码文件结构说明:

随项目附带的设计说明书(docx)缩略图:

下载链接:https://mbd.pub/o/bread/mbd-YZaTmJ9yaQ==

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询