基于YOLOV5的火灾检测python项目

前言.yolov5项目

记录在网上学习的用yolov5完成一个检测目标的项目。

本期介绍的是检测火灾。 

由于过程步骤较多,且容易出错,已讲完整代码放在下方,供各位参考学习。

注意事项:

1.往下滑,直到左边出现目录为止,你可以根据目录,选择你要看的内容

2.请用bing浏览器,bing搜索引擎,某度广告太多

3.RTX30系列显卡只支持cuda11系列驱动

4.下载相关包出现问题可切换手机热点下载

1.conda环境搭建

1.1conda的下载

 没有Anaconda的先去浏览器下载Anaconda,最好用bing浏览器,某度广告太多了。

已经有conda的可以跳过目录1,直接看目录2

如果有这个页面直接点下面的跳过键

选择下面的Windows版本下载,64位

等待下载完成。

选择next

点击I Agree

继续Next

都勾选上!都勾选上!,都勾选上!

重要的事情说三遍

这里显示是否要添加到PATH环境,是需要添加的。

然后点install

后面就都继续点Next就行了

1.2 pycharm添加conda环境

没有pycharm的一样去浏览器下载,这里不做演示了。

先在桌面新建一个文件夹(你也可以在D盘创建文件夹),这里我取名为pro1

再用pycharm打开你的这个文件夹

选择桌面目录

点击pro1

信任项目

然后点击设置

点击项目,python解释器

点击添加本地解释器

点击conda环境,然后点右边的文件夹按钮,然后选择你Anaconda安装位置下的Scripts下的conda.exe.

注意:我这里Anaconda安装的地址是在D盘,如果你安装的位置在C盘,你应该选择C盘下面你安装的Anaconda的位置

之后点击右边的加载环境,出现以下界面说明正确。然后点击确认即可

点击编辑配置

选择Anaconda环境即可

运行测试通过

接下来教大家怎么配置yolov5所需环境。

2.yolov5的conda环境配置

2.1conda下创建新环境

打开Anaconda的环境

创建名称为yolov5,python版本号为3.8的conda环境。

(注意:为了追求稳定,尽可能按照我的示范下载,yolov5不支持低于3.8的版本,而且版本过高也会导致出错,3.8版本比较稳定。)

conda create -n yolov5 python=3.8

出现以下界面代表成功

再输入y,代表同意安装,回车。

查看yolov5环境是否创建成功

conda env list

(yolov5-fire是我自己电脑之前下载的环境,不用管)

带*的是你目前的活跃环境,就是你现在在conda环境中操作,比如下载什么包,会下载到活跃的环境中,这时候你需要切换活跃环境到yolov5环境。

切换活跃环境

conda activate -n yolov5

前面的括号改变成yolov5代表你切换成功了。

2.2下载yolov5模型

搜索yolov5,在github上下载

点击下载安装包

下载完成后解压到桌面

我们用pycharm打开yolov5项目

我们安装之前教的方法,把现有环境选择成yolov5

出现这个先不要管他,不用点他

2.3cuda的下载

cuda是你配合电脑GPU运行yolov5项目的一个软件,要下载cuda才能用GPU去运行项目,如果你电脑没有独立显卡,请换一台有独立显卡的电脑。如RTX3050, RTX3060 ,RTX4060

(没有独立显卡也想查看测试结果的直接看———步骤)

点击Download

为了防止出错,最好按照默认在C盘

完成之后全部都点下一步。

之后进入Anaconda powershell prompt环境中,输入

nvcc--version

如果显示以下内容,代表安装成功

3.yolov5项目所需的包下载

下载torch和torchvision

3.1torch下载方法1

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.htm

pip install torch==1.8.0+cu111 torchvision==0.9.0+cu111 torchaudio==0.8.0 -f https://download.pytorch.org/whl/torch_stable.html

如果显示时长过多,比如三个多小时,两个多小时

(如果要暂停当前步骤,比如下载出问题了,太慢了,多按几遍Ctral+C)

换一种方式下载

3.2torch下载方法2

conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=11.1

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cudatoolkit=11.1 -c pytorch -c conda-forge

conda下载界面

若出现以下错误,多尝试几遍

conda install pytorch==1.8.0 torchvision torchaudio cudatoolkit=11.1

直到下载完毕

等待下载完成

3.3其他包的下载

接下来在项目中选择requirements.txt,注释掉torch和torchversion,把pillow后面的>=改成==

在conda环境中进入你的yolov5项目中

进入桌面 cd Desktop 

进入 yolvo5项目 cd yolov5-master

下载requirements中所需的包

pip install -r requirements.txt

3.4torch和cuda的验证

依次输入

python

import torch

print(torch.__version__)

显示torch版本号为1.8.0

输入
print(torch.cuda.is_available())

 查看CUDA是否可用

输入

print(torch.version.cuda)

查看CUDA的版本号

输入

exit()

退出python编译

4.yolov5运行测试

进入detect.py

在该文件中,往下翻,找到device这一项,代表用GPU运行还是CPU运行

把后面的default改成0,代表0号GPU运行

找到一个空处,右键运行

结果保存在runs\detect\exp4中

出现这两张图片,代表yolov5模型运行测试成功

5.自己训练模型并且预测

5.1下载数据集

先在桌面新建文件夹,img

在img文件夹下再创建images文件夹,labels文件夹

在images文件夹和labels文件夹下都要创建train和val文件夹

格式如下:

img/
├── images
│   ├── train
│   ├── val
└── labels
    ├── train
    ├── val

在浏览器中搜索火灾图片

下载几张有火焰的图片,这里下载10张,测试一下

 下载完了之后如下:

(注意:文件的名称最好安装数字命名)

图片直接复制过去到images/trian 和images/val里面,注意不要剪切,这些图片留在外面还有用

images/train文件夹里面放序号1--7图片

images/val文件夹里面放序号8--10图片

labels文件夹里面暂时不用放东西!

5.2数据集标注

在conda 终端中输入 pip install labelimg

labelimg是数据集标注工具

下载完毕之后,再输入

labelimg

将会打开工具

(注意不要关闭conda终端,你把conda终端关了,labelimg也会关)

选择下面修改成YOLO格式

点击左边的open Dir (打开文件夹)

选择之前的img文件夹,点击一下datasets,点击选择文件夹

出现以下界面

(如果图片太小,可以按住Ctrl,然后鼠标滚轮向上滚是放大)

再点击Change  Save Dir,选择标注的数据集结构文件保存在哪个文件夹

我们选择labels文件夹

在软件中,右键图片,然后点击Create RectBox,也可以直接按W。

然后进行标注

标注有火的地方,然后填写fire

最后点Save,保存

快速操作: 先按W,然后框火焰,完了yes,之后按D是下一张,A是上一张

这里如果你没有保存,他会提示你保存,你直接按Yes就行,会进行保存

可以有多个框

10张数据集全标注完了,去文件夹里面看看

如果是11个txt文档就对了,如果是其他格式的文档,那说明你之前格式没调整,要调成yolo格式数据集

10个数据集标注位置+类别文档

5.3数据集文件解读

我们打开class文档可以看到,我们标记的是fire类型

我们再随便打开一个文档,可以看到

0代表第一类,也就是fire,因为我们只标注了一类,所以后面的txt文档都是0开头

0后面第一个数代表左上方x

0后面第二个数代表左上方y

0后面第三个数代表左上方x

0后面第四个数代表左上方y

这两个点可以构成可以矩形,就是火焰的位置

5.4数据集文件格式规范

接下来我们把1-7号都拖到train里面

把8-10号拖到val里面

class.txt不用管

格式如下

img/
├── classes.txt
├── images
│   ├── train
│   │   ├── 1.jpg
│   │   └── ...
│   ├── val
│   │   ├── 8.jpg
│   │   └── ...
└── labels
    ├── train
    │   ├── 1.txt
    │   └── ...
    ├── val
    │   ├── 8.txt
    │   └── ...
 

5.5数据集导入项目

进入到项目中,在data下新建一个文件,命名为fire.yaml

把coco128.yaml中的代码全部复制到fire.yaml中

我们把path  train  val 都修改成这样

names下面就留一个fire就行,绿字是注释,可删可不删

我们把桌面上的datasets复制到yolov5-master下面

把datasets下面 和images labels同级的图片都删掉,注意:是同级,而不是images目录下的图片

点一下1.jpg,按住shift再点一下10.jpg,就可以全选中

5.6 训练文件代码分析

我们找到train.py,在569行(随着版本的更新也有可能不是569行),找到data

我们修改

data/coco128.yaml为data/fire.yaml

找到588行的device,修改default="0",表示用0号GPU训练,也就是第一块GPU

一般电脑就只有一块GPU

我们把分支batch-size 调成4

训练轮数epochs 调成100

运行train.py

5.7新图片预测

往data下的images下面添加一张或几张新的火灾图片。

找到detect,py,将其370行的weights后的default的值改成你训练的权值文件

runs/train/exp8/weights/best.pt

下面的device 后面改成0,也就是0号GPU

最后运行 detect.py

运行结果如下:

白色字体是你预测的结果保存的路径

6.可能报错

6.1git出错

 出错了,尝试安装git

在conda终端中 输入conda install -c anaconda git

6.2 "无法创建新的堆栈防护页面"错误

这是因为你的虚拟内存过小。导致没有足够的内存运行

解决方法如下:

“系统属性”的“高级”选项卡中找到虚拟内存设置

可以去浏览器上搜 "如何设置虚拟内存"

C和D都设置 10--20G, 也就是10240-20480MB

点击应用,然后重启电脑

重新运行train.py

6.3 页面文件太小错误

和6.2一样,虚拟内存太小了,继续调高

改成20-大约30G

7.结果展示

白色字体是你的结果保存的路径

每一轮的训练过程

这是训练结果

每一张图片代表什么意思可以浏览器搜索

如: "yolov5模型中结果图片分析"  

(超详细)YOLOv5训练出结果,如何分析结果的性能分析_yolov5训练结果分析-优快云博客

### 提高YOLOv5火灾场景下目标检测准确率的方法 为了改善YOLOv5火灾场景中的表现,可以采取多种措施来优化模型的学习效果和最终性能。 #### 数据集构建与标注质量改进 高质量的数据集对于任何机器学习项目都至关重要。针对火灾场景的目标检测任务,应收集更多样化且具有代表性的图像样本并精确标注火焰、烟雾等特征对象[^1]。这有助于模型更好地理解不同光照条件下的火情变化规律以及复杂背景干扰情况。 #### 预处理方法调整 考虑到实际应用场景中可能存在低对比度或模糊不清的情况,在预处理阶段可引入直方图均衡化、锐化滤波器等手段增强输入图片的质量;另外还可以通过裁剪感兴趣区域(ROI)的方式减少无关信息的影响从而让网络更专注于潜在危险源的位置识别上。 #### 模型结构微调 尽管YOLOv5本身已经具备良好的通用性,但对于特定领域如火灾监测而言仍有必要对其进行适当修改以适应特殊需求。例如增加额外的感受野大小以便捕捉更大范围内的异常状况;或是借鉴其他先进算法的优点融入到现有框架之中实现功能互补。 #### 训练参数设置优化 合理配置超参数能够有效促进收敛过程加快的同时也提高了泛化能力。具体来说就是尝试不同的batch size、learning rate衰减策略组合找到最适合当前任务的一组数值区间作为参考依据来进行迭代更新操作直至达到预期指标为止。 ```python import torch.optim as optim optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=0.0005) scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=30, gamma=0.1) ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值