临泉建设网站,做排名的网站哪个好,广告设计培训课程,电子商务网站建设与管理实训内容答案前言 作者使用的平台为Ubuntu20.04虚拟系统#xff0c;开发板为瑞芯微RK3588#xff0c;开发板上的系统为Ubuntu22.04系统。
一、任务 完成RKNN模型的部署#xff0c;RKNN模型的部署是将RKNN模型放到开发板上#xff0c;应用程序可以加载RKNN模型#xff0c;从而在嵌入式…前言 作者使用的平台为Ubuntu20.04虚拟系统开发板为瑞芯微RK3588开发板上的系统为Ubuntu22.04系统。
一、任务 完成RKNN模型的部署RKNN模型的部署是将RKNN模型放到开发板上应用程序可以加载RKNN模型从而在嵌入式设备上完成推理计算的任务。 瑞芯微提供了两种嵌入式部署方式一种是使用RKNPU2 SDK的C接口进行部署另一种是使用 RKNN Toolkit lite2 提供的Python接口进行部署也即我们今天要介绍的内容。
借助 RKNN Toolkit lite2 在RK3588开发板上部署RKNN模型 二、 RKNN Tool kit lite2 使用流程 在编写代码之前把rknn模型以及要测试的图片放入项目文件夹中项目文件夹内容如下所示。 2.1 连板推理测试 在使用rknntoolkitlite2之前我们首先要进行连板推理测试连板推理测试部分代码在之前的博文已经解读过这里直接贴出代码部分若有疑问请参考博文RKNPU2从入门到实践 --- 【5】一、加载非RKNN模型以pt模型为例进行模型评估【1在rknntoolkit2模拟器上推理测试2连板推理】二、RKNN模型【1连板推理】-CSDN博客
import numpy as np
from rknn.api import RKNN
import cv2def show_outputs(output):output_sorted sorted(output, reverseTrue)top5_str \n-----TOP 5-----\nfor 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\ntop5_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 RKNN()# 使用load_rknn接口直接加载RKNN模型rknn.load_rknn(path./resnet.rknn)# 调用init_runtime接口初始化运行时环境rknn.init_runtime(core_mask0,targetrk3588)# 使用 opencv 获取推理图片数据img cv2.imread(filename./space_shuttle_224.jpg)img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 调用inference接口进行推理测试outputs rknn.inference(inputs[img],data_formatNone)show_outputs(softmax(np.array(outputs[0][0])))# 调用release释放rknn对象rknn.release() core_mask 表示NPU的调度模式设置为0时表示自由调度设置为124时表示调度某个单核心设置为3时表示同时调度0和1两个核心设置为7时表示3个核心同时调度。 注由于rknntoolkitlite2最后要在开发板上运行运行环境已经确定且无法进行性能评估和内存评估因此在 rknntoolkitlite2 部分中 targetrk3588 将会被去掉。 随后启动开发板开发板连接至Ubuntu虚拟系统上连接成功后会在虚拟系统任务栏中出现一个手机的标识。使用MobaXterm软件与开发板进行串口调试开启rknn_server服务 至此运行代码开始连板推理得到运行结果 可以看到终端打印出前五名概率最大的物品编号以及概率值最大的概率值为0.9996696....标签号为812号经查询812号实际是太空飞船推理测试图片也是太空飞船则连板推理成功。 接下来我们开始使用rknntoolkitlite2将模型部署在RK3588开发板上请看2.2小节。
2.2 rknntoolkitlite2使用
rknntoolkitlite2 使用流程图如下所示 RKNN Tool kit lite2 使用流程图 我们根据上述流程图来修改2.1小节的代码一共三处第一处 将 改为第二处 将 修改为
第三处 将 修改为 修改之后的整体代码如下所示
import numpy as np
from rknnlite.api import RKNNLite
import cv2def show_outputs(output):output_sorted sorted(output, reverseTrue)top5_str \n-----TOP 5-----\nfor 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\ntop5_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 RKNNLite()# 使用load_rknn接口直接加载RKNN模型rknn.load_rknn(path./resnet.rknn)# 调用init_runtime接口初始化运行时环境rknn.init_runtime(core_mask0,)# 使用 opencv 获取推理图片数据img cv2.imread(filename./space_shuttle_224.jpg)img cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 调用inference接口进行推理测试outputs rknn.inference(inputs[img],data_formatNone)show_outputs(softmax(np.array(outputs[0][0])))# 调用release释放rknn对象rknn.release() 修改之后该程序就可以通过 rknntoolkitlite2 在开发板上运行了。注意是在开发板上单独运行不受宿主机的调配不是上面那个连板推理。上面那个连板推理只是模拟在开发板上单独运行的情况。 需要将修改后的代码文件拷贝到开发板上要想正常运行该程序还需要在开发板系统上搭建rknntoolkitlite2 的使用环境关于环境搭建步骤请参考博文rknntoolkitlite2环境搭建-CSDN博客 在Ubuntu虚拟系统中使用命令 adb push [rknntoolkitlite2_learning 的路径] [/home/topeet(开发板上的指定目录)]将项目文件夹拷贝到开发板的指定目录下我的项目文件夹 rknntoolkitlite2_learning 位于虚拟系统的 /home/topeet/rknn/rknntoolkitlite2_learning因此执行如下命令 拷贝结束后在MobaXterm中查看该文件夹如下 然后执行.py程序这个程序是我们修改后的代码如下所示 得到结果 终端给出了TOP5的概率值与连板推理下的一样。