时隔好多好多日子了,一直没写博客(小声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.txtvalid.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训练实现火焰检测相关推荐

  1. ubuntu16.04下使用YOLOV3训练自己做的VOC数据集(VOC数据集制作+模型训练步骤+训练参数解析和问题解决+训练日志可视化(loss、IOU)+模型测试(单张、摄像头、批量测试))

    前序 1.环境配置 请自行参考其他博客 本机环境 ubuntu16.04 python3 英伟达显卡驱动:nvidia-396 OpenCV3.4.5 CUDNN7.0.5 CUDA9.0 2.ubu ...

  2. 【yolo】yolov3的pytorch版本保存自定义数据集训练好的权重,并载入自己的模型

    多次试验终于测出来了!!很高兴,结果截图: 数据集是来自网上的,代码原型是github一个大概五千多star的pytorch-yolov3,但原代码并没有载入自己的模型进行训测试阶段,然后parser ...

  3. (YOLOv3训练超详细教程)在Ubuntu 18.04下使用YOLOv3训练数据(提供源码及文件夹)

    一.环境 Ubuntu 18.04 + CUDA10.0 +CUDNN 下方是我训练时的真实文件,可供大家参考 大家需要我的文件资源的请使用曲奇云盘下载,下面是下载链接:https://quqi.gb ...

  4. YOLOV3训练自己的数据集(PyTorch版本)

    由于这一段时间从事目标检测相关工作,因而接触到yolov3,进行目标检测,具体原理大家可以参考大神的博客目标检测(九)--YOLO v1,v2,v3,我就不细讲了,直接进入正题,如何利用深度学习框架P ...

  5. win10下yolov3训练自己的数据集

    在win10下用yolov3训练自己的数据集 1.  在darknet-master\build\darknet\x64 新建yolo-obj.cfg文件(可以直接复制yolov3.cfg,然后重命名 ...

  6. 基于视觉的烟雾/火焰检测数据集整理(检测、识别、分割)

    基于传感器的火灾预警系统,比较适用于较小空间. 随着视觉技术的发展,基于视觉的火灾预警系统,更适用于对森林等大范围场景进行 远距离监控1. 当前的烟雾火焰检测系统中,采用机器学习的视觉技术暂未广泛替代 ...

  7. WIN10 +pytorch版yolov3训练自己数据集

    pytorch版yolov3训练自己数据集 目录 1. 环境搭建 2. 数据集构建 3. 训练模型 4. 测试模型 5. 评估模型 6. 可视化 7. 高级进阶-网络结构更改 1. 环境搭建 将git ...

  8. Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理

    Pytorch版本YOLOv3模型转darknet weights模型然后转caffemodel再转wk模型在nnie上面推理 文章目录 Pytorch版本YOLOv3模型转darknet weigh ...

  9. YOLOv3: 训练自己的数据(绝对经典版本1)

    为什么80%的码农都做不了架构师?>>>    windows版本:请参考:https://github.com/AlexeyAB/darknet linux       版本:请参 ...

最新文章

  1. MANIFEST.MF文件全面解析
  2. 计算机基础知识总结及自学,计算机基础知识的简单总结
  3. MySql 使用 EF Core 2.0 CodeFirst、DbFirst、数据库迁移(Migration)介绍及示例
  4. LeetCode 999. 车的可用捕获量
  5. ffmpeg编译android,FFMPEG Android(2) 编译编译静态ffmpeg可执行文件
  6. 面试必备TCP三次握手
  7. android从本地服务器新浪云,GitHub - SinaCloudStorage/SinaStorage-SDK-Android: Android SDK For 新浪云存储...
  8. 服务器响应401,如果服务器返回401响应,则重定向到登录页面(Redirect to login page if server returns 401 response)...
  9. java代码绩点计算器_怎么用java写一个gpa计算器?
  10. rapidminer decision tree(决策树)手册
  11. 设置后台事务的执行人
  12. jieba中文分词组件的词性类型
  13. centos7 查看内存使用
  14. 根下有长长的白色根须
  15. Word2019工具栏未显示MathType7.0解决办法
  16. 曾国藩格言与众君共勉
  17. 论文精读:GHM:Gradient Harmonized Single-stage Detector
  18. 斐讯(Phicomm)空气检测仪(悟空 M1)通过 EasyLink 安卓客户端同步时间方法
  19. 电脑开不了机计算机无法启动,电脑中毒了开不了机怎么回事_电脑中毒无法开机的解决步骤-win7之家...
  20. 皇帝内经上关于发梦的解说

热门文章

  1. Markdown小问题【日常更新】
  2. Photoshop 2023 (ps 2023)
  3. 快捷方式 ABP——切换MySQL数据库
  4. 292. Nim 游戏(简单题)
  5. 行为识别特征提取综述
  6. 跑步听歌用哪种耳机更好?精挑五款适合跑步听歌的耳机分享
  7. Android传感器、语音识别、定位系统、Google Map API、快捷方式、widget编程总结及示例...
  8. Pokémon Army (easyversion) -每天一把CF - 20201007
  9. 怎样将ppt转换成pdf软件
  10. 包装设计模式-Decorator