【深度学习目标检测】十、基于yolov5的火灾烟雾识别(python,目标检测)

YOLOv5是目标检测领域一种非常优秀的模型,其具有以下几个优势:

1. 高精度:YOLOv5相比于其前身YOLOv4,在目标检测精度上有了显著的提升。YOLOv5使用了一系列的改进,如更深的网络结构、更多的特征层和更高分辨率的输入图像,以提升精度。

2. 高效性能:YOLOv5在目标检测任务中具有很高的处理速度和实时性。相比于其他目标检测模型,YOLOv5采用了更少的计算量和参数数量,因此它在目标检测任务中具有更快的推理速度。

3. 简单易用:YOLOv5是一个开源项目,源代码公开,并且提供了预训练的模型权重。这使得使用YOLOv5进行目标检测变得非常方便,无需从头开始训练模型,只需进行适当的微调即可。

4. 多平台适用:YOLOv5可以在多种平台上运行,包括PC端、嵌入式设备和移动设备等。这使得YOLOv5可以在各种场景下应用,如自动驾驶、智能安防、人脸识别等。

5. 多功能:YOLOv5可以检测和分类多个不同的目标类别,包括人、车辆、动物等。此外,YOLOv5还可以检测出目标的位置和大小,并提供相应的置信度。

总之,YOLOv5具有高精度、高效性能、简单易用、多平台适用和多功能等优势,使其成为目标检测领域中的一种前沿模型。

本文介绍了基于Yolov5的火焰烟雾检测模型,包括训练过程和数据准备过程,同时提供了推理的代码。对准备计算机视觉相关的毕业设计的同学有着一定的帮助。

示例图下:

一、安装YoloV5

yolov5和yolov8的开发团队相同,v5集成在v8中。官方文档:主页 - Ultralytics YOLOv8 文档

安装部分参考:官方安装教程

二、数据集准备

火灾烟雾检测数据集,检测2种:火焰和烟雾。训练集总共6007张图,验证集667张图。

示例图片如下:

本文提供转换好的yolov5格式数据集,可以直接放入yolov5中训练,数据集地址(yolov5和yolov8格式相同):火灾、烟雾检测yolov5数据集

三、模型训练
1、数据集配置文件

在ultralytics/ultralytics/cfg/datasets目录下添加fire_smoke.yaml,添加以下内容(path修改为自己的路径):

# Ultralytics YOLO 🚀, AGPL-3.0 license
# COCO 2017 dataset http://cocodataset.org by Microsoft
# Example usage: yolo train data=coco.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco  ← downloads here (20.1 GB)
 
 
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: datasets/fire_smoke/fire_smoke-yolov8  # 替换为自己的数据集路径
train: images/train 
val: images/val 
test: images/val  
 
# Classes
names:
  # 0: normal
  0: fire
  1: smoke
 
 
2、修改模型配置文件

在ultralytics/ultralytics/cfg/models/v5目录下添加yolov5_fire_smoke.yaml,添加以下内容:

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv5 object detection model with P3-P5 outputs. For details see https://docs.ultralytics.com/models/yolov5

# Parameters
nc: 2  # number of classes
scales: # model compound scaling constants, i.e. 'model=yolov5n.yaml' will call yolov5.yaml with scale 'n'
  # [depth, width, max_channels]
  n: [0.33, 0.25, 1024]
  s: [0.33, 0.50, 1024]
  m: [0.67, 0.75, 1024]
  l: [1.00, 1.00, 1024]
  x: [1.33, 1.25, 1024]

# YOLOv5 v6.0 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)

   [[17, 20, 23], 1, Detect, [nc]],  # Detect(P3, P4, P5)
  ]
3、训练模型

使用如下命令训练模型,相关路径更改为自己的路径,建议绝对路径:

yolo detect train project=deploy name=yolov5_fire_smoke exist_ok=False optimizer=auto val=True amp=True epochs=100  imgsz=640 model=ultralytics/ultralytics/cfg/models/v5/yolov5_fire_smoke.yaml  data=ultralytics/ultralytics/cfg/datasets/fire_smoke.yaml
4、验证模型

使用如下命令验证模型,相关路径根据需要修改:

yolo detect val imgsz=640 model=deploy/yolov5_fire_smoke/weights/best.pt data=ultralytics/ultralytics/cfg/datasets/fire_smoke.yaml
四、推理

训练好了模型,可以使用如下代码实现推理,将权重放到同级目录:

from PIL import Image
from ultralytics import YOLO

# 加载预训练的YOLOv8n模型
model = YOLO('best.pt')

# 在'bus.jpg'上运行推理
image_path = 'fire_000824.jpg'
results = model(image_path)  # 结果列表

# 展示结果
for r in results:
    im_array = r.plot()  # 绘制包含预测结果的BGR numpy数组
    im = Image.fromarray(im_array[..., ::-1])  # RGB PIL图像
    im.show()  # 显示图像
    im.save('results.jpg')  # 保存图像

本教程训练好的权重和推理代码、示例代码连接:推理代码和训练好的权重

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/254639.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Vditor - Markdown编辑器使用

1、安装 yarn add vditor2、代码 import vditor/dist/index.css; import React, { useEffect } from react; import Vditor from vditor; import ./index.less;const App ({ setVditorValue, vditorValue }: any) > {const [vd, setVd] React.useState<Vditor>();…

Redis-网络模型

参考资料 &#xff1a;极客时间 Redis&#xff08;亚风&#xff09; 前置知识 系统隔离 为了避免⽤户应⽤导致冲突甚⾄内核崩溃&#xff0c;⽤户应⽤与内核是分离的&#xff1a; 进程的寻址空间会划分为两部分&#xff1a;内核空间、⽤户空间 • ⽤户空间只能执⾏受限的命令&…

激活函数-SwiGLU

SwiGLU SiLU 函数是一种神经网络中的激活函数&#xff0c;全称是 Sigmoid Linear Unit, 也被称为 Swish 函数。它由 Google Brain 在 2017 年提出&#xff0c;是一种非线性激活函数&#xff0c;能够有效地对神经网络的输入进行非线性变换。 定义 f ( x ) x ∗ σ ( x ) f(x)…

vue3使用vue-router嵌套路由(多级路由)

文章目录 1、Vue3 嵌套路由2、项目结构3、编写相关页面代码3.1、编写route文件下 index.ts文件3.2、main.ts文件代码&#xff1a;3.3、App.vue文件代码&#xff1a;3.4、views文件夹下的Home文件夹下的index.vue文件代码&#xff1a;3.5、views文件夹下的Home文件夹下的Tigerhh…

生命在于学习——TV电视盒子渗透测试抓包设置

一、前言 封面图是示例图&#xff0c;因为涉及到保密&#xff0c;所以本次测试的电视盒子不放出外观和设置界面。 这一次要测试电视盒子&#xff0c;大家也都知道&#xff0c;市面上的电视盒子大部分都是Android&#xff0c;当然&#xff0c;要使用笔记本去抓电视盒子的数据包…

圣诞节来了,为大家送上专属圣诞树

Hello大家好&#xff0c;我是Dream。 今天给大家分享一下我很早之前做过的圣诞树&#xff0c;分享给大家&#xff0c;希望可以帮助到大家度过一个浪漫的圣诞节~ Python打造专属于你的圣诞树落叶雪花背景音乐浪漫弹窗 五合一版圣诞树 一、背景故事圣诞节风波❤️❤️❤️ 二、五…

针对海量数据的存储与访问瓶颈的解决方案

背景 在当今这个时代&#xff0c;人们对互联网的依赖程度非常高&#xff0c;也因此产生了大量的数据&#xff0c;企业视这些数据为瑰宝。而这些被视为瑰宝的数据为我们的系统带来了很大的烦恼。这些海量数据的存储与访问成为了系统设计与使用的瓶颈&#xff0c;而这些数据往往存…

内网BUG管理系统本地部署并结合内网穿透实现异地远程访问

文章目录 前言1. 本地安装配置BUG管理系统2. 内网穿透2.1 安装cpolar内网穿透2.2 创建隧道映射本地服务3. 测试公网远程访问4. 配置固定二级子域名4.1 保留一个二级子域名5.1 配置二级子域名6. 使用固定二级子域名远程 前言 BUG管理软件,作为软件测试工程师的必备工具之一。在…

Windows如何安装使用TortoiseSVN客户端并实现公网访问本地SVN Server

文章目录 前言1. TortoiseSVN 客户端下载安装2. 创建检出文件夹3. 创建与提交文件4. 公网访问测试 前言 TortoiseSVN是一个开源的版本控制系统&#xff0c;它与Apache Subversion&#xff08;SVN&#xff09;集成在一起&#xff0c;提供了一个用户友好的界面&#xff0c;方便用…

泛型深入理解

泛型的概述 泛型&#xff1a;是JDK5中引入的特性&#xff0c;可以在编译阶段约束操作的数据类型&#xff0c;并进行检查。 泛型的格式&#xff1a;<数据类型>; 注意&#xff1a;泛型只能支持引用数据类型。 集合体系的全部接口和实现类都是支持泛型的使用的。 泛型的…

周周清(3)

周一&#xff1a; 写了一道算法题&#xff0c;然后由于身体原因&#xff0c;在宿舍休息了很久&#xff1b;然后还是完成了一道算法题&#xff1a;写了一道LRC缓存题&#xff0c;之前就开始写了&#xff0c;写了很久&#xff0c;每次都开始动笔&#xff0c;刚开始用的是队列加m…

太阳能电池效能IV测试PV检测太阳光模拟器

目录 概述 一、系统组成 产品特点&#xff1a; 技术参数 数字源表 本系统支持Keithley24xx系列源表 标准太阳能电池 低阻测试夹具 自动化测试软件 概述 太阳能光伏器件的所有性能表征手段中&#xff0c;IV特性测试无疑是最直观、最有效、最被广泛应用的一种…

智能配电房运维

智能配电房运维是指利用先进的信息化技术&#xff0c;依托电力智慧运维工具-电易云&#xff0c;对配电房的电气运行设备进行实时在线监测、集中监控和故障诊断处理&#xff0c;以提高设备维护效率、降低停电损失、提高用电效益&#xff0c;并消除用户终端配电系统的安全隐患。 …

进来看!企业有效监管员工工作微信的总要性

随着社交媒体的普及和信息传播的便捷化&#xff0c;员工在工作间隙利用微信进行交流已经成为一种常见的现象。然而&#xff0c;这种行为也引发了企业对员工微信监管的需求。 首先&#xff0c;企业监管员工微信可以帮助确保企业对内部信息的保密和安全。通过监管员工微信&#…

演讲回顾:半导体设计中的数字资产管理最佳实践

近日&#xff0c;在广州举行的中国集成电路设计业2023年会&#xff08;ICCAD 2023&#xff09;上&#xff0c;龙智资深顾问、技术支持部门负责人李培将带来主题演讲“半导体设计中的数字资产管理”&#xff0c;聚焦数字资产管理的两个层面——文件级别的管理和更高抽象层次的管…

Kotlin 笔记 -- Kotlin 语言特性的理解(二)

都是编译成字节码&#xff0c;为什么 Kotlin 能支持 Java 中没有的特性&#xff1f; kotlin 有哪些 Java 中没有的特性&#xff1a; 类型推断、可变性、可空性自动拆装箱、泛型数组高阶函数、DSL顶层函数、扩展函数、内联函数伴生对象、数据类、密封类、单例类接口代理、inter…

每日一练2023.12.18——天梯赛的善良【PTA】

题目链接&#xff1a;L1-079 天梯赛的善良 题目要求&#xff1a; 天梯赛是个善良的比赛。善良的命题组希望将题目难度控制在一个范围内&#xff0c;使得每个参赛的学生都有能做出来的题目&#xff0c;并且最厉害的学生也要非常努力才有可能得到高分。 于是命题组首先将编程能…

「Vue3面试系列」Vue3.0的设计目标是什么?做了哪些优化?

文章目录 一、设计目标更小更快更友好 三、优化方案源码源码管理TypeScript 性能语法 API逻辑组织逻辑复用 参考文献 一、设计目标 不以解决实际业务痛点的更新都是耍流氓&#xff0c;下面我们来列举一下Vue3之前我们或许会面临的问题 随着功能的增长&#xff0c;复杂组件的代…

【Cocos Creator】vscode 保存代码自动编译

使用Cocos Creator的时候&#xff0c;之前每次修改代码&#xff0c;都要到编辑器界面点击刷新按钮&#xff0c;感觉有些麻烦&#xff0c;搜索引擎上找到的解决方案都比较麻烦&#xff0c; 最后在vscode&#xff0c;刚好找到一款插件–Cocos Creator Devtools。 cocos-creator-…

盲盒扭蛋机小程序,科技与传统的完美结合

盲盒扭蛋具有着较大的粉丝群体&#xff0c;成为一大商业模式。扭蛋机与盲盒具有一样的特征&#xff0c;不确定性、未知性&#xff0c;深深吸引着消费者。 传统的扭蛋机一般活跃于各大商场中&#xff0c;深受不同年龄层人的喜欢。但随着互联网技术的完善&#xff0c;相对于线下…