pytorch版本下的yolov3训练实现火焰检测
时隔好多好多日子了,一直没写博客(小声bb,最近忙着接私活儿)。马上就要开学了,害,回去就要加油干了!!!
本次教程写个pytorch版本的yolov3检测,用的火焰检测数据集,效果如下:
这就可以做个火警预测了,yolov3是真的香呀,这次用到的是github 的一个pytorch实现版本,效果上还是不错的。
那么, 接下来,就跟我一起来实操起来吧!!!
一、环境要求
老规矩,工欲善其事必先利其器,搭建环境!!
- Python: 3.7.4
- Tensorflow-GPU 1.14.0
- Keras: 2.2.4
- numpy:1.17.4
这里建议用anaconda来快速搭建一个虚拟环境,速度很快的!!!
二、数据集准备
从互联网上收集火焰图片,并用labelimg进行标注,得到标注图片以及标注的位置信息。
如下:
万事俱备,开始coding!!!!
三、Pytorch版本的YoloV3
Pytorch_Yolov3
1.安装模块
在requirements.txt
中含有本次所需的python模块.
- numpy
- torch==1.2.0
- torchvision==0.4.0
- matplotlib
- tensorflow==1.13.2
- tensorboardX==2.0
- terminaltables
- pillow
- tqdm
可用pip install -i https://pypi.tuna.tsinghua.edu.cn/simple -r requirements.txt
来安装所需的模块。
2.下载所需的权重文件
Linux平台下,cd weights/
,之后运行bash download_weights.sh
文件,即可下载所需的权重信息。
Windows平台下,可直接编辑download_weigths.sh文件,复制其中的模型链接,在游览器中打开下载。
下载完毕后,在weights文件的内容如下:
3.修改配置文件
Linux平台下,运行cd config/
目录,之后运行 bash create_custom_model.sh <num-classes>
其中 为类别参数,根据你的需要修改,这里我修改为1.
Windows平台下,配置git的bin目录下的变量之后,运行sh.exe文件。之后cd config
目录之后,运行sh create_custom_model.sh <num-classes>
即可
执行完毕之后,修改custom.data,修改其配置信息即可。
4.配置本次yolov3的数据格式
重点来了,重点来了,重点来了!!!
在该github下,对自定义的数据,并未阐述,只是一笔带过。但该yolov3的版本所需的数据格式跟voc格式和coco格式都不大一样。每张图片对应一个txt标注信息。其第一列为类别信息,之后的四列为标准化的标注信息。其中 label 是类别在 data/custom/classes.names 的索引, <> 代表缩放后的比例系数
- <1>*w = (xmax-xmin)/2 + xmin
- <2>*h = (ymax-ymin)/2 + ymin
- <3> = (xmax-xmin)/w
- <4> = (ymax-ymin)/h
这里github未提供数据转换,这里先新建两个Annotations和JPEGImages的文件夹,将准备好的图片和xml标记信息放于其中。
然后运行voc2yolov3
文件,生成train.txt
和valid.txt
文件信息,将数据集划分,即将图片路径保存在两个txt文件中。
之后运行voc_annotation.py
对xml标记信息进行处理,处理成下列的txt文件形式
并记得修改classes.names的类别名,以及将图片复制到images文件中。即
好了,数据格式制作完成了!!!
下面可以开始训练了.
5.运行train.py
# 训练命令
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
若出现警告解决方案UserWarning: indexing with dtype torch.uint8 is now deprecated, please use a dtype torch.bool instead.
在 model.py
计算损失的位置 大概在 192 行左右添加以下两句:
obj_mask=obj_mask.bool() # convert int8 to bool
noobj_mask=noobj_mask.bool() #convert int8 to bool
运行过程如图所示:
可通过tensorboard来查看运行过程中的变化。tensorboard --logdir='logs\'
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文件下
若是在 GPU 的电脑上训练,在 CPU 的电脑上预测,则需要修改 model.load_state_dict(torch.load(opt.weights_path, map_location='cpu'))
好了,大功告成了!!! 立下flag!!! 明天再更一个!!!
pytorch版本下的yolov3训练实现火焰检测相关推荐
- ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))
前序 1.环境配置 请自行参考其他博客 本机环境 ubuntu16.04 python3 英伟达显卡驱动:nvidia-396 OpenCV3.4.5 CUDNN7.0.5 CUDA9.0 2.ubu ...
- 【yolo】yolov3的pytorch版本保存自定义数据集训练好的权重,并载入自己的模型
多次试验终于测出来了!!很高兴,结果截图: 数据集是来自网上的,代码原型是github一个大概五千多star的pytorch-yolov3,但原代码并没有载入自己的模型进行训测试阶段,然后parser ...
- (YOLOv3训练超详细教程)在Ubuntu 18.04下使用YOLOv3训练数据(提供源码及文件夹)
一.环境 Ubuntu 18.04 + CUDA10.0 +CUDNN 下方是我训练时的真实文件,可供大家参考 大家需要我的文件资源的请使用曲奇云盘下载,下面是下载链接:https://quqi.gb ...
- YOLOV3训练自己的数据集(PyTorch版本)
由于这一段时间从事目标检测相关工作,因而接触到yolov3,进行目标检测,具体原理大家可以参考大神的博客目标检测(九)--YOLO v1,v2,v3,我就不细讲了,直接进入正题,如何利用深度学习框架P ...
- win10下yolov3训练自己的数据集
在win10下用yolov3训练自己的数据集 1. 在darknet-master\build\darknet\x64 新建yolo-obj.cfg文件(可以直接复制yolov3.cfg,然后重命名 ...
- 基于视觉的烟雾/火焰检测数据集整理(检测、识别、分割)
基于传感器的火灾预警系统,比较适用于较小空间. 随着视觉技术的发展,基于视觉的火灾预警系统,更适用于对森林等大范围场景进行 远距离监控1. 当前的烟雾火焰检测系统中,采用机器学习的视觉技术暂未广泛替代 ...
- WIN10 +pytorch版yolov3训练自己数据集
pytorch版yolov3训练自己数据集 目录 1. 环境搭建 2. 数据集构建 3. 训练模型 4. 测试模型 5. 评估模型 6. 可视化 7. 高级进阶-网络结构更改 1. 环境搭建 将git ...
- Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理
Pytorch版本YOLOv3模型转darknet weights模型然后转caffemodel再转wk模型在nnie上面推理 文章目录 Pytorch版本YOLOv3模型转darknet weigh ...
- YOLOv3: 训练自己的数据(绝对经典版本1)
为什么80%的码农都做不了架构师?>>> windows版本:请参考:https://github.com/AlexeyAB/darknet linux 版本:请参 ...
最新文章
- MANIFEST.MF文件全面解析
- 计算机基础知识总结及自学,计算机基础知识的简单总结
- MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
- LeetCode 999. 车的可用捕获量
- ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件
- 面试必备TCP三次握手
- android从本地服务器新浪云,GitHub - SinaCloudStorage/SinaStorage-SDK-Android: Android SDK For 新浪云存储...
- 服务器响应401,如果服务器返回401响应,则重定向到登录页面(Redirect to login page if server returns 401 response)...
- java代码绩点计算器_怎么用java写一个gpa计算器?
- rapidminer decision tree(决策树)手册
- 设置后台事务的执行人
- jieba中文分词组件的词性类型
- centos7 查看内存使用
- 根下有长长的白色根须
- Word2019工具栏未显示MathType7.0解决办法
- 曾国藩格言与众君共勉
- 论文精读:GHM:Gradient Harmonized Single-stage Detector
- 斐讯(Phicomm)空气检测仪(悟空 M1)通过 EasyLink 安卓客户端同步时间方法
- 电脑开不了机计算机无法启动,电脑中毒了开不了机怎么回事_电脑中毒无法开机的解决步骤-win7之家...
- 皇帝内经上关于发梦的解说
热门文章
- Markdown小问题【日常更新】
- Photoshop 2023 (ps 2023)
- 快捷方式 ABP——切换MySQL数据库
- 292. Nim 游戏(简单题)
- 行为识别特征提取综述
- 跑步听歌用哪种耳机更好?精挑五款适合跑步听歌的耳机分享
- Android传感器、语音识别、定位系统、Google Map API、快捷方式、widget编程总结及示例...
- Pokémon Army (easyversion) -每天一把CF - 20201007
- 怎样将ppt转换成pdf软件
- 包装设计模式-Decorator