Bỏ để qua phần nội dung

Ultralytics YOLO11 on NVIDIA Jetson using DeepStream SDK and TensorRT



Xem: How to Run Multiple Streams with DeepStream SDK on Jetson Nano using Ultralytics YOLO11

This comprehensive guide provides a detailed walkthrough for deploying Ultralytics YOLO11 on NVIDIA Jetson devices using DeepStream SDK and TensorRT. Here we use TensorRT to maximize the inference performance on the Jetson platform.

DeepStream trên NVIDIA Máy bay phản lực

Ghi

Hướng dẫn này đã được thử nghiệm với cả Seeed Studio reComputer J4012 dựa trên NVIDIA Jetson Orin NX 16GB chạy bản phát hành JetPack của JP5.1.3Seeed Studio reComputer J1020 v2 dựa trên NVIDIA Jetson Nano 4GB chạy JetPack phát hành JP4.6.4. Nó dự kiến sẽ hoạt động trên tất cả các NVIDIA Dòng sản phẩm phần cứng Jetson bao gồm mới nhất và kế thừa.

Là gì NVIDIA DeepStream?

NVIDIA's DeepStream SDK is a complete streaming analytics toolkit based on GStreamer for AI-based multi-sensor processing, video, audio, and image understanding. It's ideal for vision AI developers, software partners, startups, and OEMs building IVA (Intelligent Video Analytics) apps and services. You can now create stream-processing pipelines that incorporate neural networks and other complex processing tasks like tracking, video encoding/decoding, and video rendering. These pipelines enable real-time analytics on video, image, and sensor data. DeepStream's multi-platform support gives you a faster, easier way to develop vision AI applications and services on-premise, at the edge, and in the cloud.

Điều kiện tiên quyết

Trước khi bạn bắt đầu làm theo hướng dẫn này:

Mẹo

Trong hướng dẫn này, chúng tôi đã sử dụng phương pháp gói Debian để cài đặt SDK DeepStream vào thiết bị Jetson. Bạn cũng có thể truy cập SDK DeepStream trên Jetson (Đã lưu trữ) để truy cập các phiên bản cũ của DeepStream.

DeepStream Configuration for YOLO11

Ở đây chúng tôi đang sử dụng marcosluciaops / DeepStream-Yolo Kho lưu trữ GitHub bao gồm NVIDIA Hỗ trợ SDK DeepStream cho YOLO Mô hình. Chúng tôi đánh giá cao những nỗ lực của Marcoslucianops vì những đóng góp của anh ấy!

  1. Cài đặt dependencies

    pip install cmake
    pip install onnxsim
    
  2. Sao chép kho lưu trữ sau

    git clone https://github.com/marcoslucianops/DeepStream-Yolo
    cd DeepStream-Yolo
    
  3. Download Ultralytics YOLO11 detection model (.pt) of your choice from YOLO11 releases. Here we use yolov8s.pt.

    wget https://github.com/ultralytics/assets/releases/download/v8.2.0/yolov8s.pt
    

    Ghi

    You can also use a custom trained YOLO11 model.

  4. Chuyển đổi mô hình thành ONNX

    python3 utils/export_yoloV8.py -w yolov8s.pt
    

    Chuyển các đối số dưới đây đến lệnh trên

    Đối với DeepStream 6.0.1, sử dụng opset 12 hoặc thấp hơn. Đối lập mặc định là 16.

    --opset 12
    

    Để thay đổi kích cỡ suy luận (mặc định: 640)

    -s SIZE
    --size SIZE
    -s HEIGHT WIDTH
    --size HEIGHT WIDTH
    

    Ví dụ cho 1280:

    -s 1280
    or
    -s 1280 1280
    

    Để đơn giản hóa ONNX mô hình (DeepStream > = 6.0)

    --simplify
    

    Để sử dụng kích thước lô động (DeepStream >= 6.1)

    --dynamic
    

    Để sử dụng kích thước lô tĩnh (ví dụ cho batch-size = 4)

    --batch 4
    
  5. Đặt CUDA phiên bản theo phiên bản JetPack được cài đặt

    Đối với JetPack 4.6.4:

    export CUDA_VER=10.2
    

    Đối với JetPack 5.1.3:

    export CUDA_VER=11.4
    
  6. Biên dịch thư viện

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  7. Chỉnh sửa config_infer_primary_yoloV8.txt tệp theo mô hình của bạn (đối với YOLOv8s với 80 lớp)

    [property]
    ...
    onnx-file=yolov8s.onnx
    ...
    num-detected-classes=80
    ...
    
  8. Chỉnh sửa deepstream_app_config tệp

    ...
    [primary-gie]
    ...
    config-file=config_infer_primary_yoloV8.txt
    
  9. Bạn cũng có thể thay đổi nguồn video trong deepstream_app_config tệp. Ở đây một tệp video mặc định được tải

    ...
    [source0]
    ...
    uri=file:///opt/nvidia/deepstream/deepstream/samples/streams/sample_1080p_h264.mp4
    

Chạy suy luận

deepstream-app -c deepstream_app_config.txt

Ghi

Sẽ mất nhiều thời gian để tạo ra TensorRT công cụ trước khi bắt đầu suy luận. Vì vậy, hãy kiên nhẫn.

YOLO11 with deepstream

Mẹo

If you want to convert the model to FP16 precision, simply set model-engine-file=model_b1_gpu0_fp16.enginenetwork-mode=2 trong config_infer_primary_yoloV8.txt

Hiệu chuẩn INT8

Nếu bạn muốn sử dụng độ chính xác INT8 để suy luận, bạn cần làm theo các bước dưới đây

  1. Cài OPENCV biến môi trường

    export OPENCV=1
    
  2. Biên dịch thư viện

    make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo
    
  3. Đối với tập dữ liệu COCO, hãy tải xuống Val2017, trích xuất và di chuyển đến DeepStream-Yolo thư mục

  4. Tạo một thư mục mới cho hình ảnh hiệu chuẩn

    mkdir calibration
    
  5. Chạy như sau để chọn 1000 hình ảnh ngẫu nhiên từ tập dữ liệu COCO để chạy hiệu chuẩn

    for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do \
        cp ${jpg} calibration/; \
    done
    

    Ghi

    NVIDIA recommends at least 500 images to get a good accuracy. On this example, 1000 images are chosen to get better accuracy (more images = more accuracy). You can set it from head -1000. For example, for 2000 images, head -2000. This process can take a long time.

  6. Tạo calibration.txt với tất cả các hình ảnh đã chọn

    realpath calibration/*jpg > calibration.txt
    
  7. Đặt biến môi trường

    export INT8_CALIB_IMG_PATH=calibration.txt
    export INT8_CALIB_BATCH_SIZE=1
    

    Ghi

    Giá trị INT8_CALIB_BATCH_SIZE cao hơn sẽ dẫn đến độ chính xác cao hơn và tốc độ hiệu chuẩn nhanh hơn. Đặt nó theo bạn GPU trí nhớ.

  8. Cập nhật config_infer_primary_yoloV8.txt tệp

    Từ

    ...
    model-engine-file=model_b1_gpu0_fp32.engine
    #int8-calib-file=calib.table
    ...
    network-mode=0
    ...
    

    Đến

    ...
    model-engine-file=model_b1_gpu0_int8.engine
    int8-calib-file=calib.table
    ...
    network-mode=1
    ...
    

Chạy suy luận

deepstream-app -c deepstream_app_config.txt

Thiết lập MultiStream

Để thiết lập nhiều luồng trong một ứng dụng deepstream, bạn có thể thực hiện các thay đổi sau đối với deepstream_app_config.txt tệp

  1. Thay đổi các hàng và cột để xây dựng hiển thị lưới theo số lượng luồng bạn muốn có. Ví dụ: đối với 4 luồng, chúng ta có thể thêm 2 hàng và 2 cột.

    [tiled-display]
    rows=2
    columns=2
    
  2. Cài num-sources=4 và thêm uri của tất cả 4 luồng

    [source0]
    enable=1
    type=3
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    uri=<path_to_video>
    num-sources=4
    

Chạy suy luận

deepstream-app -c deepstream_app_config.txt
Thiết lập đa luồng

Kết quả điểm chuẩn

Bảng sau đây tóm tắt cách thức YOLOv8s Các mô hình hoạt động ở các mức khác nhau TensorRT Mức độ chính xác với kích thước đầu vào 640x640 bật NVIDIA Máy bay phản lực Orin NX 16GB.

Tên Model Chính xác Thời gian suy luận (ms/im) FPS
YOLOv8s FP32 15.63 64
FP16 7.94 126
INT8 5.53 181

Lời cảm ơn

Hướng dẫn này ban đầu được tạo ra bởi những người bạn của chúng tôi tại Seeed Studio, Lakshantha và Elaine.

FAQ

How do I set up Ultralytics YOLO11 on an NVIDIA Jetson device?

To set up Ultralytics YOLO11 on an NVIDIA Jetson device, you first need to install the DeepStream SDK compatible with your JetPack version. Follow the step-by-step guide in our Quick Start Guide to configure your NVIDIA Jetson for YOLO11 deployment.

What is the benefit of using TensorRT with YOLO11 on NVIDIA Jetson?

Using TensorRT with YOLO11 optimizes the model for inference, significantly reducing latency and improving throughput on NVIDIA Jetson devices. TensorRT provides high-performance, low-latency deep learning inference through layer fusion, precision calibration, and kernel auto-tuning. This leads to faster and more efficient execution, particularly useful for real-time applications like video analytics and autonomous machines.

Can I run Ultralytics YOLO11 with DeepStream SDK across different NVIDIA Jetson hardware?

Yes, the guide for deploying Ultralytics YOLO11 with the DeepStream SDK and TensorRT is compatible across the entire NVIDIA Jetson lineup. This includes devices like the Jetson Orin NX 16GB with JetPack 5.1.3 and the Jetson Nano 4GB with JetPack 4.6.4. Refer to the section DeepStream Configuration for YOLO11 for detailed steps.

How can I convert a YOLO11 model to ONNX for DeepStream?

To convert a YOLO11 model to ONNX format for deployment with DeepStream, use the utils/export_yoloV8.py kịch bản từ DeepStream-Yolo Kho.

Đây là một lệnh ví dụ:

python3 utils/export_yoloV8.py -w yolov8s.pt --opset 12 --simplify

Để biết thêm chi tiết về chuyển đổi mô hình, hãy xem phần xuất mô hình của chúng tôi.

What are the performance benchmarks for YOLO on NVIDIA Jetson Orin NX?

The performance of YOLO11 models on NVIDIA Jetson Orin NX 16GB varies based on TensorRT precision levels. For example, YOLOv8s models achieve:

  • Độ chính xác FP32: 15,63 ms/im, 64 FPS
  • Độ chính xác FP16: 7,94 ms / im, 126 khung hình / giây
  • Độ chính xác INT8: 5,53 ms / im, 181 khung hình / giây

These benchmarks underscore the efficiency and capability of using TensorRT-optimized YOLO11 models on NVIDIA Jetson hardware. For further details, see our Benchmark Results section.


📅 Created 3 months ago ✏️ Updated 8 days ago

Ý kiến