关于YOLO8学习(四)模型转换为ncnn

2024-05-04 12:20
文章标签 学习 模型 转换 ncnn yolo8

本文主要是介绍关于YOLO8学习(四)模型转换为ncnn,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

前文

关于YOLO8学习(一)环境搭建,官方检测模型部署到手机
关于YOLO8学习(二)数据集收集,处理
关于YOLO8学习(三)训练自定义的数据集

简介

本文将会讲解:
(1)如何通过PyCharm,进行pt模型的转换,最后输出一个适合手机端使用的模型

开发环境

win10、python 3.11、cmake、pytorch2.0.1+cu117、pycharm、ultralytics==8.0.134
要特别注意,不要升级到python312,目前onnx还没支持到312,所以转换了,会导致转换模型失效。
对于上述环境如何配置,请看我之前的文章。

开发过程

ncnn是腾讯出厂的一个端到端库,通过不同的模型,最终转换为ncnn可用的格式,然后进行部署。ncnn支持安卓,苹果。而且特别对cpu做了相关的优化,所以博主选择这个模型作为部署到端的方案。


前面的文章中,已经得到了一个pt模型文件了,接下来,博主将会手把手,示范如何转换一个ncnn模型,下面开始发车:

注意,使用的yolo版本,是8.0.134,不要搞错了,不然源码是不一样的。特别是8.2+的版本,源码区别比较大!
转换之前,这里是需要修改yolo的源码的,具体步骤如下:

head.py文件:
在这里插入图片描述
block.py文件:
在这里插入图片描述

修改完上面两个文件后,执行下面的代码,

model = YOLO("yolov8n.pt")
model.export(format="onnx",imgsz=320, half=True, opset=12, optimize=True)

这样,就把pt文件,转换成了onnx文件了。


onnx 转换为 ncnn

方法一

这里的方法有很多,博主直接用tc官方的onnx2ncnn.exe进行转换:
下载链接:
官方资源地址:

下载完成后,找到onnx2ncnn.exe文件,然后执行下面的指令,就可以得到两个文件,两个文件就是对应的ncnn资源文件:

onnx2ncnn.exe xxxx.onnx targetxx.param targetxx.bin

方法二

通过在线的网址进行转换链接
在这里插入图片描述


上述就是转换的整个流程,总结一下:

(1)训练模型的时候,源码文件head.py,block.py是不用修改的
(2)转换模型为onnx的时候,需要先修改源码文件,然后进行转换
(3)从onnx转换为ncnn文件的时候,可以使用官方exe转换或者是在线网站进行转换

that’s all--------------------------------------------------------------------------------------------

这篇关于关于YOLO8学习(四)模型转换为ncnn的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/959186

相关文章

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

使用C#实现将RTF转换为PDF

《使用C#实现将RTF转换为PDF》RTF(RichTextFormat)是一种通用的文档格式,允许用户在不同的文字处理软件中保存和交换格式化文本,下面我们就来看看如何使用C#实现将RTF转换为PDF... 目录Spire.Doc for .NET 简介安装 Spire.Doc代码示例处理异常总结RTF(R

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

OFD格式文件及如何适应Python将PDF转换为OFD格式文件

《OFD格式文件及如何适应Python将PDF转换为OFD格式文件》OFD是中国自主研发的一种固定版式文档格式,主要用于电子公文、档案管理等领域,:本文主要介绍OFD格式文件及如何适应Python... 目录前言什么是OFD格式文档?使用python easyofd库将PDF转换为OFD第一步:安装 eas

基于Java实现PPT到PDF的高效转换详解

《基于Java实现PPT到PDF的高效转换详解》在日常开发中,经常会遇到将PPT文档批量或单文件转换为PDF的需求,本文将详细介绍其使用流程、核心代码与常见问题解决方案,希望对大家有所帮助... 目录一、环境配置Maven 配置Gradle 配置二、核心实现:3步完成PPT转PDF1. 单文件转换(基础版)

使用C#实现Excel与DataTable的相互转换

《使用C#实现Excel与DataTable的相互转换》在软件开发中,Excel文件和DataTable是两种广泛使用的数据存储形式,本文将介绍如何通过C#实现Excel文件与Data... 目录安装必要的库从 Excel 导出数据到 DataTable从 DataTable 导入数据到 Excel处理 E

利用Python将PDF文件转换为PNG图片的代码示例

《利用Python将PDF文件转换为PNG图片的代码示例》在日常工作和开发中,我们经常需要处理各种文档格式,PDF作为一种通用且跨平台的文档格式,被广泛应用于合同、报告、电子书等场景,然而,有时我们需... 目录引言为什么选择 python 进行 PDF 转 PNG?Spire.PDF for Python

Java轻松实现PDF转换为PDF/A的示例代码

《Java轻松实现PDF转换为PDF/A的示例代码》本文将深入探讨Java环境下,如何利用专业工具将PDF转换为PDF/A格式,为数字文档的永续保存提供可靠方案,文中的示例代码讲解详细,感兴趣的小伙伴... 目录为什么需要将PDF转换为PDF/A使用Spire.PDF for Java进行转换前的准备通过

Linux五种IO模型的使用解读

《Linux五种IO模型的使用解读》文章系统解析了Linux的五种IO模型(阻塞、非阻塞、IO复用、信号驱动、异步),重点区分同步与异步IO的本质差异,强调同步由用户发起,异步由内核触发,通过对比各模... 目录1.IO模型简介2.五种IO模型2.1 IO模型分析方法2.2 阻塞IO2.3 非阻塞IO2.4