将pytorch 模型转为 ncnn模型

pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程) pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程) 文章目录pytorch模型(pth,pkl)转ncnn(中介onnx)(附搭建ncnn教程)部署ncnn在windows上部署ncnn(基于VS2019)在Ubuntu18.04上部署ncnnpytorch模型转onnx(以TDnet为例)onnx转ncnn 部署ncnn pytorch转ncnn是要在电脑上部署好ncnn环境,下图为可部署ncnn的平台 在windows上部署ncnn(基于VS2019) 一.安装VS2 阅读详情

将pytorch 模型转为 ncnn模型(vs 2019 )

step 1 pth文件转为onnx文件

具体步骤可以参考:https://github.com/ultralytics/yolov5/blob/master/export.py
和https://blog.youkuaiyun.com/weixin_44753371/article/details/119328952的step1

step2:.onnx转ncnn模型

编译protobuf-3.4.0

下载 protobuf-3.4.0 https://github.com/google/protobuf/archive/v3.4.0.zip

cd <protobuf-root-dir>
mkdir build
cd build
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake
nmake
nmake install

Build ncnn library

cd <ncnn-root-dir>
mkdir -p build
cd build
cmake -G"NMake Makefiles" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-root-dir>/build/install/include -DProtobuf_LIBRARIES=<protobuf-root-dir>/build/install/lib/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-root-dir>/build/install/bin/protoc.exe ..
nmake
nmake install

或:

cd <ncnn-root-dir>
mkdir -p build
cd build
cmake -G"Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -DProtobuf_INCLUDE_DIR=<protobuf-root-dir>/src -DProtobuf_LIBRARIES=<protobuf-root-dir>/build-vs2019/Release/libprotobuf.lib -DProtobuf_PROTOC_EXECUTABLE=<protobuf-root-dir>/build-vs2019/Release/protoc.exe ..

cmake --build . --config Release

[option] -DNCNN_VULKAN=ON …

\build\tools\onnx\Release 路径下可以找到onnx2ncnn.exe文件.

onnx模型转为ncnn

cd <ncnn-root-dir>\build\tools\onnx\Release
onnx2nccn.exe <onnxfilepath> 
# 当前目录下就会出现ncnn.bin,ncnn.param文件

step2 报错处理

  • 1:nmake not find

找到nmake.exe文件的位置然后加入PATH环境变量:

D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64


  • 2: RC Pass 1: command “rc /fo CMakeFiles\cmTC_deb0b.dir/manifest.res CMakeFiles\cmTC_deb0b.dir/manifest.rc” failed (exit code 0) with the following output:
    系统找不到指定的文件。NMAKE : fatal error U1077: ““D:\Program Files\CMake\bin\cmake.exe””: 返回代码“0xffffffff”
    Stop.
    NMAKE : fatal error U1077: ““D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.16.27023\bin\HostX64\x64\nmake.exe””: 返回代码“0x2”
    Stop.

找到rc.exe文件的位置加入path

C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\rc.exe

将step2 的build目录清空并且将命令 替换为:

参考自:https://github.com/Tencent/ncnn/issues/2549

cd <protobuf-root-dir>
mkdir build
cd build
cmake -G"Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF ../cmake

cmake --build . --config Release


cmake -G"Visual Studio 16 2019" -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=%cd%/install -Dprotobuf_BUILD_TESTS=OFF -Dprotobuf_MSVC_STATIC_RUNTIME=OFF …/cmake

运行结果如下所示:

image-20210826173143846.png

cmake --build . --config Release 运行结果如下:

image-20210826174418843-1629971268515.png

Visual Studio 17 2022        = Generates Visual Studio 2022 project files.
                                 Use -A option to specify architecture.

* Visual Studio 16 2019        = Generates Visual Studio 2019 project files.
        Use -A option to specify architecture.
    Visual Studio 15 2017 [arch] = Generates Visual Studio 2017 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 14 2015 [arch] = Generates Visual Studio 2015 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 12 2013 [arch] = Generates Visual Studio 2013 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 11 2012 [arch] = Generates Visual Studio 2012 project files.
                                   Optional [arch] can be "Win64" or "ARM".
    Visual Studio 10 2010 [arch] = Generates Visual Studio 2010 project files.
                                   Optional [arch] can be "Win64" or "IA64".
    Visual Studio 9 2008 [arch]  = Generates Visual Studio 2008 project files.
                                   Optional [arch] can be "Win64" or "IA64".
  • 报错信息:CMake Error at CMakeLists.txt:265 (message):
    The submodules were not downloaded! Please update submodules with “git
    submodule update --init” and try again.

    # 不要使用download zip 下载 ncnn,使用git clone 下载
    git clone https://github.com.cnpmjs.org/Tencent/ncnn.git
    cd ncnn
    git  submodule update --init
    # 然后执行step2 ncnn编译操作
    

    ncnn编译成功后如下图所示:

image-20210827111116194-1630033879029.png

cmake --build . --config Release 运行结果如下:

image-20210827111836387.png

参考链接:

  • https://github.com/Tencent/ncnn/issues/2549
  • https://blog.youkuaiyun.com/weixin_44753371/article/details/119328952
  • https://github.com/ultralytics/yolov5/blob/master/export.py
  • https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-windows-x64-using-visual-studio-community-2017
Pytorch模型部署:torch-onnx-ncnn 部署 阅读详情

相关推荐

多目标跟踪yolov5+deep sort转ncnn调用

Qt,ncnn,opencv调用yolov5+deep sort

街道口扛把子的博客 5459

将pytorch训练的模型转为ncnn模型

1、训练自己的pytorch模型 训练完成后,生成.pth后缀模型,此时要转为可部署的ncnn模型需要经历一些过程,如下:.pth -> .onnx -> .pram 和 .bin模型 2、.pth转.onnx 2.1 避坑 有时候会出现onnx库不能将某些模块转换出来,如mobilenet中的hardswish激活函数就不能被转换,原因是由于pytorch的版本低,导致无法转换,可以升级pytorch的版本。 2.2 代码 以下代码为将.pth文件转为.onnx文件 import torch

weixin_44753371的博客 2384

YOLOv5-pytorch迁移至android

YoloV5-pytorch迁移至android 本文记录了yolov5迁移至android的详细过程 模型转换分为两步:1、pytorch转换成onnx; 2、onnx转换成nccn;3、在android部署ncnn 1、pytorch -> onnx 1、 打开yolov5/models/export.py,修改红色框路径 转换后我们得到 best.onnx 2、去掉onnx模型的冗余维度 pip install onnx-simplifier python -m onnxsim best.o

qq_37874136的博客 5473

Windows系统下把PyTorch模型转为ncnn模型流程

文章目录前言一、大概流程及ONNX模型简介二、环境配置1、需要安装的软件2、在Windows系统下构建ncnn环境3、VS2015配置三、步骤1、把PyTorch模型(.pth文件)转为onnx模型(.onnx文件)2、简化onnx模型3、生成ncnn模型4、使用VS编译ncnn模型总结 前言   最近需要部署深度学习模型,选用了腾讯的ncnn框架,也就是要把训练好的PyTorch模型(.pth文件)转换为ncnn模型(.param和.bin文件),这次是在Windows 10系统部署,中间遇到了很多坑.

qq_39686950的博客 3574

ncnn安装与样例代码跑通

ncnn安装与样例代码跑通

xiaoxiaojie001的博客 518

ncnn 推理猫狗识别

pc端windows平台下ncnn推理图像识别模型。本文主要从模型训练-onnx转化-onnx2sim-onnx2ncnn以及C++推理实现。

程序猿的视界 1045

【Python】Pytorch模型转NCNN模型

最近用Real-ESRGAN的时候遇到了个问题,别人预训练的模型都是Pytorch的.pth格式的模型,但NCNN打包的ESRGAN只能使用.param和.bin的NCNN模型,有没有办法转换chaiNNer软件可以实现,而且很简单,但是这个软件比较折磨。

Ar-Sr-Na的博客 615

从DC到DCG:手把手教你搭建物理感知综合流程(含DEF文件处理避坑指南)

本文详细介绍了从Design Compiler(DC)过渡到DC Topographical(DCT)和DC Graphical(DCG)的完整操作框架,特别针对DEF文件处理提供避坑方案。通过环境准备、工具升级、DEF文件处理、DCG综合配置等步骤,帮助开发者高效应对28nm以下工艺节点的物理感知综合挑战,显著提升时序收敛效率。

weixin_27966471的博客 377

Pytorch 模型通过转为ncnn移植android

模型转换 pytorch转onnx import torch.utils.data from torch.autograd import Variable from squeezenet import squeezenet1_2 import onnxruntime import numpy as np from onnxruntime.datasets import get_example import cv2 import onnx model_file = '/home/bbt/qinghua

Ceri的博客 2103

振动能量采集技术:从原理到实战,破解物联网供电难题

能量采集技术旨在捕获环境中的废弃能量(如机械振动、热能、光能)并将其转化为电能,其核心原理在于通过压电、电磁、静电或摩擦电等物理效应实现能量形式的转换。这项技术的核心价值在于为物联网(IoT)中难以布线或更换电池的分布式传感器节点、植入式医疗设备等提供近乎永续的电力解决方案,从而解决物联网部署的“最后一米供电”瓶颈。其应用场景广泛覆盖工业预测性维护、结构健康监测、可穿戴设备及消费电子等领域。本文聚焦于振动能量采集这一细分方向,深入剖析了压电式、电磁式、电容式及摩擦纳米发电机(TENG)等主流技术路线的实战考

weixin_42660494的博客 565

DAC8568 Controller

DAC8568 ControllerDAC8568 简介串行接口三级目录 DAC8568 简介 PIN Description Name Description LDAC‾\overline{LDAC}LDAC load DACs SYNC‾\overline{SYNC}SYNC 低电平有效,电平触发控制, 该输入为输入数据的帧同步信号. 当SYNC为低,使能DAC内输入移位寄存器,并在随后的所有时钟沿采样数据。 在第32个时钟之后,DAC更新输出。 若不到32个时钟SYNC被置高(即

u010170039的博客 5129

PyTorch模型转为ncnn

PyTorch模型转为ncnn 参考链接:https://blog.youkuaiyun.com/weixin_43541325/article/details/117421050 1. 安装onnx, pip install --upgrade onnx onnxruntime 2. 导出onnx模型 以torchvision自带的resnent18为例, 将PyTorch的模型导出为onnx的格式。 import torch import torchvision # An instance of your mo

wangmou211的博客 1513

树莓派4B串口舵机控制全攻略:从pigpio库安装到Python脚本调试

本文详细介绍了如何在树莓派4B上通过pigpio库和Python脚本实现串口舵机的精确控制。从硬件串口配置、pigpio库安装到舵机通信协议解析和Python脚本开发,提供了完整的解决方案和调试技巧,适用于机械臂控制等实际项目应用。

k8s6orchestrator的博客 429

pytorch模型转为onnx再转为ncnn模型

.pt模型转为.onnx报错问题,onnx模型简化,ncnn介绍

qq_43326063的博客 629

Unity卡牌游戏UI框架:数据驱动与模块化设计实践

在Unity游戏开发中,UI系统是连接玩家与游戏逻辑的关键桥梁,其核心在于实现数据与表现的高效同步。数据驱动设计通过分离数据模型、逻辑状态与视图表现,利用观察者模式自动响应状态变化,确保了代码的清晰与可维护性。这种架构显著提升了开发效率,尤其在需要复杂状态管理和实时反馈的交互场景中,如卡牌游戏的拖拽、布局与动画系统。基于模块化思想,开发者可以将卡牌视图、布局管理、区域控制等组件像积木一样组合,快速构建出动态的手牌弧形布局、战场区域管理等特色功能。通过集成对象池、图集优化等性能方案,还能有效管理绘制调用与网格

weixin_34262482的博客 451

解锁RK3588:内核模块签名与安全启动配置全攻略

RK3588作为一款高性能嵌入式SoC芯片,其内核模块签名与安全启动配置是保障系统安全的核心机制。本文详细介绍了RK3588的芯片特性,重点阐述了安全启动的硬件信任链原理和内核模块签名的实现方法。通过具体步骤演示了从密钥生成、模块签名到验证加载的完整流程,并深入解析了安全启动配置的硬件连接、软件工具准备、密钥烧录等关键环节。此外,还提出了防御旁路攻击和动态信任链扩展等高级安全策略,为RK3588在工业控制、智能安防等高安全要求场景中的应用提供了全面的安全解决方案。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 346

手把手教学在windows系统上将pytorch模型转为onnx,再转为ncnn的全过程

最近呢,在忙一个项目,需要将pytorch训练的模型部署在移动端。然后遇到也遇到了一些坑,简单的记录一下整个过程,转换的模型就使用经典的分类网络模型mobilenet_v2。

weixin_42280271的博客 1716

【国产MCU系列】-GD32F4开发环境搭建(基于Embedded Builder)

GD32F4系列MCU采用Arm® Cortex®-M4内核,处理器主频高达240MHz,可支持算法复杂度更高的嵌入式应用,具备更快速的实时处理能力,并拥有业界领先的大容量存储优势。

视觉与物联智能 3078

使用pnnx把pytorch模型转ncnn模型

序言 在做训练模型转部署模型的时候,通常都是先转成onnx,再转目标框架,但是经常会出现的问题就是某些算子不支持,这样一来,模型部署起来就比较困难,不过现在ncnn支持torch直接通过pnnx转成ncnn模型,将整个torch的模型直接搬过来,避免了算子不支持的问题,具体的介绍还请移步nihui大佬的知乎:PNNX: PyTorch Neural Network Exchange。 结合自己最近的情况,最近在白嫖PaddleOCRV2的移动端模型,想把它转成ncnn去部署在边缘设备上,情况是在转mbv3版

小菜的博客 1万+

Mac mini M2 部署 OpenClaw:最稳 7×24 本地 AI 服务器

Mac mini M2 凭借其强大的 M2 芯片、低功耗和静音特性,成为部署 OpenClaw AI 服务器的理想平台。本文详细介绍了从系统配置到 OpenClaw 部署的全过程,包括 Docker 环境搭建、docker-compose 编排、性能优化方案以及开机自启设置。通过统一内存架构和高效 SSD,M2 版 Mac mini 在 AI 推理速度上显著优于前代产品,同时保持极低的功耗(仅 8W),适合 7×24 小时稳定运行。部署方案充分利用了容器化技术,确保了服务的可靠性和可维护性。

一键难忘的博客 2953

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pytorch模型转ncnn,并移植android

模型转换 pytorch转onnx import torch.utils.data from torch.autograd import Variable from squeezenet import squeezenet1_2 import onnxruntime import numpy as np from onnxruntime.datasets import get_example im...

u011961856的专栏 5128

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

pytorch下yolov5模型迁移至android

流程:pt->onnx->ncnn->android 本人系统:win10 1、pt->onnx ①打开 volov5/models/export.py 红框内改为.pt模型的路径,然后运行 转换结果如图: ②需要进行去掉冗余的维度 打开anaconda prompt,去到 .onnx文件夹下 conda activate 你的虚拟环境 python -m onnxsim best.onnx best-sim.onnx 2、编译ncnn ①、配置相关环境(前方高能!!!!建

qq_39542170的博客 2967

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

NCNN加速效果验证

本文记录ncnn神经网络前向计算框架(ncnn项目地址)加速效果的验证过程,进一步探究ncnn加速原理并学习利用ncnn框架自定义推理加速。流程使用pytorch实现的人脸识别网络参考代码地址)和对应预训练权重生成onnx格式中间文件,再转成ncnn需要的*.bin和*.param格式使用lfw人脸数据集作为验证数据集对比使用pytorch推理使用ncnn推理所用时长和精度。

qq_44328440的博客 2288

RIFE插帧算法(V4.6)-pytorch转ncnn模型

首先附上各位大佬的github 地址链接,请多多支持各位开源大佬的工作(动动小手,star一下):1. rife插帧算法原地址(pytorch实现),作者特别优秀!书归正传,本文介绍一下如何通过pytorch转onnx再转ncnn模型的方式,将rife插帧算法应用在ncnn框架上。本文就基于上述模型的出入参和基本结构进行。

xiaosier_D的博客 3496

YOLOv5利用ncnn部署系列(二)

三、YOLOv5模型转onnx 前面说完YOLOv5的训练,也进行了相应的测试,接下来就是对训练好的pt模型转为onnx模型! 在YOLOv5的git项目里有自带的一个onnx_export.py文件,运行该文件,即可将pt模型转为onnx模型,但是里面也有很多坑!!!! 先来看onnx_export.py的代码: """Exports a pytorch *.pt model to *.onnx format Usage: import torch $ export PYTHONPATH

qq_33160678的博客 7911

Jetson nano上使用ncnn部署yolox

序言 之前一篇文章写yolox的训练,这篇文章写一下关于部署,yolox之所以刚出来就这么火爆,不仅是精度高、速度快,很大程度上还是因为直接把部署的代码叶开源了,可谓是从训练到部署一条龙服务,很良心,yolox里面开源的部署代码有四种:ncnn、openvino、onnx和tensorrt,刚好手上有一个nano的板子,所以打算试试yolox使用ncnn在nano上的效果,写一篇文章记录一下过程。 一、模型转换pytorch->onnx 使用ncnn部署,模型转换的步骤还是:pytorch ->

小菜的博客 5125
上一篇: 对抗训练-smart 论文阅读笔记
下一篇: javascript sleep function
Magicapprentice
博客等级 码龄12年 111粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值