在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 np


def 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:
                break
            if value > 0:
                topi = '{}: {}\n'.format(index[j], value)
            else:
                topi = '-1: 0.0\n'
            top5_str += topi
    print(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 tai
        target_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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值