Khadas Docs

Amazing Khadas, always amazes you!

User Tools

Site Tools


Sidebar

products:sbc:edge2:npu:npu-convert

This is an old revision of the document!


NPU Model Convert

Introduction

Virtual Environment

The SDK only supports python3.6 or python3.8, here is an example of creating a virtual environment for python3.8.

Install python packages.

sudo apt update
sudo apt install python3-dev python3-numpy

Follow this docs to install conda.

Then create a virtual environment.

conda create -n npu-env python=3.8
conda activate npu-env     #activate
conda deactivate           #deactivate

After creating the virtual environment, start the virtual environment and start the next step.

Get SDK

Clone SDK from Rockchip Github.

git clone https://github.com/rockchip-linux/rknn-toolkit2.git
git checkout 9ad79343fae625f4910242e370035fcbc40cc31a

Convert

Install dependences and RKNN toolkit2 packages,

cd rknn-toolkit2
sudo apt-get install python3 python3-dev python3-pip
sudo apt-get install libxslt1-dev zlib1g-dev libglib2.0 libsm6 libgl1-mesa-glx libprotobuf-dev gcc cmake
pip3 install -r doc/requirements_cp38-*.txt
pip3 install packages/rknn_toolkit2-*-cp38-cp38-linux_x86_64.whl

Choose RK3588S,

patch
diff --git a/examples/onnx/yolov5/test.py b/examples/onnx/yolov5/test.py
index a1c9988..f7ce11e 100644
--- a/examples/onnx/yolov5/test.py
+++ b/examples/onnx/yolov5/test.py
@@ -240,7 +240,7 @@ if __name__ == '__main__':
 
     # pre-process config
     print('--> Config model')
-    rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]])
+    rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform='rk3588')
     print('done')
 
 

At present, we support loading and converting Caffe, TensorFlow, TensorFlow Lite, ONNX, DarkNet, PyTorch model. Each platform has its own interface.

Caffe

ret = rknn.load_caffe(model='./mobilenet_v2.prototxt', 
                      blobs='./mobilenet_v2.caffemodel')

Tensorflow

ret = rknn.load_tensorflow(tf_pb='./ssd_mobilenet_v1_coco_2017_11_17.pb',
                           inputs=['Preprocessor/sub'],
                           outputs=['concat', 'concat_1'],
                           input_size_list=[[300, 300, 3]])

TensorFlow Lite

ret = rknn.load_tflite(model = './mobilenet_v1.tflite')

Onnx

ret = rknn.load_onnx(model = './arcface.onnx')

Darknet

ret = rknn.load_darknet(model = './yolov3-tiny.cfg',
                        weight= './yolov3.weights')

Pytorch

ret = rknn.load_pytorch(model = './resnet18.pt',
                         input_size_list=[[1,3,224,224]])

Convert yolov5 as a example,

cd examples/onnx/yolov5/
python3 test.py

After convert, it will generate the rknn file yolov5s.rknn.

$ ls
bus.jpg  dataset.txt  onnx_yolov5_0.npy  onnx_yolov5_1.npy  onnx_yolov5_2.npy  test.py  yolov5s.onnx  yolov5s.rknn

See Also

For more usage, please refer to the related documents under doc.

Last modified: 2023/07/04 05:18 by louis