pt和onnx和ncnn之间的转换以及避坑

这篇具有很好参考价值的文章主要介绍了pt和onnx和ncnn之间的转换以及避坑。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一,pt 转 onnx 其实就是深度学习模型转onnx模型这里不过多介绍

这个转化比较简单python里就可以

这个文件yolov5-5.0>models>export.py

onnx转pt,深度学习,神经网络,计算机视觉

下面那个根据自己的环境修改,环境是你yolov5运行的环境cpu就填cpu gpu就填 0 

onnx转pt,深度学习,神经网络,计算机视觉

修改好后运行

onnx转pt,深度学习,神经网络,计算机视觉

 有可能需要下载onnx包 直接pip

pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple

直接运行就好了

 onnx转pt,深度学习,神经网络,计算机视觉

onnx会直接在你pt模型路径下

 二,onnx转ncnn

ncnn有些特殊会生成两个文件

onnx转pt,深度学习,神经网络,计算机视觉

 然后把onnx模型用这个打开查看一下 Netron

 转化可以用这个直接转化

一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine (convertmodel.com)https://convertmodel.com/

选择模型,然后转换

onnx转pt,深度学习,神经网络,计算机视觉

 有可能报错

onnx转pt,深度学习,神经网络,计算机视觉

用刚刚那个应用打开onnx模型

onnx转pt,深度学习,神经网络,计算机视觉

 因为有些程序不支持切片所以需要删掉

这需要把pt到onnx重新转化才可以删掉切片内容

需要改一些东西

打开yolov5-5.0>models>common.py

#修改前
# class Focus(nn.Module):
#     # Focus wh information into c-space
#     def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
#         super(Focus, self).__init__()
#         self.conv = Conv(c1 * 4, c2, k, s, p, g, act)
#         # self.contract = Contract(gain=2)
#
#     def forward(self, x):  # x(b,c,w,h) -> y(b,4c,w/2,h/2)
#         return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))
#         # return self.conv(self.contract(x))
#修改后的
class Focus(nn.Module):
    # Focus wh information into c-space
    def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
        super(Focus, self).__init__()
        self.conv = Conv(c1 * 4, c2, k, s, p, g, act)
        # self.contract = Contract(gain=2)

    def forward(self, x):  # x(b,c,w,h) -> y(b,4c,w/2,h/2)
        # return self.conv(torch.cat([x[..., ::2, ::2], x[..., 1::2, ::2], x[..., ::2, 1::2], x[..., 1::2, 1::2]], 1))
        N, C, H, W = x.size()  # assert (H / s == 0) and (W / s == 0), 'Indivisible gain'
        s = 2
        x = x.view(N, C, H // s, s, W // s, s)  # x(1,64,40,2,40,2)
        x = x.permute(0, 3, 5, 1, 2, 4).contiguous()  # x(1,2,2,64,40,40)
        y = x.view(N, C * s * s, H // s, W // s)  # x(1,256,40,40)
        return self.conv(y)

然后运行export.py文件转化得到新的onnx  然后把onnx模型用这个打开查看一下 Netron

onnx转pt,深度学习,神经网络,计算机视觉

一键转换 Caffe, ONNX, TensorFlow 到 NCNN, MNN, Tengine (convertmodel.com)https://convertmodel.com/

最后用这个网页上的那个转化程序进行转化就ok了 文章来源地址https://www.toymoban.com/news/detail-595083.html

到了这里,关于pt和onnx和ncnn之间的转换以及避坑的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 深度学习中实现PyTorch和NumPy之间的数据转换知多少?

    在深度学习中,PyTorch和NumPy是两个常用的工具,用于处理和转换数据。PyTorch是一个基于Python的科学计算库,用于构建神经网络和深度学习模型。NumPy是一个用于科学计算的Python库,提供了一个强大的多维数组对象和用于处理这些数组的函数。 在深度学习中,通常需要将数据从

    2024年02月05日
    浏览(48)
  • ONNX转NCNN记录

            【pytorch 转 onnx】pytorch-onnx         【onnx 转 ncnn】onnx-ncnn         【ncnn 加载模型】ncnn-load         其中, torch.onnx.export  是 PyTorch 自带的把模型转换成 ONNX 格式的函数。前三个参数分别是要转换的模型、模型的任意一组输入、导出的 ONNX 文件的文件名

    2023年04月16日
    浏览(27)
  • Unity学习笔记 关于Unity相机的FOV以及水平FOV和垂直FOV之间的转换

    关于FOV FOV 是在任何给定时间通过人眼、相机取景器或在显示屏上可见的可观察世界的范围。它指的是整个区域的覆盖范围,而不是单个固定焦点。FOV 还描述了一个人可以看到可见世界的角度。 FOV 越宽,可以看到的可观察世界就越多。它是水平、垂直和对角线测量的。相机

    2024年02月08日
    浏览(42)
  • 【深度学习&NLP】基于卷积神经网络(CNN)实现中文文本情感分析(分类)附代码以及数据集链接

    【注】:本文所述的实验的完整实现代码包括数据集的仓库链接会在文末给出(建议读者自行配置GPU来加速TensorFlow的相关模型,运行起来会快非常多) 目录 一、研究的背景和目的 二、文本数据集描述 1、数据集来源以及使用目的 2、数据规模、以及如何划分数据集 3、数据集的

    2024年02月04日
    浏览(63)
  • pytorch模型(.pt)转onnx模型(.onnx)的方法详解(1)

    1. pytorch模型转换到onnx模型 2.运行onnx模型 3.比对onnx模型和pytorch模型的输出结果  我这里重点是第一点和第二点,第三部分  比较容易 首先你要安装 依赖库:onnx 和 onnxruntime, 也可以使用清华源镜像文件安装  速度会快些。 开始: 1. pytorch模型转换到onnx模型 pytorch 转 onnx

    2023年04月09日
    浏览(30)
  • AI模型部署落地综述(ONNX/NCNN/TensorRT等)

    导读 费尽心血训练好的深度学习模型如何给别人展示?只在服务器上运行demo怎么吸引别人的目光?怎么才能让自己的成果落地?这篇文章带你进入模型部署的大门。 模型部署的步骤: 训练一个深度学习模型; 使用不同的推理框架对模型进行推理转换; 在应用平台运行转换

    2024年01月22日
    浏览(48)
  • yolov5 pt 模型 导出 onnx

    在训练好的yolov5 pt 模型 可以 通过 export.py 进行导出 onnx 导出流程 在 export.py 设置模型和数据源的yaml 在官方的文档中 说明了可以导出的具体的类型。 在 --include 添加导出的类型, 不同的 类型的 环境要求不一样,建议虚拟环境,比如onnx 和 openvino 的numpy 版本要求不一只,一

    2024年02月11日
    浏览(42)
  • 在 Jetson Nano 上安装 ncnn 深度学习框架。

    本页面将指导您在 Jetson Nano 上安装腾讯的 ncnn 框架。由于 ncnn 框架面向移动设备(例如 Android 手机),因此它不支持 CUDA。然而,大多数 Android 手机使用 Vulkan API 对其 GPU 进行低级访问。 ncnn 框架可以使用 Vulkan 例程来加速深度学习模型的卷积。 Jetson Nano 具有 ncnn 将使用的

    2024年02月11日
    浏览(37)
  • ubuntu深度学习使用TensorFlow卷积神经网络——图片数据集的制作以及制作好的数据集的使用

    首先我事先准备好五分类的图片放在对应的文件夹,图片资源在我的gitee文件夹中链接如下: 文件管理: 用于存各种数据 https://gitee.com/xiaoxiaotai/file-management.git  里面有imgs目录和npy目录,imgs就是存放5分类的图片的目录,里面有桂花、枫叶、五味子、银杏、竹叶5种植物,npy目

    2024年02月05日
    浏览(71)
  • yolov8seg模型转onnx转ncnn

    yolov8是yolo的最新版本,可做图像分类,目标检测,实例分割,姿态估计。 主页地址 这里测试一个分割模型。 模型如下 选yolov8 n -seg模型,转成onnx,再转ncnn测试。 yolov8 s -seg的ncnn版可以直接用这个 如果用python版的onnx,可以直接用notebook转,然后下载。 python版onnx代码参考 但

    2024年02月05日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包