首页 > 其他分享 >正点原子RK3588(一)——开机测试+AI初探

正点原子RK3588(一)——开机测试+AI初探

时间:2024-09-25 13:57:59浏览次数:3  
标签:rknn RKNN AI RK3588 host 正点 print model


一、adb

adb shell,进入板子的根目录
exit,退出到linux
adb pull 板子 linux(从板子到linux)
adb push linux 板子(从linux到板子)

二、测试AI功能

2.1 resnet18

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

# decice tree for RK356x/RK3576/RK3588
DEVICE_COMPATIBLE_NODE = '/proc/device-tree/compatible'

def get_host():
    # get platform and device type
    system = platform.system()
    machine = platform.machine()
    os_machine = system + '-' + machine
    if os_machine == 'Linux-aarch64':
        try:
            with open(DEVICE_COMPATIBLE_NODE) as f:
                device_compatible_str = f.read()
                if 'rk3562' in device_compatible_str:
                    host = 'RK3562'
                elif 'rk3576' in device_compatible_str:
                    host = 'RK3576'
                elif 'rk3588' in device_compatible_str:
                    host = 'RK3588'
                else:
                    host = 'RK3566_RK3568'
        except IOError:
            print('Read device node {} failed.'.format(DEVICE_COMPATIBLE_NODE))
            exit(-1)
    else:
        host = os_machine
    return host

INPUT_SIZE = 224

RK3566_RK3568_RKNN_MODEL = 'resnet18_for_rk3566_rk3568.rknn'
RK3588_RKNN_MODEL = 'resnet18_for_rk3588.rknn'
RK3562_RKNN_MODEL = 'resnet18_for_rk3562.rknn'
RK3576_RKNN_MODEL = 'resnet18_for_rk3576.rknn'


def show_top5(result):
    output = result[0].reshape(-1)
    # Softmax
    output = np.exp(output) / np.sum(np.exp(output))
    # Get the indices of the top 5 largest values
    output_sorted_indices = np.argsort(output)[::-1][:5]
    top5_str = 'resnet18\n-----TOP 5-----\n'
    for i, index in enumerate(output_sorted_indices):
        value = output[index]
        if value > 0:
            topi = '[{:>3d}] score:{:.6f} class:"{}"\n'.format(index, value, labels[index])
        else:
            topi = '-1: 0.0\n'
        top5_str += topi
    print(top5_str)


if __name__ == '__main__':

    # Get device information
    host_name = get_host()
    if host_name == 'RK3566_RK3568':
        rknn_model = RK3566_RK3568_RKNN_MODEL
    elif host_name == 'RK3562':
        rknn_model = RK3562_RKNN_MODEL
    elif host_name == 'RK3576':
        rknn_model = RK3576_RKNN_MODEL
    elif host_name == 'RK3588':
        rknn_model = RK3588_RKNN_MODEL
    else:
        print("This demo cannot run on the current platform: {}".format(host_name))
        exit(-1)

    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')

    ori_img = cv2.imread('./space_shuttle_224.jpg')
    img = cv2.cvtColor(ori_img, cv2.COLOR_BGR2RGB)
    img = np.expand_dims(img, 0)

    # Init runtime environment
    print('--> Init runtime environment')
    # Run on RK356x / RK3576 / RK3588 with Debian OS, do not need specify target.
    if host_name in ['RK3576', 'RK3588']:
        # For RK3576 / RK3588, specify which NPU core the model runs on through the core_mask parameter.
        ret = rknn_lite.init_runtime(core_mask=RKNNLite.NPU_CORE_0)
    else:
        ret = rknn_lite.init_runtime()
    if ret != 0:
        print('Init runtime environment failed')
        exit(ret)
    print('done')

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

    # Show the classification results
    show_top5(outputs)
    print('done')

    rknn_lite.release()

正点原子RK3588(一)——开机测试+AI初探_linux

2.2 对于安装

1.安装anacoda
2. 安装adb
3. 安装交叉编译工具链
4. 安装RKNN Toolkit Lite2
5. 更新NPU驱动(待)
6. 查看和调整CPU与NPU频率(待)
7. 安装rknn-toolkit2(待)
8. 安装conda(待)

RKNN Toolkit Lite2和rknn-toolkit2
rknn-toolkit2 的出现解决了这一难题。它提供了一个完整的解决方案,允许开发者将已经训练好的深度学习模型(如传统的TensorFlow、Pytorch、onnx 等格式的模型)转换为优化的rknn 格式,这些格式的模型能够充分利用RK3568、RK3588 等设备的硬件特性,从而在保证模型性能的同时,降低了对计算资源的需求。(优化,变成RKNN)

RKNN Toolkit Lite2 是一个轻量级的工具,专门为带有Rockchip NPU平台提供Python编程接口,帮助用户部署使用RKNN-Toolkit2导出的RKNN模型。它更侧重于在开发板上的部署和推理,通常用于实际的硬件环境中。RKNN Toolkit Lite2的开发文档位于 external/rknn/rknn-toolkit2/rknn-toolkit-lite2/doc 目录下,并且在Toybrick Debian11系统中已经预装了RKNN Toolkit Lite2的whl包 。

rknn-toolkit2 是一个更全面的开发套件,它不仅包括了Lite2的功能,还提供了更多的工具和接口,用于在PC平台上进行模型转换、推理和性能评估。它支持的功能更多,包括模型转换、量化、性能和内存评估等。rknn-toolkit2的开发文档位于 external/rknn/rknn-toolkit2/doc 目录下 。


标签:rknn,RKNN,AI,RK3588,host,正点,print,model
From: https://blog.51cto.com/u_15909950/12108276

相关文章

  • 阿里云主力模型直降97%,AI行业起飞
    阿里云主力模型直降97%,AI行业起飞大模型降价潮对AI应用的爆发有哪些意义对AI行业的影响大模型降价潮关于大模型降价潮,阿里云对外宣布通义千问GPT-4级主力模型Qwen-Long,API输入价格从0.02元/千tokens降至0.0005元/千tokens,直降97%,那么为了证实这一点,特意查询了通义千问的......
  • AI产品经理必知的133个专业术语
     一、机器学习与数据科学1、监督学习(SupervisedLearning)监督学习是机器学习的一种形式,其中模型通过带标签的数据集进行训练。训练数据包括输入特征(X)和对应的输出标签(Y),模型从中学习输入与输出的关系。2、无监督学习(UnsupervisedLearning)无监督学习是另一种机器学习形式,......
  • SimpleAISearch:C# + DuckDuckGo 实现简单的AI搜索
    SimpleAISearch:C#+DuckDuckGo实现简单的AI搜索 合集-C#(79)  最近AI搜索很火爆,有Perplexity、秘塔AI、MindSearch、Perplexica、memfree、khoj等等。在使用大语言模型的过程中,或许你也遇到了这种局限,就是无法获取网上最新的信息,导致回答的内容不是基于最新的信......
  • 【论文阅读】ChainedDiffuser: Unifying Trajectory Diffusion and Keypose Predictio
    Abstract我们提出了chaineddiffuser,这是一种policy架构,它结合了动作键预测和轨迹扩散生成,用于从演示中学习机器人操作。我们的主要创新是使用全局基于转换器的动作预测器来预测关键帧的动作,这是一项需要多模态语义场景理解的任务,并使用局部轨迹扩散器来预测连接预测宏动作的轨......
  • AI推介-大语言模型LLMs论文速览(arXiv方向):2024.08.25-2024.08.31
    文章目录~1.LongRecipe:RecipeforEfficientLongContextGeneralizationinLargeLanguageModels2.GenAI-poweredMulti-AgentParadigmforSmartUrbanMobility:OpportunitiesandChallengesforIntegratingLargeLanguageModels(LLMs)andRetrieval-Augm......
  • 初步学习async/await,Task.GetAwaiter,Task.Result
    初步学习async/await,Task.GetAwaiter,Task.Result   网上关于async/await的知识有很多,看了很多但不如自己实践一遍来得快,所以这里记录下我的理解和大家学习下。  首先以最简单的同步方法来开始如下privatestaticvoidTest(){Console.Wr......
  • SimpleAIAgent:使用免费的glm-4-flash即可开始构建简单的AI Agent应用
    SimpleAIAgent是基于C#SemanticKernel与WPF构建的一款AIAgent探索应用。主要用于使用国产大语言模型或开源大语言模型构建AIAgent应用的探索学习,希望能够帮助到感兴趣的朋友。接下来我想分享一下我的AIAgent应用实践。翻译文本并将文本存入文件第一个例子是翻译文本,并将......
  • AIGC赋能游戏美术新高度,2024年还不会用AI技术的原画师设计师真的out了!
    大家好,我是强哥随着AIGC技术的飞速发展与大模型的不断成熟迭代,使得其应用前景正在越来越宽阔地展现出来,**“AIGC+”也将逐渐成为各类行业发展的新模式,**也极大地提升了各内容行业的想象空间。而在众多应用领域中,游戏相比其他内容形态具备更强的科技属性,这意味着,游戏行业有......
  • 流量新密码?AI宠物定制写真在网络爆火,有人搞了10W+,有手就行
    大家好,我是强哥不知道大家发现没?消费者对于情感价值的需求猛增,宠物服务行业衍生出越来越多的“拟人化”新业态。宠物摄影和写真成为宠物经济中的新兴行业,吸引了越来越多的摄影师和养宠人的关注。一些摄影师和摄影机构单独开辟了这个业务,通过给宠物穿上服装、拍摄“毛孩子......
  • 小北用AI做了一个合并Excel的工具,全程只动嘴,不动手
    前言友友们日常工作中经常有合并excel表格的需求,比如说小北要把下面三个开票申请表合并汇总成一个总的文件。如果需要合并的文件数量少,那还可以手工的复制粘贴。如果文件数量巨大,而且格式还不一样,那估计心里就阿巴阿巴了~跟着小北5分钟上手AI代码编辑器Cursor,零基础开发Chrome......