[RV1109/RV1126系列]-2.RV1109/1126 RKNN ToolKit 工具使用教程

RKNN ToolKit 工具使用教程
  最近忙于爬坑搭建自己的公网流媒体服务器,RKNN的使用教程写的不太及时,在此对各位朋友说声抱歉。我将继续努力将本人使用RKNN工具进行算法移植、开发的教程分享给大家。

1.可视化工具的启动

RKNN ToolKit有两种使用工具,一种是通过Python工具进行模型转换及量化,另一种通过可视化工具手动选择进行模型转换及量化。推荐新手可以使用可视化工具进行,因为上手更加简单、方便,我们可以准确了解到每个参数的含义,使用熟练了,转到Python工具也非常迅速,所以本文主要介绍可视化工具的使用方法。

python3 -m rknn.bin.visualization

执行以上命令即可弹出可视化工具,工具外观如下图:

RKNN ToolKit工具主页图

2.可视化工具功能介绍

  通过上图,我们可以看到该工具,支持转换的深度学习框架还是比较多的,分别有:TensortFlow、TensorFlowLite、mxnet、onnx、Darknet、Pytorch、Caffe、Keras。 虽然不同的框架在转换和量化过程中有差异,但使用方法和参数配置,基本大同小异。

  如果遇到,某个特定框架部分网络层无法转换,那么使用onnx工具导出,并使用onnx-slim进行精简后,使用onnx进行rknn模型的转换和量化即可。下面开始正题:(本文示例为onnx转换,其它框架基本上变化不大)

RKNN ToolKit功能主页图

  1. Target Plaform 指生成的模型是在哪种类型的主板,目前可选项有两种。第一种:支持RK1806、RK1808、RK3399 Pro;第二种:支持RV1109、RV1126 同一种类生成RKNN模型是可以通用的,例如我有RV1109的主板、同时也有RV1126的主板,那么生成的RKNN模型文件不需要再进行转换,模型是通用的。同理,不是同一种类型的主板则需要再次转换才可在目标主板上运行。

  2. Recorder Channel 指NPU是否对我们的数据进行RGB=>BGR或BGR=>RGB重排,若选择 0 1 2,则不进行重排,你的输入图像是RGB则送入网络的数据就是RGB,BGR同理;若选择 2 1 0,则进行重排,你的输入图像是RGB,则NPU将数据转为BGR送入网络,BGR同理。

  3. Mean Value 指均值,一般可从网络模型,或者训练代码中获得。

  4. Standard Value 指缩放系数,一般可从网络模型,或者训练代码中获得。

  5.Quantized Dtype 指量化方式,我一般默认选择asymmetric_quantized-u8,其它量化方式,大家可自行尝试下,这块我没有深入研究,就不误导大家了。

  6.Dataset 指构建的量化数据集,一般选择测试集中的500-5000张图像进行量化,数据集通过.txt文本整合,构造该数据集的Python文件,我会放在文末,大家可根据自己的需求进行修改使用。

  7.Batch Size 顾名思义,就是一批送入多少张图像,一般可根据性能,自行更改,但改的越大速度越慢。

  8.Epochs 指最大迭代次数,就是一共迭代多少次,这个做深度学习训练的同学应该很熟悉了。

  9.Whether The Inception Series Model 指是否是 inception系列模型,如果是这个系列打开会有性能优化,不是关闭即可。

  10.Whether To Enable Pre-Compile 指是否开启预编译模型,打开预编译,可以减少模型在硬件设备上的首次加载时间,但是打开这个开关后,转换出来的模型只能在硬件平台上使用了。

  11.The Location To Save The Conversion Result 指保存转换模型的位置,这个自行选择,只要自己能找到就行了

  12.RKNN Model Filename 指转换后RKNN模型的名称。


以上就把RKNN ToolKit可视化工具功能介绍完毕了,其它页面就是选择模型文件,基本上就不需要我过多介绍了,相信大家都知道如何选择,若一切正常的话,一路next之后,就可以看到自己生成的模型啦!

3.本人遇到的问题汇总

  • RKNN工具不支持动态尺寸的输入,例如MTCNN的PNet通过图像金字塔的方式送入RKNN网络就会保存,我们只能根据图像金字塔生成宽高尺寸来生成很多个固定长宽输入的模型,本人在接触初始就在此困扰了很久,当然通过这种方式会生成很多模型,检测速度也比较慢,所以后续我就弃用了级联网络的方式。后面在人脸检测这块主要使用了Ultraface、Retinaface、Blazeface等轻量级模型,后续会慢慢和大家分享。

  • caffe prototxt的input层有些老版本的写法会不兼容,需要统一为以下格式。

layer {
name: "input"
type: "Input"
top: "input"
input_param {
  shape {
    dim: 1
    dim: 3
    dim: 240
    dim: 320
  }
}
}

DataSet Python处理文件点我 提取码:8888

CSDN下载Python批处理文件点我

### 如何优化 RV1126 RKNN 模型以提高推理速率 为了有效提升RV1126RKNN模型的推理速度,可以从多个方面入手进行优化: #### 选择合适的量化方式 采用INT8量化而非FP32可以显著减少计算量并加快推断过程。通过转换工具将训练好的浮点数权重映射到整数表示,在保持精度的同时大幅降低内存占用和运算复杂度[^1]。 ```bash rknn-toolkit quantize float_model.rknn int8_quantized_model.rknn --dataset dataset.txt ``` #### 利用多线程加速 启用多核CPU资源来处理不同批次的数据输入,从而实现并发执行。调整`num_threads`参数可指定参与工作的核心数目,通常设置为物理处理器数量减一能获得较好效果。 ```python import rknn.api as rknn_api model = rknn_api.RKNN() config_dict = { 'quantization': True, 'target_platform': ['rv1126'], 'batch_size': 1, 'mean_values': [[0, 0, 0]], 'std_values': [[255, 255, 255]], 'output_names': None, 'layout': "NCHW", 'num_threads': 7 # Adjust based on CPU cores available } model.config(**config_dict) ``` #### 减少不必要的预处理操作 简化图像或其他数据类型的前处理流程,去除冗余步骤如过高的分辨率缩放、复杂的色彩空间变换等,这有助于缩短整体耗时。 #### 使用高效的数据加载机制 构建专门针对嵌入式平台特点设计的数据读取器,确保I/O瓶颈不会成为性能短板。比如提前缓存好一批待预测样本至内存中等待调用,避免频繁访问外部存储介质造成延迟增加。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ant5985

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值