RV1126平台下的MobileSeg量化指南:高效部署低算力硬件

news2025/1/25 9:21:09

1 引言

MobileSeg系列模型采用编解码架构,并以轻量级模型作为骨干网络,专为低算力硬件(如BPU、NPU、ARM CPU等)设计。这使得MobileSeg在边缘设备和移动端应用中表现出色,具备高效能和灵活性。本文将以MobileSeg分割模型为例,详细讲解如何在RV1126平台上进行模型量化操作,最大化发挥模型的性能优势。

2 环境声明

2.1 训练环境

  • 操作系统:Ubuntu 20.04 x86_64
  • 包管理工具:conda 24.3.0
  • 依赖库:PaddleSeg 版本 2.8.1

2.2 部署环境

  • 操作系统:Ubuntu 18.04 x86_64
  • 工具包:rknn-toolkit 1.7.5
  • 驱动支持:rknpu 1.7.3

注意:如果你不清楚如何安装rknn环境,可以参考【一步步搭建 RV1126 深度学习环境,轻松实现边缘推理】了解详细的安装步骤。

3 量化步骤

3.1 Paddle模型转换为ONNX格式

1、安装PaddleSeg环境。使用conda安装PaddleSeg环境,具体步骤请参考【PaddleSegGetStarted】。下载并安装PaddleSeg代码,确保环境正确配置,代码下载包位于,此处(https://github.com/PaddlePaddle/PaddleSeg/releases/tag/v2.8.0)。
2、本次实验使用MobileSeg模型,选择MobileNetV3作为Backbone进行分割模型测试。
在这里插入图片描述

3、下载模型保存到本地,此此使用模型配置文件,路径为:PaddleSeg/configs/mobileseg/mobileseg_mobilenetv3_cityscapes_1024x512_80k.yml

4、执行以下命令将下载的模型转换为pdmodel格式。

python tools/export.py 
--config configs/mobileseg/mobileseg_mobilenetv3_cityscapes_1024x512_80k.yml \
--model_path runs/mobileseg.official.v3/weights/model.pdparams \
--save_dir runs/mobileseg.official.v3/export/ \
--input_shape 1 3 512 512 --output_op none

执行成功后显示如下:
在这里插入图片描述

5、安装paddle2onnx,该工具用于将pdmodel转换为onnx格式。

pip install paddle2onnx==1.2.5 -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple 

在这里插入图片描述

6、使用以下命令将pdmodel模型转换为onnx格式。

paddle2onnx \
--model_dir runs/mobileseg.official.v3/export/ \
--model_filename model.pdmodel \
--params_filename model.pdiparams \
--opset_version 11 \
--save_file runs/mobileseg.official.v3/export/mobileseg_m3.onnx

在这里插入图片描述

7、执行Paddle优化策略(如有需要),进一步提升模型的推理性能:

python -m paddle2onnx.optimize --input_model runs/mobileseg.official.v3/export/mobileseg_m3.onnx --output_model runs/mobileseg.official.v3/export/mobileseg_m3.onnx

3.2 从ONNX到RKNN模型的转换

1、执行形状推断(Shape Inference)。由于得到的模型输入为[1, 3, 512, 512],且输出尺寸是动态的,需使用onnxsim进行形状推断(Shape Inference)以确定模型的完整形状。
在这里插入图片描述

onnxsim runs/mobileseg.official.v3/export/mobileseg_m3.onnx runs/mobileseg.official.v3/export/mobileseg_m3.sim.onnx

2、使用rknn-toolkit进行模型转换。在基于rknn-toolkit的conda环境中,执行转换脚本convert.py,将ONNX模型转换为RKNN格式。

python convert.py

在这里插入图片描述

主要配置如下
rknn.config参数
在这里插入图片描述

rknn.build参数
在这里插入图片描述

3、编译RKNN预编译模型。使用rknn-toolkit将模型编译为预编译模型,输出文件名为mobileseg_m3.hw.rknn。如果你不清楚如何预编译,可以参考我的预编译技术指导。
4、编写C++代码进行性能测试。使用C++编写代码,进行模型的性能测试,评估其在RV1126上的运行效果。

4 性能评估

我们分别运行模型推理5000次,观察推理时间的稳定性。在本次性能评估中,我们对比了绑定核心与不绑定核心两种配置下,NPU推理时间的变化。以下是绑定核心CPU的动态利用情况。
在这里插入图片描述

经过结果分析,发现在定频后绑定核心对NPU的稳定性存在不稳定性干扰。平均值前者是38.52ms,后者是38.46ms,相差不是很大。
在这里插入图片描述

5 技术交流

MobileSeg模型

5.1 QQ群

RKNN非官方交流909472035

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

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

相关文章

随手记:小程序兼容后台的wangEditor富文本配置链接

场景&#xff1a; 在后台配置wangEditor富文本&#xff0c;可以文字配置链接&#xff0c;图片配置链接&#xff0c;产生的json格式为&#xff1a; 例子&#xff1a; <h1><a href"https://uniapp.dcloud.net.cn/" target"_blank"><span sty…

RabbitMQ的核心组件有哪些?

大家好&#xff0c;我是锋哥。今天分享关于【RabbitMQ的核心组件有哪些&#xff1f;】面试题。希望对大家有帮助&#xff1b; RabbitMQ的核心组件有哪些&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 RabbitMQ是一个开源的消息代理&#xff08;Messag…

html基础-认识html

1.什么是html html是浏览器可以识别的的标记语言&#xff0c;我们在浏览器浏览的网页就是一个个的html文档 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>认识html</title> </head> <body><h1…

电子应用设计方案-59:智能电动床系统方案设计

智能电动床系统方案设计 一、引言 智能电动床作为一种高端家居产品&#xff0c;旨在为用户提供更加舒适、便捷和个性化的睡眠体验。本方案将详细介绍智能电动床系统的设计架构、功能特点和技术实现。 二、系统概述 1. 系统目标 - 实现床体的多部位电动调节&#xff0c;满足不…

【半导体二极管】

半导体二极管 半导体二极管是由两种不同类型的半导体材料&#xff08;N型和P型&#xff09;通过特定工艺结合而成的电子元器件。其基本结构为PN结。二极管的主要功能是控制电流的单向流动&#xff0c;即允许电流仅在一个方向流动&#xff0c;在反向电压作用下几乎不导电。 1.…

SpringBoot 新特性

优质博文&#xff1a;IT-BLOG-CN 2.1.0新特性最低支持jdk8,支持tomcat9 对响应式编程的支持&#xff0c;spring-boot-starter-webflux starter POM可以快速开始使用Spring WebFlux&#xff0c;它由嵌入式Netty服务器支持 1.5.8 2.1.0/2.7.0/3.0.0 Configuration propertie…

企业车辆管理系统(源码+数据库+报告)

一、项目介绍 352.基于SpringBoot的企业车辆管理系统&#xff0c;系统包含两种角色&#xff1a;管理员、用户,系统分为前台和后台两大模块 二、项目技术 编程语言&#xff1a;Java 数据库&#xff1a;MySQL 项目管理工具&#xff1a;Maven 前端技术&#xff1a;Vue 后端技术&a…

【Redis篇】Set和Zset 有序集合基本使用

目录 Set 基本命令 sadd SMEMBERS SISMEMBER SCARD 返回值&#xff1a; SPOP SMOVE SREM 集合间操作 交集&#xff1a; 并集&#xff1a; 差集&#xff1a; ​编辑 内部编码 使用场景&#xff1a; Zset 有序集合 Zset基本命令 ZADD ZCARD ZCOUNT ZRANGE …

ASRPRO学习笔记一之语音模型位置和语音替换

一、语音替换的步骤 1、扬声器录音 打开GoldWave,点击工具栏中的蓝色控制属性按钮&#xff0c;点击设备&#xff0c;选择扬声器&#xff0c;点击ok。打开电脑上的网易云音乐&#xff0c;点击红色的录制按钮&#xff0c;开始录制音乐&#xff0c;在网易云音乐上点击播放音乐,录…

2.12.顺序表和链表的比较

一.逻辑结构&#xff1a; 二.物理结构/存储结构&#xff1a; 1.顺序表&#xff1a; 优点&#xff1a;顺序表采用顺序存储的方式实现了线性表&#xff0c;由于采取了顺序存储&#xff0c;而且各个数据元素的内存大小相等&#xff0c;因此只需要知道该顺序表的起始地址即可立即找…

OSLC助力系统工程的全生命周期整合 (转)

本文作者胡振超&#xff0c;上海交通大学博士研究生。课题牵头人为鲁金直&#xff0c;瑞典皇家理工学院博士。本项目有Ericsson.SE高级顾问顾文卿&#xff0c;中科蜂巢相关工程师相关工程师所提供的基于多架构建模Karma语言的自主多架构建模工具MetaGraph、OSLC数据整合工具Dat…

electron打包linux环境

注意:新版的electron已经不支持在win上直接打包Linux的环境了,服务会卡住,会一直生成文件占用磁盘(我发现的时候占了我100G&#xff0c;而且文件夹很深&#xff0c;找了java代码while循环&#xff0c;好不容易删除的o(╥﹏╥)o) electron有一个专门打包的docker镜像&#xff0c…

活动预告|云原生创新论坛:知乎携手 AutoMQ、OceanBase、快猫星云的实践分享

近年来&#xff0c;云原生技术迅猛发展&#xff0c;成为企业数字化转型的关键动力&#xff0c;云原生不仅极大地提升了系统的灵活性和可扩展性&#xff0c;还为企业带来了前所未有的创新机遇。 12 月 28 日 知乎携手 AutoMQ、OceanBase 和快猫星云推出“云原生创新论坛”主题的…

AMS1117芯片驱动电路·降压芯片的驱动电路详解

编写不易&#xff0c;仅供学习&#xff0c;请勿搬运&#xff0c;感谢理解 AMS1117驱动电路 很常用的一种LDO降压芯片&#xff0c;LDO(Low Dropout Regulator)降压芯片是线性稳压器&#xff0c;这种IC因为内部集成的不是开关电路&#xff0c;只能将输入与输出的电压差值通过内部…

[论文阅读]Universal and transferable adversarial attacks on aligned language models

Universal and transferable adversarial attacks on aligned language models http://arxiv.org/abs/2307.15043 图 1&#xff1a;Aligned LLMs 不是对抗性 Aligned。我们的攻击构建了一个单一的对抗性提示&#xff0c;该提示始终绕过最先进的商业模式&#xff08;包括 ChatG…

【HarmonyOS之旅】HarmonyOS开发基础知识(一)

目录 1 -> 应用基础知识 1.1 -> 用户应用程序 1.2 -> 用户应用程序包结构 1.3 -> Ability 1.4 -> 库文件 1.5 -> 资源文件 1.6 -> 配置文件 1.7 -> pack.info 1.8 -> HAR 2 -> 配置文件简介 2.1 -> 配置文件的组成 3 -> 配置文…

DDoS工作原理

原理 原理解释1 DDoS攻击的核心原理是利用大量的恶意请求占用过多的资源&#xff0c;使目标系统无法处理正常的请求。 这些恶意请求可以包括数据包或请求&#xff0c;通常通过分布式网络进行发送&#xff0c;利用多个计算机或设备协同攻击。 这些被控制的计算机或设备被称为“…

搭建springmvc项目

什么是springmvc MVC它是一种设计理念。把程序按照指定的结构来划分: Model模型 View视图 Controller控制层 springmvc框架是spring框架的一个分支。它是按照mvc架构思想设计的一款框架。 springmvc的主要作用: 接收浏览器的请求数据&#xff0c;对数据进行处理&#xff0c;…

【USB-HID】“自动化键盘“ - 模拟键盘输入

目录 【USB-HID】"自动化键盘" - 模拟键盘输入1. 前言2. 模拟键盘2.1 STM32CubeMX 配置2.2 修改代码配置2.3 发送按键信息 3. 接收主机Setup数据3.1 获取PC下发的数据 4. 总结 【USB-HID】“自动化键盘” - 模拟键盘输入 1. 前言 对于模拟键盘的实现&#xff0c;网…

Scratch圣诞节作品 | 礼物快递大作战——限时挑战,传递圣诞惊喜! ✨

今天为大家推荐一款紧张又趣味十足的Scratch圣诞小游戏——《礼物快递大作战》&#xff01;由CreativeCatStudios制作&#xff0c;这款作品用简单的操作、快节奏的玩法&#xff0c;将圣诞节的礼物传递任务变成了一场冒险挑战&#xff01;更棒的是&#xff0c;这款游戏的源码可以…