rknn_toolkit是作为NNEWN AI硬件平台的开发套件使用的,为开发者提供模型迁移及量化的功能,制作rknn模型,以便在NNEWN AI硬件平台上用npu加速神经网络模型的推理过程。注意此套件不负责训练,且目前只支持在linux平台上的操作。
下面以yolov3为例,展示rknn模型转换的过程
NNEWN AI硬件平台目前支持.rknn后缀的模型的评估及运行,对于常见的tensorflow、tensroflow lite、caffe、darknet、onnx和Pytorch模型都可以通过我们提供的 toolkit 工具将其转换至 rknn 模型,而对于其他框架训练出来的模型,也可以先将其转至 onnx 模型再转换为 rknn 模型。
模型转换操作流程如图1所示:
注:
以上步骤请按顺序执行。
绿色框步骤表示不在该框架内执行,训练请参考其他文档。
蓝色框标注的步骤导出的RKNN 模型可以通过load_rknn 接口导入并使用。
红色框标注的模型推理、性能评估和内存评估的步骤先后顺序不固定,根据实际使用情况决定。
只有当目标硬件平台是NNEWN AI硬件平台接口获取内存使用情况。
API说明文档请参考同目录下 toolkit API说明 页面
下面以darknet的yolov3模型为例展示如何转换模型:
(函数的调用规则请参考同级目录下的 toolkit API使用说明文档)
加载rknn_toolkit函数
from rknn.api import RKNN
创建RKNN对象
rknn = RKNN()
加载darknet模型
rknn.load_darknet(model=’./yolov3_416x416.cfg’,weight=’./yolov3.weights’)
设置输入配置
rknn.config(channel_mean_value=’0 0 0 255’,reorder_channel=’0 1 2’,batch_size=1)
- channel_mean_valie=‘0 0 0 255’ 表示对输入图片做归一化处理,前三位分别表示对应图片的3通道对应减去的像素数值,最后一位表示各通道减去对应像素数值后再除以该位,255在这里表示将像素范围从 0~255 的整数转换到 0~1 之间的浮点数,常见的归一化还有‘128 128 128 128’.- reorder_channel 表示输入的通道顺序,如果是通过 RGB图像训练的,而最终预测时输入的是 BGR格式的图像,则此处的值应改为 ‘2 1 0’- batch_size 表示单次推测的输入个数,一般来说batch_size的调整并不会提高一般模型在NPU上的执行性能,但却会显著增加内存消耗以及增加单帧的延迟。但是对于超小模型,调整batch_size可以降低超小模型在CPU上的消耗,提高平均帧率。(适用于模型太小,CPU的开销大于NPU的开销)
构建模型
rknn.build(do_quantization=True, dataset=’./dataset_416x416.txt’, pre_compile=True)
- do_quantization 表示是否进行量化,开启后需要比较长的量化时间,根据量化图片的多少及模型的大小,时间在半小时到几小时,量化时请保证系统的运行内存充足,建议16G以上,物理内存不足时可考虑挂载虚拟内存,量化具体细节请参看API说明文档- dataset 输入为一个txt文件的路径,该txt里按格式包含即用于量化的图片,一般来说量化照片越多,效果越精确,详见API说明文档。- pre_compile 表示对模型进行预编译,开启后模型的第一次加载将变快,但是没法在toolkit的模拟器环境下运行。
输出模型
rknn.export_rknn(‘./yolov3_416x416.rknn’)
代码清单1 示范了将darknet格式的yolo模型转换成rknn格式的完整流程。
from PIL import Image
import numpy as np
import re
import math
import random
from rknn.api import RKNN
if name == ‘main‘:
# Create RKNN object
rknn = RKNN()
# Load darknet model
print(‘—> Loading model’)
rknn.load_darknet(model=’./yolov3_416x416.cfg’, weight=”./yolov3.weights”)
print(‘done’)
rknn.config(channel_mean_value=’0 0 0 255’, reorder_channel=’0 1 2’, batch_size=1)
# Build model
print(‘—> Building model’)
rknn.build(do_quantization=False, dataset=’./quan_pic_dir_list.txt’, pre_compile=False)
print(‘done’)
rknn.export_rknn(‘./yolov3_416x416.rknn’)
exit(0)
Demo文件下载链接,含文件如图2所示。注意该demo应在安装完环境后方可执行。
名称 | 作用功能 |
---|---|
quan_pic_dir | 文件夹,存放量化过程中需要的图片 |
quan_pic_dir.tar | 压缩包,包含量化所需图片数据 |
quan_pic_dir_list.txt | txt文档,记录量化图片所在目录,一张图片对应一条词行 |
results_screenshot_16.10.2019.png | 图片,检测结果 |
rknn_picture_416x416.py | python文件,使用rknn模型对416x416的图片进行检测测试 |
rknn_transform_416x416.py | python文件,将darknet格式的yolo模型转为 rknn格式的yolo模型 |
yolov3_416x416.cfg | darknet格式的模型配置文件 |
yolov3_416x416.weights | darknet格式的模型参数文件 |
yolov3_416x416.rknn | rknn格式的yolo模型 |
yolov3_416x416_precomplie.rknn | rknn格式的yolo模型(带预编译),在核心板上加载模型会更快 |
执行模型转换,注意如果开启量化 (do_quantization=True) 则先需要先解压quan_pic_dir文件。模型转换耗费时间较多,不执行量化约10-30分钟完成依机器性能而定,请耐心等待。
python rknn_transform_416x416.py
运行yolov3_rknn模型
python rknn_picture_416x416.py
输出结果如图3所示,在显示图片结果的窗口敲任意键退出。
[未分类] 瑞芯微旗舰级8KSoC芯片RK3588规格参数简介及Datasheet下载
2022-10-29
[行业应用] 基于瑞芯微RK3588的AR/VR智能眼镜及智能头盔类产品主板方案
2022-11-04
[行业应用] RK3588已适配银河麒麟操作系统,助力用户应用快速落地
2023-02-07
[行业资讯] 2023年瑞芯微开发者大会落幕,多项技术应用方案已落地
2023-02-28
[行业资讯] RK3399/RK3588成功适配Hailo-8的AI加速模块M.2计算卡,最高算力可达26TOPs
2023-03-09
[行业资讯] 瑞芯微RK3576 AIoT芯片规格及应用场景介绍
2024-01-02
[行业应用] 高度集成化模块化的RK3568和RK3588无人机AI控制主板方案
2022-10-29
[行业应用] NNEWN-RK3588系列产品已全面适配银河麒麟kylinOS、统信UOS、鸿蒙OpenHarmonyOS等国产操作系统
2022-11-07
[技术分享] 【官方开发文档】RKNN SDK 快速上手指南(RV1106/RV1103)
2023-02-05
[行业应用] 基于瑞芯微RK3588S的高性能移动设备及商用平板解决方案
2022-11-21
[行业应用] 基于瑞芯微RK3568的智能NVR/NAS服务器主板方案
2022-11-22
[技术分享] 瑞芯微RK3588/RK3568等芯片DDR SDRAM支持列表_2022.08.18更新
2022-11-09
[技术分享] 瑞芯微RK3588/RK3568等芯片Camera Sensor支持列表_2022.11.09更新
2022-11-09
[行业应用] 基于瑞芯微RK3588的智能NVR/NAS服务器主板方案
2022-11-18
2022-11-11
[行业资讯] 瑞芯微RK628D视频接口转换芯片简介及Datasheet下载
2021-08-28
[技术分享] 瑞芯微RK3588/RK3568等芯片eMMC支持列表_2022.10.31更新
2022-11-09
[技术分享] 【官方开发文档】Rockchip SDK申请及同步指南
2023-02-03
2022-11-10
2022-11-11
Copyright © 2021-2024 福州牛新牛科技有限公司 All rights reserved. |
嵌入式板卡
操作系统移植
AI部署应用
聚合智能网关
自主可控国产化
Copyright © 2021-2024 福州牛新牛科技有限公司 All rights reserved. |
办公地址:福建省福州市台江区鳌峰街道鳌江路8号万达广场A2栋618-619室
核心板
工控板
工控机
智能网关
平板电脑
技术与支持
成就客户 成就自我 勇攀高峰
产品中心