Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

products:sbc:edge-2l:npu:rknn-sdk-quick-start

RKNN SDK quick start

Introduction

This document provides a detailed introduction for beginners on how to quickly use RKNN-Toolkit2 on a computer to perform model conversion and deploy it to a Edge 2L board using RKNPU2. The examples used in this document are integrated into the RKNN Model Zoo.

Prepare development environment

The version information we are using is as follows:

  • Host PC Python: 3.8
  • rknn-toolkit2: 2.3.2
  • rknn model zoo: 2.3.2

It is recommended to create a new directory to store the RKNN repositories. For example, create a folder named Projects and place the RKNN-Toolkit2 and RKNN Model Zoo repositories in that directory. Refer to the following commands

$ mkdir Projects && cd Projects 

Download the RKNN-Toolkit2 repository

$ git clone -b v2.3.2 https://github.com/airockchip/rknn-toolkit2.git --depth 1

Download the RKNN Model Zoo repository

$ git clone -b v2.3.2 https://github.com/airockchip/rknn_model_zoo.git --depth 1

Install the RKNN-Toolkit2 environment on your Host PC

Install Python - Host PC

If the Python 3.8 environment is not installed on your system, or if there are multiple versions of Python installed, it is recommended to use Miniforge Conda to create a new Python 3.8 environment.

Install Miniforge Conda - Host PC

Download the Miniforge Conda installer from the following link:

$ wget -c https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh

Then, install Miniforge Conda using the following command:

$ chmod 777 Miniforge3-Linux-x86_64.sh 
$ bash Miniforge3-Linux-x86_64.sh

Create Python environment using miniforge conda - Host PC

In the terminal window on the computer, execute the following command to switch to the Miniforge conda base environment:

$ source ~/miniforge3/bin/activate

Create a Python 3.8 environment named py38Toolkit2.3.2 using the following command:

$ conda create -n py38Toolkit2.3.2 python=3.8

Activate the py38Toolkit2.3.2 environment. Subsequently, RKNN-Toolkit2 will be installed in this environment

$ conda activate py38Toolkit2.3.2

Install RKNN-Toolkit2 - Host PC

Install via local wheel packag.

$ cd rknn-toolkit2/rknn-toolkit2/packages/x86_64/
$ pip3 install -r requirements_cp38-2.3.2.txt
$ pip3 install ./rknn_toolkit2-2.3.2-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Check if the RKNN-Toolkit2 environment - Host PC

Switch to Python interactive mode

$ python

Import the RKNN class

$ from rknn.api import RKNN

Install compilation tools on your host PC

Android - Install NDK for Android system

Note: This section is applicable to development boards with the Android system. If the board is running on the Linux system, please skip this section.
Download the Android NDK from the following link:

$ wget -c https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip

Extract Android NDK files

$ unzip android-ndk-r19c-linux-x86_64.zip

Linux - Install GCC Cross-Compiler for Linux system

Note: This section is applicable to development boards with the Linux system. If the board is running on the Android system, please skip this section.
Download the GCC Cross-Compiler from the following link:

$ wget -c https://releases.linaro.org/components/toolchain/binaries/6.3-2017.05/aarch64-linux-gnu/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

Extract GCC Cross-Compiler files

$ tar -xJvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz

Run example programs

Prepare model

Switch to the rknn_model_zoo/examples/yolov5/model directory, and execute the download_model.sh script. This script will download an available YOLOv5 ONNX model and store it in the current model directory. Refer to the following commands:

$ cd Projects/rknn_model_zoo/examples/yolov5/model
$ chmod a+x download_model.sh && ./download_model.sh

Model conversion

Switch to the rknn_model_zoo/examples/yolov5/python directory and run the convert.py script. This script converts the original ONNX model to the RKNN model. Refer to the following commands:

$ cd Projects/rknn_model_zoo/examples/yolov5/python
$ chmod a+x convert.py && python convert.py ../model/yolov5s_relu.onnx rk3576 i8 ../model/yolov5s_relu.rknn

Run RKNN Python demo

Android

Switch to the rknn_model_zoo/examples/yolov5/python directory, execute the yolov5.py script, and you can run the YOLOv5 model on the development board using on-board debugging. Refer to the following command:

$ cd Projects/rknn_model_zoo/examples/yolov5/python
$ chmod a+x yolov5.py && python yolov5.py --model_path ../model/yolov5s_relu.rknn --target rk3576 --img_show

Linux

Running on a Ubuntu 24.04 system which ship the python version of 3.12.

Download the model zoo to your Edge 2L:

git clone -b v2.3.2 https://github.com/airockchip/rknn_model_zoo.git --depth 1

Install the python virtual environment:

sudo apt update
sudo apt install python3.12-venv -y

Create the python virtual environment:

python3 -m venv myenv312

Activate the python virtual environment:

source myenv312/bin/activate
(myenv312) khadas@Khadas:~$ python --version
Python 3.12.3

Install the python package from rknn-toolkit2/rknn-toolkit-lite2/packages/rknn_toolkit_lite2-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

(myenv312) khadas@Khadas:~$ pip install rknn_toolkit_lite2-2.3.2-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl 

Install the runtime libraries from rknn-toolkit2/rknpu2/runtime/Linux/librknn_api/aarch64/librknnrt.so

sudo cp librknnrt.so /usr/lib/

Install the OpenCV:

(myenv312) khadas@Khadas:~$ pip install opencv-python

Copy the converted model in Model conversion to your Edge 2L:

adb push examples/yolov5/model/yolov5s_relu.rknn /home/khadas/rknn_model_zoo/examples/yolov5/model

Modify the demo code:

diff --git a/py_utils/rknn_executor.py b/py_utils/rknn_executor.py
index 21b4132..46b24d4 100644
--- a/py_utils/rknn_executor.py
+++ b/py_utils/rknn_executor.py
@@ -1,5 +1,5 @@
-from rknn.api import RKNN
-
+from rknnlite.api import RKNNLite as RKNN
+import numpy as np
 
 class RKNN_model_container():
     def __init__(self, model_path, target=None, device_id=None) -> None:
@@ -9,10 +9,7 @@ class RKNN_model_container():
         rknn.load_rknn(model_path)
 
         print('--> Init runtime environment')
-        if target==None:
-            ret = rknn.init_runtime()
-        else:
-            ret = rknn.init_runtime(target=target, device_id=device_id)
+        ret = rknn.init_runtime()
         if ret != 0:
             print('Init runtime environment failed')
             exit(ret)
@@ -33,10 +30,12 @@ class RKNN_model_container():
         else:
             inputs = [inputs]
 
+        inputs = [np.expand_dims(item, axis=0) if len(item.shape) == 3 else item for item in inputs]
+
         result = self.rknn.inference(inputs=inputs)
 
         return result
 
     def release(self):
         self.rknn.release()
-        self.rknn = None
\ No newline at end of file
+        self.rknn = None
(myenv312) khadas@Khadas:~/rknn_model_zoo$ 

Run the Yolov5 demo:

(myenv312) khadas@Khadas:~/rknn_model_zoo/examples/yolov5/python$ export QT_QPA_PLATFORM=xcb
(myenv312) khadas@Khadas:~/rknn_model_zoo/examples/yolov5/python$ python yolov5.py --model_path ../model/yolov5s_relu.rknn --target rk3576 --img_show

Deactivate the python virtual enviranment:

(myenv312) khadas@Khadas:~/rknn_model_zoo$ deactivate 

Run RKNN C demo

To run a RKNN C demo, you need to first compile the C/C++ source code into an executable file. After that, push the executable file, model files, input images, and other related files to the development board. Finally, execute the executable file on the development board.

Android

In the build-android.sh script, add the following command:

$ ANDROID_NDK_PATH=Projects/android-ndk-r19c

Then, in the rknn_model_zoo directory, execute the build-android.sh script, referring to the following command:

$ cd Projects/rknn_model_zoo
$ ./build-android.sh -t rk3576 -a arm64-v8a -d yolov5

Push Files to the Edge 2L board:

$ cd Projects/rknn_model_zoo
$ adb root
$ adb push install/rk3576_android_arm64-v8a/rknn_yolov5_demo/ /data/

Run the Demo on Edge 2L board:

$ adb shell
$ cd /data/rknn_yolov5_demo/
$ export LD_LIBRARY_PATH=./lib
$ ./rknn_yolov5_demo model/yolov5s_relu.rknn model/bus.jpg

Linux

In the build-linux.sh script, add the following command:

$ GCC_COMPILER=Projects/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu

Then, in the rknn_model_zoo directory, execute the build-linux.sh script, referring to the following command:

$ cd Projects/rknn_model_zoo
$ ./build-linux.sh -t rk3576 -a aarch64 -d yolov5

Push Files to the Edge 2L board:

$ cd Projects/rknn_model_zoo
$ adb push install/rk3576_linux_aarch64/rknn_yolov5_demo/ /home/khadas/rknn_yolov5_demo

Run the Demo on Edge 2L board:

$ adb shell
$ cd /home/khadas/rknn_yolov5_demo
$ export LD_LIBRARY_PATH=./lib
$ ./rknn_yolov5_demo model/yolov5s_relu.rknn model/bus.jpg

View results

By default, the output image is saved at the path rknn_yolov5_demo/out.png. You can use the adb tool to pull it from the board to the local machine. In the local computer terminal, execute the following command:

$ adb pull /home/khadas/rknn_yolov5_demo/out.png .

See also

Last modified: 2026/05/31 23:55 by nick