基于YOLOv8PyQt5的“吸烟行为检测”

1. 引言

随着现代社会对健康与安全的重视程度不断提高,吸烟行为的监控在公共场所和企事业单位中显得尤为重要。吸烟不仅会对吸烟者自身健康造成威胁,还可能对周围环境和他人健康产生不良影响。在一些严格禁烟的场所,人工监控吸烟行为成本较高且效率有限,因此引入自动化的吸烟行为检测系统显得尤为必要。

本设计以深度学习模型YOLOv8为核心,结合PyQt5实现了一个功能齐全的吸烟行为检测软件。通过该系统,可以快速检测图片、视频或实时摄像头画面中的吸烟行为,并展示相关的检测信息,具有广泛的实际应用价值。


2. 系统功能概述

本吸烟行为检测软件主要包含以下功能:

  1. 图片与视频文件检测
    • 支持单张图片检测和批量图片检测。
    • 支持视频文件的吸烟行为检测,逐帧处理并输出检测结果。
  2. 实时摄像头检测
    • 软件可以直接连接摄像头,实时监控吸烟行为。
  3. 目标类别选择
    • 提供下拉菜单,支持选择特定目标类别(如吸烟行为)或全类别检测。
  4. 检测结果展示
    • 在主界面上实时显示检测画面。
    • 在检测区域中绘制目标框,标明检测出的吸烟位置。
    • 在结果表格中详细列出检测信息,包括序号、图片名称、时间、识别结果、目标数量、检测时间和保存路径。
  5. 数据导出功能
    • 支持一键导出检测结果为CSV或Excel文件,便于数据管理和后续分析。
  6. 高精度检测与低延迟性能
    • 结合YOLOv8模型高效的推理能力,实现了快速、准确的检测。


3. 系统架构设计

本软件的系统架构可以分为以下几个部分:

3.1 深度学习模型

  • 使用 YOLOv8 作为目标检测的核心模型。
    • 模型特点:YOLOv8是YOLO系列的最新版本,具备轻量化、高性能的特点,能够在保持较高检测精度的同时显著降低检测延迟。
    • 训练数据:基于吸烟行为的定制化数据集进行训练,数据集中包含了不同环境、角度、光照条件下的吸烟行为图片。
    • 模型输出:返回检测目标的类别、置信度以及位置信息(xmin, ymin, xmax, ymax)。

3.2 图形化用户界面

  • 使用 PyQt5 作为前端界面开发框架。
    • 界面设计
      • 左侧为功能区,包括文件选择、目标类别选择、运行与数据导出按钮。
      • 右侧为检测区域,实时显示检测到的图像或视频帧。
      • 下方为结果表格,展示检测信息和相关数据。
    • 美观性:通过CSS样式为界面设计了蓝色主题,与棕色按钮搭配,显得简洁大方。

3.3 后端逻辑处理

  • 文件处理
    • 利用 os 和 cv2 模块实现图片与视频的读取、处理和保存。
  • 检测推理
    • 使用 YOLOv8 提供的 Python 接口完成模型加载与推理。
    • 对每一帧或每张图片的检测结果进行解析,生成可视化输出。。


  1. 软件实现细节

  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 运行流程

  1. 启动软件,选择输入源(图片、视频或摄像头)。
  2. 选择检测目标(如“吸烟”)。
  3. 点击“开始运行”,系统加载模型并完成检测。
  4. 检测结果以图片与数据表形式展示。
  5. 导出数据保存为结构化文件。


5. 软件界面展示

下图展示了本软件的实际运行界面:

左侧为功能按钮区域,右侧为检测画面展示,底部为检测结果的详细数据表。


6. 应用场景

  1. 禁烟场所监控
    • 在公共场所、公司内部和学校等区域,自动检测吸烟行为并记录违规行为。
  2. 视频分析
    • 对历史视频数据进行批量分析,统计吸烟行为出现的频率和时间段。
  3. 科研领域
    • 为学术研究提供高效、自动化的吸烟行为标注工具。


7. 总结

基于YOLOv8和PyQt5的吸烟行为检测软件通过深度学习与现代化UI设计的结合,显著提高了吸烟行为检测的自动化与智能化水平。该软件不仅功能齐全、操作简便,还具有良好的扩展性,可在多种实际场景中得到应用,为公共健康和安全管理提供了有效的技术支持。

基于yolov8和pyqt5的吸烟行为检测,免环境安装,一键启动,图形化界面+训练好的模型+带标签的数据集(3600张图片)+设计说明文档

B站视频演示及软件下载地址基于yolov8和pyqt5的吸烟行为检测----免环境安装,一键启动_哔哩哔哩_bilibili

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐