在RK3588开发板上部署AI
RKNN-Toolkit2与RKNN Toolkit Lite2套件介绍 - 瑞芯微Rockchip开发者社区 - 电子技术论坛 - 广受欢迎的专业电子论坛! (elecfans.com)
RKNPU2从入门到实践 --- 【5】一、加载非RKNN模型(以pt模型为例)进行模型评估【(1)在rknntoolkit2模拟器上推理测试(2)连板推理】二、RKNN模型【(1)连板推理】-CSDN博客
在安装rknn-toolkit2 时 执行下面命令
pip install -r requirements_cp39-1.6.0.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
下到一定的时候,报下面的错:
解决办法 换一个源
pip install tf-estimator-nightly==2.8.0.dev2021122109 -i https://pypi.org/simple
下面安装toolkit2
pip install rknn_toolkit2-1.6.0+81f21f4d-cp39-cp39-linux_x86_64.whl -i https://pypi.org/simple
注意 源是 https://pypi.org/simple ,否则如果 用下面的报错
https://pypi.tuna.tsinghua.edu.cn/simple
会报错
新建一个项目,使用rknn toolkit2进行模型导出和模拟器上推理
numpy降级到1.20.2
pip install numpy==1.20.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
再改成1.22.4 ok
下面是连接开发板
from rknn.api import RKNN
import cv2
import numpy as npdef show_outputs(output):output_sorted = sorted(output, reverse=True)top5_str = '\n-----TOP 5-----\n'for i in range(5):value = output_sorted[i]index = np.where(output == value)for j in range(len(index)):if (i + j) >= 5:breakif value > 0:topi = '{}: {}\n'.format(index[j], value)else:topi = '-1: 0.0\n'top5_str += topiprint(top5_str)def show_perfs(perfs):perfs = 'perfs: {}\n'.format(perfs)print(perfs)def softmax(x):return np.exp(x)/sum(np.exp(x))if __name__ == '__main__':rknn = RKNN(verbose=True)rknn.config(mean_values=[[123.675,116.28,103.53]],std_values=[[58.395, 58.395, 58.395]],target_platform="rk3588")rknn.load_pytorch(model="./resnet18.pt", input_size_list=[[1, 3, 224, 224]])rknn.build(do_quantization=True,dataset="dataset.txt",)rknn.export_rknn(export_path="resnet18.rknn")# 调用init_runtime接口初始化运行时环境rknn.init_runtime(target="rk3588", # target rk3588 表示RKNN模型运行平台 None biao shi xu ni hua ping taitarget_sub_class=None,device_id=None,perf_debug=False, # perf_debug 设置为True,可以打开性能评估的debug模式eval_mem=False, # eval_mem设置为True,表示使能内存评估模式async_mode=False, # 表示是否使能异步模式core_mask=RKNN.NPU_CORE_AUTO, # 可以设置运行时NPU的核心)# 使用opencv获取要推理的图片数据img = cv2.imread(filename="./space_shuttle_224.jpg", # 表示要读取的赌片路径flags=None)# cvtColor 继续宁数据格式转化cv2.cvtColor(src=img, # 表示要转换的数据code=cv2.COLOR_BGR2RGB, # code表示转换码)# 调用inference接口进行推理测试outputs = rknn.inference(inputs=[img], # inputs表示要推理的数据data_format="nhwc", #data_format表示要推理的数据模式)# 对outputs进行后处理show_outputs(softmax(np.array(outputs[0][0])))rknn.release()
FR:徐海涛(hunkxu)