Please enable javascript, or click here to visit my ecommerce web site powered by Shopify.
Jump to: navigation, search

Rock3/dev/npu-run-test

< Rock3‎ | dev
    ROCK 3 >  Development >  NPU Run Test

Description

SoC RK3568 is equipped with 0.8TOPS NPU. This tutorial shows how to make the NPU run on ROCK 3A, and provides an example and test results.

Hardware supported

  • ROCK 3A
  • ROCK 3B
  • Radxa CM3 IO Board
  • Radxa E23
  • Radxa E25

Now follow me to make the NPU run.

Setup steps

Step 1: Get system image

You can get system image from ROCK 3A System images.

Here we are concerned about the kernel version. Make sure that kernel is at least 4.19.193-25-rockchip.

root@rock-3a:/home/rock# uname -r
4.19.193-25-rockchip-g56fae2db273e

If not, try to upgrade the kernel via the following commands.

Uncomment "deb http://apt.radxa.com/buster-testing/ buster main" in file /etc/apt/sources.list.d/apt-radxa-com.list. Here I use debian buster image. So its content is

deb http://apt.radxa.com/buster-stable/ buster main
deb http://apt.radxa.com/buster-testing/ buster main

If you use ubuntu focal image, It should be like this

deb http://apt.radxa.com/focal-stable/ focal main
deb http://apt.radxa.com/focal-testing/ focal main

After saving that file, now we install the latest kernel packages.

root@rock-3a:/home/rock# apt update
root@rock-3a:/home/rock# apt install -y linux-4.19-rock-3-latest

Then reboot the device. Use command 'uname -a' to check the kernel verison again.

Step 2: Get Prebuilt RKNN2 SSD DEMO

Install curl tool.

root@rock-3a:/home/rock# apt update
root@rock-3a:/home/rock# apt install -y curl

Get rknn_ssd_demo_Linux.zip package, check the md5 of file. It should be b03a1b3c236b83def933090c846d24f5. And extract it.

root@rock-3a:/home/rock# curl https://dl.radxa.com/rock3/npu/rknn_ssd_demo_linux_20220728.tar.gz > rknn_ssd_demo_linux_20220728.tar.gz
root@rock-3a:/home/rock# md5sum rknn_ssd_demo_linux_20220728.tar.gz 
f8ed06c1409155ab0bbe08dc27430463  rknn_ssd_demo_linux_20220728.tar.gz
root@rock-3a:/home/rock# tar zxvf rknn_ssd_demo_linux_20220728.tar.gz

Check RKNN runtime version. Here it is 1.3.0.

root@rock-3a:/home/rock# cd rknn_ssd_demo_Linux
root@rock-3a:/home/rock/rknn_ssd_demo_Linux# strings lib/librknnrt.so | grep version
librknnrt version: 1.3.0 (9b36d4d74@2022-05-04T20:17:01)
rknn_query, info_len(%d) != sizeof(rknn_sdk_version)(%d)!
model version < 3, cannot query RKNN_QUERY_NATIVE_NHWC_OUTPUT_ATTR
unsupported file format version
Invalid RKNN model version 
RKNN Model Information: version: %d, toolkit version: %s, target: %s, target platform: %s, framework name: %s, framework layout: %s
failed to check rknpu hardware version: %#x
The rknn model does not match the RKNPU hardware version!
RKNN Model version: %d.%d.%d not match with rknn runtime version: %d.%d.%d
Generated from compiler version: 
(compiler version: 
RKNN Driver Information: version: %d.%d.%d
Mismatch driver version, %s requires driver version >= %d.%d.%d, but you have driver version: %d.%d.%d which is incompatible!
Current driver version: %d.%d.%d, recommend to upgrade the driver to the new version: >= %d.%d.%d
wrong version
incompatible version
.gnu.version
.gnu.version_r

Step3: Run RKNN2 SSD DEMO

These are test commands and result.

root@rock-3a:/home/rock/rknn_ssd_demo_Linux# export LD_LIBRARY_PATH=./lib/
root@rock-3a:/home/rock/rknn_ssd_demo_Linux# ./rknn_ssd_demo model/RK356X/ssd_inception_v2.rknn model/bus.jpg
resize 640 640 to 300 300
Loading model ...
rknn_init ...
model input num: 1, output num: 2
input tensors:
  index=0, name=Preprocessor/sub:0, n_dims=4, dims=[1, 300, 300, 3], n_elems=270000, size=270000, fmt=NHWC, type=UINT8, qnt_type=AFFINE, zp=0, scale=0.007812
output tensors:
  index=0, name=concat:0, n_dims=4, dims=[1, 1917, 1, 4], n_elems=7668, size=30672, fmt=NCHW, type=FP32, qnt_type=AFFINE, zp=53, scale=0.089455
  index=1, name=concat_1:0, n_dims=4, dims=[1, 1917, 91, 1], n_elems=174447, size=697788, fmt=NCHW, type=FP32, qnt_type=AFFINE, zp=53, scale=0.143593
rknn_run
loadLabelName
ssd - loadLabelName ./model/coco_labels_list.txt
loadBoxPriors
person @ (107 241 217 532) 0.994344
bus @ (87 132 567 433) 0.989999
person @ (211 225 290 513) 0.829137

You would also get the output image, out.jpg, under /home/rock/rknn_ssd_demo_Linux directory.

Rock-3a-npu-test-bus-out.jpg

Step4: Run Your Own Built RKNPU Demo

You can get more rknpu demo from RK356X NPU SDK.

Troubleshooting

Check ROCK 3 FAQs first, if it doesn't help, start a new post on the forum https://forum.radxa.com/c/rock3.