基于YOLOv5的抽烟检测系统设计

known 发布于 2025-08-24 阅读(276)

收稿日期:2023-08-17

基金项目:广西民族大学国家级大学生创新创业训练计划项目资助(202210608127);广西民族大学国家级大学生创新创业训练计划项目资助(202210608126)

DOI:10.19850/j.cnki.2096-4706.2024.05.026

摘" 要:针对公共禁烟场所中自动检测识别抽烟行为的问题,提出了基于YOLOv5目标识别算法的抽烟检测系统。该系统主要有目标识别模块、语音播报模块、摄像头模块和数据库模块,实验使用Python语言在PyCharm开发平台上对目标识别功能和数据库模块进行设计和编程实现,通过Arduino开发平台连接SYN6288语音播报模块,实现抽烟行为的智能检测识别,对抽烟检测研究有一定的参考意义。

关键词:YOLOv5;抽烟检测;目标识别;语音播报

中图分类号:TP391" 文献标识码:A" 文章编号:2096-4706(2024)05-0120-05

Design of Smoking Detection System Based on YOLOv5

LIU Feiyan, TANG Yao, ZHAO Zhengwei

(School of Mathematics and Physics, Guangxi Minzu University, Nanning" 530006, China)

Abstract: A smoking detection system based on the YOLOv5 object recognition algorithm is proposed to address the issue of automatic detection and recognition of smoking behavior in public non-smoking places. The system mainly consists of a target recognition module, a voice broadcast module, a camera module, and a database module. The experiment uses Python language to design and program the target recognition function and database module on the PyCharm development platform, and connects to the SYN6288 voice broadcast module through Arduino development platform, so as to achieve intelligent detection and recognition of smoking behavior, which has certain reference significance for smoking detection research.

Keywords: YOLOv5; smoking detection; target recognition; voice broadcast

0" 引" 言

随着生活水平的提高,公共健康安全越来越被重视,在公共场所的吸烟行为则是影响公众健康的主要原因之一。医学统计数据表明,吸烟是引发各类心肺疾病的重要原因,而对于有禁烟明确要求的场所,烟火还存在诸多引发火灾的安全隐患,因此,国家出台了相应在公共场所禁烟的政策。对于这些政策的执行,一般是靠公共场所相关工作人员巡查纠正,效率十分低下。目前随着目标检测技术的发展,采用目标检测方法[1]进行实时检测已在诸多领域取得了显著成果[2],而如何应用目标检测方法对抽烟行为进行检测的研究甚少。因此,该研究不仅可以提高抽烟行为检测效率,节约成本,也有利于公共场所禁烟政策的执行。

1" YOLOv5 算法模型

YOLOv5 [3]是一种单级目标测试算法,与YOLOv4相比,它具有平均权重更低、学习时间更短和测试速度更快的优点。YOLOv5策略的目标是首先将输入图像分割成多个网格,包括识别目标并预测其位置的网格。最后,生成的预测框架与实际框架具有最高的一致性。YOLOV5模块由四个组件组成:输入、Backbone、Neck和Head。入口端中包含了Mo-saic数据增强功能,将全部四幅图片随意压缩、随意剪切、随意排布。Backbone是一个特征提取单元,包括卷积计算层、C3及其SPPF架构。卷积计算层包括三个功能:卷积层、BN层和SILU激活。C3模型简化了以前狭窄的CSP体系结构,并提高了在建模中捕获功能的能力。SPPF体系结构取代了空间金字塔池(SPP)体系结构,后者将前后建模的效率提高了约1.5倍。NEC还引入了一种新的架构,将特征金字塔的FPN层与PAN路由网络紧密集成,确保了传统FPN层和向下的特征金字塔之间的交叉融合,以及获得的所有权和位置语义数据的交叉融合。此外,还实现了主干层和检测层之间的特点参数的整理融合,提供了关于模拟特征的更全面的信息。Head提供的是可预测的结果。

YOLOv5网络结构可以使用FPN+PAN结构的方式,使用了大量的卷积和C3结构。卷积计算层构造中包含了一般卷积Conv、BN层构造和SiLU激活函数。C3结构是Bottle-neckCSP结构减去一个卷积层得到的。BottleneckCSP与CSP结构相似,CSP结构由Chien-yao Wang 等提出的,在denseNet特征融合结构的基础上对载入数据进行特殊行为解析处理,目的是降低对梯度计算,进而加快模型运行的速度[4]。

2" 相关技术

2.1" Arduino

Arduino开发板设计得非常简洁,包括一块AVR单片机控制器、一个晶振或震荡器还有一个5 V的直流电源,常见的开发板使用一条USB数据线连接电脑。Arduino有不同的开发板,当中最常见的是Arduino UNO,此外,还有各种小型的、迷你的、使用蓝牙和Wi-Fi技术的变种研发板[5]。

其中,Arduino UNO是ArduinoUSB接口系列的最新产品版本,它的处理核心是ATMEGA328P。它含有模拟输入、晶振时钟、数字输入输出引脚、USB连接、ICSP连接器、电源插孔以及复位按钮[6]。Arduino Uno使用配套的USB Cable A-B for Arduino数据线与计算机相连即可正常运行使用并进行信息交互。Arduino拥有配套的代码撰写平台,可以利用Arduino IDE对Arduino UNO编程。在开发板上的ATmega328芯片内存储有BootLoader程序,用户可以使用STK500协议上传程序到开发板[7]。Arduino UNO开发板主要技术参数如表1所示。

表1" Arduino UNO开发板硬件配置表

序号 配置名称 主要技术参数

1 微控制器 ATMEGA328P

2 工作电压 5V

3 输入电压(推荐) 7~12 V

4 输入电压(限制) 6~20 V

5 数字I/O引脚 14

6 PWM数字I/O引脚 6

7 模拟输入引脚 6

8 每个I/O引脚的直流电流 20 mA

9 3.3 V引脚的直流电流 50 mA

10 闪存 32 KB(ATmega328P),

0.5 KB由引导加载程序使用

11 SRAM 2 KB(ATmega328P)

12 EEPROM 1 KB(ATmega328P)

13 时钟速度 16 MHz

14 LED_BUILTIN 13

15 长度 68.6 mm

16 宽度 53.4 mm

17 重量 25 g

2.2" IP Camera

为了解决传统意义上的摄像头移动不够灵活且需要线路联接的问题,对于摄像头模块采用基于移动端APP——IP摄像头,来代替传统的有线接口联接的摄像头。IP Camera(网络协议摄像头)是一种安全摄像头,它除拥有一般传统摄像头所拥有的图像捕获能力之外,机内还包含了一个高度数字化的传感器以及基于网络的控制系统,使得影像信息经压缩及加密之后,能够经由局域网,Internet以及无线网络发送至最终使用者。IP Camera是能够通过接入到TCP/IP的数字化互联网上,所以这个技术最大的作用就是在联网上面,利用网络的一个局域网实现影像和声音的传送[8]。

IP Camera通过IP网络接收视频数据并发送视频片段,它也被称为网络摄像头或IP安防摄像头,常被用作远程监控和管理工具,以保护财产或监控家庭、企业或公共安全。只要通过局域网与IP摄像头和PC端等其他设备相连,IP摄像头可以让从任何远程位置监控特定区域,可以为我们的日常生活带来很多便利。

2.3" SYN6288语音播报

基于对目标检测成功识别事物之后的触发模块——语音播报模块,对于此模块的搭建可以直接调用笔记本电脑上的扬声器作为输出源,但考虑到笔记本的扬声器是固定的灵活度不高,为此选取基于Arduino平台所支持的Arduino UNO开发板为上位机的SYN6288语音合成模块。SYN6288所采用的通信模式是异步串口方式,将合成的文本数据转换为语音。

SYN6288语音合成芯片在识别文本与数字时更智能和准确,具有硬件接口简单、低功耗和自然度好等优点,性价比很高,是一款面向中高端行业应用领域的中文语音合成芯片。其支持GB2312、GBK、BIG5和UNICODE内码格式的文本,清晰、自然、准确的中文语音合成效果;可合成任意的中文文本,支持英文字母的合成[9],每次合成的文本可达200字节,同时支持多种控制命令,支持6级词语语速调整。

SYN6288语音合成模块最小系统包括:Arduino UNO开发板、SYN6288语音合成模块、音响。Arduino UNO开发板和SYN6288 语音合成模块之间使用杜邦线通过UART接口进行连接,通过PC终端控制器可以利用USB接口与Arduino UNO开发板进行信息通信,从而实现对SYN6288语音播报模块的交互,当SYN6288语音合成模块收到指令时会将预设定的语言信息播放,产生的信息经功放增强后控制喇叭进行播放。预先需要编码软件将中文翻译成文本GB2312编码格式,并将播报语段编写成一个函数,这部分功能代码在Arduino IDE上撰写,并通过Python主函数调用。

2.4" 数据库

为了更好的存储预警所保存的数据,选取SQL Server作为系统存储数据库统。针对预警时所产生的数据元素进行设置单元表实行对应存储,包括摄像头IP、监控地点、时间、监控视频、识别成功的目标图像帧等,因基于系统的开发环境是PyCharm Community Edition 2022.2.1,为此将该系统通过Python平台的第三方库PyMySQL库来与数据库相连接。

数据库需要建立单元表来管理众多不同地点的摄像头,即管理管理摄像头IP地址。同时,每一个在摄像头IP地址管理表中的摄像头IP信息都会生成一个相对应存储单元表来用于保存相对于的摄像头在监控过程中识别成功的目标帧,由于目标帧需要存入表格当中,这里需要将图像数据转化成二进制数据进行存储,二进制数据长度过于庞大,故表中无法显示完全。摄像头IP地址及目标帧管理表如表2所示。

3" 系统设计

3.1" 系统整体框架

为了系统结构清晰,采取结构化设计,功能模块相对独立,没有复杂的模块间交互,以利于系统实现。而且YOLOv5目标检测算法具有很强的可嵌入性,也有利于今后对系统进行功能添加、升级与维护。

根据功能需求分析,系统前端通过数据采集模块,将采集到的数据系统的数据输入,然后检测识别系统进行抽烟行为的识别。识别成功,则进行语音预警,并将数据保存至数据库;无法识别则忽略处理。系统整体框架如图1所示。

3.2" 硬件模块联接

Arduino、SYN6288、IP camera和数据库等各模块调试运行之后,再将各模块进行联接整合,当处于同一IP网络下的摄像头通过局域网输入数据给后端之后,后端将运算的结果反馈给各个模块,调用数据库存储相应的数据做好数据管理工作,同时与下位机和前端交互信息,反馈输出相应的功能。系统整体的硬件模块处理流程如图2所示。

图2" 系统硬件模块处理流程关系图

其中IP摄像头与PC端的连接是采用无线连接方式,主要是运用局域网的信号传输功能,目前系统所使用的是手机与电脑同属一个热点Wi-Fi条件下实现信号的发送与接收。PC端与下位机Arduino Uno开发板则是用USB Cable A-B for Arduino线进行连接,这种连接线比一般信号交换线的做工更精细、粗大,为信息的交互提供了有力的保障。最后,Arduino Uno开发板与SYN6288语音合成模块的连接是采用常见的杜邦线进行连接,杜邦线的选择要选接口感应良好长度合适的。

系统的软件设计完整之后,需要对硬件部分进行设计组装,根据需求分析功能模块和经济最优等因素,选取的硬件均为市场上常见且价格合适的,其中主要是Arduino Uno开发板和SYN6288语音合成模块。实际连接效果如图3所示。

4" 抽烟检测识别实验

4.1" 实验条件及数据源

实验所需的硬件材料为:Arduino Uno开发板、Win 10系统电脑、具有摄像头的手机且安装有APP(IP摄像头)、SYN6288语音合成模块。软件工具为:Arduino IDE、PyCharm Community Edition 2022.2.1、SQL Server 2016。此外,网络环境为电脑与手机同属一个热点条件。

图3" PC端、组件间连接实物图

为了进一步保证抽烟行为识别的准确度,制作了抽烟行为的数据集。利用正则表达式制作脚本从网上获取1 500张吸烟的图片,对获取的图片进行筛选得到1 200张,将吸烟行为用“smoking”类进行定义,用Labeling标记软件按YOLO格式对图像进行标签标记,按9:1的比例分别制作成训练集和测试集。

4.2" 实验测试过程

为了减少训练时间,并获得最好的精度,首先加载预训练权重完成训练过程,训练集选用的预训练权重是YOLOv5s.pt [10]。然后,在Python上配置好CPU版的PyTorch和PaddlePaddle,开始对模型进行训练,从train.py文件进入到用于模型训练的主函数,根据PC机的配置和前期准备对函数进行修改,这里主要是替换部分自定义的参数,可通过调用TensorBord方法来查看模型的训练过程。在模型训练好之后,会在设定的保存目录下得到一个最后一轮的权重文件和一个目前最好的权重文件,最后利用该权重文件进行目标检测,正式使用的算法代码在detect.py这个函数文件下。

采用此YOLOv5目标检测算法针对不同的物品,对于抽烟行为的识别检测情况如图4所示,本次实验测试使用了酒精瓶、咖啡勺、眼镜、笔和烟进行了检测对比,从图中可以看出,对烟的检测识别度是“smoking 0.85”,其他四类物品的抽烟行为的检测度都低于0.4,从识别结果能看出,该模型对于抽烟行为的检测识别度较高。

4.3" 实验结果分析

本次实验能都较好的识别出抽烟这个动作,但是由于行为的晃动会导致识别框所显示的权重会飘忽不定,分析原因为目标识别模型在训练的过程中因为某些原因导致目标识别的检测度不够精确。

图4" 不同物品与烟的实验对比效果图

语音播报模块可以做到预期效果,不过在持续检测过程中会出现串联通信中断的情况,不能持续播报,后期在将继续调整通信代码模块,使得通信可以畅通。

数据库模块可以正常的运行,存储目标识别出的目标帧,以二进制文件保存在数据库表中,如需调用则可以随时查看。

5" 结" 论

文中基于YOLOv5目标识别算法的抽烟识别系统流程包括图像的采集、图像预处理、预警机制和利用数据库存储机制对抽烟行为进行管理。同时,通过IP摄像头的使用,可以灵活的变换系统的使用地点和场所,实时对抽烟人员进行警告提醒,并将其行为保存在数据库,该系统符合公共场所对抽烟行为的管控要求,具有较好的应用前景。

因本实验未用GPU作为算力支持,只采用CPU进行学习,极大延长了模型权重的运算时间;目前新研制出的YOLOv8算法,对系统的发展提出了更高的要求。另外,系统与下位机的信号交互实现需要进一步的稳定,需改进算法或寻找更稳定的信号交互方式。因此,模型的应用还有较大的改进和提升空间。

参考文献:

[1] 王辰,肖丹,池慧.《中国吸烟危害健康报告2020》概要 [J].中国循环杂志,2021,36(10):937-952.

[2] 王梦依.基于深度学习图像处理的吸烟行为检测 [D].北京:北方工业大学,2020.

[3] 肖赣涛.基于深度学习的复杂场景抽烟行为检测研究与实现 [D].成都:西南交通大学,2021.

[4] 李丹妮,栾静,穆金庆.基于YOLOv5的香烟目标检测算法 [J].软件导刊,2023,22(1):229-235.

[5] 郭文松,刘媛媛主编. 机电一体化技术 [M].北京:机械工业出版社,2017.

[6] 刘琛一,兰依依,熊博文,等.基于家用插排温度实时监测报警装置的设计 [J].科学技术创新,2020(35):177-178.

[7] 闫书豪. 半失能老人智能辅助护理装置智能两便系统的研究 [D].长春:长春理工大学,2021.

[8] 吕林涛.基于网络摄像机的双目立体视觉系统 [D].哈尔滨:哈尔滨工程大学,2019.

[9] 顾问,陈布雨,胡之惠,等.基于语音识别的家居控制器的设计与实现 [J].科技创新导报,2015,12(32):139-142.

[10] 黄静,张晋.基于YOLOv5的目标识别相机 [J].计算机时代,2023(1):91-94.

作者简介:刘飞燕(2000.12—),女,汉族,福建宁德人,本科在读,研究方向:信息与计算科学;唐瑶(2000.09—),男,汉族,广西荔浦人,本科在读,研究方向:信息与计算科学;赵正伟(1980—),男,汉族,湖南益阳人,高级实验师,硕士研究生,研究方向:物联网技术、图像处理

标签:  模块 

免责声明

本文来自网络,不代表本站立场。如有不愿意被转载的情况,请联系我们。

iidomino cuppor