基于yolov3和pythorch框架的火焰识别检测算法

这是本人第一次写博客,就当是自己实现算法的一个记录吧,有什么不好的地方也请多多指教。我会详细的从环境的配置到算法实现都说明一下,希望对大家能有帮助。
本火焰识别算法采用的是pytorch版本的yolov3检测,yolov3基于Darknet-53网络结构,在图像识别领域应用特别广。

本算法识别的效果如下:
在这里插入图片描述

下面开始实际操作啦

一、配置环境
算法所需环境如下:

Python: 3.7.4
Tensorflow-GPU 1.14.0
Keras: 2.2.4
numpy:1.17.4
1
2
3
4
我的操作系统是Ubuntu16.04,windows系统同样可以实现此算法这里建议使用anaconda来快速搭建一个虚拟环境。

如果是ubuntu系统可以参考这篇博客安装anaconda,Anaconda 是 Python 的一个出色的集成开发工具集,对于搞深度学习的人来说应该是必备的。
ubuntu安装anaconda链接

有了anaconda后就可以用它创建虚拟环境啦。具体可以参考这篇博客。
anaconda创建虚拟环境

之后安装Tensorflow,由于我的显卡是AMD的,所以安装的CPU版的,大家可以根据自己的显卡安装相应版本。运行下面的命令安装Tensorflow。

pip install tensorflow==1.14.0
1
下一步安装相应版本的Keras,运行下面的命令。

pip install Keras==2.2.4
1
接下来使用pip继续安装numpy。运行如下命令:

pip --default-timeout=1000 install numpy==1.17.4
1
如果发现已经安装了其他版本的numpy,那么运行如下命令将其卸载,再运行以上命令安装对应版本的numpy。

pip uninstall numpy
1
到这里算法所需的环境就配置好啦,再强调一遍环境一定要一致,否则运行算法会报错。

二、数据集准备
这里采用网上现成的数据集,直接可以去我上传的资源里进行下载,只需要关注我即可,无需花积分。链接如下:
火焰数据集

三、算法实现
这个算法是在github 找到的一个算法,效果还是相当不错的。大家可以直接从链接中把它下载下来。
Pytorch_Yolov3算法

1.安装python模块

在算法文件夹下的requirements.txt中含有本次所需的python模块.

numpy
torch1.2.0
torchvision
0.4.0
matplotlib
tensorflow1.13.2
tensorboardX
2.0
terminaltables
pillow
tqdm
1
2
3
4
5
6
7
8
9
直接在文件夹YOLOV3_Fire_Detection-master文件夹终端下运行命令
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt来安装相应的模块。

2.下载权重文件
Linux平台下,先cd到weights文件夹下cd weights/,之后运行bash download_weights.sh就可以下载权重信息了。这个程可能会花费很长时间,建议用一个好的网络。

3.修改配置文件
Linux平台下,运行cd config/命令,之后运行 bash create_custom_model.sh ‘1’ 命令将类别参数修改为1.修改后custom.data文件如下图。
在这里插入图片描述
4.配置本次yolov3的数据格式
首先将数据集中的Annotations和JPEGImages两个文件夹复制到算法文件夹的data/custom文件夹里,并在此文件夹内创建images和labels两个文件夹。
然后运行voc2yolov3.py文件,生成train.txt和valid.txt文件信息,将数据集划分,即将图片路径保存在两个txt文件中。
之后运行voc_annotation.py对xml标记信息进行处理,处理成下列的txt文件形式。
在这里插入图片描述之后将JPEGImages内的图片全部复制到images文件夹内。
在这里插入图片描述在这里插入图片描述
5.训练数据集
在算法文件夹的终端下运行以下命令:

训练命令

python train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --pretrained_weights weights/darknet53.conv.74

添加其他参数请见 train.py 文件

从中断的地方开始训练

python train.py --model_def config/yolov3-custom.cfg --data_config config/custom.data --pretrained_weights checkpoints/yolov3_ckpt_99.pth --epoch

1
2
3
4
5
6
7
运行过程如下图所示:
在这里插入图片描述如果运行报错:IndexError: index 0 is out of range那么就将算法文件夹下面的config文件内的yolov3-custom.cfg删除,自己重新生成一个。在该文件终端下运行命令:

bash create_custom_model.sh ‘1’
1
这里强烈建议使用带GPU的电脑进行训练,用CPU训练实在太慢了…

6.测试结果
训练完成后运行如下命令进行测试算法。

python detect.py --image_folder data/imgs/ --weights_path checkpoints/yolov3_ckpt_99.pth --model_def config/yolov3-custom.cfg --class_path data/custom/classes.names

1
2
运行上述,其会对data/imgs 文件下的图片进行预测,并将预测结果保存到output/imgs文件下。

在这里插入图片描述

好啦,如果不出意外就可以成功运行啦,如果觉得写的还不错的话就请给我点个赞吧!祝各位2021一切顺利啦。

参考:https://codingchaozhang.blog.csdn.net/article/details/107167792#commentBox

上一篇:利用Piexllib模型库做猪只图像分割


下一篇:小程序组件