基于卷积网络结构的火灾检测系统实现

server/2024/12/2 9:37:47/

1.摘要

        本文实现了实现了一个完整的火灾检测工作流,从数据预处理、模型训练到最终的推理和报警功能。首先基于卷积神经网络(CNN)模型,设计实现了一个可分离卷积(SeparableConv2D)和残差连接的卷积神经网络模型,该模型经过实验证明能够适用于图像分类任务,特别是火灾检测任务。最后本文基于训练好的参数实现了一个火灾检测系统,该系统能够高效、准确地检测图像或视频中的火灾,并通过报警提示用户。

2.模型设计与实现

核心代码如下:

input_shape = image_size + (3,)
num_classes = 2
inputs = keras.Input(shape=input_shape)
x = inputs
#x = data_augmentation(inputs)
x = layers.experimental.preprocessing.Rescaling(1.0 / 255)(x)
#x = layers.Conv2D(32, 3, strides=2, padding="same")(x)
x = layers.Conv2D(8, 3, strides=2, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
previous_block_activation = x
for size in [8]:x = layers.Activation("relu")(x)x = layers.SeparableConv2D(size, 3, padding="same")(x)x = layers.BatchNormalization()(x)x = layers.Activation("relu")(x)x = layers.SeparableConv2D(size, 3, padding="same")(x)x = layers.BatchNormalization()(x)x = layers.MaxPooling2D(3, strides=2, padding="same")(x)residual = layers.Conv2D(size, 1, strides=2, padding="same")(previous_block_activation)x = layers.add([x, residual])previous_block_activation = x
x = layers.SeparableConv2D(8, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.GlobalAveragePooling2D()(x)
x = layers.Dropout(0.5)(x)
activation = "sigmoid" if num_classes == 2 else "softmax"
units = 1 if num_classes == 2 else num_classes
outputs = layers.Dense(1, activation='sigmoid')(x)

该模型是一个带有深度可分离卷积(SeparableConv2D)和残差连接的卷积神经网络,适用于图像分类任务,特别是火灾检测任务。通过以下几层构成:

1.输入层:输入形状为 (height, width, 3),即 RGB 图像。
2.卷积层 + 批归一化 + 激活函数:多层卷积和激活函数,通过 SeparableConv2D 层实现深度可分离卷积,减少计算量。
3.池化层:最大池化层(MaxPooling2D)用于下采样。
4.残差连接:部分层包含残差连接,用于缓解深层网络中的梯度消失问题。
5.全局平均池化层:用来减少特征图的维度,并生成一个固定长度的输出向量。
6.Dropout:防止过拟合,通过丢弃一部分神经元来正则化网络。
7.输出层:使用 sigmoid 激活函数,适用于二分类任务(火灾 vs 非火灾)
整个模型结构较为简单但有效,特别适合于资源有限的设备(如边缘设备),因为深度可分离卷积显著减少了计算量。

训练数据集可见之前博客内容。

3.系统实现

实现的系统该利用 深度学习模型进行火灾检测,能够在用户上传的图片或视频中识别火灾并发出报警。

  • 支持两种用户输入选择

    • 上传视频:用户上传视频文件进行实时检测。
    • 上传图片:用户上传单张图片进行火灾检测
  • 视频或图像处理

    • 若选择视频输入,系统通过 OpenCV 打开视频文件,逐帧读取并进行检测。
    • 若选择图片输入,系统会加载上传的图片,并进行处理。
    • 每帧图像或单张图片经过 模型的推理,检测其中是否存在火灾。
  • 火灾检测与报警

    • 在图像或视频帧中,若检测到火灾(即模型预测出火灾类别且置信度大于50%),系统会在火灾区域绘制矩形框,并标注置信度。
    • 若火灾被检测到,系统触发报警,通过 Pygame 播放火灾报警声音。
    • 在未检测到火灾时,系统会停止播放报警声音。

当选择视频时:

当选择图像时:

环境配置:ultralytics、streamlit、cvzone、opencv-python-headless

代码下载:

https://download.csdn.net/download/weixin_40651515/90059765


http://www.ppmy.cn/server/146676.html

相关文章

【Git】Git 完全指南:从入门到精通

Git 完全指南:从入门到精通 Git 是现代软件开发中最重要的版本控制工具之一,它帮助开发者高效地管理项目,支持分布式协作和版本控制。无论是个人项目还是团队开发,Git 都能提供强大的功能来跟踪、管理代码变更,并保障…

封闭解(Closed-Form Solution)与复杂数值优化(Complex Numerical Optimization)的比较:中英双语

中文版 什么是封闭解? 在数学和统计学中,封闭解(Closed-Form Solution) 是指通过有限次基本运算(如加减乘除、开方、对数、指数运算等)即可明确表达的解。这意味着,当我们遇到一个数学问题或模…

[免费]SpringBoot+Vue景区订票(购票)系统【论文+源码+SQL脚本】

大家好,我是java1234_小锋老师,看到一个不错的SpringBootVue大景区订票(购票)系统,分享下哈。 项目视频演示 【免费】SpringBootVue景区订票(购票)系统 Java毕业设计_哔哩哔哩_bilibili 项目介绍 现代经济快节奏发展以及不断完善升级的信息…

企业网站面临的爬虫攻击及安全防护策略

在当今数字化时代,企业网站不仅是展示企业形象的窗口,更是进行商业活动的重要平台。然而,企业网站在日常运营中面临着多种类型的爬虫攻击,这些攻击不仅会对网站的正常访问造成影响,还可能窃取敏感数据,给企…

#渗透测试#SRC漏洞挖掘#红蓝攻防#黑客工具之XSStrike介绍01

免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…

网络安全 社会工程学 敏感信息搜集 密码心理学攻击 密码字典生成

网络安全 社会工程学 敏感信息搜集 密码心理学攻击 理解社会工程学的概念掌握获取敏感信息的方法提高自我信息保护的意识和方法理解密码心理学的概念理解密码特征分析掌握黑客猜解密码的切入方法掌握如何提高密码强壮性 敏感信息搜集 「注」由于对实验环境的限制,…

利用边缘计算网关轻松解决线缆生产企业设备数据采集

边缘计算网关集成了数据采集、处理和传输等功能,位于传感器和执行器组成的设备层与云计算平台之间。它能够实时处理和响应本地设备的数据请求,减轻云平台的压力,提高数据处理的速度和效率。边缘计算网关的主要原理是将大部分计算和存储任务从…

docker的joinsunsoft/docker.ui修改密码【未解决】

docker的joinsunsoft/docker.ui修改密码 前言 这个挺遗憾的,个人能力不足。想修改密码是不可能了。 因为,系统的密码加密规则不知道。 目前了解到的内容是: 地址是:https://hub.docker.com/r/joinsunsoft/docker.ui服务是用go语…