当前位置: 首页 > news >正文

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

  特别说明:参考官方开源的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 torchself.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++完整部署代码和模型示例参考

相关文章:

  • python脚本加入到linux bin 方便用户执行
  • [Algorithm][动态规划][子序列问题][最长递增子序列][摆动序列]详细讲解
  • JDK JRE JVM 三者的关系
  • CCF-GESP 2024 四级T1相似字符串
  • 多输入多输出非线性对象的模型预测控制—Matlab实现
  • K8s:Pod初识
  • aws emr启动standalone的flink集群
  • 使用 Apache Commons Exec 管理外部进程
  • 【计算机网络】——概述(图文并茂)
  • oracle中的INTERVAL函数学习总结
  • 50etf期权上市时间是什么时候?50etf期权对应的标的
  • 2022年全国职业院校技能大赛高职组“信息安全管理与评估”赛项第三阶段任务书
  • GolangFoundation
  • CSS学习笔记目录
  • 安装Lubuntu24.04
  • 2017 年终总结 —— 在路上
  • java B2B2C 源码多租户电子商城系统-Kafka基本使用介绍
  • maven工程打包jar以及java jar命令的classpath使用
  • python_bomb----数据类型总结
  • React-Native - 收藏集 - 掘金
  • SpringBoot几种定时任务的实现方式
  • Terraform入门 - 3. 变更基础设施
  • Vue 动态创建 component
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 第2章 网络文档
  • 记录:CentOS7.2配置LNMP环境记录
  • 检测对象或数组
  • 简单实现一个textarea自适应高度
  • 两列自适应布局方案整理
  • 聊聊directory traversal attack
  • 使用API自动生成工具优化前端工作流
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • #07【面试问题整理】嵌入式软件工程师
  • #FPGA(基础知识)
  • #ubuntu# #git# repository git config --global --add safe.directory
  • $jQuery 重写Alert样式方法
  • (35)远程识别(又称无人机识别)(二)
  • (附源码)spring boot基于小程序酒店疫情系统 毕业设计 091931
  • (附源码)ssm教师工作量核算统计系统 毕业设计 162307
  • (计算机网络)物理层
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (四)Tiki-taka算法(TTA)求解无人机三维路径规划研究(MATLAB)
  • (四)模仿学习-完成后台管理页面查询
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (原)Matlab的svmtrain和svmclassify
  • (转)c++ std::pair 与 std::make
  • (转)一些感悟
  • (最新)华为 2024 届秋招-硬件技术工程师-单板硬件开发—机试题—(共12套)(每套四十题)
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .Net Redis的秒杀Dome和异步执行