基于yolov8和pyqt5的吸烟行为检测,源码+pyqt5界面+模型和数据集,免环境安装,一键启动
基于YOLOv8和PyQt5的吸烟行为检测软件通过深度学习与现代化UI设计的结合,显著提高了吸烟行为检测的自动化与智能化水平。通过该系统,可以快速检测图片、视频或实时摄像头画面中的吸烟行为,并展示相关的检测信息,具有广泛的实际应用价值。基于yolov8和pyqt5的吸烟行为检测,免环境安装,一键启动,图形化界面+训练好的模型+带标签的数据集(3600张图片)+设计说明文档。视觉模型使用的yolov
基于YOLOv8和PyQt5的“吸烟行为检测”

1. 引言
随着现代社会对健康与安全的重视程度不断提高,吸烟行为的监控在公共场所和企事业单位中显得尤为重要。吸烟不仅会对吸烟者自身健康造成威胁,还可能对周围环境和他人健康产生不良影响。在一些严格禁烟的场所,人工监控吸烟行为成本较高且效率有限,因此引入自动化的吸烟行为检测系统显得尤为必要。
本设计以深度学习模型YOLOv8为核心,结合PyQt5实现了一个功能齐全的吸烟行为检测软件。通过该系统,可以快速检测图片、视频或实时摄像头画面中的吸烟行为,并展示相关的检测信息,具有广泛的实际应用价值。
2. 系统功能概述
本吸烟行为检测软件主要包含以下功能:
- 图片与视频文件检测:
- 支持单张图片检测和批量图片检测。
- 支持视频文件的吸烟行为检测,逐帧处理并输出检测结果。
- 实时摄像头检测:
- 软件可以直接连接摄像头,实时监控吸烟行为。
- 目标类别选择:
- 提供下拉菜单,支持选择特定目标类别(如吸烟行为)或全类别检测。
- 检测结果展示:
- 在主界面上实时显示检测画面。
- 在检测区域中绘制目标框,标明检测出的吸烟位置。
- 在结果表格中详细列出检测信息,包括序号、图片名称、时间、识别结果、目标数量、检测时间和保存路径。
- 数据导出功能:
- 支持一键导出检测结果为CSV或Excel文件,便于数据管理和后续分析。
- 高精度检测与低延迟性能:
- 结合YOLOv8模型高效的推理能力,实现了快速、准确的检测。
3. 系统架构设计
本软件的系统架构可以分为以下几个部分:
3.1 深度学习模型
- 使用 YOLOv8 作为目标检测的核心模型。
- 模型特点:YOLOv8是YOLO系列的最新版本,具备轻量化、高性能的特点,能够在保持较高检测精度的同时显著降低检测延迟。
- 训练数据:基于吸烟行为的定制化数据集进行训练,数据集中包含了不同环境、角度、光照条件下的吸烟行为图片。
- 模型输出:返回检测目标的类别、置信度以及位置信息(xmin, ymin, xmax, ymax)。
3.2 图形化用户界面
- 使用 PyQt5 作为前端界面开发框架。
- 界面设计:
- 左侧为功能区,包括文件选择、目标类别选择、运行与数据导出按钮。
- 右侧为检测区域,实时显示检测到的图像或视频帧。
- 下方为结果表格,展示检测信息和相关数据。
- 美观性:通过CSS样式为界面设计了蓝色主题,与棕色按钮搭配,显得简洁大方。
- 界面设计:
3.3 后端逻辑处理
- 文件处理:
- 利用 os 和 cv2 模块实现图片与视频的读取、处理和保存。
- 检测推理:
- 使用 YOLOv8 提供的 Python 接口完成模型加载与推理。
- 对每一帧或每张图片的检测结果进行解析,生成可视化输出。。
- 软件实现细节
4.1 关键技术
4.1.1 深度学习模型加载
视觉模型使用的yolov8,图形界面使用的pyqt5,模型经过300轮的训练map@0.5达到0.911.

python
复制代码
from ultralytics import YOLO
# 加载预训练模型
model = YOLO("yolov8s.pt") # 使用YOLOv8小型模型
# 模型识别
self.results = yolo.predict(img, imgsz=imgsz, conf=conf_thres, device=device, classes=classes)
# 整理格式
self.results = format_data(self.results)
# 计算并记录消耗时间
self.consum_time = str(round(time.time() - t1, 2)) + 's'
# 记录输入时间
self.input_time = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
4.1.2 图像可视化
通过OpenCV在检测结果中绘制目标框:
def draw_info(frame, results):
for i, bbox in enumerate(results):
cls_name = bbox[0]
conf = bbox[1]
box = bbox[2]
color = compute_color_for_labels(i)
# 彩框 yolov5
cv2.rectangle(frame, (int(box[0]), int(box[1])), (int(box[2]), int(box[3])), color, 2)
# cls_name
frame = draw_text_with_red_background(frame, str(cls_name) + ' ' + str(conf), (int(box[0]), int(box[1])),
font=cv2.FONT_HERSHEY_SIMPLEX, font_scale=0.5, thickness=1, color=color)
# cv2.putText(frame, str(cls_name), (int(box[0]), int(box[1])), 0, 1, color, 2)
return frame
cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
cv2.putText(img, label, (x1, y1 - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 255, 0), 2)
4.1.3 图形化界面逻辑
通过PyQt5实现功能按钮的信号与槽:
# 打开摄像头
self.pushButton_camera.clicked.connect(self.open_camera)
self.label_camera_path.clicked.connect(self.open_camera)
# 绑定开始运行
self.pushButton_start.clicked.connect(self.start)
# 导出数据
self.pushButton_export.clicked.connect(self.write_files)
self.comboBox.activated.connect(self.onComboBoxActivated)
self.comboBox.mousePressEvent = self.handle_mouse_press
# 表格点击事件绑定
self.tableWidget_info.cellClicked.connect(self.cell_clicked)
self.timer = QtCore.QTimer()
self.timer.timeout.connect(self.update_frame)

4.2 运行流程
- 启动软件,选择输入源(图片、视频或摄像头)。
- 选择检测目标(如“吸烟”)。
- 点击“开始运行”,系统加载模型并完成检测。
- 检测结果以图片与数据表形式展示。
- 导出数据保存为结构化文件。
5. 软件界面展示
下图展示了本软件的实际运行界面:
左侧为功能按钮区域,右侧为检测画面展示,底部为检测结果的详细数据表。
6. 应用场景
- 禁烟场所监控:
- 在公共场所、公司内部和学校等区域,自动检测吸烟行为并记录违规行为。
- 视频分析:
- 对历史视频数据进行批量分析,统计吸烟行为出现的频率和时间段。
- 科研领域:
- 为学术研究提供高效、自动化的吸烟行为标注工具。
7. 总结
基于YOLOv8和PyQt5的吸烟行为检测软件通过深度学习与现代化UI设计的结合,显著提高了吸烟行为检测的自动化与智能化水平。该软件不仅功能齐全、操作简便,还具有良好的扩展性,可在多种实际场景中得到应用,为公共健康和安全管理提供了有效的技术支持。
基于yolov8和pyqt5的吸烟行为检测,免环境安装,一键启动,图形化界面+训练好的模型+带标签的数据集(3600张图片)+设计说明文档
B站视频演示及软件下载地址基于yolov8和pyqt5的吸烟行为检测----免环境安装,一键启动_哔哩哔哩_bilibili
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)