地平线x5下运行yolo11s-seg模型

经过地瓜机器人工作人员(感谢吴超同学)的及时技术支持,整体比较顺利的跑起来了yolo11s-seg分割模型。将一些经验记录下来:

首先下载使用docker镜像: https://developer.d-robotics.cc/forumDetail/228559182180396619 https://developer.d-robotics.cc/forumDetail/251934919646096384

本人使用的使用的docker环境是:openexplorer/ai_toolchain_ubuntu_20_x5_gpu   v1.2.6 

整体要跑起来yolo11s-seg模型,分为两部:

1、导出正确的onnx模型文件;

2、生成反量化的bin模型文件;

1、导出正确的onnx模型文件 

参考https://developer.d-robotics.cc/forumDetail/251934743552436332  和https://github.com/D-Robotics/rdk_model_zoo/blob/main/demos/Instance_Segmentation/YOLOv8-Seg/README_cn.md 1.1 下载项目

       git clone https://github.com/ultralytics/ultralytics.git

1.2 创建虚拟环境

      conda create -n yolov8 python=3.8 -y # 进入虚拟环境

      conda activate yolov8

1.3、卸载yolo

  • 卸载yolo相关的命令行命令,这样直接修改./ultralytics/ultralytics目录即可生效。
$ conda list | grep ultralytics
$ pip list | grep ultralytics # 或者
# 如果存在,则卸载
$ conda uninstall ultralytics 
$ pip uninstall ultralytics   # 或者

1.4、修改模型结构

  • 修改ultralytics/ultralytics/nn/modules/head.py中Detect类的forward部分,其余部分不变动
class Detect(nn.Module):def forward(self, x):results = []for i in range(self.nl):box = self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()cls = self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()results.append(cls)results.append(box)return tuple(results)
  • 修改ultralytics/ultralytics/nn/modules/head.py中Segment类的forward部分,其余部分不变动
class Segment(Detect):def forward(self, x):p = self.proto(x[0]).permute(0, 2, 3, 1).contiguous()  # mask protosresults = []for i in range(self.nl):box = self.cv2[i](x[i]).permute(0, 2, 3, 1).contiguous()cls = self.cv3[i](x[i]).permute(0, 2, 3, 1).contiguous()mask = self.cv4[i](x[i]).permute(0, 2, 3, 1).contiguous()results.append(cls)results.append(box)results.append(mask)results.append(p)return tuple(results)

1.5、进入python,导出onnx文件 

from ultralytics import YOLO

YOLO('yolo11s-seg.pt').export(imgsz=640, format='onnx', simplify=False, opset=11)

这里需要注意simplify参数,之前设置为true或没有设置,导致导出的onnx文件ir version为10,不满足后续check要求。设置为false后,目前导出的版本为6,可以正常使用;

2、生成反量化的bin模型文件

2.1、进入docker环境

    docker run -it -v /home/robot:/open_explorer openexplorer/ai_toolchain_ubuntu_20_x5_gpu:v1.2.6

2.2、check

(bpu_docker) $ hb_mapper checker --model-type onnx --march bayes-e --model yolov8n-seg.onnx

2.3、编译,需要下载校准文件并保存到calibration_data_rgb_f32文件夹里。参考目标检测yolov5的例子操作
(bpu_docker) $ hb_mapper makertbin --model-type onnx --config yolov8_instance_seg_bayese_640x640_nv12.yaml

2.4、进入编译结果文件,并查看可以移除的反量化节点

cd yolo11s_instance_seg_bayese_640x640_nv12

hb_model_modifier yolo11s_instance_seg_bayese_640x640_nv12.bin 

  • 在生成的hb_model_modifier.log文件中,找到以下信息。主要是找到大小为[1, 160, 160, 32]、[1, 80, 80, 64]、[1, 80, 80, 32]、[1, 40, 40, 64]、[1, 40, 40, 32]、[1, 20, 20, 64]、[1, 20, 20, 32] 这几个输出的名称(即除了分类以外的所有输出)。注意, 导出时这些名称可能不同, 请仔细确认.

2.5、 移除节点

hb_model_modifier yolo11s_instance_seg_bayese_640x640_nv12.bin -r "490_HzDequantize" -r "/model.23/cv2.0/cv2.0.2/Conv_output_0_HzDequantize" -r "/model.23/cv4.0/cv4.0.2/Conv_output_0_HzDequantize" -r "/model.23/cv2.1/cv2.1.2/Conv_output_0_HzDequantize" -r "/model.23/cv4.1/cv4.1.2/Conv_output_0_HzDequantize" -r "/model.23/cv2.2/cv2.2.2/Conv_output_0_HzDequantize" -r "/model.23/cv4.2/cv4.2.2/Conv_output_0_HzDequantize"

移除后的模型为:yolo11s_instance_seg_bayese_640x640_nv12_modified.bin,至此模型文件生成完成。

2.6、运行验证

将模型拷贝到x5板子上:

scp D:\X3\yolo_seg\yolo11s_instance_seg_bayese_640x640_nv12_modified.bin sunrise@172.16.3.126:/home/sunrise/yolo_seg

在修改workconfig.json文件,将其中的model_file修改对应模型文件名。注意:dnn_Parser参数不要修改

然后就可以用教程的命令运行了

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

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

相关文章

linux驱动—注册总线分析

成功地在直接注册了一个总线,并且在总线目录下创建了属性文件,什么会在 sys/bus 目录下生成 mybus,目录以及对应的 devices,drivers, drivers_autoprobe,drivers_probe,uevent目录和属性呢? /sys,目录下的目录都对应一个kobject,…

如何成为录屏高手?2024年全新录屏工具梳理,你选对了吗?

如何录屏?录屏现在对我们来说太重要了,不管是做教学视频、演示文稿,还是录游戏或者教别人怎么用软件,都离不开录屏工具。但是市面上录屏软件一大堆,挑个适合自己的真不容易。今天,我就来给你介绍几款特别火…

知识图谱解码:AI 如何构建知识网络

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 AI工具集1:大厂AI工具【共23款…

凸轮应用实例(带进料装置的伺服压机控制)

凸轮表凸轮关系曲线建立 博途S7-1500T PLC曲柄连杆模型仿真(电子凸轮完整配置+SCL源代码)-CSDN博客文章浏览阅读4次。这篇博客介绍了曲柄连杆机构的位移与曲柄转动角度关系,通过MATLAB进行计算和Simulink验证,并提供博途SCL源代码。文章链接提供了详细的曲柄连杆数学模型分析…

分布式理论基础

文章目录 1、理论基础2、CAP定理1_一致性2_可用性3_分区容错性4_总结 3、BASE理论1_Basically Available(基本可用)2_Soft State(软状态)3_Eventually Consistent(最终一致性)4_总结 1、理论基础 在计算机…

WASM 使用说明23事(RUST实现)

文章目录 1. wasm是什么1.1 chatgpt定义如下:1.2 wasm关键特性: 2. wasm demo2.1 cargo 创建项目2.2 编写code2.3 安装wasm-pack2.4 编译 3.1 html页面引用wasm代码(js引用)3.2 访问页面4 导入js function4.1 编写lib.rs文件,内容…

【SpringCloud】06-Sentinel

1. 雪崩问题 一个微服务出现问题导致一系列微服务都不可以正常工作。 服务保护方案: 请求限流。线程隔离。 服务熔断 2. Sentinel 启动Sentinel java -Dserver.port8090 -Dcsp.sentinel.dashboard.serverlocalhost:8090 -Dproject.namesentinel-dashboard -ja…

【已解决】C# NPOI如何在Excel文本中增加下拉框

前言 上图&#xff01; 解决方法 直接上代码&#xff01;&#xff01;&#xff01;&#xff01;综合了各个大佬的自己修改了一下&#xff01;可以直接规定在任意单元格进行设置。 核心代码方法块 #region Excel增加下拉框/// <summary>/// 增加下拉框选项/// </s…

centeros7 编译ffmpeg

使用yum安装的路似乎已经堵住了&#xff0c;请求的镜像全是404或503 1.打开终端并使用yum安装EPEL存储库(Extra Packages for Enterprise Linux)&#xff1a;sudo yum install epel-release2.接下来&#xff0c;使用以下命令来安装FFmpeg&#xff1a;sudo yum install ffmpeg …

有关spring,springboot项目的知识点

文章目录 1.Spring基本介绍1.1Spring官网1.2Spring的发展 2.SpringBoot2.1SpringBoot快速入门2.1.1创建SpringBoot工程,并勾选web开发相关依赖2.1.2定义HelloController类,并添加方法helllo,且添加注解2.1.3运行测试 3.HTTP协议3.1HTTP协议的概念3.1.1HTTP的特点 3.2HTTP-请求协…

YOLOv8_ ByteTrack目标跟踪、模型部署

YOLOv8目前支持BoT-SORT和ByteTrack两种多目标跟踪算法&#xff0c;默认的目标跟踪算法为BoT-SORT 如果要使用ByteTrack跟踪算法&#xff0c;可以添加命令行参数trackerbytetrack.yaml 一、 VisDrone2019数据集 VisDrone&#xff1a;无人机目标检测和追踪基准数据集。&#x…

《云原生安全攻防》-- K8s攻击案例:权限维持的攻击手法

在本节课程中&#xff0c;我们将一起深入了解K8s权限维持的攻击手法&#xff0c;通过研究这些攻击手法的技术细节&#xff0c;来更好地认识K8s权限维持所带来的安全风险。 在这个课程中&#xff0c;我们将学习以下内容&#xff1a; K8s权限维持&#xff1a;简单介绍K8s权限维持…

【大模型理论篇】主流大模型的分词器选择及讨论(BPE/BBPE/WordPiece/Unigram)

1. 背景分析 分词是将输入和输出文本拆分成更小单位的过程&#xff0c;使得大模型能够处理。token可以是单词、字符、子词或符号&#xff0c;取决于模型的类型和大小。分词可以帮助模型处理不同的语言、词汇和格式&#xff0c;并降低计算和内存成本。分词还可以通过影响token的…

10-1.idea中的项目结构,辅助快捷键,模块的操作

idea中的项目结构和辅助快捷键 IDEA中项目结构 首先是创建项目&#xff0c;新建的项目中有子项目&#xff0c;我们可以创建模块 然后在模块中我们可以创建包&#xff0c;在包中的SRC中写我们的源代码&#xff0c;也就是类。 VScode写Java项目 如何你电脑比较卡的话&#…

Java中自增自减,赋值,逻辑,三元运算符

自增自减运算符 在某个变量前面或者后面加一--在某个变量前面或者后面减一 可以看见&#xff0c;当a输出时&#xff0c;a是没有变化的&#xff0c;说明如果是在变量后就是先使用再增加&#xff0c;而b输出时&#xff0c;b增加了1&#xff0c;说明如果是在变量前面就是先增加再…

【elkb】linux麒麟v10安装ELKB 8.8.X版本(ARM架构)

下载软件 相关版本信息 elasticsearch&#xff1a;8.8.1kibana&#xff1a;8.8.1logstash&#xff1a;8.8.1filebeat&#xff1a;8.8.1 下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.1-linux-aarch64.tar.gzhttps://artifacts.elastic…

配置nginx服务通过ip访问多网站

文章目录 第一种方法第二种方法 先关闭防火墙 # systemctl stop firewalld # setenforce 0第一种方法 #mntui 第二种方法 # vim /etc/nginx/conf.d/test_ip.conf # cat /etc/nginx/conf.d/test_ip.conf server {listen 192.168.234.100:80;#server_nameroot /test/100;loca…

PostgreSQL使用clickhouse_fdw访问ClickHouse

Postgres postgres版本&#xff1a;16&#xff08;测试可用&#xff09;docker 安装 插件安装 clickhouse_fdw: https://github.com/ildus/clickhouse_fdw 安装命令 git clone gitgithub.com:ildus/clickhouse_fdw.git cd clickhouse_fdw mkdir build && cd build…

文件下载漏洞

文件安全 文件下载 常见敏感信息路径 Windows C:\boot.ini //查看系统版本 C:\Windows\System32\inetsrv\MetaBase.xml //IIS配置文件 C:\Windows\repair\sam //存储系统初次安装的密码 C:\Program Files\mysql\my.ini //Mysql配置 C:\Program Files\mysql\data\mysql\user.…

【目标检测01】真实框、预测框、锚框和交并比IoU

文章目录 1. 任务定义2. 基本概念2.1 边界框&#xff08;bounding box&#xff09;2.2 真实框、预测框和锚框2.3 交并比 (IoU)2.4 代码实现 1. 任务定义 目标检测的主要目的是让计算机可以自动识别图片或者视频帧中所有目标的类别&#xff0c;并在该目标周围绘制边界框&#x…