码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Yolov5 export.py实现onnx模型的导出


    查了很多资料,很多用python代码写的,只需要这个库那个库的,最后都没成功。

    不如直接使用Yolov5里面的 export.py实现模型的转换。

    一:安装依赖

    因为yolov5里面的requirments.txt是将这些转换模型的都注释掉了

    所以需要解除注释然后再安装

    根据你需要导出模型的类型进行解除注释 

    然后再安装依赖

    pip install -r requirements.txt
    

    二:导出模型

    根据官方教程来说明如何导出模型,帮助如何将训练好的YOLOv5模型转换成ONNX格式或者TorchScipt格式。

    在export.py里面设置模型和数据源的yaml

    官方文档写了具体可以导出的类型。

    在 --include添加导出的类型。 

     python export.py  --include torchscript onnx
    

    三:测试和验证推理

    1. python detect.py --weights yolov5s.onnx --dnn
    2. python val.py --weights yolov5s.onnx --dnn

    记住推理的时候,要修改detect.py里面的数据源yaml文件。不然会出现推理的时候标签不一致。

    在模型的导出中,onnx不需要GPU进行推理,没有用GPU推理,导致推理的时候很慢,但是tensorRT需要GPU进行推理。 

    文件有些大,根据官方文档的提示

    💡 ProTip: Add --half to export models at FP16 half precision for smaller file sizes

    添加--half以FP16半精度导出模型,以缩小文件大小

    原来的.pt模型是40.2MB.转成ONNX后模型大小是79.9MB

    用完--half完,模型大小变为40.0MB,明显变小了

    再次进行推理验证,时间少了43%左右,说明这个是有效果的,测试了一下,对精度影响不大。

    相关参数解释:

    1. def parse_opt():
    2. """
    3. data: 数据集目录 默认=ROOT / 'data/coco128.yaml'
    4. weights:权重文件目录 默认=ROOT / 'yolov5s.pt'
    5. img-size: 输入模型的图片size=(height, width) 默认=[640, 640]
    6. batch-size: batch大小 默认=1
    7. device: 模型运行设备 cuda device, i.e. 0 or 0,1,2,3 or cpu 默认=cpu
    8. include: 要将pt文件转为什么格式 可以为单个原始也可以为list 默认=['torchscript', 'onnx', 'coreml']
    9. half: 是否使用半精度FP16export转换 默认=False
    10. inplace: 是否设置 YOLOv5 Detect() inplace=True 默认=False
    11. train: 是否开启model.train() mode 默认=True coreml转换必须为True
    12. optimize: TorchScript转化参数 是否进行移动端优化 默认=False
    13. int8: 支持CoreML/TF INT8 量化 不支持ONNX
    14. dynamic: ONNX转换参数 dynamic_axes ONNX转换是否要进行批处理变量 默认=False
    15. simplify: ONNX转换参数 是否简化onnx模型 默认=False
    16. opset: ONNX转换参数 设置ONNX版本 默认=13
    17. topk-per-class: TF.js每一类别都要保留 默认=100
    18. topk-all: TF.js Topk为所有class保留
    19. iou-thres: TF.js IoU threshold default=0.45
    20. conf-thres: TF.js confidence threshold default=0.25
    21. include: 需要导出的版本 default=['torchscript', 'onnx'],
    22. """
    23. 复制代码

    参考文章:

    yolov5 pt 模型 导出 onnx_yolov5 export.py-CSDN博客

    TFLite, ONNX, CoreML, TensorRT Export - Ultralytics YOLOv8 Docs

    源码解析二 模型转换 export.py - ---dgw博客 - 博客园 (cnblogs.com)

  • 相关阅读:
    日程安排小程序实战教程(上篇)
    Java Collections.fill()方法具有什么功能呢?
    厌烦了iPhone默认的热点名称?如何更改iPhone上的热点名称
    2020秋招Java面试题
    Cesium+Shader:两种动态墙效果
    掌握核心技巧就能创建完美的目录!如何在Word中自动创建目录
    web渗透测试----5、暴力破解漏洞--(9)MS-SQL密码破解
    C++ Primer学习笔记-----第二章:变量和基本类型
    第六十四章 CSP的常见问题 - 发送给浏览器的HTTP头信息是什么
    php7.3 centos7.9安装sqlserver扩展
  • 原文地址:https://blog.csdn.net/m0_74137224/article/details/138158069
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号