当前位置:网站首页 > 云计算与后端部署 > 正文

onnx模型部署修改(ncnn模型部署)



欢迎学习ncnn系列相关文章,从训练、模型转换、精度分析,评估到部署Android端,推荐好资源:

一、YoloV5训练自己数据集并测试
二、ncnn编译和安装
三、onnx模型转ncnn模型并推理可执行程序(resnet18例子)
四、yolov5-6.0Pyotorch模型转onxx模型再转ncnn模型部署
五、训练自己YOLOv5模型转ncnn模型并部署到Android手机端




在这里插入图片描述

ncnn为用户提供了一系列的模型转换工具,能够轻松地将caffe、onnx等格式的模型转换为ncnn可以识别的格式。在源代码编译完成后,这些工具会被存放在ncnn/build/tools目录下。在本次的示例中,使用了onnx2ncnn工具,将在pytorch中导出的resnet18的onnx模型转换为ncnn模型,并进行了推理。

本教程配套源码包获取方法为文章末扫码到公众号「视觉研坊」中回复关键字:模型部署onnx转ncnn。获取下载链接。

源码包下载解压后的样子如下:

在这里插入图片描述

resnet18使用的是Pytorch模型,所以需要先搭好torch环境,下面是我自己的环境版本号,仅供参考,其它版本也行。

在这里插入图片描述

在onnx模型转ncnn模型前,需要先将Pytorch模型转为onnx模型,不可以Pytorch模型直接转onnx模型,因为这两种模型的格式和结构差异很大。

具体转换脚本在源码在目录onnx_to_ncnn/python/export_res18.py

 
   

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果电脑上第一次转换,先确保 onnx2ncnn 这个文件有可执行权限,使用 chmod 命令来添加可执行权限:

 
   

在终端使用下面命令转换:

 
   

上面命令中,使用 onnx2ncnn 工具,将 resnet18_test.onnx 转换为 resnet18_test.param 和 resnet18_test.bin。在这里resnet18_test.param 存储了模型的参数信息,它记录了计算图的结构。而 resnet18_test.bin 则存放了模型的所有具体参数。就可以使用 ncnn 框架来加载和运行这个模型了。

下面是具体的转换过程及结果:

在这里插入图片描述

4.3.1 .bin文件

bin文件中存放数据,如卷积数据,算子加载的权重等都放在二进制bin文件中。

4.3.2 .param文件

在这里插入图片描述

下面是.param文件中具体参数解析, 是一个magic数,表示ncnn格式的;58是layer数,及算子的数量;66是blob数,blob中间数据存储的数量,中间数和计算结果都是放在blob里的。

在这里插入图片描述

在这里插入图片描述

4.3.3 可视化网络结构

netron官网:entron

在netron中打开.param文件查看计算图结构,方形框中的内容就是layer(算子),各个方形框之间的连接线就是blob。如下:

在这里插入图片描述

通过上面的一系列操作就得到了ncnn可以识别的两个文件:.param和.bin。

5.1.2 参数修改

推理脚本为resnet18.cpp,使用是需要修改的地方见下:

在这里插入图片描述
在这里插入图片描述

5.1.3 代码

 
   

下面说到的源码路径,指的是安装源码ncnn时的路径,关于安装源码ncnn见我上一篇博文:ncnn编译和安装

在这里插入图片描述
在这里插入图片描述

先在根目录中生成一个build文件夹,然后执行命令构建如下:

 
   

在这里插入图片描述

5.3.1 cmake …解析

cmake … 是一个在当前目录下执行 CMake 的命令,它会查找上一级目录(由 … 表示)中的 CMakeLists.txt 文件,并生成构建文件。这些构建文件可以被 make、ninja 或其他构建工具使用,来编译和链接你的项目。

5.3.2 构建结果

通过上面命令执行后会在build文件夹中生成相关文件,如下:

在这里插入图片描述

在上面构建文件基础上执行编译命令:

 
   

bin目录下的resnet18就是编译生成的可执行程序。

在这里插入图片描述

通过cd命令到根目录下,执行推理命令:

 
   

下面是可执行程序运行后的输出结果,包含了设备信息,每层的推理时间,以及最终的推理结果。

在这里插入图片描述

以上就是onnx模型转ncnn模型并推理可执行程序的详细过程,其它模型类型转换并推理。

总结不易,多多支持,谢谢!

感谢您阅读到最后!关注公众号「视觉研坊」,获取干货教程、实战案例、技术解答、行业资讯!

到此这篇onnx模型部署修改(ncnn模型部署)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • 手机软件后缀(手机软件后缀名)2025-09-16 09:27:09
  • 苹果电脑装了双系统怎么恢复(苹果电脑装了双系统以后怎么恢复)2025-09-16 09:27:09
  • 服务器怎么部署项目(服务器怎么部署搭建)2025-09-16 09:27:09
  • chrony不同步(chrony客户端同步周期)2025-09-16 09:27:09
  • 服务器上部署模型(服务器上部署项目)2025-09-16 09:27:09
  • nfs客户端端口(nfs客户端软件)2025-09-16 09:27:09
  • redis的端口号是多少(redis client 端口)2025-09-16 09:27:09
  • 前端埋点框架是什么(前端埋点技术是什么)2025-09-16 09:27:09
  • 服务器部署方案是什么(服务器部署方案是什么)2025-09-16 09:27:09
  • 四川大学慕课认证码(四川大学认证客户端启动不了)2025-09-16 09:27:09
  • 全屏图片