yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境

当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行,如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机,所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机,需要的可以通过网盘获取:链接:https://pan.baidu.com/s/1rg5EopPmctB-0kQAG7fm0Q 提取码:98k9 

yolov8的环境搭建和测试

获取yolov8的工程:GitHub - THU-MIG/yolov10: YOLOv10: Real-Time End-to-End Object Detection

搭建环境:

cd /home/kkx3/wyj/yolov10/
git clone https://github.com/THU-MIG/yolov10.git
conda create -n yolov10 python=3.9
conda activate yolov10
cd yolov10
pip install -r requirements.txt
pip install -e . -i https://pypi.tuna.tsinghua.edu.cn/simple

测试

#测试
yolo predict model=model/yolov10s.pt

1、模型转换(onnx)

#转onnx模型
yolo export model=model/yolov10s.pt format=onnx opset=11 simplify

由于原模型的后处理部分存在在X3板端运行报错的问题需要修改源码,修改如下

#修改文件路径
/home/kkx3/wyj/yolov10/yolov10-main/ultralytics/nn/modules/head.py

修改如下(使用一下代码替换原forward函数)

    def forward(self, x):one2one = self.forward_feat([xi.detach() for xi in x], self.one2one_cv2, self.one2one_cv3)if not self.export:one2many = super().forward(x)if not self.training:one2one = self.inference(one2one)            if not self.export:return {"one2many": one2many, "one2one": one2one}else:return one2one.permute(0, 2, 1)#assert(self.max_det != -1)#boxes, scores, labels = ops.v10postprocess(one2one.permute(0, 2, 1), self.max_det, self.nc)#return boxes, scores, labels#return torch.cat([boxes, scores.unsqueeze(-1), labels.unsqueeze(-1).to(boxes.dtype)], dim=-1)else:return {"one2many": one2many, "one2one": one2one}    

2、x3板端模型转换和搭建环境

将上述转换出来的onnx模型复制到X3的模型转换路径下

#模型复制的秒路径
/home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/01_common/model_zoo/mapper/detection/yolov10_onnx_optimized/yolov10s.onnx

搭建模型转换的环境和修改配置文件完成模型转换

cd /home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/04_detection/08_yolov10s/mapper
conda activate x3model

模型转换运行脚本01_check.sh

修改文件、配置模型路径

运行脚本

bash 01_check.sh

模型转换运行脚本02_preprocess.sh

修改文件、配置模型路径(当前无需修改)

运行脚本

bash 02_preprocess.sh

模型转换运行脚本03_build.sh

修改文件、配置模型路径

运行脚本

bash 03_build.sh

模型输出路径

/home/kkx3/wyj/x3/TransModel/horizon_model_convert_sample/04_detection/08_yolov10s/mapper/model_output/yolov10s_640x640_nv12.bin

将模型复制到板端就可以测试了

3、python版本测试

测试工程复制到板端

开始测试

cd /app/pydev_demo/09_yolov10_sample
./test_yolov10.py

测试结果

4、c++版本测试

测试工程复制到板端

开始测试

cd /app/cdev_demo/bpu_yolov10/src
make clean && make
cd /app/cdev_demo/bpu_yolov10/src/bin./sample -f ./yolov10s_640x640_nv12.bin -m 0

测试效果

yolov10在地平线旭日X3派上的测试视频

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

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

相关文章

OpenBayes 教程上新 | 文生图、图生图、图像修复三合一神器, HiDiffusion 一键启动教程现已上线!

扩散模型已成为高分辨率图像合成的主流方法,传统的扩散模型虽然在图像合成方面取得了显著进展,但在扩展到更高分辨率时往往面临对象重复和计算成本增加的问题。 旷世科技开源的高分辨率框架 HiDiffusion,由分辨率感知 U-Net (RAU-Net) 和改进…

求最大公约数与最小公倍数(C语言 简洁快速版)

求最大公约数 辗转相除法(首选,因为简单快捷) 思路: 1.将两整数求余 a%b c 2.如果c 0;则b为最大公约数 3.如果c ! 0,则 a b;b c;继续从1开始执行 4.也就是说该循环的是否继续的判断条件就是c是否为0 …

3.4、图

图的介绍 图也是一种非线性结构,图中任意两个节点间都可能有直接关系。相关定义如下: 无向图:图的结点之间连接线是没有箭头的,不分方向。 有向图:图的结点之间连接线是箭头,区分A到B,和B到A是两条线。 …

Codeforces 962 div3 A-F

A 题目分析 签到 C代码 #include<iostream> using namespace std; int main(){int t;cin>>t;while(t--){int n;cin>>n;cout<<n/4n%4/2<<endl;} } B 题目分析 将n*n的方格分成若干个k*k的方格&#xff0c;每个k*k的方格中所有的数都相同 遍历…

SwiftUI知识点(四)

NavigationStack import SwiftUIstruct NavigationStackBootcamp: View {let fruits ["Apple", "Orange", "Banana"]///路径数组State private var stackPath: [String] []var body: some View {NavigationStack(path: $stackPath) {VStack{B…

RocketMQ的Admin Tool工具

文档&#xff1a;https://github.com/apache/rocketmq/blob/develop/docs/cn/operation.md写的很全面&#xff0c;我写了一半就偷懒了&#xff0c;地址放这里。 命令大全&#xff1a;https://github.com/apache/rocketmq/blob/develop/docs/cn/operation.md 1. 删除讨厌的告警…

文献笔记|综述|A Survey of Large Language Models (前3章)

A Survey of Large Language Models 题目&#xff1a;大语言模型综述 作者&#xff1a;Wayne Xin Zhao, Kun Zhou, Junyi Li et al. 来源&#xff1a;arXiv 单位&#xff1a;中国人民大学高瓴人工智能学院、中国人民大学信息学院 关键词&#xff1a;Large Language Models; Eme…

AI之AI by Hand:AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略

AI之AI by Hand&#xff1a;AI by Hand(手动自定义AI算法的数学逻辑)的简介、使用方法、案例应用之详细攻略 目录 AI by Hand的简介 AI by Hand的使用方法 1、解读混合专家&#xff08;MoE&#xff09; 2、解读LSTM (Long Short-Term Memory) AI by Hand的案例应用 AI by …

学习大数据DAY25 Shell脚本的书写2与Shell工具的使用

目录 自定义函数 递归-自己调用自己 上机练习 12 Shell 工具 sort sed awk 上机练习 13 自定义函数 name(){ action; } function name { Action; } name 因为 shell 脚本是从上到下逐行运行&#xff0c;不会像其它语言一样先编译&#xff0c;所以函数必 须在调…

MyBatis-Plus自动生成代码

目录 前言一. 什么是 MyBatis-Plus1. Mybatis-Plus 的特点2. Mybatis-Plus 结构二. MyBatis-Plus 自动生成步骤1. 数据库准备2. 环境准备(1) 创建一个空的 Spring Boot 工程(2) 导入pom依赖(3) 编辑application.yml文件(4) 在启动类加入 @MapperScan 注解3. 配置代码4. 运行三.…

江科大/江协科技 STM32学习笔记P15

文章目录 TIM输出比较1、输出比较简介2、PWM简介3、输出比较通道&#xff08;高级&#xff09;4、输出比较通道&#xff08;通用&#xff09;5、输出比较模式6、PWM基本结构参数计算 7、舵机简介8、直流电机及驱动简介驱动芯片 TIM输出比较 1、输出比较简介 CNT计数器&#x…

VUE3——003、VUE 项目中的文件结构(index.html、main.ts、App.vue)

虽然是号称是小白初学&#xff0c;但本文只是对 VUE 小白&#xff0c;其它的基功还是有一丢丢的&#xff0c;不太懂的同学去看看一下详解&#xff0c;我这里记述的是自己的理解和观点。见谅&#xff01; index.html&#xff1a;入口文件&#xff08;以创建 vue3 项目的默认文件…

ElasticSearch(es)倒排索引

目录 一、ElasticSearch 二、倒排索引 1. 正向索引 2. 倒排索引 具体细节 1. 文档分析 2. 索引构建 3. 索引存储 4. 词条编码 5. 索引优化 6. 查询处理 示例 总结 3. 正向和倒排 三、总结 倒排索引的基本概念 为什么倒排索引快 一、ElasticSearch Elasticsear…

Vue 3 中使用 InMap 绘制热力图

本文由ScriptEcho平台提供技术支持 项目地址&#xff1a;传送门 Vue 3 中使用 InMap 绘制热力图 应用场景介绍 InMap 是一款强大的地图组件库&#xff0c;它提供了一系列丰富的可视化功能&#xff0c;包括热力图。热力图可以将数据点在地图上以颜色编码的方式可视化&#x…

论文阅读_字节的语音生成模型_Seed-TTS

英文名称: Seed-TTS: A Family of High-Quality Versatile Speech Generation Models 中文名称: Seed-TTS&#xff1a;高质量多功能语音生成模型系列 链接: http://arxiv.org/abs/2406.02430v1 代码: https://github.com/BytedanceSpeech/seed-tts-eval (评测工具) 演示网站&am…

找出所有点到一个点的距离的最小值

这个题的看一眼有点像树形dp&#xff0c;但是要怎么去优化我们转移方程呢 这是为什么呢&#xff0c;我们的树形dp很难考虑来之前的答案&#xff0c;那么d[y] 怎么办&#xff0c;我们可以先以1为根计算出以1为根的答案 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.…

js 计算小数精度问题 ,引入decimal.js库 解决

安装 npm install --save decimal.js 引入 import Decimal from "decimal.js" 使用 new Decimal function adddDecimals (...decimals) { let sum new Decimal(0) decimals.forEach(decimal > { sum sum.plus(decimal) }) return sum.toNumber() } const res …

【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C日常刷题积累 今日刷题汇总 - day0251、笨小猴1.1、题目1.2、思路1.3、程序实现 2、主持人调度&#xff08;一&#xff09;2.1、题目2.2、思路2.3、程序实现 3、分割等和子集3.1、题目3.2、思路3.3、程序实现 -- 0/1背包问题 4、题目链接 今日刷题汇总 - day025 1、笨小猴 1…

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…