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

news2024/11/24 14:55:32

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')  # 保存图像

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

失业无忧!掌握这四个网站,年收入10-20万!

大家好!在职场中,失业可能是每个人都会面临的一种情况。当然,失业并不是终点,而是重新出发的起点。在这个充满机遇的数字时代,利用网络资源来提升自己是再合适不过了。今天,我将介绍四个非常有用的网站&…

patchless amsi学习(下)

patchless amsi 代码参考:https://gist.github.com/CCob/fe3b63d80890fafeca982f76c8a3efdf 解读代码可以从函数入口开始 setupAMSIBypass这个函数前面主要是获取amsiScanBuffer的地址,随即注册了一个veh异常。 然后通过调用GetThreadContext获取到了…

解决docker拉取镜像报错:Error response from daemon: Get “https://registry-1.docker.io/v2/“: dial tcp

1、问题:今天做完一个新项目,搭建了一个新的虚拟机,打算使用docker来搭建各种环境,发现拉取镜像报错 2、报错信息:Error response from daemon: Get "https://registry-1.docker.io/v2/": dial tcp 如下&am…

我从阿里云学到的返回值处理技巧

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 阿里云CosmoController…

【办公软件】C# NPOI 操作Excel 案例

文章目录 1、加入NPOI 程序集,使用nuget添加程序集2、引用NPOI程序集3、设置表格样式4、excel加载图片5、导出excel 1、加入NPOI 程序集,使用nuget添加程序集 2、引用NPOI程序集 private IWorkbook ExportExcel(PrintQuotationOrderViewModel model){//…

算法通关村第十关—快速排序(青铜)

快速排序 快排的基本过程 快速排序是将分治法运用到排序问题的典型例子  快速排序基本思想是:通过一个标记pivot元素将n个元素的序列划分为左右两个子序列left和right,.其中left中的元素都比pivot小,right的都比pivot的大,然后再次对Ieft和r…

企业办公加密系统中——全透明加密和半透明加密的区别

PC端访问地址: www.drhchina.com 天锐绿盾数据防泄密系统中的全透明加密和半透明加密的区别如下: 全透明加密是采用驱动层动态加解密技术,对企业内部所有涉密文档进行强制加密处理,从文件创建开始即可自动加密保护。加密文档在加…

【思扬赠书 | 第1期】教你如何一站式解决OpenCV工程化开发痛点

⛳️ 写在前面参与规则 ✅参与方式:关注博主、点赞、收藏、评论,任意评论(每人最多评论三次)⛳️本次送书1~3本【取决于阅读量,阅读量越多,送的越多】思扬赠书 | 第1期活动开始了!!…

十问ByteHouse:如何基于ClickHouse玩转向量检索?

更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 向量检索被广泛使用于以图搜图、内容推荐以及大模型推理等场景。随着业务升级与 AI 技术的广泛使用,用户期望处理的向量数据规模越来越大,对…

【SpringCloudAlibaba】Sentinel熔断限流工具的使用

一、前言 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维…

增强的对象文字

首先看一下我们之前的一个餐厅的对象 const restaurant {name: Classico Italiano,location: Via Angelo Tavanti 23, Firenze, Italy,categories: [Italian, Pizzeria, Vegetarian, Organic],starterMenu: [Focaccia, Bruschetta, Garlic Bread, Caprese Salad],mainMenu: […

element组件库的日期选择器如何限制?

本次项目中涉及到根据日期查找出来的数据进行调整,所以修改的数据必须是查找范围内的数据.需要对调整数据的日期进行限制,效果如下: 首先我们使用了element 组件库的日期选择器,其中灌完介绍, picker-options中函数disabledDate可以设置禁用状态,代码如下: <el-date-pickerv…

Oracle11g登录方法

刚部署完Oracle11g可以使用如下方法登录 方法1 sqlplus sys/oracle as sysdba; 用系统用户登录 create user xy identified by test123; 创建用户 grant connect, resource,dba to xy; 授予权限 之后退出执行sqlplus登录命令 使用创建的用户登录 方法2 sqlplus ---登录…

网络工程师常用协议之ICMP协议原理与应用

Internet控制消息协议ICMP&#xff08;Internet Control Message Protocol&#xff09;是网络层的一个重要协议。ICMP协议用来在网络设备间传递各种差错和控制信息&#xff0c;并对于收集各种网络信息、诊断和排除各种网络故障等方面起着至关重要的作用。使用基于ICMP的应用时&…

java SSM教师业绩管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM教师业绩管理系统是一套完善的web设计系统&#xff08;系统采用SSM框架进行设计开发&#xff0c;springspringMVCmybatis&#xff09;&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主要采…

HTML有哪些列表以及具体的使用!!!

文章目录 一、HTML列表二、列表的应用1、无序列表2、有序列表3、自定义列表 三、总结 一、HTML列表 html的列表有三种&#xff0c;一种是无序列表&#xff0c;一种是有序列表&#xff0c;还有一种为自定义列表。 二、列表的应用 1、无序列表 <ul> <li>无序列表…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(二)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

社交心理学视角下的TikTok:用户是如何被吸引的?

TikTok作为一款风靡全球的短视频应用&#xff0c;成功吸引了数以亿计的用户。这引发了一个问题&#xff0c;TikTok到底具有何种魅力&#xff0c;是如何在社交心理学层面吸引用户的呢&#xff1f;本文将从社交心理学的角度出发&#xff0c;深入剖析TikTok的吸引力因素&#xff0…

理性消费成主流!国台国标酒高性价比火热出圈

近日&#xff0c;国台酒业集团获得2023财联社第六届投资年会“年度最具价值品牌奖”。2023年国台品牌价值达2062.68亿元&#xff0c;稳居中国白酒第十名、贵州白酒第三名。 随着酱酒龙头企业官宣提高出厂价&#xff0c;高品质酱酒进一步被市场关注&#xff0c;同样源于茅台镇核…

某音上很火的圣诞树分享

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 效果截图&#xff08;这里不给动态了&#xff0c;某音到处都是了&#xff09;&#xff1a; 源代码&#xff1a; <script src"…