最新YOLO实现的教室人员检测与计数实时检测平台(Flask+SocketIO+HTML_CSS_JS)
摘要
本博文面向“教室场景的人员检测与计数”,构建一套基于 Flask + Flask-SocketIO 的 Web 实时平台,实现从模型训练、推理到可视化与导出的端到端闭环。平台支持图片/视频/浏览器摄像头三类输入,提供即时双画面对比(原图与检测结果等宽 16:9 自适应)、进度控制(播放/暂停/继续/停止、逐帧与拖拽)、CSV 导出与带框结果一键下载,并将关键元数据写入SQLite以便检索与追踪。系统包含登录/注册(可跳过)、模型选择/权重上传与标签同步,内置 YOLOv5–YOLOv12 共8 种实现,在统一数据集上对比mAP、F1、PR 曲线与训练曲线,并结合课堂密度、遮挡与光照变化给出结构化分析与选型建议。前端采用HTML/CSS/JS实现无刷新交互与计数叠加,SocketIO 推送保障低时延实时性;同时提供双画面对比下载、会话级记录高亮与可溯源导出,便于教学管理、出勤统计与安全巡检。文末提供完整工程与数据集下载链接与一键启动说明,便于复现与二次开发。
讲解视频地址:基于深度学习的教室人员检测与计数(Web系统+完整项目分享+数据集+多YOLO模型)
YOLOv12-v11/v10/v9/v8/v7/v6/v5系统(八个模型,含说明论文)合集下载:https://mbd.pub/o/bread/YZWck59qaw==
说明论文下载:https://mbd.pub/o/bread/YZWck5xrZQ==
YOLOv12下载:https://mbd.pub/o/bread/YZWbmppsbQ==
YOLOv11下载:https://mbd.pub/o/bread/YZWbm5praQ==
YOLOv10下载:https://mbd.pub/o/bread/YZWbm5lsaA==
YOLOv9下载:https://mbd.pub/o/bread/YZWbmp9yaw==
安装与教程文档:https://deeppython.feishu.cn/wiki/UJwtwa7jCiLEMdkDywycfCq2nvc
@
1. 网页功能与效果
(1)登录注册:提供登录、注册与一次性跳过三种入口,会话在当前浏览器标签内生效并可按需延长;口令采用哈希存储并结合会话过期与风控校验,兼顾便捷与安全。进入系统后自动载入个性化偏好与最近记录,支持快速续作。

(2)功能概况:平台支持图片、视频与浏览器摄像头输入,默认原图/结果双画面对比,16:9 自适应。内置进度控制、Conf/IoU 调节与类别筛选,结果可 CSV 导出与带框一键下载;所有元数据入库 SQLite,便于检索与溯源。

(3)视频检测:采用同步双帧呈现并叠加实时人数曲线,支持播放/暂停/继续/停止、逐帧与拖拽定位。后台缓冲可一键导出 MP4,课堂片段自动打点,适配长时段监控与教学复盘。

(4)更换模型:上传新权重即可切换当前 YOLO 实现,类别与阈值面板同步刷新;支持多权重管理与快速回滚。路径规范跨平台兼容,数据库自动迁移,参数与主题配置本地持久化。

(5)概览界面:集中展示最近会话、峰值/平均人数与告警摘要,并支持按文件名或标签高亮定位到具体记录。提供“图片检测 / 视频检测 / 摄像头检测 / 导出管理”的快捷入口与状态提示,便于从全局视角快速开启任务。

2. 绪论
2.1 研究背景与意义
面向智慧校园与教学管理场景,教室内的“人员检测与计数”兼具安全、出勤统计与资源调度价值,且长期处于密集、遮挡、尺度差异与光照剧烈变化等复合挑战之下,这与公共场景的人群检测难点高度一致 1。在典型数据上,来自高校监控的视频/图像更突出了“头肩可见、面部不可见、后排小目标密集”的分布特征,为目标检测与计数模型的鲁棒性提出了更高要求 2。与传统的人脸检测不同,头部/行人检测更契合课堂侧视与背向视角,在WIDER FACE 等大规模数据的推动下,研究进一步聚焦遮挡与尺度不均衡下的检测与可视化解释 3。基于上述动因,构建一套“端到端训练—网页实时推理—在线可视化—统计导出”的一体化系统,能将算法能力转化为可用的教学基础设施。(arXiv)
2.2 国内外研究现状
针对课堂密集人群的检测场景,近年的开放数据集与基准显著拉动了方法演进,例如 CrowdHuman 聚焦遮挡严重的人群框/可见框/头肩框三重标注,适合评估拥挤条件下的召回与误检权衡 1;SCUT-HEAD 明确提供“教室监控”子集(PartA),共 2000 张图像与 6.7 万头部标注,直接对应“后排小目标+部分遮挡”的课堂视角 2;而 WIDER FACE 以极端尺度与姿态变化检验检测的泛化性,常作为教室侧脸/背头弱特征条件下的训练或迁移来源 3。(arXiv)
在算法范式上,两阶段代表 Faster R-CNN 通过RPN共享特征实现高质量候选,VGG-16下报告约 5 FPS 与当时的领先精度,适合强调精度上限的离线分析 4;单阶段 SSD 通过多尺度特征图与默认框在 VOC2007 上以 300×300 输入达 72.1% mAP@58 FPS,突出端到端高吞吐优势 5;RetinaNet 提出的 Focal Loss 有效缓解前景/背景不均衡,在 COCO test-dev 上可达 40.8 AP(ResNeXt-101-FPN),在速度-精度曲线上形成上包络 6;Anchor-free 代表 FCOS(ResNeXt-101)在单尺度测试下达 44.7 AP,消解锚框超参敏感与匹配复杂度 7;CenterNet 将目标建模为“中心点+尺寸回归”,在 COCO 上报告 28.1 AP@142 FPS(极低延迟设置),体现极致实时性的可行上限 8。(arXiv)
Transformer 检测方面,DETR 以集合预测与匈牙利匹配去除了 NMS/锚框等手工模块,建立了端到端范式的可行性,但早期在小目标与收敛速度上存在成本 9;RT-DETR 通过高效混合编码器与不确定性最小化查询选择,在 COCO 上 R50 达 53.1 AP、T4 实测 108 FPS,首次将端到端 Transformer 推到实时区间,并在速度/精度上同时对齐并超越同代 YOLO 轻量模型 10。(arXiv)
YOLO 家族仍是实时检测主力:YOLOv7 在 V100≥30 FPS 前提下报告 56.8% AP 的实时最优区间 11;YOLOv9 提出可编程梯度信息(PGI)与 GELAN 结构,强调轻量模型的参数利用率与从零训练能力 12;YOLOv10 通过端到端与 NMS-free 流水线在各尺度上优化效率-精度权衡,NeurIPS 2024 正式发表 13;工程侧的 YOLO11 聚焦易用性与部署体验,官方并未发表论文而以文档与代码为主 14;2025 年 YOLOv12 将注意力机制引入实时框架并报告在同级上优于 RT-DETR 的速度-精度组合,为课堂密集小目标与遮挡提供新的结构备选 15。(CVF Open Access)
方法对比表(节选)
| 方法 | 范式/家族 | 数据集 | 关键改进技术 | 代表指标(mAP/速度/复杂度) | 优势与局限(课堂场景视角) |
|---|---|---|---|---|---|
| Faster R-CNN | 两阶段/RPN | VOC/COCO | 共享特征的RPN候选 | ~5 FPS(VGG-16),当时SOTA精度 4 | 精度高、实时性一般;拥挤场景候选重叠多 |
| SSD-300 | 单阶段/Anchor-based | VOC2007 | 多尺度特征图+默认框 | 72.1% mAP@58 FPS(Titan X)5 | 延迟低;对极小目标与遮挡相对敏感 |
| RetinaNet-101-800 | 单阶段/Anchor-based | COCO | Focal Loss 抑制易样本 | 40.8 AP(test-dev)6 | 精度稳健;推理延迟中等,锚框仍需调参 |
| FCOS-X101 | 单阶段/Anchor-free | COCO | per-pixel分类与回归 | 44.7 AP(单模单尺度)7 | 去锚框、实现简洁;对尺度/阈值仍需细化 |
| CenterNet | 单阶段/Anchor-free | COCO | 目标中心点建模 | 28.1 AP@142 FPS;37.4 AP@52 FPS 8 | 极致实时;密集遮挡下漏检需配合跟踪 |
| EfficientDet-D7 | 单阶段/Anchor-based | COCO | BiFPN+复合缩放 | 55.1 AP;77M Params;410B FLOPs 16 | 精度高但较重;课堂部署多需蒸馏/裁剪 |
| RT-DETR-R50 | 端到端/Transformer | COCO | 高效编码器+UMQ | 53.1 AP;108 FPS(T4)10 | 免 NMS、实时;Web/边缘端内存压力需评估 |
| YOLOv7 | 单阶段/YOLO | COCO | 训练tricks+重参数化 | 56.8% AP@≥30 FPS(V100)11 | 实时强;后处理/NMS对超密集仍敏感 |
| YOLOv10-S/M/L | 单阶段/YOLO | COCO | 端到端、NMS-free优化 | 同尺度下较前代更优的延迟-AP权衡 13 | 工程易用;需与自有数据再标定阈值 |
| YOLOv12-S | 单阶段/YOLO+Attention | COCO | 注意力中心化骨干/颈部 | 报告同级优于RT-DETR-R18且更快 15 | 关注显存/CPU吞吐;训练稳定性需验证 |
表中指标均来自相应论文或官方文档/站点,如 4681115。(arXiv)
2.3 要解决的问题及其方案
(1)准确性与实时性:课堂环境存在遮挡、密集与小目标并存,系统需在保持 ≥30 FPS 的同时控制误检与漏检,优先选用实时与端到端兼顾的系列(如 YOLOv10/YOLOv12/RT-DETR)并以 Focal/Anchor-free 等机制改善难例 613。
(2)环境适应与泛化:引入课堂场景先验的数据策划与迁移学习,优先利用 SCUT-HEAD 等“教室监控”子集作为预训练/微调基座,以缩短域适配时间并提升后排小目标召回 2。(opendatalab.com)
(3)网页端交互与低时延推理:前端引入 WebSocket/SocketIO 与帧级参数同步,必要时在浏览器侧采用 ONNX Runtime Web(WASM/WebGPU)以实现轻量模型的本地加速回传,降低端到端交互延迟 16。(ONNX Runtime)
(4)数据处理效率与存储安全:后端导出 CSV/可视化结果并入 SQLite,部署侧提供 ONNX/TensorRT 导出与 FP16/INT8 加速路径,在保证稳定性的同时获得可复制的低延迟表现 16。(ONNX Runtime)
2.4 博文贡献与组织结构
本文贡献体现在:(1)综合文献综述:围绕课堂密集检测的任务难点、算法范式与部署趋势,结合公共数据与近年方法完整梳理;(2)模型选择与优化:在 YOLOv5–YOLOv12 与 RT-DETR 等实现中筛选适配课堂的小目标/遮挡友好结构,并结合 GIoU/CIoU 等损失与阈值策略稳态优化 18;(3)美观友好的网页设计:基于 Flask+Flask-SocketIO 与 HTML/CSS/JS 实现原图/结果双画面、进度控制与一键导出,支持浏览器摄像头实时推理;(4)系统级对比与可视分析:统一评测 mAP、F1、PR 与训练曲线,结合课堂样本统计给出模型选型建议;(5)完整工程与数据资源:提供可复现实验脚本与可选数据下载指引,便于教学与生产环境落地。全文后续章节按“数据集处理—模型原理与设计—实验结果与分析—系统设计与实现—结论与展望”的顺序展开。(arXiv)
3. 数据集处理
本研究共汇集 8557 张教室与自习室监控画面,按训练/验证/测试=5990/1712/855分层划分,采用固定随机种子(seed=42)与“按场景分组”的策略避免同一教室、同一机位跨集合泄露;标注采用YOLO 格式(每行为 class cx cy w h,坐标归一化至 [0,1]),类别仅含 person(中文名:人),以头肩或上半身为主的框标注兼顾远距小目标与近景半身。为保证后续 Web 端 16:9 双画面对比的自适配与推理吞吐,训练阶段对图像进行Letterbox 到 16:9(保持长边、填充到网络步幅),并在导出时保留原始尺寸元信息以便结果回写与 SQLite 入库检索。对提供的统计可视化(xy 热力与 width–height 分布)分析可见,目标 x 方向近似均匀但在 0.5–0.8 有轻度聚集,y 方向明显偏向画面下部(课堂视角下排学生较多),宽高呈长尾分布,主体集中在 w∈[0.03,0.12]、h∈[0.05,0.15] 的小尺度区域,偶见近景大框导致的高值离群点;这与课堂“密集+小目标+遮挡”的先验一致,提示需要较高输入分辨率与更稳健的正负样本分配。
Chinese_name = {'person': "人"}

围绕上述难点,数据预处理与增强遵循“小目标友好、遮挡鲁棒、光照稳健”的原则:基础增强使用随机缩放(0.5–1.5)+ 随机裁剪 + 水平翻转,并结合HSV 抖动、Gamma/曝光扰动与轻度运动模糊以覆盖不同时段照明与摄像头拖影;为提升密集场景的学习信号,采用Mosaic(概率 0.5)/MixUp(概率 0.2)/Copy-Paste 小目标在不破坏场景几何的前提下增加小框比例;远近尺度差异通过多尺度训练(每 10 个 batch 在 960–1280 间随机)与小目标重采样平衡;标注质量方面,训练前执行越界/零面积/重复框清理(IoU>0.95 合并、空标签剔除),并以类别映射表{'person':'人'}统一可视化中文显示。验证与测试阶段仅保留尺度对齐与色彩归一化,不使用强增强,以确保 mAP、F1 与 PR 曲线评估的客观性。综合而言,该数据配方在保证标注一致性的前提下,针对小尺度与遮挡显著的课堂视角做了有意识的分布重塑,为后续 YOLOv5–YOLOv12 与 RT-DETR 的统一训练与网页端实时推理奠定了数据基础。

4. 模型原理与设计
本系统以 YOLOv12 为主线,遵循单阶段、Anchor-free 与解耦检测头的检测范式:骨干网络采用轻量多分支残差单元(含可重参数化卷积),在浅层保持足够的高分辨率以照顾课堂场景中的小目标与遮挡;颈部以 FPN/PAN 的双向特征融合稳住多尺度语义,检测头将分类与回归分离,在 P3–P5(必要时含 P6)多尺度特征上直接输出类别概率与边界框参数。与 Anchor-based 相比,Anchor-free 省去锚框聚类与匹配的先验束缚,配合解耦头可缓解类间相似带来的梯度冲突,特别适合“密集就坐 + 小尺度 + 遮挡”的教室视角。网络整体架构图如下图所示(概念示意,便于理解骨干–颈部–头的协作):

在结构细节上,骨干的通道注意力采用轻量门控(如 SE/EMA),其前向可写为
其中 \((\mathrm{GAP})\) 为全局平均池化,\((\delta)\) 为 ReLU,\((\sigma)\) 为 Sigmoid,\((\odot)\) 表示通道逐元素乘(本文不再赘述行内公式)。为覆盖远距离排位造成的长程依赖,可在颈部插入窗口式自注意力,其核心为
其中 \((\mathbf{Q},\mathbf{K},\mathbf{V})\) 由同一特征经线性映射得到,\((d)\) 为通道维。解耦头包含并行的卷积塔:分类分支输出类别概率 \((p(c\mid x))\),回归分支输出 \(((\hat x,\hat y,\hat w,\hat h))\) 及边界质量分数,用于提升密集场景下的阈值稳定性与排序一致性。
在损失与任务建模方面,定位采用 IoU 家族的改进目标函数:
其中 \((B,\hat B)\) 为真值与预测框,\((C)\) 为最小外接矩形,\((\rho)\) 为中心点距离,\((c)\) 为外接对角线长度。前景–背景极不均衡时,分类与目标性使用 Focal Loss:
其中 \((p_t)\) 为正/负样本对应概率,\((\gamma)\) 控制易样本抑制强度。总体损失为
并在课堂小目标占比较高时相应增大低层特征图(如 P3)的权重,以提升后排召回。
训练与正则化策略围绕“稳态收敛 + 实时推理”展开。优化器采用带热身的余弦退火学习率:
并结合 BatchNorm/SyncBN 与 EMA 参数滑动平均抑制噪声震荡;分类端使用标签平滑
其中 \((K)\) 为类别数、\((\varepsilon)\) 为平滑系数。为契合数据分布(宽高长尾、小目标密集),训练启用多尺度与强增广(Mosaic/MixUp/随机遮挡、颜色抖动、轻度模糊),默认输入分辨率 1280 的 16:9 letterbox;推理端在网页实时场景优先采用任务对齐打分 + IoU 双阈与 NMS/Cluster-NMS,当切换端到端分配(如 YOLOv10/YOLOv12 风格)时可启用NMS-free 解码以降低尾端延迟。模型导出支持 PyTorch / ONNX / TensorRT(FP16/INT8) 三后端,阈值、类别筛选与可视化样式通过 Flask-SocketIO 与前端同步,保证双画面对比与同步双帧在调参与回放时的一致性,从而在课堂人员检测与计数的实际部署中实现准确、稳定与低时延的综合平衡。
5. 实验结果与分析
本节在同一数据与评测协议下,对 YOLOv5–YOLOv12 的 n/tiny 与 s 两个量级进行对比;硬件为 RTX 3070 Laptop 8 GB,输入采用 16:9 letterbox(默认 1280),指标包含 Precision、Recall、F1、mAP50、mAP50–95 以及三段时延(预处理/推理/后处理)。

从提供的曲线看,混淆矩阵在“person”类上的召回约 0.94,PR 曲线对应 mAP@0.5≈0.964;训练过程中 mAP 与 F1 单调趋稳,验证损失持续下降,说明数据增广与多尺度策略有效,模型未出现明显过拟合。结合平台业务需求(浏览器端低时延 + 计数稳定),后续分析既关注精度,也关注端到端时延。

(一)轻量组(n/tiny)量化对比
整体上,轻量组在 mAP50≈0.95–0.97 区间,mAP50–95 分化较大;在推理时延上,YOLOv6n/YOLOv8n 的纯推理时间更短,而 YOLOv10n 的后处理时间显著更低(NMS-free 设计),适合 Web 端密集场景的流式计数。精度方面,YOLOv7-tiny 拿到组内最高的 mAP50(≈0.970)与 F1(≈0.943),但后处理较慢;YOLOv10n 在 mAP50–95 上相对占优(≈0.714),对小目标的综合定位质量更好。以端到端帧时延估算(Pre+Inf+Post):YOLOv8n≈10.17 ms(约 98 FPS),YOLOv6n≈10.34 ms(≈97 FPS),YOLOv7-tiny≈21.08 ms(≈47 FPS),YOLOv10n≈13.95 ms(≈72 FPS);若考虑 SocketIO 推送与绘制,YOLOv8n/YOLOv6n 在“流畅实时 + 足够精度”的折中更优。

(二)小中型组(s)量化对比
小中型组整体精度进一步提升,YOLOv7 在 mAP50(≈0.988)与 F1(≈0.970)上最强,但推理时延较高,端到端约 29.5 ms(≈34 FPS),更适合服务器端批处理或高功耗场景。若面向浏览器摄像头与视频回放的低时延体验,YOLOv8s 同时拿到本组最快的推理时间(Inf≈7.66 ms)与最高的 mAP50–95(≈0.758),端到端约 11.39 ms(≈88 FPS);YOLOv10s/YOLOv11s 的 mAP50–95 与之接近,并且后处理时间更短(例如 YOLOv10s Post≈0.60 ms),对高并发帧队列或超密集场景的稳定播放更友好。综合“精度—时延—部署”的三角权衡,YOLOv8s 是默认首选,YOLOv10s 作为低后处理开销的可替代方案。

(三)误差分布与阈值建议
从混淆矩阵看,误检主要来自讲台反光、墙面挂画、背影与遮挡拼接等细粒度纹理区域;在极端远距的小目标上漏检更显著。结合 F1–Confidence 曲线,建议默认 conf≈0.40、IoU≈0.60(若采用端到端/NMS-free,可只保留任务对齐打分阈值);当课堂密度极高或光照波动大时,适度降低 conf(到 0.35–0.38)可换取更高召回,并配合类别/阈值在线调节与计数时间窗平滑,提升曲线上的稳定性与观感。

(四)统一对比表
表 5-1 轻量组时延与精度汇总(InfTime 与 PostTime 单位 ms)
| Model | Params(M) | FLOPs(G) | InfTime | PostTime | F1 | mAP50 | mAP50–95 |
|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 7.7 | 1.31 | 0.923 | 0.954 | 0.690 |
| YOLOv6n | 4.3 | 11.1 | 6.8 | 1.39 | 0.930 | 0.964 | 0.700 |
| YOLOv7-tiny | 6.2 | 13.8 | 14.7 | 4.06 | 0.943 | 0.970 | 0.646 |
| YOLOv8n | 3.2 | 8.7 | 6.8 | 1.39 | 0.936 | 0.970 | 0.709 |
| YOLOv9t | 2.0 | 7.7 | 16.5 | 1.29 | 0.937 | 0.969 | 0.698 |
| YOLOv10n | 2.3 | 6.7 | 11.2 | 0.63 | 0.928 | 0.969 | 0.714 |
| YOLOv11n | 2.6 | 6.5 | 9.4 | 1.42 | 0.932 | 0.969 | 0.707 |
| YOLOv12n | 2.6 | 6.5 | 12.5 | 1.37 | 0.924 | 0.951 | 0.695 |
表 5-2 小中型组(s)时延与精度汇总(RTX 3070 Laptop,单位:ms)
| Model | Params(M) | FLOPs(G) | InfTime | PostTime | F1 | mAP50 | mAP50–95 |
|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 8.45 | 1.51 | 0.9526 | 0.9806 | 0.7507 |
| YOLOv6s | 17.2 | 44.2 | 8.59 | 1.45 | 0.9506 | 0.9783 | 0.7493 |
| YOLOv7 | 36.9 | 104.7 | 23.62 | 3.46 | 0.9699 | 0.9880 | 0.7523 |
| YOLOv8s | 11.2 | 28.6 | 7.66 | 1.42 | 0.9562 | 0.9816 | 0.7579 |
| YOLOv9s | 7.2 | 26.7 | 18.66 | 1.39 | 0.9537 | 0.9801 | 0.7487 |
| YOLOv10s | 7.2 | 21.6 | 11.38 | 0.60 | 0.9466 | 0.9806 | 0.7563 |
| YOLOv11s | 9.4 | 21.5 | 9.74 | 1.36 | 0.9545 | 0.9810 | 0.7565 |
| YOLOv12s | 9.3 | 21.4 | 13.23 | 1.42 | 0.9437 | 0.9636 | 0.7433 |
图 5-1 双条形图(n 系):F1 与 mAP50 对比
图注:八种 n 体量模型的 F1 与 mAP50。配色为学术蓝(F1)与琥珀色(mAP50),便于与表 5-1 对照。

图 5-2 双条形图(s 系):F1 与 mAP50 对比
图注:八种 s 体量模型的 F1 与 mAP50。可以看到 v8s 的 F1 优势与 v12s 的 mAP 优势并存,提示“召回—精度”取舍的不同偏好。

(五)结论与建议(面向 Web 实时部署)
在轻量组中,若以“端到端时延 + mAP50–95”作为主目标,YOLOv8n 是更稳妥的默认方案(≈98 FPS,mAP50–95≈0.709),YOLOv10n 作为密集遮挡/高并发的替代(后处理极低,mAP50–95 最高);当以“最高 mAP50/F1”优先,YOLOv7-tiny 更合适,但需容忍较高后处理耗时。在小中型组中,YOLOv8s 提供“最快 + 最高 mAP50–95”,更适合浏览器摄像头与视频回放场景,YOLOv7 适合离线高精度统计或 GPU 余量充足的服务器端。部署侧建议:默认 conf=0.40、IoU=0.60(端到端/NMS-free 可只设任务对齐阈值),开启 计数滑动平均 与 短暂遮挡补偿;若课堂极端拥挤,可在不牺牲太多精度的前提下,优先选择 YOLOv10/11 系列以获得更稳定的帧流与更低的后处理开销。整体看,各模型均已达到“课堂人员检测与计数”的生产可用线,结合 Flask+SocketIO 的同步双帧推送与阈值在线调节,可在 Web 端稳定实现高帧率、低延迟、可追溯的实时体验。
6. 系统设计与实现
6.1 系统设计思路
本系统遵循分层化与消息驱动的设计思想,整体划分为表现与交互层(浏览器端)、业务与会话管理层、推理与任务调度层与数据持久化层。在典型流程中,浏览器端以 HTML/CSS/JS 完成原图与检测结果的双画面对比与参数面板展示,借由 Flask-SocketIO 建立会话级双向通道:用户在前端调节置信度/IoU、选择模型与输入源(图片/视频/摄像头),这些参数以事件流的形式同步到服务端;服务端在会话上下文中管理用户身份、限流策略与最近记录,随后将任务投入推理队列并保持同步双帧回传,以保证对比视图与统计曲线在时间轴上的一致性。
推理与任务调度层以异步任务池承载三类输入:图片按批次排队、视频以段为单位且支持暂停/继续/停止、摄像头按帧节流并开启短缓冲以保证顺滑播放。进入流水线后,样本经历预处理(信道归一化、Letterbox 到 16:9、尺度对齐)→ 模型推理(YOLOv5–YOLOv12/RT-DETR,后端可为 PyTorch/ONNX/TensorRT)→ 后处理(任务对齐打分、NMS 或 NMS-free 解码、类别筛选)→ 计数与统计(时序平滑、峰值/均值、告警),再通过 SocketIO 以结果帧 + 结构化元数据形式返回浏览器端。数据持久化层将检测框、阈值与计数曲线等元信息写入 SQLite,并维护导出索引(CSV/带框图片/缓冲 MP4),以支持跨会话检索、追溯与审计;日志与监控接口记录关键路径时延(预处理/推理/后处理)和异常事件,为后续优化提供依据。
为保证实时性与一致性,系统在三个层面采取协同策略:其一,参数同步采用会话级快照并以版本号治理,避免前后端不同步导致的“错帧”;其二,同步双帧推送以统一时间戳绑定原图与渲染结果,前端以单事件驱动完成两画面更新;其三,模型权重热切换由权重管理器托管,采取“预热加载 + 指针切换”的无缝切换方式并触发类别信息刷新。扩展性方面,结果导出采用集中管理并支持批量/溯源,数据库在版本升级时自动迁移,路径规范对不同平台分隔符与大小写进行自适配;同时预留 WebGPU/ONNX Runtime Web 的前端推理接口与外部审计日志的对接点,便于后续边端混合部署。
图 6-1 系统流程图
图注:系统自初始化到多源输入完成预处理、推理、后处理与统计,并通过 SocketIO 回传双帧与结构化数据,导出与入库并行执行以降低尾时延。

图 6-2 系统设计框图
图注:按层次展示模块边界与数据流向;模型权重管理与日志/监控以侧挂方式连接推理与业务两层,保证可观测性与可维护性。

6.2 登录与账户管理
平台的登录流程以“最小摩擦”的理念实现从身份校验到个性化加载的串联:用户进入登录界面后,可选择登录、注册或一次性跳过;若注册则以口令哈希与唯一性校验插入数据库并建立会话,若登录则校验凭据并恢复会话快照(主题、默认模型、阈值、最近记录与导出策略),随后进入主界面;在运行过程中,资料修改(头像与密码)即时生效并部分持久化到本地以优化下次冷启动,注销或切换账号将销毁会话并清理临时缓存,检测流程的统计与导出记录持续与账户关联以支撑审计与追溯。
图 6-3 登录与账户管理流程
图注:从进入登录页到进入主界面、个性化加载与后续注销/切换账号的闭环流程。

代码下载链接
如果您希望获取博客中提及的完整资源包,包含测试图片、视频、Python文件(*.py)、网页配置文件、训练数据集、代码及界面设计等,可访问博主在面包多平台的上传内容。相关的博客和视频资料提供了所有必要文件的下载链接,以便一键运行。完整资源的预览如下图所示:


资源包中涵盖了你需要的训练测试数据集、训练测试代码、UI界面代码等完整资源,完整项目文件的下载链接可在Gitee项目中找到➷➷➷
完整项目下载、论文word范文下载与安装文档:https://deeppython.feishu.cn/wiki/UJwtwa7jCiLEMdkDywycfCq2nvc
讲解视频地址:https://www.bilibili.com/video/BV1ywD9BEEzN/
完整安装运行教程:
这个项目的运行需要用到Anaconda和Pycharm两个软件,下载到资源代码后,您可以按照以下链接提供的详细安装教程操作即可运行成功,如仍有运行问题可私信博主解决:
- Pycharm和Anaconda的安装教程:https://deepcode.blog.csdn.net/article/details/136639378;
软件安装好后需要为本项目新建Python环境、安装依赖库,并在Pycharm中设置环境,这几步采用下面的教程可选在线安装(pip install直接在线下载包):
- Python环境配置教程:https://deepcode.blog.csdn.net/article/details/136639396;
7. 结论与未来工作
本文围绕“教室人员检测与计数”的真实业务需求,完成了从模型训练、统一评测到 Web 端实时推理与可视化的端到端实现。平台以 Flask+Flask-SocketIO 构建双向事件通道,前端实现原图/结果双画面对比、同步双帧播放与阈值在线调节,后端以可热切换的 YOLOv5–YOLOv12 推理引擎承载图片、视频与浏览器摄像头三类输入,并将检测框、计数曲线与导出记录持久化到 SQLite 以支持追溯与审计。实验结果表明,在轻量组中 YOLOv8n 在综合“精度—时延—部署”上更均衡,YOLOv10n 依靠更低的后处理时延在高并发与超密场景具优势;在小中型组中 YOLOv8s 兼具较高 mAP50–95 与最低推理时延,适合作为 Web 实时默认,而 YOLOv7 在允许更高延迟的服务器批处理场景提供最高精度。结合混淆矩阵与 F1–Confidence/PR 曲线分析,默认阈值设置为 conf≈0.40、IoU≈0.60 能在多数教室视角取得稳定计数与流畅交互,这验证了本文在“密集+小尺度+遮挡”的课堂环境中实现准确、稳定、低时延的目标。
面向未来,模型侧可进一步引入蒸馏与量化感知训练以获得 INT8/FP16 的部署收益,结合轻量注意力、结构重参数化与动态分辨率推理,探索“小模型高精度”的极限;在课堂业务上叠加多目标跟踪与时序校正以提供驻留时间、到离场与跨帧去重的稳定计数,并尝试多模态融合(语音/课件光标/教室物联网数据)以增强异常检测与教学行为分析。系统侧将推进容器化与编排(Docker/K8s)、分布式任务队列与 GPU 资源池化,补充 WebRTC 低时延推流与断点续传,完善角色权限、操作审计、i18n 与多租户以适配校级与院系级部署,同时开放 WebGPU/ONNX Runtime Web 以支持浏览器端推理与边云协同。数据侧将建立主动学习与持续标注闭环,引入数据治理与漂移监测、难例自动挖掘与隐私合规(可选人脸模糊/脱敏导出),并发布可复现的划分清单与评测脚本以促进公正比较。随着上述方向的推进,平台将从“可用”迈向“好用与易扩展”,在更广泛的校园与安防场景中稳定提供高质量的人群检测与计数服务。
参考文献(GB/T 7714)
1 Shao S, Zhao Z, Li B, et al. CrowdHuman: A Benchmark for Detecting Human in a Crowd[EB/OL]. arXiv:1805.00123, 2018. (arXiv)
2 SCUT-HEAD 数据集卡片[DB/OL]. OpenDataLab, 2018. (opendatalab.com)
3 Yang S, Luo P, Loy C C, et al. WIDER FACE: A Face Detection Benchmark[C]//CVPR. 2016: 5525-5533. (CVF Open Access)
4 Ren S, He K, Girshick R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. NeurIPS, 2015. (NeurIPS Proceedings)
5 Liu W, Anguelov D, Erhan D, et al. SSD: Single Shot MultiBox Detector[EB/OL]. arXiv:1512.02325, 2015. (arXiv)
6 Lin T-Y, Goyal P, Girshick R, et al. Focal Loss for Dense Object Detection[EB/OL]. arXiv:1708.02002, 2017.
7 Tian Z, Shen C, Chen H, He T. FCOS: Fully Convolutional One-Stage Object Detection[EB/OL]. arXiv:1904.01355, 2019. (arXiv)
8 Zhou X, Wang D, Krähenbühl P. Objects as Points[EB/OL]. arXiv:1904.07850, 2019. (arXiv)
9 Carion N, Massa F, Synnaeve G, et al. End-to-End Object Detection with Transformers[EB/OL]. arXiv:2005.12872, 2020. (arXiv)
10 Zhao Y, Lv W, Xu S, et al. DETRs Beat YOLOs on Real-time Object Detection[C]//CVPR, 2024. (CVF Open Access)
11 Wang C-Y, Bochkovskiy A, Liao H-Y M. YOLOv7: Trainable bag-of-freebies sets new SOTA for real-time detectors[EB/OL]. arXiv:2207.02696, 2022;CVPR 2023 论文页. (arXiv)
12 Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[EB/OL]. ECCV 2024/ arXiv:2402.13616. (ECVA)
13 Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[C]//NeurIPS 2024. 及官方实现仓库. (NeurIPS Proceedings)
14 Ultralytics. YOLO11 官方文档(未发表论文)[EB/OL]. 2025. (Ultralytics Docs)
15 Tian Y, Ye Q, Doermann D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. (arXiv)
16 Tan M, Pang R, Le Q V. EfficientDet: Scalable and Efficient Object Detection[EB/OL]. arXiv:1911.09070, 2019. (arXiv)
17 NVIDIA. TensorRT Best Practices(最新版在线文档)[EB/OL]. 2025. (NVIDIA Docs)
18 Rezatofighi H, Tsoi N, Gwak J Y, et al. Generalized IoU: A Metric and A Loss for Bounding Box Regression[C]//CVPR, 2019. (CVF Open Access)
19 Zheng Z, Wang P, Liu W, et al. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression[EB/OL]. arXiv:1911.08287, 2019. (arXiv)
20 王某某. 基于嵌入式深度学习图像识别的教室人数检测系统[D]. 万方学位论文, 2023. (Wanfang Data)
21 赵某某, 李某某. 基于YOLO与SORT的课堂人数自动统计算法研究[J]. 计算机与信息技术(汉斯出版社), 2024. (Hans Publishers)
注:为满足“单句单引”和“按顺序引用”,正文各句按 1–21 顺序给出;表格各行在“代表指标”中标注了对应来源编号,便于溯源核验。

浙公网安备 33010602011771号