目录
安装CUDA和pytorch(网上教程很多此处不赘述,注意pytorch不要安装成CPU版本的)
在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包
9.使用 Netron (开源的模型可视化工具)来可视化 ONNX 模型
前言
使用YOLO5 --v5.0 的 export将训练好的.pt模型文件转成.onnx文件出现各种错误虽然转出了onnx文件,但是并不能检测出目标物体。
经过不断的精神折磨后发现是v5.0版本问题 ,所以在这里对v7.0版本的使用做个笔记(重点是使用export文件转出onnx文件 并且在detect文件里使用onnx文件检测onnx文件) 。
YOLO5—V7.0的快速部署(简化版)
v7.0与 V5.0部署方法几乎一样,此处不做过多介绍,具体细节可以参考我写的V5.0版本的部署小白使用YOLO5训练猫狗数据的全过程及所遇到的坑-优快云博客
1.数据集准备
images 里存放的是猫和狗的图片
labels里存放的是标签 (此处图片和标签需要一一对应)
可以参考大佬文章:
目标检测---利用labelimg制作自己的深度学习目标检测数据集-优快云博客目标检测---数据集格式转化及训练集和验证集划分_训练集和验证集的划分代码-优快云博客
v7.0的源码地址:(点击直接访问,加速访问进的是Gitcode下载不了预训练模型)ultralytics/yolov5 at v7.0 (github.com)https://github.com/ultralytics/yolov5/tree/v7.0
2. 下载预训练模型
在上述v7.0的源码地址找到如下界面(建议鼠标右击选择新标签页打开链接)(我这里选择yolo5s.pt轻量级的,文件一般越大精度越高但所需的时间,要求的配置也相应增加)
3.搭配YOLO5环境
安装CUDA和pytorch(网上教程很多此处不赘述,注意pytorch不要安装成CPU版本的)
安装完成后可以用以下代码测试
import torch
print(torch.__version__)
print(torch.version.cuda)
print(torch.cuda.is_available()) #输出为True,则安装无误
结果:
这里cu121代表安装的是GPU版本
在终端里cd 到 yolov5-v5.0目录下 安装requirements.txt文件里的包
cd yolov5-v5.0
pip install -r requirements.txt
4.配置YOLO5—V7.0文件
修改{ data目录下的voc.yaml,models目录下的yolov5s.yaml }
(建议复制粘贴一份并重命名,在新建的里面改动)
(这里的voc.yaml 比v5.0版本多了个下载数据集的功能,并且将目录结构做了改动)
(想使用download的可以在顶部的注释中找到用法)
此处我是自建数据集文件夹所以不做考虑,直接改用自己的目录(也可以直接套用v5.0版本的)。
修改models目录下的yolov5s.yaml
nc : 标签的类别个数
修改主目录下的train.py 文件
weights 填写预训练模型地址,我这里使用的是yolo5s.pt(default填相对路径,help(最好)填绝对路径)(Windows电脑路径需要手动改成 “/ ” )
cfg 填写models目录下yolov5s.yaml路径
data 填写data目录下的voc.yaml 路径
hyp 超参数,对模型进行一些微调(此处我没做调整,看个人)
epoch 训练的轮数,一般200—300轮即可
batch -size 批次,按自己电脑配置来调
device 选择GPU还是CPU(此处的default不填默认为0调用的是GPU)
完成以上配置后运行train.py文件后运行:
5.报错 :
(此处CPU调用的可以选择调小batch -size 里的default参数)
解决:
参考文章:
在utils路径下找到dataloaders.py这个文件
修改num_worker=0
再次运行train.py 成功
完成后在runs\train\exp\weights可以找到best.pt ,last.pt两个训练结果模型
6.使用export文生成.onnx文件
官网给出的export支持转换的文件种类
在主目录下找到export.py文件找到parse_opt函数,修改
data ,weight,里的数据(default填相对路径,help(最好)填绝对路径)(Windows电脑路径需要手动改成 “/ ” )
weight 填刚刚生成的best.pt文件路径
修改 include 里的default为 onnx(可以选择help里有的任意类型)
运行export文件(可以看到onnx已经保存起来)
7.使用主目录下的detect文件测试onnx文件
修改 weights为onnx文件的路径, source 为测试的图片路径,data为修改后的voc.yaml路径
运行结果在runs\detect\exp下查看
8.成果:
9.使用 Netron (开源的模型可视化工具)来可视化 ONNX 模型
地址
大佬文章:
各种参数详解: 手把手带你调参YOLOv5 (v5.0-v7.0)(推理)_yolov5调参-优快云博客
详细介绍 Yolov5 转 ONNX模型 + 使用ONNX Runtime 的 Python 部署(包含官方文档的介绍)_yolov5转onnx-优快云博客
【Yolov5】1.认真总结6000字Yolov5保姆级教程(2022.06.28全新版本v6.1)_yolov5教程-优快云博客
模型部署入门教程(一):模型部署简介 - 知乎 (zhihu.com)
Yolov5-v5.0 导出onnx推理结果完全错误_tracerwarning: converting a tensor to a python boo-优快云博客
官方文档地址文件介绍: Export - Ultralytics YOLOv8 Docs
结语:
本笔记仅仅适合了解怎么用,如果想深入了解还是得看官方文档的。
吧啦吧啦又说了一堆 ,(心里自我安慰都是为了完成任务。)
后面应该会研究一下onnx的部署吧。
吐槽:大一的自己如此忙碌。