YOLOv5至YOLOv12升级:吸烟行为检测系统的设计与实现(完整代码+界面+数据集项目)

摘要 :面向室内外公共场景的合规监管与安全管理需求,构建具备实时性与可部署性的吸烟行为检测系统 具有重要工程价值。本文围绕"YOLOv5 至 YOLOv12 的升级演进",系统性给出从数据构建、模型训练到桌面端落地的完整实现路径:首先基于吸烟行为的细粒度视觉表征,构建并清洗标注包含"吸烟/非吸烟、手部接触、烟雾与火点"等关键线索的数据集,给出统一的预处理、划分与增强策略,以缓解遮挡、尺度变化、光照不稳与小目标难检等问题;其次以 YOLO 系列为核心,设计跨版本的公平对比实验与部署级评估框架,在相同数据与输入尺度下对 YOLOv5、v6、v7、v8、v9、v10、v11、v12 进行性能与速度权衡分析,并结合吸烟行为的时空先验讨论误检与漏检的主要来源;最后采用 PySide6 构建交互友好的可视化桌面系统,支持图片/视频/摄像头多源输入、置信度与 IoU 可调、检测框与类别统计联动展示、结果导出与数据库持久化存储,并提供一键切换不同 YOLO 权重的工程化接口。文末给出完整代码、界面工程与数据集项目,以便复现与二次开发,为行为识别类目标检测应用提供可落地的实现参考。


文章目录

  • [1. 前言综述](#1. 前言综述)
  • [2. 数据集介绍](#2. 数据集介绍)
  • [3. 模型设计与实现](#3. 模型设计与实现)
  • [4. 训练策略与模型优化](#4. 训练策略与模型优化)
  • [5. 实验与结果分析](#5. 实验与结果分析)
  • [6. 系统设计与实现](#6. 系统设计与实现)
    • [6.1 系统设计思路](#6.1 系统设计思路)
    • [6.2 登录与账户管理](#6.2 登录与账户管理)
  • [7. 下载链接](#7. 下载链接)
  • [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 前言综述

吸烟与二手烟暴露长期构成公共健康与环境治理的高负担风险源,世界卫生组织在《WHO report on the global tobacco epidemic, 2023》中专门以"保护人群免受烟草烟雾危害"为主题,总结并推动无烟法规与执法监测的落地,这也使"在真实场景下对吸烟行为进行可解释、可追溯的自动化取证"成为典型的工程需求与研究命题。1。 (Digital Library) 近年的系统性综述指出,面向吸烟行为的视觉检测研究呈现出"数据集规模有限、目标极小且遮挡频繁、室内外光照与视角差异显著"的共性瓶颈,并以CigDet等数据为代表给出了YOLO族基准对比,从而为后续面向部署的算法选型与工程评估提供了相对清晰的参照系。2。 (ScienceDirect) 在实际场景中,吸烟行为往往同时包含"香烟目标检测""人手/口部邻域的交互关系""短时序动作线索(抬手、点烟、吸入、吐烟)"等多种证据,单帧静态检测与时序行为理解之间的建模边界如何划定,直接决定系统复杂度、可部署性与误报控制策略。

从方法谱系看,早期可部署方案多基于两阶段检测框架获取更高的定位精度,例如Faster R-CNN通过区域建议网络与共享特征显著提升候选框质量,为细粒度目标定位奠定了深度检测范式。3。 (NeurIPS Papers) 与之相对,一阶段检测以速度优势更易进入工程系统,SSD通过多尺度特征层上的密集回归实现端到端检测,在算力受限设备上具有较强的落地吸引力。4。 (Springer) YOLO将检测重写为单次前向的回归问题,强调实时性与部署友好性,因而在监控与边缘推理场景中成为吸烟检测系统最常见的基线家族。5。 (CV Foundation) 然而,吸烟场景的"前景(香烟/烟雾)---背景"极端不均衡会放大易负样本的梯度主导效应,Focal Loss通过抑制易分类样本的损失权重,为密集检测中的不均衡训练提供了经典解法与可迁移的损失设计思路。6。 (CVF Open Access) 同时,香烟在画面中通常呈现为低像素占比的小目标,多尺度特征融合对召回率具有决定性作用,FPN利用自顶向下与横向连接构建语义一致的金字塔特征,成为小目标检测中最常被复用的结构模块之一。7。 (CVF Open Access)

表 1 吸烟行为视觉检测相关方法谱系与工程适配要点(示例梳理)

方法范式 代表思路/模型形态 典型数据与标注形态 工程优势 主要局限(面向吸烟场景)
传统视觉(规则/特征) 颜色/纹理/运动线索 + 规则判别 小规模自采;弱标注或无框标注 计算开销低、实现简单 对光照、背景相似纹理与遮挡极敏感,泛化能力弱
两阶段检测 区域建议 + 分类回归(可配合多尺度特征) 需要较规范的框标注 定位精度高、对复杂背景更稳 推理开销大,端侧实时性与并发受限
一阶段检测(anchor-based) 多尺度密集回归 框标注;可用COCO预训练迁移 速度快、实现成熟 小目标/不均衡导致漏检与误报更突出
一阶段检测(改进损失/采样) 困难样本挖掘、损失重加权 框标注 + 类别统计 提升难例学习效率 需要更细致的超参控制与数据分布分析
YOLO工程基线 轻量Backbone + Neck + Detect Head 框标注;常配合增广策略 训练/导出/部署生态完善 在遮挡、极小目标与跨域场景下仍易失真
YOLO结构演进 更强特征聚合与训练策略 同一数据集便于横向对比 精度/速度折中持续改善 版本差异带来复现实验与指标对齐成本
结合时序线索 检测 + 时序建模(可选) 视频标注或关键帧策略 有助于区分"拿烟/吸烟/非吸烟" 标注成本高,系统复杂度与延迟上升

围绕"YOLOv5至YOLOv12升级"这一主线,工程上最先面对的通常是可复现训练、快速导出与多端部署问题,Ultralytics在YOLOv5的开源与版本化发布中提供了相对标准化的训练脚本、模型导出与推理接口,这使其自然成为许多监控类检测系统的起点。8。 (Zenodo) 随后,YOLOv7在保持实时性的同时系统化引入可训练的"bag-of-freebies"并对训练可迁移性进行讨论,使得同等算力预算下的精度提升更稳定可预期。9。 (CVF Open Access) 在更近的演进中,YOLOv9从可编程梯度信息与GELAN结构出发讨论信息瓶颈与训练可靠性问题,在"轻量模型也能更好学到目标任务信息"的方向上给出了可操作的结构与训练机制。10。 YOLOv10进一步针对端到端部署的推理瓶颈,提出NMS-free的训练与结构审视框架,将"低延迟---高精度"的边界推进到更适合实时系统的区域。11。 YOLOv12则尝试在保持实时性的前提下引入更强调注意力建模能力的架构路线,直接回应"注意力模型速度难以匹配CNN实时检测"的历史矛盾。12。 (arXiv)

需要强调的是,吸烟行为并不等价于"画面里出现香烟",其本质更接近时空动作检测:目标极小、交互紧密、且动作证据跨越多个帧间片段,因此动作数据集与时空定位范式对系统设计具有重要启发,例如AVA以密集的时空动作标注推动了"同一人物多标签动作"的评估与建模方式。13。 (CVF Open Access) 在网络结构层面,SlowFast通过快慢双路径分别建模语义与运动细节,证明了以较低额外开销捕获时序信息能够显著提升视频动作理解性能,这对"吸烟动作触发---持续---结束"的判别尤其具有借鉴意义。[14]。 (CVF Open Access) 与此同时,国内研究对小目标检测的难点与方法分解已形成较系统的总结,明确指出像素占比小、语义弱、密集遮挡与复杂背景是小目标任务的核心痛点,这与吸烟检测中的"香烟小目标+手部遮挡+监控噪声"高度同构。[15]。 (cjig.cn)

综合以上脉络,老思在本文所述项目中把"吸烟行为检测"拆解为可部署的工程链路:以YOLOv5为可复现基线,在同一数据集与统一评测协议下系统对比YOLOv6至YOLOv12的精度、速度与误报特征,并围绕小目标召回、遮挡鲁棒性与端侧延迟对关键模块做针对性改造。与此同时,项目将新建并标注面向吸烟场景的数据集,给出清晰的划分、预处理与类别分布统计;在系统层面以PySide6实现交互界面与可视化推理流程,并结合SQLite完成用户体系与结果持久化,最终提供可复现实验的完整代码、界面与数据资源包,便于读者直接复用与二次开发。
主要功能演示:

(1)启动与登录:系统启动后进入登录界面,用户可完成注册、登录与密码修改;登录成功后自动加载该用户的历史检测记录与界面偏好设置,并在主窗口建立独立工作空间,后续导出与存储均与账号绑定,便于审计与复现。

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面支持四类输入源切换。摄像头模式下以帧流方式实时推理并叠加检测框、置信度与类别统计;视频模式支持播放/暂停/进度控制与逐帧推理;图片模式对单张图像进行一次性检测并允许保存可视化结果;文件夹模式批量遍历图像并输出汇总统计与导出文件,适合离线评测与数据筛查。

(3)模型选择与对比演示:界面提供 YOLOv5--YOLOv12 权重的下拉选择与一键切换,切换后自动完成模型加载与推理参数初始化;同一输入源下可快速对比不同版本在小目标召回、遮挡误检与推理延迟上的差异,并将关键指标(如 mAP、F1、FPS 或单帧耗时)与检测结果同步展示,便于形成工程选型结论。下方建议插入:模型选择控件截图、同场景不同模型对比截图。

(4)主题修改功能:新增主题管理模块,支持浅色/深色主题切换与主色调配置,并允许对背景图、图标与字体样式进行快速替换;主题配置随账号持久化保存,保证不同用户在同一设备上获得一致的交互体验,同时不影响检测流程与结果导出。


2. 数据集介绍

本项目面向真实监控与公开视频场景中的吸烟行为识别,构建了单类别目标检测数据集 SmokingBehavior_SIXU 。从你提供的训练批可视化样例可以看到,图像覆盖了室内外、日夜光照、近景与远景、侧脸与遮挡等多种拍摄条件,且"香烟/烟蒂"在画面中的像素占比普遍较小,常与手部、口鼻区域发生遮挡或混叠;同时也存在少量近距离特写样本,使目标尺度跨度显著增大。这种"小目标为主、尺度变化大、遮挡频繁 "的分布特征决定了数据构建阶段必须更关注标注一致性与样本多样性:一方面需要对低清晰度、强噪声或严重压缩帧进行清洗,另一方面应尽量保证不同来源与不同场景在训练/验证/测试中的覆盖均衡,以降低场景偏置对泛化能力的影响。类别标签采用英文标识 Smoking,并通过 Chinese_name = {'Smoking': '吸烟'} 映射实现中文可视化展示,便于在 PySide6 界面中进行友好呈现与统计。

python 复制代码
Chinese_name = {'Smoking': "吸烟"}

数据集共包含 8,520 张图像,按训练/验证/测试划分为 5,950 / 1,720 / 850 张(约 69.8% / 20.2% / 10.0% )。标注统计图显示,本数据集仅包含 1 个类别,实例数量约为 1.5 万 量级,边界框中心在画面空间上呈现一定的构图偏置,边界框宽高分布则以小尺度为主并伴随长尾的大框样本,这意味着训练时既需要保持对小目标的敏感性,也需要通过多尺度训练与合理的数据增强来适配尺度跨度与位置偏移。为适配 YOLO 系列模型,本项目采用 YOLO 标注的归一化文本格式( x c , y c , w , h ∈ [ 0 , 1 ] x_{c}, y_{c}, w, h \in [0,1] xc,yc,w,h∈[0,1]),训练阶段通常以 Letterbox 方式将输入缩放到统一尺寸,从而在尽量不破坏几何比例的前提下满足网络输入约束。

📊 数据集规格说明 (Dataset Specification)

维度 参数项 详细数据
基础信息 标注软件 LabelImg(或你的实际标注工具)
标注格式 YOLO TXT (Normalized)
数量统计 训练集 (Train) 5,950 张 (≈69.8%)
验证集 (Val) 1,720 张 (≈20.2%)
测试集 (Test) 850 张 (≈10.0%)
总计 (Total) 8,520 张
类别清单 Class ID: 0 Smoking(吸烟)
图像规格 输入尺寸 640 * 640(训练输入,Letterbox)
数据来源 公开视频截帧 / 监控类场景图像(多源混合,人工清洗)

3. 模型设计与实现

本项目的任务本质是单类别目标检测:给定输入图像 I I I,模型输出若干候选框集合 ( b i , s i ) i = 1 N {(b_i, s_i)}_{i=1}^{N} (bi,si)i=1N,其中 b i = ( x i , y i , w i , h i ) b_i=(x_i,y_i,w_i,h_i) bi=(xi,yi,wi,hi) 为边界框参数, s i s_i si 为"吸烟(Smoking)"类别的置信度。由于香烟/烟蒂在监控画面中往往呈现为小目标,且与手部、口鼻区域存在高频遮挡与相似干扰,模型设计需要同时满足两点:一是多尺度特征表达要足够强,以降低小目标漏检;二是推理链路要足够短,以支撑摄像头实时检测与界面端交互。在候选基线方面,传统检测器常以 ResNet、MobileNet、EfficientNet 等分类骨干作为特征提取器再叠加检测头,但在工程落地时往往要额外处理多尺度融合与端到端导出链路;相比之下,YOLO 系列将"骨干---颈部---检测头"作为统一框架组织,并在速度与精度之间形成了稳定折中,更适合作为吸烟行为检测系统的核心模型家族。本文默认主模型采用 YOLOv12n ,其注意力中心化的结构能够在保持实时性的同时增强对细粒度局部线索的建模能力,并提供从 YOLOv5 到 YOLOv12 的权重切换接口以完成系列对比实验。(arXiv)

在网络结构上,系统沿用 YOLO 框架的三段式设计:Backbone 负责将输入映射到多尺度特征表示,Neck 通过自顶向下与自底向上的路径聚合实现跨尺度融合(典型为 FPN/PAN 思想),Head 则在多个特征层上输出分类与回归结果。以 YOLOv5 为例,其结构组织(Backbone/Neck/Head)如下图所示,便于读者直观理解"多尺度输出 + 路径聚合"的基本范式。(Ultralytics Docs)
网络的整体架构图如下图所示

YOLOv12 在上述范式内引入了更"注意力友好"的骨干与特征聚合机制。根据 Ultralytics 文档与对应论文描述,YOLOv12 的关键改动集中在两类模块:其一是 Area Attention ,将特征图划分为若干区域,在区域级别高效建模长程依赖,以避免标准自注意力在高分辨率特征上带来的计算与访存开销;其二是 R-ELAN(Residual Efficient Layer Aggregation Networks) ,通过块级残差与更稳健的特征聚合方式改善大规模注意力模型的优化稳定性。此外,YOLOv12 在注意力实现上强调与高效算子(如 FlashAttention)的兼容,并采用"位置感知卷积(position perceiver)"等设计在不显式引入位置编码的前提下补足空间先验,从而在实时约束下提升对细节区域(如口鼻附近的细小烟体、火点高亮边缘)的表达能力。(Ultralytics Docs) 为了给出更贴近"检测结果差异"的直观证据,YOLO12 文档提供了与 YOLOv10/YOLOv11 的热力图对比图,可用于说明注意力机制对显著区域响应的变化趋势。

在任务建模与损失函数上,本项目采用 Ultralytics 检测器的通用训练范式,将优化目标写为分类损失与边界框回归损失的加权和。记第 i i i 个正样本的类别标签为 y i ∈ 0 , 1 y_i\in{0,1} yi∈0,1、预测 logit 为 p i p_i pi,则分类损失可用二元交叉熵表示为
L cls = − 1 N ∑ i = 1 N [ y i log ⁡ σ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − σ ( p i ) ) ] , L_{\text{cls}} = -\frac{1}{N}\sum_{i=1}^{N}\Big[y_i\log\sigma(p_i) + (1-y_i)\log(1-\sigma(p_i))\Big], Lcls=−N1i=1∑N[yilogσ(pi)+(1−yi)log(1−σ(pi))],

其中 σ ( ⋅ ) \sigma(\cdot) σ(⋅) 为 Sigmoid 函数。边界框回归部分通常以 IoU 类损失刻画定位误差,例如 CIoU:
L box = 1 − CIoU ( b , b ^ ) , L_{\text{box}} = 1-\text{CIoU}(b,\hat b), Lbox=1−CIoU(b,b^),

其中 b b b 为预测框, b ^ \hat b b^ 为真实框。对回归的细粒度优化,Ultralytics 实现中还引入 Distribution Focal Loss(DFL),将边界框位置预测视为离散分布学习问题,记离散分布为 p \mathbf{p} p、软标签分布为 q \mathbf{q} q,则
L dfl = − ∑ k = 0 K q k log ⁡ p k , p = softmax ( z ) . L_{\text{dfl}} = -\sum_{k=0}^{K} q_k \log p_k,\quad \mathbf{p}=\text{softmax}(\mathbf{z}). Ldfl=−k=0∑Kqklogpk,p=softmax(z).

最终总损失可写为
L = λ box L box + λ cls L cls + λ dfl L dfl . L = \lambda_{\text{box}}L_{\text{box}} + \lambda_{\text{cls}}L_{\text{cls}} + \lambda_{\text{dfl}}L_{\text{dfl}}. L=λboxLbox+λclsLcls+λdflLdfl.

这些损失项在 Ultralytics 的实现中以 box_loss/cls_loss/dfl_loss 等形式输出,便于在训练日志与可视化曲线上定位"误检偏多(cls 主导)"或"定位不稳(box/dfl 主导)"的原因。(Ultralytics Docs)

工程实现方面,系统在代码层面对 YOLOv5--YOLOv12 采用统一的 Detector 抽象:初始化阶段按用户在界面中选择的模型名称加载对应权重(如 yolo12n.pt),推理阶段执行 Letterbox → Normalize → Forward → Decode → (NMS/NMS-free) → 绘制与统计 的标准流水线;其中 YOLOv10 等端到端设计强调减少或移除 NMS 依赖,但在系统侧仍通过统一后处理接口将输出规整为一致的框结构,以保证 UI 层的显示、导出与数据库存储逻辑不被模型差异打断。(Ultralytics Docs) 以 Ultralytics API 为例,模型加载与推理接口可以简化为如下形式(此处仅说明核心调用关系,具体训练策略将在第 4 节展开):(Ultralytics Docs)

python 复制代码
from ultralytics import YOLO

# 例如:加载 YOLOv12n 权重
model = YOLO("yolo12n.pt")

# 推理:支持 image / video / camera frame
results = model(source="test.jpg", conf=0.25, iou=0.7)

以上设计使得"模型结构演进(v5→v12)"与"系统功能实现(多源输入、阈值可调、结果导出)"之间形成清晰边界:模型侧只需遵循统一的输入输出协议,UI 与业务逻辑即可在不修改界面代码的情况下完成跨版本切换与对比展示,从而为后续实验分析与部署选型提供稳定、可复现的工程基础。


4. 训练策略与模型优化

吸烟行为检测在训练侧的核心矛盾,老思认为并不在"类别多不多",而在于目标尺度与场景噪声:香烟/烟蒂常处于口鼻与手部邻域,像素占比小、遮挡频繁、光照与压缩伪影明显,导致模型在早期极易学到"背景捷径",表现为验证集召回偏低或误检集中在手部高亮区域。因此,本项目采用"迁移学习起步、强增广拉开分布、后期收敛回真实"的训练节奏:首先加载 COCO 等通用数据上的预训练权重,以降低小数据集从零开始训练时的欠拟合风险;随后在训练前半程启用较强的数据增强(Mosaic、尺度抖动、颜色扰动与随机翻转等),扩大局部纹理与光照分布;在训练后期逐步减弱强增广(尤其是 Mosaic),让模型回到与测试更一致的真实成像分布上完成收敛,从而降低部署时的"训练---推理分布漂移"。

训练环境上,项目默认以 Python 3.12 与 Ultralytics 训练框架组织流水线,GPU 以 RTX 4090 为参考配置,开启自动混合精度以提升吞吐并降低显存压力。优化器可交由框架自适应选择(常见为 SGD 或 AdamW 的自动切换),学习率采用 warmup + 余弦退火的组合更易稳定收敛:在前若干轮用 warmup 逐步抬升学习率以避免梯度爆炸,之后使用余弦退火让学习率平滑下降。其形式可写为
η ( t ) = η min ⁡ + 1 2 ( η max ⁡ − η min ⁡ ) ( 1 + cos ⁡ π t T ) , \eta(t)=\eta_{\min}+\frac{1}{2}\left(\eta_{\max}-\eta_{\min}\right)\left(1+\cos\frac{\pi t}{T}\right), η(t)=ηmin+21(ηmax−ηmin)(1+cosTπt),

其中 t t t 为当前迭代步或 epoch, T T T 为总训练长度, η max ⁡ \eta_{\max} ηmax 为初始学习率, η min ⁡ \eta_{\min} ηmin 对应最终学习率。对单类别检测而言,分类分支的收敛通常并非瓶颈,反而是小目标定位与难例稳定性更关键,因此训练监控时应更关注 box/dfl 等回归相关曲线是否进入平台期,以及验证集 PR 曲线在低召回区域是否出现"断崖式下滑",这往往对应过强增广或输入分辨率不足导致的细节丢失。

为保证可复现与便于横向对比 YOLOv5--YOLOv12,本文在统一数据划分与同一训练配置上做系列实验,基础超参数取一个偏稳健的默认组合,如下表所示。这里的设置强调三个原则:一是训练轮数与早停共同控制,避免过拟合或无效长训;二是输入尺寸以 640 为基线,便于速度与精度权衡,必要时再提高到 768/832 以换取小目标召回;三是 Mosaic 在最后若干轮关闭,使模型在接近真实分布的数据上完成最终拟合。

名称 作用(简述) 数值
epochs 最大训练轮数 120
patience 早停耐心 50
batch 批大小 16
imgsz 输入分辨率 640
pretrained 预训练权重 true
optimizer 优化器 auto
lr0 初始学习率 0.01
lrf 最终学习率占比 0.01
momentum 动量 0.937
weight_decay 权重衰减 0.0005
warmup_epochs 预热轮数 3.0
mosaic Mosaic 强度/概率 1.0
close_mosaic 后期关闭 Mosaic 10

在"模型优化"层面,训练阶段的改进应优先服务于吸烟场景的误检与漏检机理。对于漏检,最常见原因是小目标在下采样后信息被抹平,直接的手段是提高输入分辨率或启用多尺度训练;更稳妥的工程做法是先在 640 上完成稳定基线,再对小目标召回不足的版本提高到 768/832 复训对比,避免一开始就把吞吐与显存推到极限而难以定位问题。对于误检,往往来自手指、笔尖、反光边缘与"拿物体靠近嘴部"的相似姿态,处理上更依赖数据层面的难例补充与增强策略的克制:颜色扰动与随机模糊可以提升抗光照与压缩噪声能力,但过强的 Mosaic/仿射会破坏"人---手---口部"的几何关系,从而在后期引入不必要的假阳性,因此关闭 Mosaic 的时间点通常比通用目标检测更敏感,建议在验证集误检开始收敛前就提前切换到弱增广阶段。

部署侧的优化则以"保持精度的前提下降低延迟"为目标,路径通常是权重导出与推理加速:将训练好的权重导出为 ONNX,再进一步编译到 TensorRT,以利用 GPU 的高效算子与半精度推理;若系统部署在算力更受限的端侧,可在评估精度下降可接受的前提下启用 FP16,甚至进行 INT8 校准量化。需要注意的是,吸烟检测属于小目标密集背景任务,量化对回归分支的影响往往大于分类分支,因此量化前应以验证集对比 mAP50-95 与漏检样例,确保性能退化可控,并在 PySide6 界面中同步记录不同导出格式的帧率与延迟,形成可追溯的工程选型依据。


5. 实验与结果分析

本节在同一数据集划分(Train/Val/Test = 5950/1720/850)与统一输入尺寸( 640 × 640 640\times 640 640×640)下,对 YOLOv5--YOLOv12 的多版本模型进行横向对比。对比维度同时覆盖精度指标(Precision/Recall/F1、mAP@0.5、mAP@0.5:0.95)与工程指标(参数量、FLOPs、端到端单帧耗时与折算 FPS),以保证结论能够直接服务于 PySide6 桌面端的实时检测与部署选型。需要说明的是,推理耗时统计来自你提供的评测日志(设备为 NVIDIA GeForce RTX 3070 Laptop GPU 8GB ),并计入了预处理、模型前向与后处理三段时间,因此更贴近"界面调用推理接口"的真实延迟上界。

评价指标方面,Precision 与 Recall 分别度量误检与漏检的权衡,F1 用于给出二者的平衡刻画,其定义为
F1 = 2 P R P + R , \text{F1}=\frac{2PR}{P+R}, F1=P+R2PR,

其中 P P P 为 Precision, R R R 为 Recall。检测性能以 AP 与 mAP 为核心,其中 mAP@0.5 反映 IoU=0.5 的宽松定位条件下的检出能力,mAP@0.5:0.95 则在更严格的定位要求下综合多阈值表现,更能体现小目标与遮挡场景中的"框是否贴合"。由于本数据集为单类别(Smoking),mAP 可视为该类 AP 的统计表达,但仍沿用 mAP 记号以便与 YOLO 系列通用评测保持一致。

YOLOv12s 的单模型结果为例,F1--Confidence 曲线显示当置信度阈值约为 0.431 时可取得峰值 F1(约 0.95),曲线在较宽阈值区间保持高位平台,说明该模型在当前数据集上具有较强的阈值鲁棒性;而在阈值接近 1.0 时 F1 快速下滑,属于"过度保守导致召回崩塌"的典型现象,因此在 UI 端将默认 conf 设定在 0.40--0.50 区间通常更稳妥。紧随其后的 PR 曲线整体贴近右上角,mAP@0.5 达到约 0.973,曲线在高召回段(接近 1.0)出现明显陡降,意味着剩余难例主要集中在极端小目标、强遮挡与低清晰度帧,后续若要进一步压低漏检率,需要更有针对性的困难样本补充与标注一致性约束。从训练过程看,box/cls/dfl 的训练与验证损失均呈单调下降并逐步趋稳,Precision 与 Recall 在前 20--30 个 epoch 内快速爬升,mAP@0.5 与 mAP@0.5:0.95 随后进入缓慢提升阶段,整体未呈现"训练集下降而验证集反弹"的强过拟合特征,说明第 4 节的"前期强增广、后期贴近真实分布收敛"的训练节奏对该任务是有效的。

n-type(轻量) 对比中,YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n 的 F1 与 mAP@0.5 差异整体不大,柱状图几乎处于同一量级,但在更严格的 mAP@0.5:0.95 与速度指标上出现了更清晰的分层。定量结果表明,YOLOv9t 在 mAP@0.5:0.95 上取得该组最高值(0.789),YOLOv8n 紧随其后(0.783),且 YOLOv8n 的端到端 FPS 约 98.3,为该组最快;这意味着若系统以"摄像头实时检测 + UI 流畅"为优先级,YOLOv8n 是更均衡的默认选择,而 YOLOv9t 更偏向"略高定位质量但吞吐较低"的配置。需要注意的是,YOLOv7-tiny 的 F1 虽然在该组中偏高(0.945),但 mAP@0.5:0.95 明显偏低(0.742),提示其在宽松 IoU 下能"检出",但在严格 IoU 下定位贴合不足,这对吸烟这类小目标任务尤其敏感,因为框稍有偏移就会显著拉低严格 mAP。训练过程中 mAP@0.5 的收敛趋势也能支持上述判断:多数模型在 20--40 个 epoch 内进入平台区,而 YOLOv12n 的曲线呈阶梯式变化并整体偏低,老思更倾向将其解释为"评估记录粒度或实现兼容性差异"带来的日志形态变化,因此该曲线主要用于展示趋势,不宜与其他模型做逐 epoch 的严格数值对齐。从平均 PR 曲线看,不同轻量模型几乎重合,差异主要集中在高召回末端,YOLOv9t 与 YOLOv8n 在高召回段的精度保持略好,说明它们对难例的泛化更稳定。

表5-1 n-type 模型对比结果(RTX 3070 Laptop GPU,端到端 FPS)

模型 Params(M) FLOPs(G) Precision Recall F1 mAP50 mAP50-95 FPS
YOLOv5nu 2.6 7.7 0.954 0.922 0.938 0.961 0.770 91.4
YOLOv6n 4.3 11.1 0.949 0.911 0.930 0.949 0.770 96.7
YOLOv7-tiny 6.2 13.8 0.963 0.927 0.945 0.956 0.742 47.4
YOLOv8n 3.2 8.7 0.962 0.925 0.943 0.963 0.783 98.3
YOLOv9t 2.0 7.7 0.955 0.930 0.942 0.964 0.789 50.8
YOLOv10n 2.3 6.7 0.936 0.915 0.925 0.957 0.779 71.7
YOLOv11n 2.6 6.5 0.957 0.926 0.941 0.961 0.772 77.1

s-type(更高容量) 对比中,整体精度较 n-type 进一步抬升,尤其体现在 mAP@0.5:0.95 的提升更明显,这符合吸烟小目标任务对表征能力与定位细粒度的需求。柱状图给出的直观结论是:各模型 mAP@0.5 普遍在 0.96--0.98 区间,F1 也集中在 0.94--0.96,差异同样主要体现在严格 mAP 与速度上。定量结果显示,YOLOv12s 在 mAP@0.5:0.95 上达到 0.828,为该组最高,同时 mAP@0.5 约 0.973;YOLOv7 的 mAP@0.5 最高(0.976)且 F1 最高(0.963),但参数量达到 36.9M、端到端 FPS 约 33.9,明显不利于实时 UI 场景。

考虑工程性,YOLOv11s 的 mAP@0.5:0.95 达到 0.826、FPS 约 74.2,在"严格定位质量---实时性"的折中上非常突出;YOLOv8s 的 FPS 最高(约 87.8),但严格 mAP 相对略低(0.814),更适合对吞吐要求更强的多路视频流场景。训练收敛曲线与平均 PR 曲线进一步显示:s-type 的模型在高召回末端的精度保持更稳,YOLOv12s 在接近满召回时的精度衰减最慢,这与其严格 mAP 的优势相一致。

表5-2 s-type 模型对比结果(RTX 3070 Laptop GPU,端到端 FPS)

模型 Params(M) FLOPs(G) Precision Recall F1 mAP50 mAP50-95 FPS
YOLOv5su 9.1 24.0 0.959 0.930 0.944 0.965 0.794 81.7
YOLOv6s 17.2 44.2 0.952 0.932 0.942 0.963 0.821 81.6
YOLOv7 36.9 104.7 0.971 0.954 0.963 0.976 0.828 33.9
YOLOv8s 11.2 28.6 0.960 0.939 0.949 0.970 0.814 87.8
YOLOv9s 7.2 26.7 0.969 0.933 0.951 0.973 0.820 45.1
YOLOv10s 7.2 21.6 0.958 0.930 0.944 0.969 0.819 70.5
YOLOv11s 9.4 21.5 0.968 0.940 0.954 0.973 0.826 74.2
YOLOv12s 9.3 21.4 0.964 0.943 0.953 0.973 0.828 59.7

6. 系统设计与实现

6.1 系统设计思路

本系统以"视频流吸烟行为检测"为核心任务,采用 Python 3.12 作为运行环境,PySide6(Qt 信号槽)承担交互界面与状态管理,SQLite 用于用户体系与结果持久化。整体架构遵循可维护的分层思想:界面层负责展示与交互,控制层负责业务编排与状态机调度,处理层负责模型推理与后处理。这样的划分使得模型版本升级(YOLOv5--YOLOv12)不会侵入界面代码,UI 风格与主题系统的迭代也不需要改动检测算法逻辑,从而避免"功能耦合导致的牵一发动全身"。

在类与模块组织上,MainWindow 作为控制中枢,集中管理输入源切换、播放控制、阈值参数(Conf/IoU)更新、结果导出与状态栏提示等槽函数,并通过信号将图像帧与推理结果在不同线程/模块间安全传递。Ui_MainWindow 对应界面层,负责按钮、标签、表格、图标与主题切换控件的布局与样式配置,尽量保持无业务逻辑的"纯展示"属性。Detector 作为处理层,封装模型加载、预处理(Letterbox/Normalize)、推理调用、后处理(解码、NMS 或端到端输出规整)、以及统一的结果结构(框、置信度、类别与统计),从而使主窗口只需面向稳定接口组织流程。

从运行链路看,系统以"启动→登录→选择输入→预处理→YOLO 推理→后处理/统计→界面更新→用户交互→循环/结束"为主线,同时在交互分支上提供保存与导出,并将关键记录写入数据库以支撑回溯与检索。老思在工程实现中更强调"端到端可用"的一致性:无论输入来自摄像头、视频、图片或文件夹,最终都被规整为同一帧处理范式与同一输出数据结构,保证 UI 显示、统计面板与导出模块在多源场景下行为一致。

图 系统流程图

图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。

6.2 登录与账户管理

登录与账户管理模块以 SQLite 为中心完成"身份---配置---结果"的闭环绑定:注册阶段将用户信息与基础偏好写入用户表,登录阶段完成查询校验并加载个性化配置(阈值、主题、常用模型、历史记录索引),使用户进入主界面后即可在其专属空间内进行检测与结果管理;当用户在主界面修改头像、密码或主题等偏好时,系统将配置持久化并在下一次会话自动恢复,从而保证跨启动的一致体验;而注销/切换账号则通过清理会话状态并回到登录入口,确保不同用户的检测记录、导出文件索引与界面偏好相互隔离,最终与主检测流程在"启动前置认证---进入主界面---检测结果落库/导出"的链路上自然衔接,既满足可追溯性也提升了实际使用的稳定性与可维护性。


7. 下载链接

若您想获得博文中涉及的实现完整全部资源文件 (包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷

详细文档介绍博客: YOLOv5至YOLOv12升级:吸烟行为检测系统的设计与实现(完整代码+界面+数据集项目)

环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程

或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程

数据集标注教程(如需自行标注数据):数据标注合集


8. 参考文献(GB/T 7714)

1 World Health Organization. WHO report on the global tobacco epidemic, 2023: protect people from tobacco smoke[R]. Geneva: World Health Organization, 2023.
2 KHAN A, ELHASSAN M A M, KHAN S, et al. Deep learning-based smoker classification and detection: An overview and evaluation[J]. Expert Systems with Applications, 2025, 267: 126208. DOI:10.1016/j.eswa.2024.126208.
3 REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks[C]//Advances in Neural Information Processing Systems. 2015.
4 LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single Shot MultiBox Detector[C]//Computer Vision -- ECCV 2016. Cham: Springer, 2016: 21-37.
5 REDMON J, DIVVALA S, GIRSHICK R, et al. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2016: 779-788.
6 LIN T Y, GOYAL P, GIRSHICK R, et al. Focal Loss for Dense Object Detection[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 2980-2988.
7 LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature Pyramid Networks for Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2017: 2117-2125.
8 JOCHER G. ultralytics/yolov5: Initial Release[EB/OL]. Zenodo, 2020. DOI:10.5281/zenodo.3908560.
9 WANG C Y, BOCHKOVSKIY A, LIAO H Y M. YOLOv7: Trainable Bag-of-Freebies Sets New State-of-the-Art for Real-Time Object Detectors[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2023: 7464-7475.
10 WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//European Conference on Computer Vision. 2024.
11 WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[C]//Advances in Neural Information Processing Systems. 2024.
12 TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. DOI:10.48550/arXiv.2502.12524.
13 GU C, SUN C, ROSS D A, et al. AVA: A Video Dataset of Spatio-temporally Localized Atomic Visual Actions[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018.

14\] FEICHTENHOFER C, FAN H, MALIK J, et al. SlowFast Networks for Video Recognition\[C\]//Proceedings of the IEEE/CVF International Conference on Computer Vision. 2019: 6202-6211. \[15\] 潘晓英, 贾凝心, 穆元震, 等. 小目标检测研究综述\[J\]. 中国图象图形学报, 2023, 28(9): 2587-2615. DOI:10.11834/jig.220455.

相关推荐
<-->1 小时前
【tuner passes compile compress autotp】
人工智能·python·深度学习
m0_564876841 小时前
提示词应用
深度学习·学习·算法
qcx231 小时前
【AI Agent实战】 0 成本视频处理全流程:ffmpeg + whisper 实现去水印、双语字幕、品牌片尾 | 实战SOP
人工智能·ffmpeg·音视频
日光明媚2 小时前
DMD 一步扩散核心原理:从符号定义到梯度推导
人工智能·机器学习·计算机视觉·ai作画·stable diffusion·aigc
智象科技2 小时前
AI运维:人工智能如何改变传统IT运维
数据库·人工智能·自动化·一体化运维·ai运维
Shining05962 小时前
QEMU 编译开发环境搭建
人工智能·语言模型·自然语言处理·云原生·qemu·vllm·华为昇腾
Southern Wind2 小时前
我在 Vue3 项目里接入 AI 后,发现前端完全变了
前端·人工智能·状态模式
正经人_x2 小时前
学习日记39:GLIGEN
人工智能·深度学习
TaoSense2 小时前
芯片IPD管理
人工智能