13

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

 3 years ago
source link: https://blog.csdn.net/qq_51331745/article/details/112147469
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

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

下面开始实际操作啦

一、配置环境

算法所需环境如下:

Python: 3.7.4
Tensorflow-GPU 1.14.0
Keras: 2.2.4
numpy:1.17.4

我的操作系统是Ubuntu16.04,windows系统同样可以实现此算法这里建议使用anaconda来快速搭建一个虚拟环境。

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

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

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

pip install tensorflow==1.14.0

下一步安装相应版本的Keras,运行下面的命令。

pip install Keras==2.2.4

接下来使用pip继续安装numpy。运行如下命令:

pip --default-timeout=1000 install numpy==1.17.4

如果发现已经安装了其他版本的numpy,那么运行如下命令将其卸载,再运行以上命令安装对应版本的numpy。

pip uninstall numpy

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

二、数据集准备

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

三、算法实现

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

1.安装python模块

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

numpy
torch==1.2.0
torchvision==0.4.0
matplotlib
tensorflow==1.13.2
tensorboardX==2.0
terminaltables
pillow
tqdm

直接在文件夹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 

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

bash create_custom_model.sh '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

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

在这里插入图片描述

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK