基于YOLOV5的火灾检测系统(含模型)+GUI界面

news2024/11/15 17:19:25

基于YOLOV5的火灾检测系统

本期我们带来的内容是基于YOLOV5的火灾检测系统,火灾检测系统还是比较有实际意义的,也方便大家在背景描述中展开。废话不多说,还是先看效果。

完整代码下载地址:基于YOLOV5的火灾检测系统(含模型)+GUI界面
image-20220219203117140

配置环境

不熟悉pycharm的anaconda的小伙伴请先看这篇csdn博客,了解pycharm和anaconda的基本操作

如何在pycharm中配置anaconda的虚拟环境_dejahu的博客-CSDN博客_如何在pycharm中配置anaconda

anaconda安装完成之后请切换到国内的源来提高下载速度 ,命令如下:

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

首先创建python3.8的虚拟环境,请在命令行中执行下列操作:

conda create -n yolo5 python==3.8.5
conda activate yolo5

pytorch安装(gpu版本和cpu版本的安装)

实际测试情况是YOLOv5在CPU和GPU的情况下均可使用,不过在CPU的条件下训练那个速度会令人发指,所以有条件的小伙伴一定要安装GPU版本的Pytorch,没有条件的小伙伴最好是租服务器来使用。

GPU版本安装的具体步骤可以参考这篇文章:2021年Windows下安装GPU版本的Tensorflow和Pytorch_dejahu的博客-CSDN博客

需要注意以下几点:

  • 安装之前一定要先更新你的显卡驱动,去官网下载对应型号的驱动安装
  • 30系显卡只能使用cuda11的版本
  • 一定要创建虚拟环境,这样的话各个深度学习框架之间不发生冲突

我这里创建的是python3.8的环境,安装的Pytorch的版本是1.8.0,命令如下:

conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=10.2 # 注意这条命令指定Pytorch的版本和cuda的版本
conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly # CPU的小伙伴直接执行这条命令即可

安装完毕之后,我们来测试一下GPU是否

image-20210726172454406

pycocotools的安装

后面我发现了windows下更简单的安装方法,大家可以使用下面这个指令来直接进行安装,不需要下载之后再来安装

pip install pycocotools-windows

其他包的安装

另外的话大家还需要安装程序其他所需的包,包括opencv,matplotlib这些包,不过这些包的安装比较简单,直接通过pip指令执行即可,我们cd到yolov5代码的目录下,直接执行下列指令即可完成包的安装。

pip install -r requirements.txt
pip install pyqt5
pip install labelme

数据处理

实现准备处理好的yolo格式的数据集,一般yolo格式的数据是一张图片对应一个txt格式的标注文件。

image-20220219192930908

标注文件中记载了目标的类别 中心点坐标 和宽高信息,如下图所示:

image-20220219193042855

记住这里的数据集位置,在后面的配置文件中我们将会使用到,比如我这里数据集的位置是:F:\sssssssssd\det\yolo\fire\fire_yolo_format

配置文件准备

  • 数据配置文件的准备

    配置文件是data目录下的fire_data.yaml,只需要将这里的数据集位置修改为你本地的数据集位置即可。

    image-20220219201500264

  • 模型配置文件的准备

    模型的配置文件主要有三个,分别是mask_yolov5s.yamlmask_yolov5m.yamlmask_yolov5l.yaml,分别对应着yolo大中小三个模型,主要将配置文件中的nc修改为我们本次数据集对应的两个类别即可。

    image-20220219201903567

模型训练

模型训练的主文件是triain.py,下面的三条指令分别对应着小中大三个模型的训练,有GPU的同学可以将设备换为0,表示使用0号GPU卡,显存比较大的同学可以将batchsize调整为4或者16,训练起来更快。

python train.py --data fire_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 100 --batch-size 2 --device cpu
python train.py --data fire_data.yaml --cfg mask_yolov5l.yaml --weights pretrained/yolov5l.pt --epoch 100 --batch-size 2
python train.py --data fire_data.yaml --cfg mask_yolov5m.yaml --weights pretrained/yolov5m.pt --epoch 100 --batch-size 2

训练过程中会出现下面的进度条

image-20220219202818016

等待训练完成之后训练结果将会保存在runs/train目录下,里面有各种各样的示意图供大家使用。

image-20220219202857929

模型使用

模型的使用全部集成在了detect.py目录下,你按照下面的指令指你要检测的内容即可

 # 检测摄像头
 python detect.py  --weights runs/train/exp_yolov5s/weights/best.pt --source 0  # webcam
 # 检测图片文件
  python detect.py  --weights runs/train/exp_yolov5s/weights/best.pt --source file.jpg  # image 
 # 检测视频文件
   python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source file.mp4  # video
 # 检测一个目录下的文件
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt path/  # directory
 # 检测网络视频
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'https://youtu.be/NUsoVlDFqZg'  # YouTube video
 # 检测流媒体
  python detect.py --weights runs/train/exp_yolov5s/weights/best.pt 'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream                            

比如以我们的口罩模型为例,如果我们执行python detect.py --weights runs/train/exp_yolov5s/weights/best.pt --source images/1_67.jpg的命令便可以得到这样的一张检测结果。

image-20220219202519886

构建可视化界面

可视化界面的部分在window.py文件中,是通过pyqt5完成的界面设计,在启动界面前,你需要将模型替换成你训练好的模型,替换的位置在window.py的第60行,修改成你的模型地址即可,如果你有GPU的话,可以将device设置为0,表示使用第0行GPU,这样可以加快模型的识别速度嗷。

image-20220219202323877

现在启动看看效果吧。

完整代码下载地址:基于YOLOV5的火灾检测系统(含模型)+GUI界面

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

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

相关文章

MySQL高级 SQL优化【limitcountupdate优化】

目录 1:SQL优化 1.1:limit优化 1.2:count优化 1.2.1:概述 1.2.2:count用法 1.3:update优化 1:SQL优化 1.1:limit优化 在数据量比较大时,如果进行limit分页查询&a…

拉伯配资|战略新兴产业火了,高增长低估值股曝光

导读:2022年,A股商场值得记录的前史性大事件不断。这一年,A股商场上市公司数量正式打破5000家,战略新兴工业上市公司数量打破2500家,占比初次打破50%大关。这一年,A股商场顶住杂乱的外部环境要素&#xff0…

一文读懂:什么是CRM?企业如何通过CRM盈利?

今天和大家分享一篇干货文章,主要探讨什么是CRM,用大白话解释企业究竟如何通过CRM盈利。文章有点长,但看完,相信你会有所收获。 一、什么是CRM CRM——客户关系管理系统,它不仅是一个系统,一个技术解决方案…

云原生安全系列 4:6个 Kubernetes 安全最佳实践

引言: Kubernetes为我们提供了一套很好的核心软件安全原则,但我们仍然需要理解并实施它们。对于 Kubernetes 集群分布式部署,攻击向量的数量也会增加,了解并尽可能限制这些攻击面的最佳实践非常重要。 即使在使用托管的 Kuberne…

以系统思维推进零信任架构演进

声明 本文是学习零信任数据动态授权桔皮书. 下载地址 http://github5.com/view/55013而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 以工程化思维推进零信任架构演进 前文所述零信任数据动态授权能力,是围绕数据本身的库、表、字段构建安…

光点数据中台能干啥?怎么做?用在哪?_光点科技

如今,数据营销已经成为许多公司数字化转型的必要选择。数据中台的支持是企业中任何高层次的业务应用不可或缺的。数据中心面向的公司业务不再是单一业务线,而是从公司整体角度审视业务全景,寻找可重用的沉淀能力。 今天,让我们来了…

一个 Qml MenuBar 的问题

基本情况 使用 QQuick.Control 中的 MenuBar 实现主菜单栏。菜单栏包括 File、Edit、View、Help 菜单项。点击菜单项,会弹出对应的菜单。 ApplicationWindow {id: windowwidth: 320height: 260visible: truemenuBar: MenuBar {Menu {title: qsTr("&File&…

List集合

首先看这个框架图: List集合代表一个元素有序,可重复的集合,集合中每个元素都有对应的顺序索引。List接口中增加了一些根据索引操作元素的方法: void add(int index,E element ) 在列表的指定位置插入该元素。 boolean addAll(in…

【数据结构】LinkedList模拟实现与简单使用

文章目录模拟实现LinkedListLinkedList的简单使用LinkedList的一些方法LinkedList的遍历简单对比一下LinkedList和ArrayList模拟实现LinkedList 在上一篇的博客中,我们讲解了链表的基础知识,并且模拟实现了一个无头单向不循环链表,链表的基础…

12.动态内存

文章目录动态内存12.1动态内存和智能指针12.1.1shared_ptr类make_shared函数shared_ptr的拷贝和赋值shared_ptr自动销毁所管理的对象shared_ptr还自动释放相关联的内存使用了动态生存期的资源的类12.1.2直接管理内存使用new动态分配和初始化对象动态分配的const对象内存耗尽指针…

Java集合类ArrayList应用 | 如何在字符串s1中删除有在字符串s2出现的字符?

目录 一、题干 二、题解 1. 思路 ArrayList实现 2. 代码 ArrayList实现 StringBuilder实现-1 StringBuilder实现-2 三、总结 一、题干 面试的编程题: s1: "welcome to Zhejiang" s2: "come" 要求输出从字符串s1删除s2中存在的字符之后…

如何更好使用markdown输出pdf

如何更好的使用markdown输出PDF 背景:当前很多人比较常用的 markdown 编辑方式是用vscode编写,再使用 vscode 中 的 MPE 的进行预览。有时候会出现这种情况:想要最终输出PDF给客户,但是通过 vscode 中的markdown 转 PDF插件生成 P…

云计算与云原生

如今是云时代,云计算,大数据,人工智能等新的名词在最近爆火。今天我们来了解一下,云计算与云原生。 在了解云原生之前,我们必须要了解云计算。 云计算 什么是云计算? 在了解云计算之前我们需要先了解一…

嵌入式实时操作系统的设计与开发(三)

基本调度机制 用户在基于RTOS开发应用前,首先要创建线程。 aCoral中,用户创建一个线程时须指定用户希望采用的调度策略,例如,用户想创建一个周期性执行的线程并希望通过周期来触发多线程的调度。 //创建一个周期性的线程 acoral…

视频播放中动画

CSS filter属性CSS的filter属性主要用于设置图像的视觉效果。语法:filter: none|blur()|brightness()|contrast()|drop-shadow()|grayscale()|hue-rotate()|invert()|opacity()|saturate()|sepia()|url();Filter 函数注意: 滤镜通常使用百分比 (如&#…

ArcGIS基础实验操作100例--实验49按分区划分栅格图层

本实验专栏参考自汤国安教授《地理信息系统基础实验操作100例》一书 实验平台:ArcGIS 10.6 实验数据:请访问实验1(传送门) 高级编辑篇--实验49 按分区划分栅格图层 目录 一、实验背景 二、实验数据 三、实验步骤 (…

Power BI柱形图

在PowerBI中制作常见的柱形图,简单来说,柱形图就是利用水平的柱子表示不同分类数据的大小,与之类似的是条形图,它就是竖的柱形图,或者说把柱形图顺时针转动90度就成了条形图,使用以及作图方式类似&#xff…

媒体查询(@media语法、案例)详解

媒体查询media 语法1. 直接写在 CSS 样式中2. 针对不同的媒体设备,从外部链入不同的 stylesheets(外部样式表)使用 media 实现网页变色龙media 语法 media 可以直接写在 CSS 样式中,或者可以针对不同的媒体设备,从外部…

技术分享 | 一款功能全面的 MySQL Shell 插件

作者:杨涛涛 资深数据库专家,专研 MySQL 十余年。擅长 MySQL、PostgreSQL、MongoDB 等开源数据库相关的备份恢复、SQL 调优、监控运维、高可用架构设计等。目前任职于爱可生,为各大运营商及银行金融企业提供 MySQL 相关技术支持、MySQL 相关课…

[Java]异常处理

文章目录🥽 异常概述🥽 异常的分类🥽 异常的处理🌊 异常处理机制一:try-catch-finally💦 语法结构💦 try-catch💦 finally💦 try-catch-finally处理异常的执行流程&#…