飞凌嵌入式
直播中

picasso

未满1年用户 14经验值
擅长:嵌入式技术
私信 关注
[产品]

【ELF 2学习板试用】利用RKNN-Toolkit2实现rknn模型转换

简介

ELF 2学习板基于瑞芯微RK3588旗舰处理器开发设计,处理器采用先进的8nm制程工艺,集成4×Cortex-A76+4×Cortex-A55内核架构,A76核主频高达2.4GHz,A55核主频高达1.8GHz,内置6TOPS算力NPU,为AI学习及应用提供强大的支撑,支持8K超清显示,配备丰富的高速数据通讯接口,满足用户多样化的学习需求。学习板附带的教学资料,系统而全面地介绍了AI开发的整个流程。资料中不仅模型种类丰富多样,而且对典型模型都进行了深入的剖析,详细阐述了模型的优化思路与方法,让AI项目能够真正地从理论走向实践。

若想在开发板上实现GPU加速,则需要把我们的模型转换为rknn模型,然后在板端利用RKNN-Toolkit2-Lite2运行rknn模型以实现GPU加速。而rknn模型的转换则需要用的瑞芯微官方提供的RKNN-Toolkit2转换工具,在本篇文章,我们将在虚拟机上的ubuntu系统中实现RKNN-Toolkit2的部署与rknn模型的转换。

VMware上部署ubuntu

虚拟机上部署ubuntu在网上有许多教程,ubuntu版本的话我推荐22.04版本,参考下面这篇blog即可VMware虚拟机安装Ubuntu教程(超详细)_vmware安装ubuntu-CSDN博客,也可以自己去找攻略来进行配置。

开发环境准备

image.png

正常ubuntu系统是x86版本的,官方给的ubuntu镜像是ARM64版本的,我们需要下载x86版本的。

下载并配置Miniconda

我们在ubuntu浏览器中去到miniconda官网,如图按照图片点击,然后按照官方教程进行操作下载。

Miniconda — Anaconda documentation
image.png

下载完成后我们打开终端,可在终端最前面看到(base)字样,我们输入下面代码,会输出如图类似字样:

conda env list

image.png

接下来我们输入下面代码来安装vim编译器:

sudo apt install vim

然后我们来进行换源,首先输入以下代码:

vim .condarc

然后把里面的内容换为下面内容:

channels:
- defaults
show_channel_urls: true
channel_alias: https://mirrors.tuna.tsinghua.edu.cn/anaconda
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/pro
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

在这里插入图片描述

接着我们输入下面代码来创建虚拟环境:

conda create -n RKnn_py3.8 python=3.8

-n后面为创建环境的名称,“python=”后面为指定python的版本然后我们输入以下代码来激活环境:

conda activate RKnn_py3.8

image.png

接下来的环境部署我们都将在这个环境中进行。

安装RKNN-Toolkit2

官方给出了用户文档,见文章最后附件,我们参考用户文档可完成对应安装

image.png

安装后输入conda list查看是否安装成功
image.png

安装Pycharm

安装包下载

在ubuntu浏览器中去到官网PyCharm: the Python IDE for data science and web development按照下图步骤下载安装包
image.png
image.png
image.png

安装Pycharm

创建好一个文件夹专门存放Pycharm相关文件,之后在终端解压安装Pycahrm,输入下面指令:

tar -vxf pycharm-community-2024.3.2.tar.gz

配置Pycharm

安装好后进入到bin目录下输入命令,启动pycharm,如下:

cd bin

./pycharm.sh

启动后操作如下
image.png
image.png
桌面快捷方式创建
image.png
image.png
创建项目
image.png
image.png
至此,Pycharm配置结束

rknn模型转换

在附件中我们可以找到官方文档给我们介绍的转化步骤,我们直接用3.1.6模型转换工具来进行转换即可
image.png
rknn_convert 是RKNN-Toolkit2提供的一套常用模型转换工具,通过封装上述API接口,用户只需编辑模型对应的 yml 配置文件,就可以通过指令转换模型。以下是如何使用 rknn_convert 工具的示例命令以及支持的指令参数:

python -m rknn.api.rknn_convert -t rk3588 -i ./model_config.yml -o ./output_path

通过使用上述命令和参数,用户可以将模型转换为RKNN格式,并将转换后的模型保存到指定的输出路径。支持的指令参数说明下:
-i: 模型配置文件(.yml)路径。

-o: 转换后模型输出路径。

-t: target_platform,目标平台可以选择rv1103,rv1103b, rv1106,rv1106b,rk2118,rk3562,rk3566,

rk3568,rk3576或rk3588。

-e: (选填) 评估连板运行时model的耗时和内存占用,若开启请输入-e。注:一定要连接相应开发板并

正确设置 target_platform ,否则会报错,当有多设备时可通过 -d 参数指定设备ID。

-a: (选填)评估生成的rknn模型精度,开启模拟器精度评估请输入-a "xx1.jpg xx2.jpg",若要开启连板

精度评估请配合-d参数使用。

-v: (选填)指定是否要在屏幕上打印详细日志信息,若开启打印模式请输入-v。

-d: (选填)单个adb设备使用-d,多adb设备使用-d device_id,device_id通过adb devices查询
下面是一个参考的yml配置文件( object_detection.yml ):

models:
  # model output name
  name: onnx_detection
  # Original model framework
  platform: pytorch
  # Model input file path
  model_file_path: ./resnet18.pt
  # Describe information such as input and output shapes
  subgraphs:
    # model input tensor shape
    input_size_list:
    - 1,3,512,512
    # input tensor name
    inputs:
    - data
    # output tensor name
    outputs:
    - conv6-1
    - conv6-2
    - conv6-3
    # quantification flag
  quantize: true
  # Quantify dataset file path (relative yml path)
  dataset: ./dataset.txt
  configs:
    quantized_dtype: asymmetric_quantized-8
    # rknn.config mean_values
    mean_values: [127.5,127.5,127.5]
    # rknn.config std_values
    std_values: [128.0,128.0,128.0]
    # rknn.config quant_img_RGB2BGR
    quant_img_RGB2BGR: false
    # rknn.config quantized_algorithm
    quantized_algorithm: normal

这个配置文件包括了模型的名称、原始模型使用的框架、模型文件路径、输入输出信息、是否进行量化等详细信息。用户可以根据模型的特定需求编辑相应的配置文件。
模型转换配置详见下表:
image.png
image.png
完成配置文件的编写后,我们在终端输入下面代码即可开始转换:

python -m rknn.api.rknn_convert -t rk3588 -i ./model_config.yml -o ./output_path

至此,rknn模型转换完成。

附件:*附件:02_Rockchip_RKNPU_User_Guide_RKNN_SDK_V2.3.0_CN.pdf

更多回帖

发帖
×
20
完善资料,
赚取积分