yolov10 瑞芯微RKNN、地平线Horizon芯片部署、TensorRT部署,部署工程难度小、模型推理速度快

news2024/11/18 11:25:41

  特别说明:参考官方开源的yolov10代码、瑞芯微官方文档、地平线的官方文档,如有侵权告知删,谢谢。

  模型和完整仿真测试代码,放在github上参考链接 模型和代码。

  yolov8、v9还没玩热乎,这不yolov10又来了,那么部署也又来了。

1 模型和训练

  老规矩,训练代码参考官方开源的yolov10代码。

2 导出 yolov10 onnx

   导出onnx增加以下几行代码:
在这里插入图片描述

        # 导出onnx增加
        y = []
        for i in range(self.nl):
            t1 = self.one2one_cv2[i](x[i])
            t2 = self.one2one_cv3[i](x[i])
            y.append(t1)
            y.append(t2)
        return y

增加保存onnx代码:

在这里插入图片描述

        print("===========  onnx =========== ")
        import torch
        self.model = self.model.fuse()
        dummy_input = torch.randn(1, 3, 640, 640)
        input_names = ["data"]
        output_names = ["reg1", "cls1", "reg2", "cls2", "reg3", "cls3"]
        torch.onnx.export(self.model, dummy_input, "./weights/yolov10_zq.onnx", verbose=False, input_names=input_names, output_names=output_names, opset_version=11)
        print("======================== convert onnx Finished! .... ")

  修改完以上两个地方,运行推理脚本(运行会报错,但不影响onnx文件的生成)。

from ultralytics import YOLOv10

# 推理
model = YOLOv10(r'./weigths/yolov10n.pt')
results = model(task='detect', mode='predict', source='./test.jpg', line_width=3, show=True, save=True, device='cpu')

增加这一行后,对其中C2fCIB模块进行重参数化(这也是文章中一个点)
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
重参数化前后模型的变化
在这里插入图片描述

3 yolov10 onnx 测试效果

pytorch效果
在这里插入图片描述
onnx效果
在这里插入图片描述

4 时耗

模型输入640x640,检测类别80类

tensorRT 时耗(显卡 Tesla V100、cuda_11.0)
在这里插入图片描述
rk3588时耗
在这里插入图片描述
本示例用的是yolov10n,模型计算量6.7G,看到这个时耗觉得可能是有操作切换到CPU上进行计算的,查了rknn转换模型日志确实是有操作切换到CPU上进行的,对应的是模型中 PSA 模块计算 Attention 这部分操作。

在这里插入图片描述

5 rknn 板端C++部署

  C++完整部署代码和模型示例参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1716343.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数据分析必备:一步步教你如何用Pandas做数据分析(11)

1、Pandas 自定义选项 Pandas 自定义选项操作实例 Pandas因为提供了API来自定义行为,所以被广泛使用。 自定义API中有五个相关功如下: get_option() set_option() reset_option() describe_option() option_context() 下面我们一起了解下这些方法。 1.…

5个免费下载音乐的网站,喜欢听什么就搜什么

以下5个音乐下载网站,中国人不骗中国人,全部免费。个个曲库丰富,喜欢听什么就搜什么,还能下载mp3格式,点赞收藏即刻拥有! 1、MyFreeMP3 tools.liumingye.cn/music/ MyFreeMP3是一个提供音乐播放和下载服…

如何衡量安全阀检测的价格与价值?一文揭晓答案

安全阀作为工业设备中的重要组件,其性能的稳定性和可靠性直接影响着整个系统的安全运行。因此,对安全阀进行定期检测和维护显得尤为重要。 那么,安全阀检测一个需要多少钱呢? 在这篇文章中,佰德将从检测费用构成、市…

BPTT算法详解:深入探究循环神经网络(RNN)中的梯度计算【原理理解】

引言 在深度学习领域中,我们经常处理的是独立同分布(i.i.d)的数据,比如图像分类、文本生成等任务,其中每个样本之间相互独立。然而,在现实生活中,许多数据具有时序结构,例如语言模型…

jquery---ajax方法示例

ajax方法 $.ajax({name:value, name:value, ... }) ajax方法有一个参数,一定长度的对象,内部指定了ajax的请求地址和格式,方式等等,它可以有以下的属性和值 示例 这里展示了一个简单的get请求图片url的实例 let data; let url…

了解运维基础

一、运维概述 1、运维岗位的收入情况 2、运维的职位定义 什么是运维? 在技术人员之间,一致对运维有一个开玩笑的认知:运维就是修电脑的、装网线的、背锅的岗位。 其实不然,运维是一个非常广泛的定义,在不同的公司不同…

宏基因组分析流程(Metagenomic workflow)202405|持续更新

Logs 增加R包pctax内的一些帮助上游分析的小脚本(2024.03.03)增加Mmseqs2用于去冗余,基因聚类的速度非常快,且随序列量线性增长(2024.03.12)更新全文细节(2024.05.29) 注意&#x…

Altium Designer软件下载安装「专业PCB设计软件」Altium Designer安装包获取!

Altium Designer,这款软件凭借其全面的设计流程覆盖,从概念到实现,都能为电子工程师提供强大的支持。 在硬件设计方面,Altium Designer提供了丰富的元件库和灵活的布局选项,使得工程师能够轻松地进行电路设计&#xff…

万亿国债消防救援——北斗应急通讯设备类目推荐

近期,云贵川地区山火肆虐,山火大范围、远距离、独立密集地发生,给消防救援带来了巨大挑战。 消防应急工作是保障人民生命财产安全的重要环节,它涉及到预防火灾、及时应对火灾事故以及灾后恢复等多个方面。在应对火灾、事故和其他…

【旧文更新】【优秀课设】基于FPGA的Verilog HDL自动售货机

【旧文更新】基于FPGA的Verilog HDL自动售货机 文章目录 关于旧文新发FPGACortex-M架构SysTick系统定时器阻塞和非阻塞延时 附录:压缩字符串、大小端格式转换压缩字符串浮点数压缩Packed-ASCII字符串 大小端转换什么是大端和小端数据传输中的大小端总结大小端转换函…

数字化学校渠道的建造内容

数字化学校渠道的建造内容可以用阶段来区分: 1.网络硬件为主的建造 这一阶段首要重视的是学校网络的硬件基础建造,一起供给部分网络根本服务,与此一起,也进行部分信息使用内容的建造,如电子阅览室、归纳管理信息体系等…

CompletableFuture 异步与最佳实践

文章目录 CompletableFuture 异步-前言背景主要特性1. 异步任务执行2. 任务组合3. 异常处理4. 回调机制 最佳实践并行调用多个接口处理异常超时设置使用 Executor 自定义线程池总结 总结 CompletableFuture 异步-前言 在现代Java开发中,处理并发任务和异步编程已成…

Nginx配置及优化

Nginx配置及优化 前言nginx.conf拆分理解上线 最近在配置Nginx的时候,偶尔一些细致的理论有些模糊,配置起来费了点功夫,今天来详细写一下我个人的理解,文章参考了一些官网和其他优秀博主的文章http://t.csdnimg.cn/GbID9。 前言 …

[leetcode hot150]第二百三十六题,二叉树的最近公共祖先

题目: 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个…

测试基础07:测试工作流程规范、进度同步与把控

课程大纲 1、迭代测试流程 2、测试流程 2.1、测试用例评审 目的:对齐产品需求理解,完善、优化测试场景。 参与方:项目、产品、开发、测试。 用例内容:冒烟用例(主流程) 功能用例。 2.2、冒烟测试 提测…

ADF: 获取Data Lake Storage上的文件列表并根据文件名删除文件

假设 Data Lake 上有个test的文件夹,有如下文件 目标:使用Azure Data Factory的Pipeline获取这个目录下的文件名列表,并删除掉以"ETC"开头的文件。 步骤: 1. 需要在Linked services中新建一个能连接到Data Lake的连接…

javaScript 换行符的使用

最近新接收了一个项目&#xff0c;再做一个小功能点时&#xff0c;字符串需要增加换行&#xff0c;小小记录一下 1、标签换行 <br> 2、字符换行 \n&#xff0c;换行就是转到下一行输出。例如&#xff1a; console.log("hello\nworld!"); 在终端中将输出 he…

橙派探险记:开箱香橙派 AIpro 与疲劳驾驶检测的奇幻之旅

目录 引子&#xff1a;神秘包裹的到来 第一章&#xff1a;香橙派AIpro初体验 资源与性能介绍 系统烧录 Linux 镜像&#xff08;TF 卡&#xff09; 调试模式 登录模式 第二章&#xff1a;大胆的项目构想 系统架构设计 香橙派 AIpro 在项目中的重要作用 第三章&#xf…

C++模拟实现stack和queue

1 stack 1.1概念 stl栈 1.2栈概念 1.3代码 2 queue 2.1概念 stl队列 2.2队列概念 2.3代码

OLED显示一张图片

1.思路: void Oled_Show_Image(unsigned char *image) // { unsigned char i; //-128 ~ 127位 unsigned int j; //j要重新定义&#xff0c;因为要到达图片的最后一位 //行 i没有问题&#xff0c;j有问题 i为1时&am…