摘要:吸烟行为的自动化识别是公共场所控烟治理、校园与工厂安全管理中的关键环节,其核心挑战在于目标尺度小、遮挡频繁、烟雾形态多变以及复杂光照与背景干扰等因素对检测鲁棒性的持续冲击。本文围绕“YOLOv5 至 YOLOv12 升级:吸烟检测系统的设计与实现”这一主题,系统梳理并实证对比 YOLO 系列从 v5 到 v12 的结构演进与工程化落地差异,给出一套可复现实验配置与端到端项目代码。系统以 YOLO 检测框架 为算法核心,面向“吸烟/疑似吸烟/香烟(或烟具)等目标与行为线索”构建数据集,完成清洗、标注、划分与增强策略设计,并在同一数据集与统一评估指标下对 YOLOv5、YOLOv6、YOLOv7、YOLOv8、YOLOv9、YOLOv10、YOLOv11、YOLOv12 进行性能与效率对比分析,涵盖 mAP、F1、推理延迟与参数规模等维度。工程实现方面,本文采用 PySide6 构建可交互的桌面端界面,支持图片/文件夹/视频/摄像头多源输入、阈值可调(Conf/IOU)、检测结果叠加显示、统计面板与结果导出,并使用 SQLite 设计账户体系与记录持久化,实现用户配置与检测历史的隔离管理。本文最终提供完整的训练与推理代码、界面工程与数据集规范说明,形成可直接部署与二次开发的吸烟检测系统参考实现。
完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址:https://my.feishu.cn/wiki/GhQTwVE3KitjkZk00fLcga64n4M
功能效果展示视频:YOLOv5至YOLOv12升级:吸烟检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
@
- 1. 前言综述
- 2. 数据集介绍
- 3. 模型设计与实现
- 4. 训练策略与模型优化
- 5. 实验与结果分析
- 6. 系统设计与实现
- 6.1 系统设计思路
- 6.2 登录与账户管理
- 7. 下载链接
- 8. 参考文献(GB/T 7714)
➷点击跳转至文末所有涉及的完整代码文件下载页☇
1. 前言综述
公共场所、工厂园区与校园场景中的禁烟管理,长期依赖人工巡查与事后取证,既难以覆盖连续时段,也很难在人员密集或视角复杂的监控画面里保持稳定的执法一致性;因此,面向视频监控流的自动吸烟检测逐渐成为智能安防与职业健康管理中一个典型的“高频、刚需、强实时”任务。1 但与一般的行人或车辆检测不同,吸烟行为往往由“人—手—口—香烟/电子烟/烟雾”等多要素共同构成,其中香烟本体尺度极小、纹理弱、易与手指/筷子/手机等细长物混淆,且在压缩编码、逆光、夜间补光和遮挡条件下,目标外观会发生显著漂移,这使得仅靠单一目标的外观分类很难在真实监控域中获得可用的误报率与漏报率。2
早期计算机视觉通常采用手工特征与规则推理来实现“疑似吸烟”提示,例如基于级联分类器的快速人脸/人体局部检测可以在有限算力下完成前景筛选。3 进一步地,HOG 等梯度方向统计特征结合线性分类器在人体检测等任务上取得了较强的工程可落地性,也为后续基于局部结构的行为判别提供了可复用的表示框架。4 然而,吸烟检测的关键难点在于“行为语义”与“细粒度小目标”同时存在:一方面,手到口的动作与喝水、咳嗽、打电话等高度相似;另一方面,香烟在画面中占据的有效像素极少,传统特征在尺度变化与噪声扰动下容易退化,因此这类方法往往依赖繁琐的阈值与场景先验,跨摄像头、跨环境迁移能力有限。
深度学习的目标检测范式为该问题提供了更统一的建模路径,其中两阶段检测器通过候选区域机制显著提升了定位精度,Faster R-CNN 以区域建议网络实现了端到端的候选生成与分类回归耦合,代表了“高精度但计算较重”的技术路线。5 与之对应的一阶段检测器试图以密集预测获得更高吞吐,SSD 通过多尺度特征层上的默认框回归在速度与精度之间给出了早期的均衡方案。6 针对小目标易漏检这一核心矛盾,多尺度特征融合逐渐成为主流设计,FPN 用自顶向下与横向连接构建语义一致的金字塔表示,为跨尺度检测提供了通用部件。7 同时,密集检测中前景/背景极度不均衡会导致训练被大量易分类负样本主导,Focal Loss 通过调制因子抑制易样本梯度,从优化层面改善了单阶段检测的收敛质量。8
在实时监控这一强工程约束下,YOLO 系列以“单网络、单次前向”的统一回归思路推动了实时检测成为常态化能力,YOLOv1 将检测问题显式建模为边界框与类别概率的联合回归,为后续轻量化与端侧部署奠定了范式基础。9 随着工程生态的成熟,YOLOv5 以可复现训练配方、完善的导出链路和工程化组件推动了工业界对 YOLO 的规模化采用,也使“同一任务多版本横向对比”成为可操作的实验流程。10 在模型结构与训练策略层面,YOLOv7 通过可训练的“bag-of-freebies”与结构重整等设计,在速度区间内进一步刷新了实时检测的精度上界。11 近两年,YOLO 的演进开始更多关注信息流与端到端部署:YOLOv9 以可编程梯度信息与 GELAN 架构讨论深层网络中的信息瓶颈问题,并在 ECCV 体系下给出了系统化论证。12 面向推理链路的进一步简化,YOLOv10 将 NMS 依赖作为端到端部署瓶颈加以处理,通过一致的双重分配与整体效率驱动设计,推动“无 NMS”的实时检测落地。13 在注意力机制与实时性之间长期存在的矛盾上,YOLOv12 提出注意力中心的实时检测框架,试图在保持延迟可控的同时引入更强的全局建模能力。14 与此同时,Ultralytics 在其发布版中将 YOLO12 作为可直接调用的模型族纳入统一接口与多任务支持,使得从研究复现到应用集成的距离显著缩短。15
不过,从“能检出”到“可用”,吸烟检测仍存在一组更贴近落地的技术难题:其一,香烟属于典型的小目标且常伴随手部遮挡,单帧检测容易出现不稳定抖动,需要在时序上进行一致性约束与目标关联;其二,吸烟动作的判别往往需要“人—香烟”空间关系与上下文共同佐证,单纯检测香烟或单纯检测人体都不足以支撑低误报;其三,真实监控域的数据分布差异巨大,压缩伪影、摄像头畸变与夜间红外会造成显著域移,使得数据集构建、标注规范与增广策略成为性能上限的重要决定因素。老思在本文中将这些问题收敛为一个可复现实验与可交互验证的系统工程:用同一数据集与同一评估协议,系统性比较 YOLOv5–YOLOv12 在吸烟检测任务上的性能边界,并把“训练—推理—可视化—结果管理”完整串起来。
为便于读者快速把握研究脉络与方法差异,下表概括了吸烟检测常见技术路线的侧重点与局限(以工程视角归纳,不对应单一论文结论):
| 技术路线 | 典型建模对象 | 主要优势 | 主要局限 |
|---|---|---|---|
| 规则/传统视觉 | 人脸/手部局部 + 细长物体启发式 | 低算力、易部署 | 依赖场景先验,跨域泛化差 |
| 视频行为识别 | 手到口动作的时序模式 | 对动作语义敏感 | 标注成本高,难精确定位香烟 |
| 通用目标检测 | 人、香烟、烟雾等多类框检测 | 端到端训练,工程生态成熟 | 小目标与相似物易混淆,需关系约束 |
| 端到端实时检测 | 无/弱后处理的密集预测 | 低延迟、易导出 | 对数据质量与训练配方更敏感 |
本文(本博客)的主要贡献相对务实:其一,围绕吸烟检测任务,构建并整理可复现的数据集划分、训练脚本与推理评估流程,在同一协议下对 YOLOv5–YOLOv12 进行横向对比;其二,面向小目标与误报敏感场景,对检测阈值、后处理与“人—香烟”关联策略进行工程化实现与可视化验证;其三,基于 PySide6 实现可交互的桌面端系统界面,支持图片/视频/摄像头输入、结果保存与数据管理,并配套提供完整代码与资源包,方便读者复现与二次开发。
主要功能演示:
(1)启动与登录:系统启动后首先进入登录界面,用户可完成注册、登录与密码修改等操作;账号信息与个性化配置通过 SQLite 持久化存储,实现不同用户之间的检测记录与参数设置隔离。登录成功后自动加载历史检测结果与最近一次的模型选择、阈值配置,避免重复设置,提高实际使用的连贯性。
启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供摄像头实时流、视频文件、单张图片与图片文件夹四类输入通道,统一进入同一条推理与可视化管线。对视频/摄像头模式提供播放控制与帧率适配,对图片/文件夹模式支持批处理与结果快速预览;检测输出在界面中叠加显示目标框、类别与置信度,并同步更新统计信息与日志区域,方便定位误检与漏检样本。
多源输入与实时检测演示图

(3)模型选择与对比演示:系统支持在界面内切换 YOLOv5–YOLOv12 等不同权重(如 n/s/m 轻量与标准规模),并在同一输入源与相同阈值条件下进行效果对比。对比时重点观察小目标(香烟)在遮挡、低照度与强噪声背景下的召回差异,同时展示推理延迟与帧率变化,便于在“精度—实时性”之间做工程取舍。
模型切换与对比演示图

(4)主题修改功能:界面层提供主题切换入口,支持浅色/深色主题、强调色、字体与图标风格的即时替换,并允许用户自定义背景图与布局细节,从而适配不同场景的显示设备与使用习惯。主题参数可写入用户配置表,确保下次登录自动恢复上次主题与界面观感,实现“个人化工作空间”的一致体验。
主题修改功能演示图

2. 数据集介绍
本研究面向监控与公开视频帧的吸烟线索识别需求,构建了一个以“香烟”这一细粒度小目标为核心的单类目标检测数据集。数据集中每张图像以目标框方式标注香烟位置,目标常出现在口部附近、手部指间或烟雾遮挡区域,且伴随低照度、压缩噪声、遮挡与运动模糊等真实安防场景常见退化。为提升数据的跨场景可用性,老思在整理样本时保留了不同视角、不同清晰度与不同背景干扰的图像分布,并在训练阶段引入 Mosaic 等增强,使模型在“极小目标与强干扰背景”条件下仍能学习到较稳定的判别边界(示例批次如图所示,标注框集中呈现为窄小矩形,体现了该任务的典型小目标属性)。

Chinese_name = {'cigarette': "香烟"}
从标注统计可见,本数据集仅包含 1 个类别(Class 0:cigarette,对应中文“香烟”),因此评价重点不在类别间可分性,而在于对小目标的定位精度与误报控制。标签分布图显示,框的中心位置主要分布在画面中部区域(与人脸/上半身构图习惯一致),宽高分布则明显偏向小尺度区域,说明该任务更依赖高分辨率输入、多尺度特征与合理的数据增强策略。预处理方面,训练与推理均采用 YOLO 系列常用的 letterbox 等比缩放与归一化流程;训练阶段叠加随机尺度变换与 Mosaic 等增强以扩大目标尺度与背景多样性,而验证/测试阶段仅保留确定性预处理以保证评估可重复性。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 4,408 张 (92.01%) |
| 验证集 (Val) | 358 张 (7.47%) | |
| 测试集 (Test) | 25 张 (0.52%) | |
| 总计 (Total) | 4,791 张 | |
| 类别清单 | Class ID: 0 | cigarette(香烟) |
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 视频帧抽取(监控/公开视频多场景),人工清洗与筛选 |
3. 模型设计与实现
吸烟检测在视觉层面更接近“细粒度小目标检测”而非一般的行为分类:香烟目标往往只占据极少像素,且与手指、笔、筷子等细长物体在形态上高度相似,同时还伴随遮挡、压缩噪声与低照度等退化因素。基于这一任务属性,本文在算法侧采用 YOLO 系列的检测范式来直接回归香烟的边界框与置信度,并在工程侧将模型封装为可插拔推理模块,以支持 YOLOv5–YOLOv12 权重在同一界面、同一输入源下的对比评测;其中默认主模型选用 YOLOv12n,以在桌面端实时视频流上获得更稳定的帧率与交互响应。YOLOv12 的核心特征在于注意力中心的实时检测框架,通过 Area Attention、R-ELAN 等结构设计在保持实时性的同时增强全局建模能力,并允许在硬件条件满足时启用 FlashAttention 以降低注意力计算的访存开销。(Ultralytics Docs)

从网络拓扑看,本文的检测器仍沿用 YOLO 系列“Backbone–Neck–Head”的分工逻辑:主干网络负责从输入图像提取多层次特征,颈部网络进行跨尺度融合以兼顾小目标与大目标,检测头输出不同尺度上的位置回归与类别/置信度预测。为了让读者快速建立整体认识,网络的整体架构示意如下图所示(以 Ultralytics 对 YOLO 架构的公开示意图为参考,强调其主干、颈部与检测头的数据流关系;YOLOv12在具体模块上引入注意力与R-ELAN等改动,但整体分层思想一致)。(Ultralytics Docs) 在小目标占主导的“香烟”数据集上,颈部的多尺度融合尤为关键:一方面,浅层特征保留更高的空间分辨率,有利于捕获细长目标的局部边缘;另一方面,深层特征具备更强语义,有助于抑制背景干扰与相似物误检。工程实现中,推理阶段采用 letterbox 等比缩放将输入统一到 \(640\times 640\),并在输出端将预测框反变换回原图坐标系,以保证界面显示与结果导出的一致性。
任务建模方面,本文将类别空间设为单类 cigarette(界面显示映射为“香烟”),因此分类分支的学习重点从“多类可分性”转向“前景/背景的置信度校准”,尤其要控制手部高反光、画面噪点、烟雾纹理等导致的伪阳性。Ultralytics 系列实现通常将检测损失写为边界框回归项、分类项与分布回归项的加权和,其中分布回归常采用 Distribution Focal Loss(DFL)以提升边界框的精细定位能力。(Ultralytics Docs) 具体到本文实现,可将总损失表述为
其中二元交叉熵用于单类分类学习,
\(y\in{0,1}\) 表示标签,\(p\) 为logit,\(\sigma(\cdot)\) 为Sigmoid。边界框回归以 IoU 为核心度量,
并通过 CIoU 在重叠度之外引入中心距离与长宽比一致性等约束,以缓解小目标在定位抖动时“看似重叠但中心偏移显著”的问题。DFL 则把连续边界回归转化为离散分布学习,通过期望还原连续坐标,从而在低分辨率特征图上获得更细的定位梯度。(Ultralytics Docs)
在系统落地层面,模型推理模块以统一接口输出 \({(x_1,y_1,x_2,y_2),,\text{conf},,\text{cls}}\),并将类别 ID 映射为中文标签用于界面渲染与统计(如 cigarette → 香烟)。后处理默认采用置信度阈值筛选与 IoU 约束的重叠抑制来减少重复框;同时,为了让读者直观看到不同模型对小目标关注区域的差异,本文在对比实验中引用了 YOLOv10/YOLOv11/YOLOv12 的热力图可视化示例,如下图所示,可用于解释“注意力中心结构在复杂背景下的响应更聚焦”的现象。(Ultralytics Docs)
4. 训练策略与模型优化
吸烟检测的数据难点集中在“小目标、易遮挡、强噪声与相似干扰”四类因素上,因此训练阶段的目标并不仅是把 \(mAP\) 做高,更关键的是在复杂监控域中获得稳定的召回与可控的误报,同时保持桌面端实时推理的交互流畅。老思在训练流程上采用“预训练权重迁移 + 统一配方横向对比”的策略:对 YOLOv5–YOLOv12 各版本均从公开预训练权重初始化,在同一数据划分(Train/Val/Test = 4408/358/25)与一致的输入尺寸下进行微调,从而把性能差异尽可能归因到模型结构与训练机制本身,而非数据与配方的偶然波动。考虑到测试集规模较小(25 张)会带来较大的统计方差,训练过程以验证集指标作为早停与选模依据,最终测试仅用于报告“确定的最终结果”,避免在小测试集上反复调参造成的偏置。
训练环境采用单卡 RTX 4090(24GB 显存)进行混合精度训练以提高吞吐,并启用常规的数据流水线:输入端使用 letterbox 等比缩放将图像统一到 \(640\times 640\),并完成归一化与随机增强;输出端对预测框进行坐标反变换,保证评估与界面显示的一致性。由于香烟属于极小目标,老思在增强策略上更重视“尺度与上下文多样性”而不是强形变:Mosaic 能显著提高小目标在特征图上的有效占比,并扩展背景分布;同时在训练后期关闭 Mosaic(close_mosaic)有助于让模型回归到更接近真实构图的分布上,减少推理时的定位抖动与边界偏移。与之配套,学习率采用预热(warmup)以避免小目标任务在训练初期因梯度不稳定而出现的震荡,随后使用余弦式或框架默认的衰减策略逐步降低到较小的终值,从而兼顾收敛速度与泛化能力;权重衰减用于抑制过拟合,而动量项则提升优化的稳定性与收敛效率。
为便于复现,本文采用的默认训练超参数如下表所示(各版本 YOLO 在同一配方下训练,便于公平比较;若追求更高小目标召回,可在不改变评估协议的前提下尝试更大的输入尺寸,但需要权衡推理延迟与界面实时性)。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| epochs | 最多训练轮数 | 120 |
| patience | 早停耐心(验证无提升则停止) | 50 |
| batch | 每次迭代的总批大小 | 16 |
| imgsz | 网络输入分辨率(方形) | 640 |
| pretrained | 是否加载预训练权重 | true |
| optimizer | 优化器类型(auto 由框架选择) | auto |
| lr0 | 初始学习率 | 0.01 |
| lrf | 最终学习率占比 | 0.01 |
| momentum | 动量/一阶动量系数 | 0.937 |
| weight_decay | 权重衰减(L2 正则) | 0.0005 |
| warmup_epochs | 学习率预热轮数 | 3.0 |
| mosaic | Mosaic 数据增强强度/概率 | 1.0 |
| close_mosaic | 训练后期关闭 Mosaic 的轮数 | 10 |
在模型优化层面,本文遵循“训练期提升泛化、部署期压缩开销”的原则。训练阶段通过统一的增强与正则化配方提高跨场景鲁棒性;部署阶段则以导出与加速为主,优先采用 FP16 推理(在 GPU 上通常能显著降低延迟),并导出 ONNX/TensorRT 等格式用于稳定部署与更低的端到端时延。对吸烟检测这种小目标任务,阈值策略也属于“隐性的优化环节”:推理时适当下调置信度阈值、并以较合理的 IoU 抑制重复框,往往能在不明显增加误报的情况下提升召回;因此系统界面提供 Conf/IOU 可调,使用户能够在不同摄像头清晰度与不同场景干扰水平下快速找到更合适的工作点。最后,为了避免“单次训练偶然最优”,老思建议对关键版本(例如 v8n、v10n、v12n)进行固定种子的重复训练或交叉验证式复训,并对验证集曲线的稳定性与误检案例进行回看,这比单纯追求某个峰值 \(mAP\) 更能提升系统上线后的可靠性。
5. 实验与结果分析
为保证不同 YOLO 版本对比的公平性,老思在同一数据集划分(Train/Val/Test = 4408/358/25)、同一输入尺寸(\(640\times 640\))与同一训练配方(epochs=120,patience=50,batch=16,预训练权重初始化,Mosaic 后期关闭等)下分别训练 YOLOv5–YOLOv12 的轻量模型(n/nu/tiny)与小型模型(s)两组权重,并采用 Ultralytics 默认评估流程输出 Precision、Recall、F1、\(mAP@0.5\) 与 \(mAP@0.5:0.95\) 等指标。由于任务为单类检测(cigarette,界面显示为“香烟”),评价重点落在小目标召回与误报控制的平衡上;其中 \(F1\) 采用
能够更直接反映“查全率—查准率”的折中效果,而 \(mAP@0.5:0.95\) 对定位精度更敏感,通常也更能暴露小目标边界抖动带来的性能折损。

从训练曲线可以看到,box/cls/dfl 三项训练损失整体单调下降,且在 20–40 epoch 后进入平稳收敛区间;验证端的损失在初期快速回落后趋于稳定,未出现“训练损失持续下降而验证指标系统性退化”的典型过拟合形态。与之对应,Precision 与 Recall 在前 30 epoch 迅速提升并逐步逼近平台,\(mAP@0.5\) 最终稳定在约 0.87 左右,\(mAP@0.5:0.95\) 稳定在约 0.51 左右,这一差距符合小目标任务的常见现象:在 IoU 阈值从 0.5 提升到更严格范围时,定位偏差会被放大,从而拉低综合 mAP,但并不意味着模型失去可用性,更多反映“框是否贴合得足够精细”的难点。

该模型在验证集上的 PR 曲线面积对应 \(mAP@0.5=0.871\),曲线在中高召回区域仍能维持较高精度,说明主要错误并非大量低置信度误检,而更可能集中在遮挡、噪声与极小尺度样本导致的漏检与定位不稳。对吸烟检测这种“误报代价较高”的场景,PR 曲线尾部的快速下坠也提示:当强行追求接近 1 的召回时,系统会显著牺牲精度,因此工程落地通常应在阈值上选择更稳健的工作点,而非一味拉高召回。

如图所示,F1 在置信度阈值约 0.497 处达到峰值(约 0.85),这给出了一个非常实用的默认阈值建议:界面端的 Conf 初值可设为 0.5 左右,以获得更平衡的 Precision/Recall;若场景对误报更敏感(例如执法告警、工厂安监),可以将阈值上调到 0.6–0.7,以牺牲部分召回换取更高精度;若场景更强调“尽量不漏”(例如离线复核),则可下调阈值并配合人工复核或时序一致性策略。
为进一步量化不同版本的“精度—速度—复杂度”权衡,表5-1 汇总了两组模型的关键指标(推理时间来自同一设备的测速结果,表中 TotalTime 为预处理+推理+后处理总耗时;日志显示测试 GPU 为 RTX 3070 Laptop GPU(8GB),因此在更强 GPU(如 4090)上可获得更低时延)。
表5-1 不同 YOLO 版本在吸烟数据集上的性能与效率对比(\(640\times 640\))
(1)n/nu/tiny 组(轻量优先)
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | TotalTime(ms) |
|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 0.876 | 0.852 | 0.864 | 0.897 | 0.521 | 10.94 |
| YOLOv6n | 4.3 | 11.1 | 0.879 | 0.762 | 0.817 | 0.828 | 0.467 | 10.34 |
| YOLOv7-tiny | 6.2 | 13.8 | 0.873 | 0.773 | 0.820 | 0.849 | 0.426 | 21.08 |
| YOLOv8n | 3.2 | 8.7 | 0.928 | 0.816 | 0.869 | 0.895 | 0.525 | 10.17 |
| YOLOv9t | 2.0 | 7.7 | 0.901 | 0.829 | 0.863 | 0.897 | 0.540 | 19.67 |
| YOLOv10n | 2.3 | 6.7 | 0.861 | 0.801 | 0.830 | 0.870 | 0.488 | 13.95 |
| YOLOv11n | 2.6 | 6.5 | 0.892 | 0.819 | 0.854 | 0.884 | 0.516 | 12.97 |
| YOLOv12n | 2.6 | 6.5 | 0.872 | 0.857 | 0.865 | 0.881 | 0.522 | 15.75 |
(2)s 组(更强表征能力)
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | TotalTime(ms) |
|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 0.908 | 0.803 | 0.852 | 0.887 | 0.489 | 12.24 |
| YOLOv6s | 17.2 | 44.2 | 0.863 | 0.755 | 0.805 | 0.835 | 0.475 | 12.26 |
| YOLOv7 | 36.9 | 104.7 | 0.940 | 0.880 | 0.909 | 0.924 | 0.512 | 29.52 |
| YOLOv8s | 11.2 | 28.6 | 0.906 | 0.834 | 0.868 | 0.889 | 0.519 | 11.39 |
| YOLOv9s | 7.2 | 26.7 | 0.886 | 0.851 | 0.868 | 0.895 | 0.543 | 22.17 |
| YOLOv10s | 7.2 | 21.6 | 0.894 | 0.778 | 0.832 | 0.877 | 0.509 | 14.19 |
| YOLOv11s | 9.4 | 21.5 | 0.901 | 0.839 | 0.869 | 0.893 | 0.524 | 13.47 |
| YOLOv12s | 9.3 | 21.4 | 0.896 | 0.814 | 0.853 | 0.871 | 0.512 | 16.74 |

轻量组中,YOLOv8n 的 F1 最高(0.869),且推理延迟处于最低梯队(InfTime≈6.83ms),说明其在“误报可控”的同时能维持较好的召回,是桌面端实时检测的更稳妥默认选择。若仅看 \(mAP@0.5\),YOLOv9t 与 YOLOv5nu 均达到约 0.897,但 YOLOv9t 的推理耗时明显更高,这种“精度微增、时延显著上升”的现象在小目标任务中并不少见:更复杂的特征交互可能提升了定位与分类的上界,但未必适合实时 UI 的交互预算。YOLOv6n 与 YOLOv7-tiny 的 mAP 与 F1 明显偏低或波动更大,结合 PR 曲线的走势(后文)更容易在高召回区域出现精度塌陷,从工程角度需要更谨慎的阈值设置。

从收敛过程看,多数模型在 40–60 epoch 已接近平台,后续提升主要来自小幅的稳态增益;YOLOv10n 的曲线在前中期波动更明显,反映其对数据增强与超参数更敏感,若要进一步榨取性能,通常需要更细的学习率/增强策略调度。相对而言,YOLOv8n、YOLOv11n、YOLOv12n 的曲线更平滑,意味着在相同训练配方下更容易获得可重复的结果,这对“给项目交付”的系统实现尤为重要。
在 s 组中,YOLOv7 取得最高的 \(mAP@0.5\)(0.924)与 F1(0.909),体现了更强模型容量在细粒度目标上的优势,但其参数量与推理耗时代价同样显著(InfTime≈23.62ms)。若以系统可交互的实时性为优先目标,YOLOv8s 在速度上最优(InfTime≈7.66ms)且 mAP、F1 处于第一梯队,是“性能接近、延迟更低”的典型方案;YOLOv11s 在精度上与 YOLOv9s 接近,但时延显著更小,更适合作为兼顾精度与实时性的折中选择。值得注意的是,YOLOv9s 的 \(mAP@0.5:0.95\) 最高(0.543),说明其在更严格 IoU 下仍保持更好的定位一致性,若业务更关注“框是否贴合烟体”而非仅检出,可优先考虑该模型,但需评估其时延开销对界面流畅度的影响。

s 组整体收敛速度与 n 组相近,但不同模型的稳态差异更清晰:部分模型在中后期仍存在“平台期小幅震荡”,通常与增强策略、正则强度以及样本难度分布相关。对于小目标任务,收敛震荡往往对应“少量困难样本”在不同 epoch 被反复学到与遗忘,工程上可通过适度延长训练、降低后期增强强度、或引入更稳健的 EMA/阈值策略来缓解。从平均 PR 曲线看,YOLOv6s 在高召回区域同样更早出现精度下滑,而 YOLOv9s、YOLOv11s 的曲线更接近右上角,反映其在扩大召回时的误报增长更可控。结合系统端的交互需求,老思更倾向把“默认推理权重”设为 YOLOv8n(轻量实时)或 YOLOv11s(更强精度但仍可用的时延),并在 UI 中保留 YOLOv7/YOLOv9 系列作为“高精度离线复核”选项:前者适合实时巡检与快速提示,后者适合对告警结果做更高置信度的二次确认,这样能在同一套界面里把工程约束与指标上限同时照顾到。
6. 系统设计与实现
6.1 系统设计思路
老思在桌面端实现上采用 Python 3.12 + PySide6 + SQLite 的组合,其核心目标是把“实时推理链路”与“可交互界面”解耦:界面层负责呈现与交互,处理层负责模型推理与后处理,数据层负责用户信息与结果持久化。为避免典型的 UI 卡顿问题,推理环节建议放入 QThread(或工作线程池)中执行,界面更新仅通过 Qt 信号槽回到主线程完成,从而保证摄像头/视频流的连续性与界面响应的稳定性。

系统类与分层以组合关系组织:Ui_MainWindow 只包含控件与布局,MainWindow 作为控制中枢负责槽函数、状态机与资源调度(输入源切换、播放控制、阈值参数、导出/入库等),Detector 作为处理层封装 YOLO 权重加载、推理、NMS 与结果结构化输出。这样做的好处是:当需要在同一套界面内切换 YOLOv5–YOLOv12 时,仅需替换 Detector 的权重与推理后端,不会影响界面层逻辑;而当需要增加热力图、统计面板或主题切换时,也不会破坏推理链路的稳定性。
多源输入被抽象为统一的“帧提供者”,摄像头与视频流都以帧序列形式进入同一缓冲队列,单图与文件夹则以迭代方式生成帧并走同一预处理与推理管线。推理输出统一为包含边界框、类别、置信度与时间戳的结构体,随后在界面侧同时完成三类更新:检测画面叠加框、表格/列表结果刷新、类别计数与日志记录。结果落库与导出则作为“旁路”动作触发,写入 SQLite(按用户隔离)或导出到本地文件,保证主链路不因 I/O 抖动而掉帧。
图 系统流程图

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

在该系统中,登录与账户管理并非“附属页面”,而是贯穿检测任务的状态入口:用户完成登录后,系统会从 SQLite 读取其个性化配置(例如默认模型、Conf/IOU、主题样式与历史记录路径),并将这些状态注入主检测流程,使得同一套程序在不同用户之间形成相互隔离的工作空间;当用户在主界面中修改头像、密码或主题时,更新会即时写回数据库并在下次启动自动恢复,从而保证长期使用的连续性。与此同时,检测结果的入库与导出也以用户为维度进行组织,既便于审计与复核,也能在多场景部署时减少“共享配置导致的误操作”,最终让账户体系与主检测链路在工程上实现可维护、可追溯的闭环衔接。

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址:https://my.feishu.cn/wiki/GhQTwVE3KitjkZk00fLcga64n4M
功能效果展示视频:YOLOv5至YOLOv12升级:吸烟检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 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. (ScienceDirect)
2 张洋, 姚登峰, 江铭虎, 等. 基于EfficientDet网络的细粒度吸烟行为识别[J]. 计算机工程, 2022, 48(3): 302-309,314. (ecice06.com)
3 VIOLA P, JONES M J. Robust real-time face detection[J]. International Journal of Computer Vision, 2004, 57(2): 137-154. (Springer)
4 DALAL N, TRIGGS B. Histograms of Oriented Gradients for Human Detection[C]//Proceedings of the 2005 IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR). San Diego: IEEE, 2005: 886-893. (Academia)
5 REN S, HE K, GIRSHICK R, et al. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[J]. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2017, 39(6): 1137-1149. (DBLP)
6 LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single Shot MultiBox Detector[C]//Computer Vision – ECCV 2016. Cham: Springer, 2016: 21-37. (Springer)
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 (CVPR). 2017. (CVF Open Access)
8 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 (ICCV). 2017. (CVF Open Access)
9 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 (CVPR). 2016. (CV Foundation)
10 JOCHER G. ultralytics/yolov5: Initial Release[EB/OL]. Zenodo, 2020. DOI:10.5281/zenodo.3908560. (Zenodo)
11 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[EB/OL]. arXiv:2207.02696, 2022. (arXiv)
12 WANG C Y, YEH I H, LIAO H Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//Computer Vision – ECCV 2024. Lecture Notes in Computer Science, vol 15089. Cham: Springer, 2025: 1-21. DOI:10.1007/978-3-031-72751-1_1. (Springer)
13 WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024. (arXiv)
14 TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. (arXiv)
15 JOCHER G, QIU J, CHAURASIA A. Ultralytics YOLO (v8.3.78)[EB/OL]. Zenodo, 2025. DOI:10.5281/zenodo.14900382. (Zenodo)
