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,一经查实,立即删除!

相关文章

[C++] 小游戏 能量 1.0.3 版本 zty出品

大家好,今天zty带来的是能量的1.0.3版本,此版本可以存档(自动的),用于保存战绩,在运行时会跳出主菜单,而不是直接开始游戏,辅助游戏的函数大小总和已经超过了游戏主体,zt…

01-IaC CloudFormation的必要性和使用方法

前言 将应用的需求、开发、测试、部署和运营统一起来,基于整个组织的协作和应用架构的优化,实现敏捷开发、持续交付和应用运营的无缝 集成。帮助企业提升IT效能,在保证稳定的同时,快速交付高质量的软件及服务,灵活应对快速变化的业务需求和市场环境。 1 持续交付 持续交…

Pandas教程:详解如何使用Pandas操作数据库

目录 1. 环境准备 2. 建立与数据库的连接 连接参数详解: 3. 从数据库读取数据 使用参数化查询 4. 将数据写入数据库 if_exists 参数详解: 5. 更新和删除数据 更新数据 删除数据 6. 实战案例 6.1 创建数据库和表 6.2 插入示例数据 6.3 更新…

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

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

Nacos 相关面试问题及答案

Nacos 是什么? Nacos (Naming and Configuration Service) 是一个开源项目,是由 Alibaba 开发的,它致力于提供动态服务发现、服务健康监测、动态配置服务以及服务管理的平台,它被设计用于帮助构建云原生应用,是微服务…

求最大公约数与最小公倍数(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的方格中所有的数都相同 遍历…

开始写人工智能

文章目录 概述 概述 开始写人工智能模块。既然决定开始写这些&#xff0c;那就开始吧&#xff01;

linux命令常见功能性分类整理

linux怎么解决空间不足的情况 检查空间占用&#xff1a; df -h找出占用空间的文件或目录&#xff1a; du -sh /* du -sh /path/*清理缓存&#xff08;取决于你使用的Linux发行版&#xff09;&#xff1a; 对于Ubuntu/Debian&#xff1a; sudo apt-clean对于CentOS/Red Hat&…

【用户会话信息在异步事件/线程池的传递】

用户会话信息在异步事件/线程池的传递 author:shengfq date:2024-07-29 version:1.0 背景: 同事写的一个代码功能,是在一个主线程中通过如下代码进行异步任务的执行,结果遇到了问题. 1.ThreadPool.execute(Runnable)启动一个子线程执行异步任务 2.applicationContext.publis…

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 …

质量小议41 -- 讲究 与 将就

你的质量是”讲究“ 还是 ”将就“ ”讲究“ 好还是 ”将就” 好 适用就好&#xff0c;是 “讲究” 还是 “将就” 质量在哪里&#xff1f; 价值在哪里&#xff1f; 讲究 注重&#xff0c;重视&#xff0c;力求完美&#xff1b;精美&#xff0c;完善&#xff1b;做…

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

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

Ubuntu安装和简单操作MySQL工具

一、MySQL数据库的起源 MySQL 是一个开源的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;其起源可以追溯到 1994 年。MySQL 最初是由瑞典公司 MySQL AB 开发的&#xff0c;该公司由 Michael “Monty” Widenius、Allan Larsson 和 David Axmark 于 1995 年成…

ruoyi框架的优缺点

若依框架的优缺点 ‌若依框架的优点包括&#xff1a; 优秀的性能表现&#xff1a;ruoyi框架以其优秀的性能表现&#xff0c;能够高效地处理各种开发任务。 多种组件支持&#xff1a;提供了多种组件的支持&#xff0c;使得开发者能够灵活地选择和使用各种工具和技术。 强大的…