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

[RV1109/RV1126系列]-2.RV1109/1126 RKNN ToolKit 工具使用教程_第1张图片
  最近忙于爬坑搭建自己的公网流媒体服务器,RKNN的使用教程写的不太及时,在此对各位朋友说声抱歉。我将继续努力将本人使用RKNN工具进行算法移植、开发的教程分享给大家。

文章目录

    • 1.可视化工具的启动
    • 2.可视化工具功能介绍
    • 3.本人遇到的问题汇总

1.可视化工具的启动

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

python3 -m rknn.bin.visualization

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

[RV1109/RV1126系列]-2.RV1109/1126 RKNN ToolKit 工具使用教程_第2张图片

2.可视化工具功能介绍

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

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

[RV1109/RV1126系列]-2.RV1109/1126 RKNN ToolKit 工具使用教程_第3张图片

  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批处理文件点我

你可能感兴趣的:(caffe,深度学习,机器学习)