ROC-RK3588S-PC上手+模型测试教程

一、装机

1.准备

主机、开发板、电源线、TypeC-USB线

2.准备固件

~下载链接:Firefly | 让科技更简单,让生活更智能

 

 ~下载完成后,如下红框为所需固件:

3. 安装驱动

~下载链接1:Firefly | 让科技更简单,让生活更智能

~解压后得到如图:

~先点击“驱动卸载”,然后成功后,再点击“驱动安装”,显示成功。

~下载链接2:Firefly | 让科技更简单,让生活更智能

~ 下载好后,如图,此时,下方还不是“Found One ADB Device”,继续接下来的步骤。

4.进入升级模式

~断开电源连接,用Type-C接线和电脑端连接,如图接口。

 ~按住Recovery键,保持

(此时注意,Recovery键是水平的黑色按键,和左侧黑色接口贴的很死,需要指甲伸进去然后按下。)

 ~此时接上电源,大概两秒之后,松开手即可。

 5.开始升级

~此时进入3中下载的软件,按照如图三步走

~Firmware弹出的框,选择 2里面红框标识的文件。然后点击

~ 开始进行更新,右边白框会显示数据。

~等出现success时,升级结束。此时开发板亮起了蓝色指示灯。

6.adb进入板子

~先下载adb

~下载链接:Firefly | 让科技更简单,让生活更智能

~然后解压到C盘,目录地址为C:\adb

(注意,必须是C,要不还得自己配环境变量)

~键盘快捷键:windows键+R进入cmd界面

~输入

cd C:\adb
adb shell

 ~如下,即完成本步骤

二、测试前环境安装 

1.下载toolkit包

GitHub - rockchip-linux/rknn-toolkit2 

2.Linux系统安装miniconda

conda创建环境,并激活

3.安装开发环境

sudo apt-get install python3 python3-dev python3-pip

sudo apt-get install libxslt1-dev zlib1g zlib1g-dev libglib2.0-0 libsm6 \
libgl1-mesa-glx libprotobuf-dev gcc

然后打开下载的toolkit2包,进入package/

这一步记住根据python版本和linux系统选择合适的whl包:

sudo pip3 install rknn_toolkit2.xxxxxx.whl

检查安装是否成功,如图即为成功

4. 上机测试

通过typeC-usb线连接到linux系统,然后查看设备

adb devices

红框为当前连接设备ID号

5.连板调试启动

adb push Linux/rknn_server/${BOARD_ARCH}/usr/bin/ /usr/bin
adb push Linux/librknn_api/${BOARD_ARCH}/librknnrt.so /usr/lib目录

 然后输入指令进入串口终端

adb shell

执行

chmod +x /vendor/bin/rknn_server
sync
reboot

此时启动成功

6.测试代码

import os
import urllib
import traceback
import time
import sys
import numpy as np
import cv2
from rknn.api import RKNN

ONNX_MODEL = 'yolov5m6_new.onnx'
RKNN_MODEL = 'yolov5m6_new.rknn'

QUANTIZE_ON = True #是否量化
batch = 16
channel = 3
height = 640
width = 640
output_names=['/24/m.0/Conv_output_0','/24/m.1/Conv_output_0','/24/m.2/Conv_output_0']
input_name = 'images'
DEVICE_ID = '0b269a5507adbdf4' #设备ID号
DATASET = './dataset.txt' #模型输入数据地址保存位置

if __name__ == '__main__':

    # Create RKNN object
    rknn = RKNN(verbose=True)

    # pre-process config
    print('--> Config model')
    rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')
    print('done')

    # Load ONNX model
    print('--> Loading model')
    ret = rknn.load_onnx(model=ONNX_MODEL,
    			inputs=[input_name],
            		input_size_list=[[batch,channel,height,width]],
            		outputs= output_names)
    if ret != 0:
        print('Load model failed!')
        exit(ret)
    print('done')

    # Build model
    print('--> Building model')
    img = np.random.randn(batch, height, width, 3)*255-128
    img = img.astype(np.int8)
    img_0 = np.random.randn(batch, 3, height, width)*255-128
    img_0 = img_0.astype(np.int8)
    np.save("img_0.npy", img_0)
    ret = rknn.build(do_quantization=QUANTIZE_ON,dataset=DATASET)
    if ret != 0:
        print('Build model failed!')
        exit(ret)
    print('done')

    # Export RKNN model
    print('--> Export rknn model')
    ret = rknn.export_rknn(RKNN_MODEL)
    if ret != 0:
        print('Export rknn model failed!')
        exit(ret)
    print('done')

    # Init runtime environment
    print('--> Init runtime environment')
    #ret = rknn.init_runtime()
    ret = rknn.init_runtime(target='rk3588', device_id=DEVICE_ID, perf_debug=True,eval_mem=True)
    #ret = rknn.init_runtime(target='rk3588', )
    if ret != 0:
        print('Init runtime environment failed!')
        exit(ret)
    print('done')

    # Set inputs
    #img = cv2.imread(IMG_PATH)


    # # Inference
    # print('--> Running model')
    # outputs = rknn.inference(inputs=[img])
    # Inference
    
    outputs = rknn.inference(inputs=[img], data_format="nhwc")
    rknn.eval_perf(is_print=True)


    rknn.release()

三、遇到问题怎么解决

安装、调试啥的问题,文档里面自取

https://github.com/rockchip-linux/rknn-toolkit2/blob/master/doc/Rockchip_Trouble_Shooting_RKNN_Toolkit2_CN-1.5.2.pdf

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值