Qengineering / YoloV8-TensorRT-Jetson_Nano

A lightweight C++ implementation of YoloV8 running on NVIDIAs TensorRT engine
https://qengineering.eu/deep-learning-examples-on-raspberry-32-64-os.html
BSD 3-Clause "New" or "Revised" License
11 stars 1 forks source link
jetson jetson-nano jetson-orin jetson-orin-nano nvidia tensorrt tensorrt-engine tensorrt-inference yolov5 yolov8 yolov8s

YoloV8 TensorRT Jetson (Orin) Nano

TensorRTparking

YoloV8 with the TensorRT framework.

License

A lightweight C++ implementation of YoloV8 running on NVIDIAs TensorRT engine.
No additional libraries are required, just a few lines of code using software, found on every JetPack.

For now: https://github.com/akashAD98/yolov8_in_depth
Paper: on Ultralytics TODO list https://github.com/ultralytics/ultralytics

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


Model performance benchmark(FPS)

All models are quantized to FP16.
The int8 models don't give any increase in FPS, while, at the same time, their mAP is significantly worse.
The numbers reflect only the inference timing. Grabbing frames, post-processing and drawing are not taken into account.

demo model_name Orin Nano Nano
yolov5 yolov5nu 100 20
yolov8 yolov8n 100 19
yolov8s 100 9.25
yolov8m 40 -
yolov8l 20 -
yolov8x 17 -

Dependencies.

To run the application, you have to:

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 Jetson Nano guide or the Jetson Orin Nano guide.


Installing the app.

To extract and run the network in Code::Blocks

$ mkdir *MyDir*
$ cd *MyDir* 
$ git clone --depth=1 https://github.com/Qengineering/YoloV8-TensorRT-Jetson_Nano.git

Getting your onnx model.

You always start with an onnx YoloV8.2 model generated by ultralytics.
There are three ways to obtain a model:


Getting your engine model.

TensorRT works with *.engine models.
The models must be generated by the same version as the TensorRT version on your Jetson, otherwise you run into errors.
TensorRTerror
That's why we provide the underlying onnx models instead of the engine models.
You need your trtexec app on your Jetson to convert the model from onnx to the engine format.
Usually, trtexec is found in the /usr/src/tensorrt/bin/ folder on your Jetson.
You could include this folder in your PATH with the next command.

$ export "PATH=$PATH:/usr/src/tensorrt/bin/" >> ~/.bashrc
$ source ~/.bashrc

To export onnx to engine use the following command.

$ trtexec --onnx=yolov8s.onnx --saveEngine=yolov8s.engine --fp16

Please be patient, it will take minutes to complete the conversion.

Instead of --fp16, you could use --int8. All 16-bit floating points are now pruned to 8-bit integers, giving you a smaller but less accurate model. You can run the app once you have your yolov8s.engine model.


Running the app.

You can use Code::Blocks.

Or use Cmake.

$ cd *MyDir*
$ mkdir build
$ cd build
$ cmake ..
$ make -j4

Thanks.

A more than special thanks to triple-Mu.

TensorRTbusstop


paypal