# YOLOv8 on Jetson Only test on `Jetson-NX 4GB` ENVS: - Jetpack 4.6.3 - CUDA-10.2 - CUDNN-8.2.1 - TensorRT-8.2.1 - DeepStream-6.0.1 - OpenCV-4.1.1 - CMake-3.10.2 If you have other environment-related issues, please discuss in issue. ## End2End Detection ### 1. Export Detection End2End ONNX `yolov8s.pt` is your trained pytorch model, or the official pre-trained model. Do not use any model other than pytorch model. Do not use [`build.py`](../build.py) to export engine if you don't know how to install pytorch and other environments on jetson. ***!!! Please use the PC to execute the following script !!!*** ```shell # Export yolov8s.pt to yolov8s.onnx python3 export-det.py --weights yolov8s.pt --sim ``` ***!!! Please use the Jetson to execute the following script !!!*** ```shell # Using trtexec tools for export engine /usr/src/tensorrt/bin/trtexec \ --onnx=yolov8s.onnx \ --saveEngine=yolov8s.engine ``` After executing the above command, you will get an engine named `yolov8s.engine` . ### 2. Inference with c++ It is highly recommended to use C++ inference on Jetson. Here is a demo: [`csrc/jetson/detect`](../csrc/jetson/detect) . #### Build: Please modify `CLASS_NAMES` and `COLORS` in [`main.cpp`](../csrc/jetson/detect/main.cpp) for yourself. And build: ``` shell export root=${PWD} cd src/jetson/detect mkdir build cmake .. make mv yolov8 ${root} cd ${root} ``` Usage: ``` shell # infer image ./yolov8 yolov8s.engine data/bus.jpg # infer images ./yolov8 yolov8s.engine data # infer video ./yolov8 yolov8s.engine data/test.mp4 # the video path ``` ## Speedup Segmention ### 1. Export Segmention Speedup ONNX `yolov8s-seg.pt` is your trained pytorch model, or the official pre-trained model. Do not use any model other than pytorch model. Do not use [`build.py`](../build.py) to export engine if you don't know how to install pytorch and other environments on jetson. ***!!! Please use the PC to execute the following script !!!*** ```shell # Export yolov8s-seg.pt to yolov8s-seg.onnx python3 export-seg.py --weights yolov8s-seg.pt --sim ``` ***!!! Please use the Jetson to execute the following script !!!*** ```shell # Using trtexec tools for export engine /usr/src/tensorrt/bin/trtexec \ --onnx=yolov8s-seg.onnx \ --saveEngine=yolov8s-seg.engine ``` After executing the above command, you will get an engine named `yolov8s-seg.engine` . ### 2. Inference with c++ It is highly recommended to use C++ inference on Jetson. Here is a demo: [`csrc/jetson/segment`](../csrc/jetson/segment) . #### Build: Please modify `CLASS_NAMES` and `COLORS` and postprocess parameters in [`main.cpp`](../csrc/jetson/segment/main.cpp) for yourself. ```c++ int topk = 100; int seg_h = 160; // yolov8 model proto height int seg_w = 160; // yolov8 model proto width int seg_channels = 32; // yolov8 model proto channels float score_thres = 0.25f; float iou_thres = 0.65f; ``` And build: ``` shell export root=${PWD} cd src/jetson/segment mkdir build cmake .. make mv yolov8-seg ${root} cd ${root} ``` Usage: ``` shell # infer image ./yolov8-seg yolov8s-seg.engine data/bus.jpg # infer images ./yolov8-seg yolov8s-seg.engine data # infer video ./yolov8-seg yolov8s-seg.engine data/test.mp4 # the video path ``` ## Normal Posture ### 1. Export Posture Normal ONNX `yolov8s-pose.pt` is your trained pytorch model, or the official pre-trained model. Do not use any model other than pytorch model. Do not use [`build.py`](../build.py) to export engine if you don't know how to install pytorch and other environments on jetson. ***!!! Please use the PC to execute the following script !!!*** ```shell # Export yolov8s-pose.pt to yolov8s-pose.onnx yolo export model=yolov8s-pose.pt format=onnx simplify=True ``` ***!!! Please use the Jetson to execute the following script !!!*** ```shell # Using trtexec tools for export engine /usr/src/tensorrt/bin/trtexec \ --onnx=yolov8s-pose.onnx \ --saveEngine=yolov8s-pose.engine ``` After executing the above command, you will get an engine named `yolov8s-pose.engine` . ### 2. Inference with c++ It is highly recommended to use C++ inference on Jetson. Here is a demo: [`csrc/jetson/pose`](../csrc/jetson/pose) . #### Build: Please modify `KPS_COLORS` and `SKELETON` and `LIMB_COLORS` and postprocess parameters in [`main.cpp`](../csrc/jetson/pose/main.cpp) for yourself. ```c++ int topk = 100; float score_thres = 0.25f; float iou_thres = 0.65f; ``` And build: ``` shell export root=${PWD} cd src/jetson/pose mkdir build cmake .. make mv yolov8-pose ${root} cd ${root} ``` Usage: ``` shell # infer image ./yolov8-pose yolov8s-pose.engine data/bus.jpg # infer images ./yolov8-pose yolov8s-pose.engine data # infer video ./yolov8-pose yolov8s-pose.engine data/test.mp4 # the video path ```