2025亲测有用 yolov8 pt转onnx转ncnn 部署安卓
参考文章:pt转onnx转ncnn模型(yolov8部署安卓)_best.pt 转ncnn模型-CSDN博客
Yolov8-Ncnn模型部署Android,实现单一图片识别_yolov8转ncnn-CSDN博客
onnx转化为ncnn这条路径现在已经落后了,更多的是通过pnnx转化为ncnn。
一、pt转onnx
from ultralytics import YOLO# Load a model
model = YOLO(r"E:\StudyData\python\yolov8\yolov8n.pt") # load a custom trained model# Export the model to NCNN with arguments
success = model.export(format="onnx", simplify= True, opset=12)
修改head和block
class C2f(nn.Module):#省略上面的代码#.....#源代码:# def forward(self, x):# """Forward pass through C2f layer."""# y = list(self.cv1(x).chunk(2, 1))# y.extend(m(y[-1]) for m in self.m)# return self.cv2(torch.cat(y, 1))#修改为:def forward(self, x):# 全部替换为x = self.cv1(x)x = [x, x[:, self.c:, ...]]x.extend(m(x[-1]) for m in self.m)x.pop(1)return self.cv2(torch.cat(x, 1))
def __init__(self, nc=80, ch=()):#....省略上面代码#源代码:
# def forward(self, x):
# """Concatenates and returns predicted bounding boxes and class probabilities."""
# if self.end2end:
# return self.forward_end2end(x)
#
# for i in range(self.nl):
# x[i] = torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1)
# if self.training: # Training path
# return x
# y = self._inference(x)
# return y if self.export else (y, x)#修改为:
def forward(self, x):
"""Concatenates and returns predicted bounding boxes and class probabilities."""shape = x[0].shape # BCHWfor i in range(self.nl):x[i] = torch.cat((self.cv2[i](x[i]), self.cv3[i](x[i])), 1)if self.training:return xelif self.dynamic or self.shape != shape:self.anchors, self.strides = (x.transpose(0, 1) for x in make_anchors(x, self.stride, 0.5))self.shape = shape# 中间部分注释掉,return语句替换为return torch.cat([xi.view(shape[0], self.no, -1) for xi in x], 2).permute(0, 2, 1)
然后执行上述python
如果没找到onnx模块,执行 pip install onnx
得到onnx
二、对onnx进行简化
pip install onnxsimpython3 -m onnxsim yolov8n.onnx yolov8n-sim.onnx
三、onnx-sim转ncnn
依次执行下面的命令行
sudo apt install build-essential libopencv-dev cmakesudo apt install build-essential git cmake libprotobuf-dev protobuf-compiler libvulkan-dev vulkan-utils libopencv-devgit clone https://github.com/Tencent/ncnn.gitcd ncnngit submodule update --init #暂时不知道什么作用mkdir buildcd buildcmake ..make -j8make installsudo ldconfig # 刷新
要注意是否成功安装了onnx2ncnn

找到ncnn/build/tools/onnx文件夹,能找到onnx2ncnn.cpp

把onnx放入文件夹下,执行下面的命令
./onnx2ncnn my.onnx my.param my.bin
成功得到bin和param文件。
相关文章:
2025亲测有用 yolov8 pt转onnx转ncnn 部署安卓
参考文章:pt转onnx转ncnn模型(yolov8部署安卓)_best.pt 转ncnn模型-CSDN博客 Yolov8-Ncnn模型部署Android,实现单一图片识别_yolov8转ncnn-CSDN博客 onnx转化为ncnn这条路径现在已经落后了,更多的是通过pnnx转化为nc…...
cursor的.cursorrules详解
文章目录 1. 文件位置与作用2. 基本语法规则3. 常用规则类型与示例3.1 忽略文件/目录3.2 限制代码生成范围3.3 自定义补全建议3.4 安全规则 4. 高级用法4.1 条件规则4.2 正则表达式匹配4.3 继承规则 5. 示例文件6. 注意事项 Cursor 是一款基于 AI 的智能代码编辑器,…...
MySQL 入门大全:运算符
🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...
Oracle数据库数据编程SQL<3.6 PL/SQL 包(Package)>
包是Oracle数据库中一种重要的PL/SQL程序结构,它将逻辑相关的变量、常量、游标、异常、过程和函数组织在一起,提供了更好的封装性和模块化。在大型项目中,可能有很多模块,而每一个模块又有自己的存过、函数等。而这些存过、函数默认是放在一起的,如果所有的存过函数都是放…...
Rust 语言语法糖深度解析:优雅背后的编译器魔法
之前介绍了语法糖的基本概念和在C/Python/JavaScript中的使用,今天和大家讨论语法糖在Rust中的表现形式。 程序语言中的语法糖:让代码更优雅的甜味剂 引言:语法糖的本质与价值 语法糖(Syntactic Sugar) 是编程语言中那些并不引入新功能&…...
React-Markdown详解
React-Markdown 详解(2025年最新实践指南) 一、核心特性与架构解析 React-Markdown 是一个基于 React 的 Markdown 渲染组件库,其核心设计理念是通过 Unified 生态系统实现安全、可扩展的 Markdown 解析。关键特性包括: 安全渲染…...
uniapp 微信小程序 使用ucharts
文章目录 前言一、组件功能概述二、代码结构分析2.1 模板结构 总结 前言 本文介绍一个基于 Vue 框架的小程序图表组件开发方案。该组件通过 uCharts 库实现折线图的绘制,并支持滚动、缩放、触摸提示等交互功能。文章将从代码结构、核心方法、交互实现和样式设计等方…...
mysql中将外部文本导入表中过程出现的错误及解决方法
问题一: MySQL Loading local data is disabled; this must be enabled on both the client and server sides (MySQL加载本地数据被禁用;这必须在客户端和服务器端同时启用) 解决方法: 1,依次输入以下命令…...
C#实现HiveQL建表语句中特殊数据类型的包裹
用C#实现搜索字符串中用’(‘和’)‘包裹的最外层的里面里面的字符串,将里面的记录按一个或多个空格、换行或tab,或者是它的在一起的组合作为分隔,分隔出多个字符串组,如果组中有字符串中同时包含’<‘和’>’,则…...
【idea】实用插件
SonarLint SonarLint:代码质量扫描工具 使用 SonarLint 可以帮助我们发现代码的问题,并且还提供了相应的解决方案. 对于每一个问题,SonarLint 都给出了示例,还有相应的解决方案,教我们怎么修改,极大的方便了我们的开发…...
关于mysql 数据库中的 慢SQL 的详细分析,包括定义、原因、解决方法及表格总结
以下是关于 慢SQL 的详细分析,包括定义、原因、解决方法及表格总结: 1. 什么是慢SQL? 定义: 慢SQL 是指执行时间超过预设阈值(如 2 秒)的 SQL 语句,通常会导致数据库响应延迟、资源占用过高&am…...
uniapp选择文件使用formData格式提交数据
1. Vue实现 在vue项目中,我们有个文件,和一些其他字段数据需要提交的时候,我们都是使用axios 设置请求头中的Content-Type: multipart/form-data,然后new FormData的方式来进行提交。方式如下: const sendRequest = () => {const formData = new FormData()formData…...
蓝牙数字音频和模拟音频优劣势对比?
蓝牙模块中我们常说的模拟音频和数字音频,是指两种不同的信号处理技术,它们都可以实现声音的录制、存储、编辑、压缩或播放,但也有一些区别和特点。本文将为您深入解析蓝牙数字音频和模拟音频的一些常见区别。 数字音频: 蓝牙数…...
WiFi(无线局域网)技术的多种工作模式
WiFi(无线局域网)技术支持多种工作模式,以满足不同的网络需求和应用场景。以下是主要的WiFi工作模式及其详细说明: 1. 基础设施模式(Infrastructure Mode) [无线接入点 (AP)]/ | \ [客户端…...
基于OpenCV的指纹验证:从原理到实战的深度解析
指纹识别的技术革命与OpenCV的轻量级方案 在生物特征识别领域,指纹识别始终以独特性和稳定性占据核心地位。随着OpenCV等开源视觉库的普及,这项看似"高大上"的技术正逐步走向民用化开发。本文将突破传统算法框架,提出一套基于OpenC…...
VMware+Ubuntu+VScode+ROS一站式教学+常见问题解决
目录 一.VMware的安装 二.Ubuntu下载 1.前言 2.Ubuntu版本选择 三.VMware中Ubuntu的安装 四.Ubuntu系统基本设置 1.中文更改 2.中文输入法更改 3. 辅助工具 vmware tools 五.VScode的安装ros基本插件 1.安装 2.ros辅助插件下载 六.ROS安装 1.安装ros 2.配置ROS…...
音视频(一)ZLMediaKit搭建部署
前言 一个基于C11的高性能运营级流媒体服务框架 全协议支持H264/H265/AAC/G711/OPUS/MP3,部分支持VP8/VP9/AV1/JPEG/MP3/H266/ADPCM/SVAC/G722/G723/G729 1:环境 ubuntu22.* ZLMediaKit downlaod:https://github.com/ZLMediaKit/ZLMediaKit or https://g…...
leetcode25.k个一组翻转链表
思路源自 【力扣hot100】【LeetCode 25】k个一组翻转链表|虚拟节点的应用 /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(in…...
配置 UOS/deepin 系统远程桌面,实现多台电脑协同办公
由于开发工作的需要,我的办公桌上目前有多台电脑。一台是 i7 配置的电脑,运行 UOS V20 系统,作为主力办公电脑,负责处理企业微信、OA 等任务,并偶尔进行代码编译和验证软件在 UOS V20 系统下的兼容性;另一台…...
配置Next.js环境 使用vscode
配置 Next.js 的开发环境其实非常简单,下面是一个从零开始的完整步骤,适用于 Windows、macOS 和 Linux: ✅ 一、准备工作 确保你已经安装了以下软件: 1. Node.js(推荐 LTS 版本) 官网:https:/…...
Vite相关知识点
一、自动导入vue vue-router pinia 1、安装unplugin-auto-import npm install unplugin-auto-import -D 2、引入 import AutoImport from unplugin-auto-import/vite; 3、配置vite.config.ts plugins: [ vue(), vueDevTools(), AutoImport({ include: [ /…...
RCE复现
1.过滤flag <?php error_reporting(0); if(isset($_GET[c])){$c $_GET[c];if(!preg_match("/flag/i", $c)){eval($c);}}else{highlight_file(__FILE__);代码审计过滤了"flag"关键词,但限制较弱,容易绕过 ?csystem("ls&…...
电子电气架构 --- 域控制器和EE架构关系
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…...
多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测
多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现CPO-LSTM冠豪猪算法优化长短期记忆神经网络多输入多输出预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 Matlab实现CPO-LSTM冠豪猪算法优化长短期…...
使用PyTorch实现LeNet-5并在Fashion-MNIST数据集上训练
本文将展示如何使用PyTorch实现经典的LeNet-5卷积神经网络,并在Fashion-MNIST数据集上进行训练和评估。代码包含完整的网络定义、数据加载、训练流程及结果可视化。 1. 导入依赖库 import torch from torch import nn from d2l import torch as d2l 2. 定义LeNet…...
19_20 js es6
目录 ES6 一、let 和 const关键字 1.1 var 和 let const的区别? 1.2 let 和const的区别 1.3 关于块级作用域 二、箭头函数 2.1箭头函数的特点 2.2 箭头函数的特殊性 this的问题 arguments参数集合 2.3函数传递参数时的默认值 2.4 箭头函数使用的场景有哪…...
自动化释放linux服务器内存脚本
脚本说明 使用Linux的Cron定时任务结合Shell脚本来实现自动化的内存释放。 脚本用到sync系统命令 sync的作用:sync 是一个 Linux 系统命令,用于将文件系统缓存中的数据强制写入磁盘。 在你执行reboot、poweroff、shutdown命令时,系统会默认执…...
【强化学习】近端策略优化算法(PPO)的理解
本篇博客参考自上海大学刘树林老师的课程。B站课程链接:https://www.bilibili.com/video/BV17t4geUEvQ/?spm_id_from333.337.search-card.all.click&vd_source74af336a587568c23a499122c8ffbbee 文章目录 传统策略梯度训练面临的问题其他方法的改进TRPO算法的贡…...
Java基础 3.30
1.结合练习 /*随机生成10个整数(1-100的范围)保存到数组,并倒序打印以及求平均值、求最大值和最大值的下标,并查找里面是否有8 */ public class ArrayHomework02 {public static void main(String[] args) {int arr[] new int[10];for (int i 0; i &l…...
5.好事多磨 -- TCP网络连接Ⅱ
前言 第4章节通过回声服务示例讲解了TCP服务器端/客户端的实现方法。但这仅是从编程角度的学习,我们尚未详细讨论TCP的工作原理。因此,将详细讲解TCP中必要的理论知识,还将给出第4章节客户端问题的解决方案。 一、回声客户端完美实现 第4章…...
