Paper: https://tech.meituan.com/2022/06/23/yolov6-a-fast-and-accurate-target-detection-framework-is-opening-source.html
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 | RK35881 NPU |
RK3566/682 NPU |
Nano TensorRT |
Orin TensorRT |
---|---|---|---|---|---|---|---|---|---|---|
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)
To run the application, you have to:
- A Raspberry Pi 4 with a 32 or 64-bit operating system. It can be the Raspberry 64-bit OS, or Ubuntu 18.04 / 20.04. Install 64-bit OS
- The Tencent ncnn framework installed. Install ncnn
- OpenCV 64-bit installed. Install OpenCV 4.5
- Code::Blocks installed. (
$ sudo apt-get install codeblocks
)
To extract and run the network in Code::Blocks
$ mkdir MyDir
$ cd MyDir
$ wget https://github.com/Qengineering/YoloV6-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
YoloV6.cpb
yolo.cpp
yolo.h
yoloV6main.cpp
yolov6n.bin
yolov6n.param
To run the application load the project file YoloV7.cbp in Code::Blocks. More info or
if you want to connect a camera to the app, follow the instructions at Hands-On.
Instead of Code::Blocks, you can now use CMake to build the application.
Please follow the instructions at #12. Although it is used to build another application, the instructions and steps are identical.
YoloV6 can handle different input resolutions without changing the deep learning model.
On line 28 of yolov6main.cpp
you can change the target_size
(default 640).
Decreasing the size to say 412 will speed up the inference time. On the other hand, the resizing makes the image less detailed; the model will no longer detect all objects.
Many thanks to nihui and FeiGeChuanShu