0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于RV1126开发板的rknn-toolkit-lite使用方法

ljx2016 来源:ljx2016 作者:ljx2016 2025-04-15 17:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. rknn-toolkit-lite介绍

rknn-toolkit-lite是用于python算法的推理的组件,当前已经在EASY-EAI-Nano完成适配,用户可以用它进行深度学习算法的纯python开发。而且同时支持已经进行了预编译的模型,短短几行代码即可完成算法的推理,大幅降低开发成本。同时很多不熟悉C/C++的算法开发人员有效降低开发门槛。本地文档是根据已经完成rknn模型转换的模型进行板卡上的推理,关于rknn模型转换请阅读请阅读《在EASY EAI Nano运行自定义的AI算法》。

wKgZO2f-KQ2AHOZgAAKzPIHJcF4641.png

2. 固件烧录

当前我们通过系统预装的方式支持rknn-toolkit-lite,烧录固件方式请阅读《固件烧录与更新》。

固件下载链接:https://pan.baidu.com/s/1sWFoPf6oJtZsUPp-_do7AQ

提取码:1234

固件包如下所示:

wKgZPGf-KQ6AR0G_AAAkMjOfcTk795.png

3. 在板卡测试demo

下载百度网盘:https://pan.baidu.com/s/1yoof_SyY1ty93dIRe1dZgA (提取码:1234 )

“测试程序/inference_with_lite.tar.bz2”,把文件传到EASY-EAI-Nano板卡目录上。

执行以下指令进行解压:

tar xvf inference_with_lite.tar.bz2
wKgZO2f-KQ6AE9D3AABkdRULKr8838.png

执行以下指令切换目录并执行测试程序:

cd /userdata/inference_with_lite/
python3 test.py

结果如下所示:

wKgZPGf-KQ6AHBg7AAEMU8v6kKQ706.png

4. rknn-toolkit-lite流程说明

4.1 使用流程图

RKNN Tookit Lite使用流程如下:

wKgZO2f-KQ6ASBWaAAAizVY6QAg659.png

4.2 例程

第三小节的例程如下所示:

import platform
import cv2
import numpy as np
from rknnlite.api import RKNNLite

RKNN_MODEL = '10class_ResNet50_pre.rknn'
IMG_PATH = './test-1.jpg'
INPUT_SIZE = 224

BOX_THRESH = 0.25
NMS_THRESH = 0.6

CLASSES = ("SUV", "bus", "family sedan", "fire engine", "heavy truck", "jeep", "minibus", "racing car", "taxi", "truck")

def show_outputs(output):

	print("softmax output:", output)

	max_confidence = np.max(output)
	index = np.where(output == max_confidence)
	print("max confidence:", max_confidence)
	print("max confidence index:", index[0][0])
	print("CLASSES predict: ", CLASSES[index[0][0]])

def softmax(x):
	return np.exp(x)/sum(np.exp(x))


if __name__ == '__main__':
	rknn_lite = RKNNLite()

	# load RKNN model
	print('--> Load RKNN model')
	ret = rknn_lite.load_rknn(RKNN_MODEL)
	if ret != 0:
		print('Load RKNN model failed')
		exit(ret)
	print('done')

	# Set inputs
	img = cv2.imread(IMG_PATH)
	img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
	resize_img = cv2.resize(img,(224,224))

	# init runtime environment
	print('--> Init runtime environment')

	ret = rknn_lite.init_runtime(target=None)
	if ret != 0:
		print('Init runtime environment failed')
		exit(ret)
	print('done')

	# Inference
	print('--> Running model')
	outputs = rknn_lite.inference(inputs=[resize_img])

	print("outputs[0]:", outputs[0])
	print("outputs[0].shape:", outputs[0].shape)
	show_outputs(softmax(np.array(outputs[0][0])))
	rknn_lite.release()

5. API详细说明

5.1 RKNNLite初始化及对象释放

在使用RKNN Toolkit Lite时,都需要先调用RKNNLite()方法初始化一个RKNNLite对象,并在用完后调用该对象的release()方法将资源释放掉。

初始化RKNNLite对象时,可以设置verbose和verbose_file参数,以打印详细的日志信息。其中verbose参数指定是否要在屏幕上打印详细日志信息;如果设置了verbose_file参数,且verbose参数值为True,日志信息还将写到这个参数指定的文件中。

举例如下:

# 将详细的日志信息输出到屏幕,并写到inference.log文件中 
rknn_lite = RKNNLite(verbose=True, verbose_file='./inference.log') # 只在屏幕打印详细的日志信息 
rknn_lite = RKNNLite(verbose=True) 
… 
rknn_lite.release() 

5.2 加载RKNN模型

API Load_rknn
描述 加载RKNN模型。
参数 path:RKNN模型文件路径
load_model_in_npu: 是否直接加载npu中的rknn模型。其中path为rknn模型在npu中的路径。只有当RKNN Toolkit Lite运行在连有NPU设备的PC上或RK3399Pro Linux开发板时才可以设为True。默认值为False.
返回值 0:加载成功
-1:加载失败

举例如下:

# 从当前目录加载 ResNet50模型
ret = rknn_lite.load_rknn('10class_ResNet50_pre.rknn')

5.3 初始化运行时环境

在模型推理之前,必须先初始化运行时环境,确定模型在哪一个芯片平台上运行。

API init_runtime
描述 初始化运行时环境。确定模型运行的设备信息(芯片型号、设备 ID)。
参数 target:目标硬件平台,目前支持“rk3399pro”、“rk1806”、“rk1808”、“rv1109”、 “rv1126”。默认为 None,将根据应用所运行的开发板自动选择。
device_id:设备编号,如果 PC 连接多台智能设备时,需要指定该参数,设备编号可 以通过”list_devices”接口查看。默认值为 None。
async_mode:是否使用异步模式。调用推理接口时,涉及设置输入图片、模型推理、 获取推理结果三个阶段。如果开启了异步模式,设置当前帧的输入将与推理上一帧同 时进行,所以除第一帧外,之后的每一帧都可以隐藏设置输入的时间,从而提升性能。 在异步模式下,每次返回的推理结果都是上一帧的。该参数的默认值为 False。
返回值 0:加载成功
-1:加载失败

举例如下:

	# init runtime environment
	print('--> Init runtime environment')
	ret = rknn_lite.init_runtime(target=None)
	if ret != 0:
		print('Init runtime environment failed')
		exit(ret)
	print('done')

5.4 模型推理

API inference
描述 对指定输入进行推理,返回推理结果。
参数 inputs:待推理的输入,如经过 cv2 处理的图片。类型是 list,列表成员是 ndarray。
data_type:输入数据的类型,可填以下值:’float32’, ‘float16’, ‘uint8’, ‘int8’, ‘int16’。 默认值为’uint8’。
data_format:数据模式,可以填以下值: “nchw”, “nhwc”。默认值为’nhwc’。这两个的 不同之处在于 channel 放置的位置。
inputs_pass_through: 将输入透传给 NPU 驱动。非透传模式下,在将输入传给 NPU 驱 动之前,工具会对输入进行减均值、除方差等操作;而透传模式下,不会做这些操作。 这个参数的值是一个数组,比如要透传 input0,不透传 input1,则这个参数的值为[1, 0]。默认值为 None,即对所有输入都不透传。
返回值 results:推理结果,类型是 list,列表成员是 ndarray。

举例如下:

以分类模型为例,如 resnet50,代码如下(完整代码参考第三小节):

	# Inference
	print('--> Running model')
	outputs = rknn_lite.inference(inputs=[resize_img])

	print("outputs[0]:", outputs[0])
	print("outputs[0].shape:", outputs[0].shape)
	show_outputs(softmax(np.array(outputs[0][0])))

5.5 查询 SDK 版本

API get_sdk_version
描述 获取 SDK API 和驱动的版本号。
注:使用该接口前必须完成模型加载和初始化运行环境。
参数
返回值 sdk_version:API 和驱动版本信息。类型为字符串

举例说明:

# 获取 SDK 版本信息 
…… 
sdk_version = rknn_lite.get_sdk_version() 
……

返回的 SDK 信息如下:

wKgZPGf-KQ6AQlvRAAA1FYIIaUg671.png


审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • API
    API
    +关注

    关注

    2

    文章

    2474

    浏览量

    67004
  • 开发板
    +关注

    关注

    26

    文章

    6413

    浏览量

    120720
  • SDK
    SDK
    +关注

    关注

    3

    文章

    1111

    浏览量

    52004
  • rv1126
    +关注

    关注

    0

    文章

    118

    浏览量

    4436
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    瑞芯微(EASY EAI)RV1126B rknn-toolkit-lite2使用方法

    1.rknn-toolkit-lite2介绍RKNN-Toolkit-Lite2是瑞芯微(Rockchip)专为旗下RK系列芯片(如RV1126B、RK3576、RK3588等)打造的轻量级AI模型
    的头像 发表于 04-22 17:38 296次阅读
    瑞芯微(EASY EAI)<b class='flag-5'>RV1126</b>B <b class='flag-5'>rknn-toolkit-lite</b>2<b class='flag-5'>使用方法</b>

    【飞凌嵌入式RV1126B开发板试用体验】初识飞凌嵌入式RV1126B开发板

    这几天刚收到飞凌嵌入式RV1126B开发板,带大家先认识一下这块开发板,收到的开发板如下图。 开发板有主板和核心
    发表于 04-13 17:27

    ELF-RV1126B NPU 驱动与 RKNN 运行环境

    :ELF-RV1126B 对应 NPU 版本为 0.9.8,推荐使用 RKNN-Toolkit2 2.3.2 与 RKNN-Toolkit-Lite2 2.3.2。 •  官方快速使用手册说明:
    的头像 发表于 03-31 19:46 127次阅读
    ELF-<b class='flag-5'>RV1126</b>B NPU 驱动与 <b class='flag-5'>RKNN</b> 运行环境

    【飞凌嵌入式RV1126B开发板试用体验】+ 5. YOLOv8目标识别部署

    模型转换 OK1126B开发板搭配RKNN-Toolkit2v2.3.2工具和RKNN Model Zoov2.3.2资源库实现模型转换至RKNN
    发表于 03-23 20:19

    ElfBoard新品发布|【RV1126B】ELF-RV1126B开发板正式发布

    ELF-RV1126B开发板基于瑞芯微RV1126B处理器设计,集成四核ARMCortex-A53架构,主频达1.6GHz,并内置3TOPS@INT8算力的NPU,支持INT8/INT16混合精度
    的头像 发表于 01-16 16:59 3253次阅读
    ElfBoard新品发布|【<b class='flag-5'>RV1126</b>B】ELF-<b class='flag-5'>RV1126</b>B<b class='flag-5'>开发板</b>正式发布

    飞凌嵌入式旗下教育品牌推出RV1126B\RK3506B\RK3576新品开发板

    、学生、科研人员还是个人学习者,这次发布的新品绝对值得一看!ELF-RV1126B开发板——边缘AI视觉芯ELF-RV1126B开发板搭载瑞芯微RV
    的头像 发表于 01-09 10:09 1717次阅读
    飞凌嵌入式旗下教育品牌推出<b class='flag-5'>RV1126</b>B\RK3506B\RK3576新品<b class='flag-5'>开发板</b>

    替代升级实锤!实测RV1126B,CPU性能吊打RV1126

    RV1126B核心已上市并稳定量产供应实测开始,设备使用触觉智能RV1126核心RV1126B核心
    的头像 发表于 12-11 17:13 2524次阅读
    替代升级实锤!实测<b class='flag-5'>RV1126</b>B,CPU性能吊打<b class='flag-5'>RV1126</b>

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用

    【迅为RK3568开发板NPU实战】别再闲置你的NPU!手把手教你玩转RKNN-Toolkit2 的使用
    的头像 发表于 11-11 14:21 1511次阅读
    【迅为RK3568<b class='flag-5'>开发板</b>NPU实战】别再闲置你的NPU!手把手教你玩转<b class='flag-5'>RKNN-Toolkit</b>2 的使用

    告别 RV1126,迎来更强选择!RV1126B 加量不加价,重塑 AI 硬件新标杆

    在科技飞速迭代的当下,嵌入式 AI 硬件领域的产品更新速度始终保持着高频节奏。曾经凭借稳定性能在市场中占据一席之地的 RV1126,如今正式迎来产品生命周期的新阶段 —— 停产。这一消息传出时,不少
    的头像 发表于 10-22 17:48 1369次阅读

    音诺恒YNH-363 RV1126人脸识别主板规格书

    音诺恒RV1126人脸识别主板规格书
    发表于 09-20 11:15 0次下载

    RV1126系列选型指南:从RV1126RV1126B,一文看懂升级差异

    2025年7月,瑞芯微正式发布新一代AI视觉芯片RV1126B。作为其金牌方案商,EASYEAI灵眸科技同步推出搭载该芯片的AIoT核心EAI1126B-Core-T。相较于前代RV1126
    的头像 发表于 09-04 10:50 5131次阅读
    <b class='flag-5'>RV1126</b>系列选型指南:从<b class='flag-5'>RV1126</b>到<b class='flag-5'>RV1126</b>B,一文看懂升级差异

    基于RV1109/RV1126的直播推流方案

    基于RV1109/RV1126 的直播推流方案 新龙鹏科技有限公司    关键特性 1)输入输出接口支持MIPI/BT1120/LVDS输入,MIPI/LVDS输出   2)网络接口支持千兆网口
    的头像 发表于 09-01 12:25 908次阅读
    基于<b class='flag-5'>RV</b>1109/<b class='flag-5'>RV1126</b>的直播推流方案

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示连推理

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示连推理
    的头像 发表于 06-23 13:54 1368次阅读
    迅为RK3576<b class='flag-5'>开发板</b>NPU环境搭建和使用<b class='flag-5'>rknn-toolkit</b>2功能演示连<b class='flag-5'>板</b>推理

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换

    迅为RK3576开发板NPU环境搭建和使用rknn-toolkit2功能演示模型转换
    的头像 发表于 06-19 10:53 1541次阅读
    迅为RK3576<b class='flag-5'>开发板</b>NPU环境搭建和使用<b class='flag-5'>rknn-toolkit</b>2功能演示模型转换

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用

    迅为RK3576开发板NPU例程测试-rknn-toolkit2环境搭建和使用
    的头像 发表于 06-17 13:46 1981次阅读
    迅为RK3576<b class='flag-5'>开发板</b>NPU例程测试-<b class='flag-5'>rknn-toolkit</b>2环境搭建和使用