Skip to content

Qengineering/YoloV7-ncnn-Jetson-Nano

Repository files navigation

YoloV7 Jetson Nano

output image

YoloV7 with the ncnn framework.

License

Paper: https://arxiv.org/pdf/2207.02696.pdf

Specially made for a Jetson Nano see Q-engineering deep learning examples


Benchmark.

Model size mAP Jetson Nano RPi 4 1950 RPi 5 2900 Rock 5
NanoDet 320x320 20.6 26.2 FPS 13.0 FPS 43.2 FPS 36.0 FPS
NanoDet Plus 416x416 30.4 18.5 FPS 5.0 FPS 30.0 FPS 24.9 FPS
PP-PicoDet 320x320 27.0 24.0 FPS 7.5 FPS 53.7 FPS 46.7 FPS
YoloFastestV2 352x352 24.1 38.4 FPS 18.8 FPS 78.5 FPS 65.4 FPS
YoloV2 20 416x416 19.2 10.1 FPS 3.0 FPS 24.0 FPS 20.0 FPS
YoloV3 20 352x352 tiny 16.6 17.7 FPS 4.4 FPS 18.1 FPS 15.0 FPS
YoloV4 416x416 tiny 21.7 16.1 FPS 3.4 FPS 26.8 FPS 22.4 FPS
YoloV4 608x608 full 45.3 1.3 FPS 0.2 FPS 1.82 FPS 1.5 FPS
YoloV5 640x640 small 22.5 5.0 FPS 1.6 FPS 14.9 FPS 12.5 FPS
YoloV6 640x640 nano 35.0 10.5 FPS 2.7 FPS 25.0 FPS 20.8 FPS
YoloV7 640x640 tiny 38.7 8.5 FPS 2.1 FPS 21.5 FPS 17.9 FPS
YoloV8 640x640 nano 37.3 14.5 FPS 3.1 FPS 20.0 FPS 16.3 FPS
YoloV8 640x640 small 44.9 4.5 FPS 1.47 FPS 11.0 FPS 9.2 FPS
YoloX 416x416 nano 25.8 22.6 FPS 7.0 FPS 34.2 FPS 28.5 FPS
YoloX 416x416 tiny 32.8 11.35 FPS 2.8 FPS 21.8 FPS 18.1 FPS
YoloX 640x640 small 40.5 3.65 FPS 0.9 FPS 9.0 FPS 7.5 FPS

20 Recognize 20 objects (VOC) instead of 80 (COCO)


Dependencies.

To run the application, you have to:

  • The Tencent ncnn framework installed. Install ncnn
  • Code::Blocks installed. ($ sudo apt-get install codeblocks)

Installing the app.

To extract and run the network in Code::Blocks
$ mkdir MyDir
$ cd MyDir
$ wget https://github.com/Qengineering/YoloV7-ncnn-Jetson-Nano/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
YoloV7.cpb
yolo.cpp
yolo.h
yoloV7main.cpp
yolov7-tiny.bin
yolov7-tiny.param


Running the app.

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.


Dynamic sizes.

YoloV7 can handle different input resolutions without changing the deep learning model.
On line 28 of yolov7main.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 Xiang Shin Wuu

output image


paypal