YoloV9 for a bare Raspberry Pi 4/5
BSD-3-CLAUSE License
Paper: https://arxiv.org/pdf/2402.13616.pdf Special made for a bare Raspberry Pi 4, see Q-engineering deep learning examples
Numbers in FPS and reflect only the inference timing. Grabbing frames, post-processing and drawing are not taken into account.
Model | size | mAP | Jetson Nano | RPi 4 1950 | RPi 5 2900 | Rock 5 | RK35881NPU | RK3566/682NPU | NanoTensorRT | OrinTensorRT |
---|---|---|---|---|---|---|---|---|---|---|
NanoDet | 320x320 | 20.6 | 26.2 | 13.0 | 43.2 | 36.0 | ||||
NanoDet Plus | 416x416 | 30.4 | 18.5 | 5.0 | 30.0 | 24.9 | ||||
PP-PicoDet | 320x320 | 27.0 | 24.0 | 7.5 | 53.7 | 46.7 | ||||
YoloFastestV2 | 352x352 | 24.1 | 38.4 | 18.8 | 78.5 | 65.4 | ||||
YoloV2 20 | 416x416 | 19.2 | 10.1 | 3.0 | 24.0 | 20.0 | ||||
YoloV3 20 | 352x352 tiny | 16.6 | 17.7 | 4.4 | 18.1 | 15.0 | ||||
YoloV4 | 416x416 tiny | 21.7 | 16.1 | 3.4 | 17.5 | 22.4 | ||||
YoloV4 | 608x608 full | 45.3 | 1.3 | 0.2 | 1.82 | 1.5 | ||||
YoloV5 | 640x640 nano | 22.5 | 5.0 | 1.6 | 13.6 | 12.5 | 58.8 | 14.8 | 19.0 | 100 |
YoloV5 | 640x640 small | 22.5 | 5.0 | 1.6 | 6.3 | 12.5 | 37.7 | 11.7 | 9.25 | 100 |
YoloV6 | 640x640 nano | 35.0 | 10.5 | 2.7 | 15.8 | 20.8 | 63.0 | 18.0 | ||
YoloV7 | 640x640 tiny | 38.7 | 8.5 | 2.1 | 14.4 | 17.9 | 53.4 | 16.1 | 15.0 | |
YoloV8 | 640x640 nano | 37.3 | 14.5 | 3.1 | 20.0 | 16.3 | 53.1 | 18.2 | ||
YoloV8 | 640x640 small | 44.9 | 4.5 | 1.47 | 11.0 | 9.2 | 28.5 | 8.9 | ||
YoloV9 | 640x640 comp | 53.0 | 1.2 | 0.28 | 1.5 | 1.2 | ||||
YoloX | 416x416 nano | 25.8 | 22.6 | 7.0 | 38.6 | 28.5 | ||||
YoloX | 416x416 tiny | 32.8 | 11.35 | 2.8 | 17.2 | 18.1 | ||||
YoloX | 640x640 small | 40.5 | 3.65 | 0.9 | 4.5 | 7.5 | 30.0 | 10.0 |
1 The Rock 5 and Orange Pi5 have the RK3588 on board. 2 The Rock 3, Radxa Zero 3 and Orange Pi3B have the RK3566 on board. 20 Recognize 20 objects (VOC) instead of 80 (COCO)
At this time, the authors have not yet released any small models. Only the compact and full are available. Therefore, YoloV9 will be very slow on a Raspberry Pi. See also issue #3
To run the application, you have to:
$ sudo apt-get install codeblocks
)To extract and run the network in Code::Blocks $ mkdir MyDir $ cd MyDir $ wget https://github.com/Qengineering/YoloV9-ncnn-Raspberry-Pi-4/archive/refs/heads/main.zip $ unzip -j master.zip Remove master.zip, LICENSE and README.md as they are no longer needed. $ rm master.zip $ rm LICENSE $ rm README.md Your MyDir folder must now look like this: parking.jpg busstop.jpg YoloV9.cpb yoloV9.cpp yolov9c.bin yolov9c.param
To run the application load the project file YoloV9.cbp in Code::Blocks. More info or if you want to connect a camera to the app, follow the instructions at Hands-On.
A more than special thanks to twlelev, who adapted the YoloV9 model to the ncnn framework.