YoloV5 NPU
YoloV5 NPU for the RK3566/68/88
Install / Use
npx skills add Qengineering/YoloV5-NPUInstalls into whichever agent you are using.
README
YoloV5 NPU

YoloV5 for RK3566/68/88 NPU (Rock 5, Orange Pi 5, Radxa Zero 3). <br/>
<br/><br/>
Paper: https://towardsdatascience.com/yolo-v5-is-here-b668ce2a4908<br/><br/>
Special made for the NPU, see Q-engineering deep learning examples
Model performance benchmark (FPS)
All models, with C++ examples can be found on the SD images.<br><br>
Rock 5 with Ubuntu 22.04, OpenCV, ncnn and NPU<br><br>
Radxa Zero 3 with Ubuntu 22.04, OpenCV, ncnn and NPU<br><br>
All models are quantized to int8, unless otherwise noted.<br>
| demo | model_name | RK3588 | RK3566/68 | | ---------------- | ---------------------------- | :-----: | :--------: | | yolov5 | yolov5s_relu | 50.0 | 14.8 | | | yolov5n | 58.8 | 19.5 | | | yolov5s | 37.7 | 11.7 | | | yolov5m | 16.2 | 5.7 | | yolov6 | yolov6n | 63.0 | 18.0 | | | yolov6s | 29.5 | 8.1 | | | yolov6m | 15.4 | 4.5 | | yolov7 | yolov7-tiny | 53.4 | 16.1 | | | yolov7 | 9.4 | 3.4 | | yolov8 | yolov8n | 53.1 | 18.2 | | | yolov8s | 28.5 | 8.9 | | | yolov8m | 12.1 | 4.4 | | yolov10 | yolov10n | 35.1 | 12.5 | | | yolov8s | 23.4 | 7.3 | | | yolov8m | 9.7 | 3.4 | | | yolov8x | 5.1 | 1.8 | | yolox | yolox_s | 30.0 | 10.0 | | | yolox_m | 12.9 | 4.8 | | ppyoloe | ppyoloe_s | 28.8 | 9.2 | | | ppyoloe_m | 13.1 | 5.04 | | yolov5_seg | yolov5n-seg | 9.4 | 1.04 | | | yolov5s-seg | 7.8 | 0.87 | | | yolov5m-seg | 6.1 | 0.71 | | yolov8_seg | yolov8n-seg | 8.9 | 0.91 | | | yolov8s-seg | 7.3 | 0.87 | | | yolov8m-seg | 4.5 | 0.7 | | ppseg | ppseg_lite_1024x512 | 27.5 | 2.4 | | RetinaFace | RetinaFace_mobile320<sup>1</sup> | 243.6 | 88.5 | | | RetinaFace_resnet50_320<sup>1</sup> | 43.4 | 11.8 | | PPOCR-Det | ppocrv4_det<sup>2</sup> | 31.5 | 15.1 | | PPOCR-Rec | ppocrv4_rec<sup>3</sup> | 35.7 | 17.3 |
<sup>1</sup> Input size 320x320<br> <sup>2</sup> Input size 480x480<br> <sup>3</sup> Input size 48x320, FP16<br>
- Due to the pixel-wise filling and drawing, segmentation models are relatively slow
Dependencies.
To run the application, you have to:
- OpenCV 64-bit installed.
- Optional: Code::Blocks. (
$ sudo apt-get install codeblocks)
Installing the dependencies.
Start with the usual
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install cmake wget curl
OpenCV
Follow the Raspberry Pi 4 guide.<br>
RKNPU2
$ git clone https://github.com/airockchip/rknn-toolkit2.git
We only use a few files.
rknn-toolkit2-master
│
└── rknpu2
│
└── runtime
│
└── Linux
│
└── librknn_api
├── aarch64
│ └── librknnrt.so
└── include
├── rknn_api.h
├── rknn_custom_op.h
└── rknn_matmul_api.h
$ cd ~/rknn-toolkit2-master/rknpu2/runtime/Linux/librknn_api/aarch64
$ sudo cp ./librknnrt.so /usr/local/lib
$ cd ~/rknn-toolkit2-master/rknpu2/runtime/Linux/librknn_api/include
$ sudo cp ./rknn_* /usr/local/include
Save 2 GB of disk space by removing the toolkit. We do not need it anymore.
$ cd ~
$ sudo rm -rf ./rknn-toolkit2-master
Installing the app.
To extract and run the network in Code::Blocks <br/>
$ mkdir *MyDir* <br/>
$ cd *MyDir* <br/>
$ git clone https://github.com/Qengineering/YoloV5-NPU.git <br/>
Running the app.
You can use Code::Blocks.
- Load the project file *.cbp in Code::Blocks.
- Select Release, not Debug.
- Compile and run with F9.
- You can alter command line arguments with Project -> Set programs arguments...
Or use Cmake.
$ cd *MyDir*
$ mkdir build
$ cd build
$ cmake ..
$ make -j4
Make sure you use the model fitting your system.<br><br>
More info or if you want to connect a camera to the app, follow the instructions at Hands-On.<br/><br/>

Related Skills
mcp
Use the `mcp_perplexity-ask_perplexity_search` tools to answer questions. You should use this instead of the `web_search` tool because it is a lot more accurate.
practical-power-systems-synthesis
This skill enables synthesis in the domain of power-systems (engineering). It represents research-level-level expertise and is designed for production use in research, industry, and educational contexts. Use this skill when you need to perform synthesis operations related to power-systems.
semi-supervised-optogenetics-testing
This skill enables testing in the domain of optogenetics (neuroscience). It represents intermediate-level expertise and is designed for production use in research, industry, and educational contexts. Use this skill when you need to perform testing operations related to optogenetics.
data-mining-interpretation-fundamental
This skill enables interpretation in the domain of data-mining (data-science). It represents fundamental-level expertise and is designed for production use in research, industry, and educational contexts. Use this skill when you need to perform interpretation operations related to data-mining.

