首页 > 其他分享 >RV1126平台下的MobileSeg量化指南:高效部署低算力硬件

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

时间:2024-12-18 23:28:59浏览次数:10  
标签:runs mobileseg -- 模型 official RV1126 低算力 export MobileSeg

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

标签:runs,mobileseg,--,模型,official,RV1126,低算力,export,MobileSeg
From: https://blog.csdn.net/github_37287822/article/details/144571407

相关文章

  • RV1126移植安装gdb过程笔记
            ‌GDB(‌GNUDebugger)是一个由GNU开源组织发布的程序调试工具,主要用于‌Unix/‌Linux系统,是嵌入式软件工程师调试用的比较多的一种工具,又称GNU调试器,是用来帮助调试我们程序的工具。本文主要记录在x86Ubuntu环境下使用交叉编译工具链,编译生成RV1126开发板适......
  • 【瑞芯微RV1126(板端摄像头图像数据采集)】②使用v4l2视频设备驱动框架采集图像数据
    RV1126开发板:使用v4l2视频设备驱动框架采集图像数据前言一、按键二、LCD显示三、V4L2摄像头应用编程四、完整代码前言本系列的目的是,不仅仅将能够进行图片推理的模型部署于板端,还提供了两种摄像头数据采集的方法,集成到自己的深度学习推理代码之后,可以根据应用场景......
  • 【瑞芯微RV1126(深度学习模型部署)】部署自己训练的yolov8-seg,实现足型检测!
    前言如果按照本系列第一篇博客那样交叉编译了opencv,那本文有些步骤就不用了,比如交叉编译工具链的下载,所以自己斟酌步骤。本系列第一篇:https://blog.csdn.net/m0_71523511/article/details/139636367本系列第二篇:https://blog.csdn.net/m0_71523511/article/details/14058......
  • RV1126中AI例程解析
    本次以基于rockx组件的ssd目标检测为例官方提供的例程中有2个C++文件及2个头文件其中:atk_ssd_object_recognize.cpp是一个使用Rockchip嵌入式平台进行图像处理的示例程序。整体功能是初始化视频输入、进行图像处理(RGA),然后将结果输出到显示终端。以下是代码的详细解释:引入......
  • 关于RK1808/RK1806和RV1109/RV1126 NPU升级方法
    一、注意事项本工程主要为RockchipNPU提供驱动、示例等。**RK3399Pro用户态的库及驱动不在本工程**,请参考:https://github.com/airockchip/RK3399Pro_npuRK3566/RK3568/RK3588/RV1103/RV1106请参考:https://github.com/rockchip-linux/rknpu2二、RKNNToolkit在使用RKNNA......
  • python3.7.4 RV1126 交叉编译
    首先,十分感谢大佬分享的交叉编译攻略,原文链接如下:https://www.cnblogs.com/Se7eN-HOU/p/16736164.html在此基础上,本人经过一周时间的踩坑,终于在RV1126开发板上实现了交叉编译。现记录本人实际编译版本与上述版本略有不同之处。主要是由于3.5.2版本的python和openssl1.0.2g在......
  • 瑞芯微电子RV1126芯片环境搭建&SSD模型转换指南
    引子国产AI芯片这个集合,一直想补充的完整点。故翻了翻陈年的笔记,找到当年使用瑞芯微电子出的一款芯片RV1126的使用笔记,当时拿到的是一款基于RV1126的IP摄像头,在此整理记录下。OK,让我们开始吧。一、文档首先拿到官方的SDK包,解压后,SDK文档目录:rv1109_1126_sdk\RV1109_1126\docs\S......
  • RV1126 分区教程
    一、前言期初我是想弄一个分区存放自己的APP程序,如果需要更改应用的时候,只需要烧写独立的分区即可,就不需要重新烧写rootfs。这是一个简单的操作,为啥还需要记录了,因为我在里面遇到了一些坑,思路走错了,便折腾了几天。为啥会有这样的需求了,一是为了管理方便,二是将应用程序给新手的......
  • 基于rv1126 rkmeida 一路多出 原理
    基于rv1126rkmeida一路多出的坑首先说要的是介绍一下rkmedia相关内容​ RKMedia提供了一种媒体处理方案,可支持应用软件快速开发。RKMedia在各模块基础API上做进一步封装,简化了应用开发难度。该平台支持以下功能:VI(输入视频捕获)、VENC(H.265/H.264/JPEG/MJPEG编码)、VDEC(H.2......
  • RV1126 快速启动
    一、硬件信息RV1126/RV1109系列芯⽚内置硬件解压缩模块--decom,可以极⼤得提升系统启动速度RV1126/RV1109内置⼀个MCU,MCU在SoC上电后就会快速启动,迅速初始化Camera和ISP,然后尽可能快得保存前⼏帧图像。RV1126支持快速启动的存储介质存储介质类型读取速度......