- 1. Description
- 2. Current Support Platform
- 3. Pretrained Model
- 4. Convert to RKNN
- 5. Python Demo
- 6. Android Demo
- 7. Linux Demo
- 8. Expected Results
The model used in this example comes from the following open source projects:
https://github.com/airockchip/yolov7
RK3566, RK3568, RK3588, RK3562, RK1808, RV1109, RV1126
Download link:
./yolov7-tiny.onnx
./yolov7.onnx
Download with shell command:
cd model
./download_model.sh
Note: The model provided here is an optimized model, which is different from the official original model. Take yolov7-tiny.onnx as an example to show the difference between them.
- The comparison of their output information is as follows. The left is the official original model, and the right is the optimized model. The three colored boxes in the figure represent the changes of the three outputs.
- Taking the output change [1,3,20,20,85]->[1,255,20,20] as an example, we remove the subgraphs behind the convolution node in the model (the framed part in the figure), and keep the output of the convolution ([1,255,20,20]).
Usage:
cd python
python convert.py <onnx_model> <TARGET_PLATFORM> <dtype(optional)> <output_rknn_path(optional)>
# such as:
python convert.py ../model/yolov7-tiny.onnx rk3588
# output model will be saved as ../model/yolov7.rknn
Description:
<onnx_model>
: Specify ONNX model path.<TARGET_PLATFORM>
: Specify NPU platform name. Support Platform refer [here](#2 Current Support Platform).<dtype>(optional)
: Specify asi8
,u8
orfp
.i8
/u8
for doing quantization,fp
for no quantization. Default isi8
.<output_rknn_path>(optional)
: Specify save path for the RKNN model, default save in the same directory as ONNX model with nameyolov7.rknn
Usage:
cd python
# Inference with PyTorch model or ONNX model
python yolov7.py --model_path <pt_model/onnx_model> --img_show
# Inference with RKNN model
python yolov7.py --model_path <rknn_model> --target <TARGET_PLATFORM> --img_show
Description:
-
<TARGET_PLATFORM>
: Specify NPU platform name. Support Platform refer [here](#2 Current Support Platform). -
<pt_model / onnx_model / rknn_model>
: Specify the model path.
Note: RK1808, RV1109, RV1126 does not support Android.
Please refer to the Compilation_Environment_Setup_Guide document to setup a cross-compilation environment and complete the compilation of C/C++ Demo.
Note: Please replace the model name with yolov7
.
With device connected via USB port, push demo files to devices:
adb root
adb remount
adb push install/<TARGET_PLATFORM>_android_<ARCH>/rknn_yolov7_demo/ /data/
adb shell
cd /data/rknn_yolov7_demo
export LD_LIBRARY_PATH=./lib
./rknn_yolov7_demo model/yolov7.rknn model/bus.jpg
-
After running, the result was saved as
out.png
. To check the result on host PC, pull back result referring to the following command:adb pull /data/rknn_yolov7_demo/out.png
-
Output result refer Expected Results.
Please refer to the Compilation_Environment_Setup_Guide document to setup a cross-compilation environment and complete the compilation of C/C++ Demo.
Note: Please replace the model name with yolov7
.
- If device connected via USB port, push demo files to devices:
adb push install/<TARGET_PLATFORM>_linux_<ARCH>/rknn_yolov7_demo/ /userdata/
- For other boards, use
scp
or other approaches to push all files underinstall/<TARGET_PLATFORM>_linux_<ARCH>/rknn_yolov7_demo/
touserdata
.
adb shell
cd /userdata/rknn_yolov7_demo
export LD_LIBRARY_PATH=./lib
./rknn_yolov7_demo model/yolov7.rknn model/bus.jpg
-
After running, the result was saved as
out.png
. To check the result on host PC, pull back result referring to the following command:adb pull /userdata/rknn_yolov7_demo/out.png
-
Output result refer Expected Results.
This example will print the labels and corresponding scores of the test image detect results, as follows:
person @ (212 241 285 511) 0.886
bus @ (86 134 540 444) 0.855
person @ (476 237 561 519) 0.835
person @ (112 234 218 531) 0.835
person @ (79 330 124 524) 0.346
- Note: Different platforms, different versions of tools and drivers may have slightly different results.