Ultralytics YOLO26 trên NVIDIA Jetson sử dụng DeepStream SDK và TensorRT
Watch: How to use Ultralytics YOLO26 models with NVIDIA Deepstream on Jetson Orin NX 🚀
Hướng dẫn toàn diện này cung cấp các bước chi tiết để triển khai Ultralytics YOLO26 trên các thiết bị NVIDIA Jetson bằng cách sử dụng DeepStream SDK và TensorRT. Tại đây, chúng tôi sử dụng TensorRT để tối đa hóa hiệu suất inference trên nền tảng Jetson.

Hướng dẫn này đã được thử nghiệm với NVIDIA Jetson Orin Nano Super Developer Kit chạy bản phát hành ổn định mới nhất của JetPack JP6.1, Seeed Studio reComputer J4012 dựa trên NVIDIA Jetson Orin NX 16GB chạy bản phát hành JetPack JP5.1.3 và Seeed Studio reComputer J1020 v2 dựa trên NVIDIA Jetson Nano 4GB chạy bản phát hành JetPack JP4.6.4. Hướng dẫn này được dự kiến sẽ hoạt động trên toàn bộ dòng phần cứng NVIDIA Jetson bao gồm cả các thiết bị mới nhất và cũ hơn.
NVIDIA DeepStream là gì?
NVIDIA's DeepStream SDK là một bộ công cụ phân tích luồng hoàn chỉnh dựa trên GStreamer dành cho việc xử lý đa cảm biến dựa trên AI, hiểu video, âm thanh và hình ảnh. Đây là công cụ lý tưởng cho các nhà phát triển vision AI, đối tác phần mềm, startup và OEM đang xây dựng các ứng dụng và dịch vụ IVA (Intelligent Video Analytics). Giờ đây, bạn có thể tạo các pipeline xử lý luồng tích hợp các neural network và các tác vụ xử lý phức tạp khác như tracking, mã hóa/giải mã video và render video. Các pipeline này cho phép phân tích thời gian thực trên dữ liệu video, hình ảnh và cảm biến. Hỗ trợ đa nền tảng của DeepStream mang đến cho bạn cách nhanh chóng và dễ dàng hơn để phát triển các ứng dụng và dịch vụ vision AI tại chỗ (on-premise), tại biên (edge) và trên đám mây (cloud).
Điều kiện tiên quyết
Trước khi bắt đầu thực hiện theo hướng dẫn này:
- Truy cập tài liệu của chúng tôi, Hướng dẫn khởi động nhanh: NVIDIA Jetson với Ultralytics YOLO26 để thiết lập thiết bị NVIDIA Jetson của bạn với Ultralytics YOLO26
- Cài đặt DeepStream SDK theo phiên bản JetPack
- Đối với JetPack 4.6.4, hãy cài đặt DeepStream 6.0.1
- Đối với JetPack 5.1.3, hãy cài đặt DeepStream 6.3
- Đối với JetPack 6.1, hãy cài đặt DeepStream 7.1
- Đối với JetPack 7.1, hãy cài đặt DeepStream 9.0
Trong hướng dẫn này, chúng tôi đã sử dụng phương pháp gói Debian để cài đặt DeepStream SDK vào thiết bị Jetson. Bạn cũng có thể truy cập DeepStream SDK trên Jetson (Đã lưu trữ) để truy cập các phiên bản DeepStream cũ hơn.
Cấu hình DeepStream cho YOLO26
Tại đây, chúng tôi sử dụng kho lưu trữ marcoslucianops/DeepStream-Yolo trên GitHub, trong đó bao gồm hỗ trợ của NVIDIA DeepStream SDK cho các model YOLO. 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!
-
Cài đặt Ultralytics với các phụ thuộc cần thiết
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim -
Clone kho lưu trữ DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Sao chép tệp
export_yolo26.pytừ thư mụcDeepStream-Yolo/utilssang thư mụcultralyticscp ~/DeepStream-Yolo/utils/export_yolo26.py ~/ultralytics cd ultralytics -
Tải xuống model phát hiện Ultralytics YOLO26 (.pt) mà bạn chọn từ các bản phát hành YOLO26. Ở đây chúng tôi sử dụng yolo26s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.4.0/yolo26s.pt
Bạn cũng có thể sử dụng một model YOLO26 tùy chỉnh.
-
Chuyển đổi model sang ONNX
python3 export_yolo26.py -w yolo26s.pt
Đối với DeepStream 5.1, hãy xóa đối số --dynamic và sử dụng opset 12 hoặc thấp hơn. opset mặc định là 17.
--opset 12Để thay đổi kích thước inference (mặc định: 640)
-s SIZE
--size SIZE
-s HEIGHT WIDTH
--size HEIGHT WIDTHVí dụ cho 1280:
-s 1280
or
-s 1280 1280Để đơn giản hóa model ONNX (DeepStream >= 6.0)
--simplifyĐể sử dụng batch-size động (DeepStream >= 6.1)
--dynamicĐể sử dụng batch-size tĩnh (ví dụ cho batch-size = 4)
--batch 4-
Sao chép tệp model
.onnxđã tạo và tệplabels.txtvào thư mụcDeepStream-Yolocp yolo26s.pt.onnx labels.txt ~/DeepStream-Yolo cd ~/DeepStream-Yolo -
Đặt phiên bản CUDA theo phiên bản JetPack đã 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Đối với JetPack 6.1:
export CUDA_VER=12.6 -
Biên dịch thư viện
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Chỉnh sửa tệp
config_infer_primary_yolo26.txttheo model của bạn (cho YOLO26s với 80 lớp)[property] ... onnx-file=yolo26s.pt.onnx ... num-detected-classes=80 ... -
Chỉnh sửa tệp
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
Bạn cũng có thể thay đổi nguồn video trong tệp
deepstream_app_config. Tại đâ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 Inference
deepstream-app -c deepstream_app_config.txtSẽ mất một thời gian dài để tạo tệp engine TensorRT trước khi bắt đầu inference. Vì vậy, hãy kiên nhẫn.

Nếu bạn muốn chuyển đổi model sang độ chính xác FP16, chỉ cần đặt model-engine-file=model_b1_gpu0_fp16.engine và network-mode=2 bên trong config_infer_primary_yolo26.txt
Hiệu chuẩn INT8
Nếu bạn muốn sử dụng độ chính xác INT8 để chạy inference, bạn cần thực hiện theo các bước dưới đây:
Hiện tại INT8 không hoạt động với TensorRT 10.x. Phần này của hướng dẫn đã được thử nghiệm với TensorRT 8.x và dự kiến sẽ hoạt động.
-
Đặt biến môi trường
OPENCVexport OPENCV=1 -
Biên dịch thư viện
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Đối với tập dữ liệu COCO, hãy tải xuống val2017, giải nén và di chuyển vào thư mục
DeepStream-Yolo -
Tạo một thư mục mới cho các hình ảnh hiệu chuẩn
mkdir calibration -
Chạy lệnh sau để chọn 1000 hình ảnh ngẫu nhiên từ tập dữ liệu COCO để thực hiện hiệu chuẩn
for jpg in $(ls -1 val2017/*.jpg | sort -R | head -1000); do cp ${jpg} calibration/ done
NVIDIA khuyến nghị ít nhất 500 hình ảnh để đạt được độ chính xác tốt. Trong ví dụ này, 1000 hình ảnh được chọn để có độ chính xác tốt hơn (nhiều hình ảnh hơn = độ chính xác cao hơn). Bạn có thể đặt nó từ head -1000. Ví dụ, cho 2000 hình ảnh, head -2000. Quá trình này có thể mất nhiều thời gian.
-
Tạo tệp
calibration.txtvới tất cả các hình ảnh đã chọnrealpath calibration/*jpg > calibration.txt -
Đặt các biến môi trường
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Các giá trị INT8_CALIB_BATCH_SIZE cao hơn sẽ mang lại độ chính xác cao hơn và tốc độ hiệu chuẩn nhanh hơn. Hãy đặt giá trị này tùy theo bộ nhớ GPU của bạn.
-
Cập nhật tệp
config_infer_primary_yolo26.txtTừ
... 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 Inference
deepstream-app -c deepstream_app_config.txtThiết lập MultiStream
Watch: How to Run Multi-Stream Inference with Ultralytics YOLO26 using NVIDIA DeepStream on Jetson Orin 🚀
Để thiết lập nhiều luồng trong một ứng dụng DeepStream, hãy thực hiện các thay đổi sau đối với tệp deepstream_app_config.txt:
-
Thay đổi số hàng và số cột để xây dựng lưới hiển thị tùy theo số lượng luồng bạn muốn có. Ví dụ, cho 4 luồng, chúng ta có thể thêm 2 hàng và 2 cột.
[tiled-display] rows=2 columns=2 -
Đặt
num-sources=4và thêm các mụcuricho tất cả bốn luồng.[source0] enable=1 type=3 uri=path/to/video1.jpg uri=path/to/video2.jpg uri=path/to/video3.jpg uri=path/to/video4.jpg num-sources=4
Chạy Inference
deepstream-app -c deepstream_app_config.txt
Kết quả Benchmark
Các benchmark sau đây tóm tắt hiệu suất của các model YOLO26 ở các mức độ chính xác TensorRT khác nhau với kích thước đầu vào 640x640 trên NVIDIA Jetson Orin NX 16GB.
Biểu đồ so sánh

Bảng so sánh chi tiết
| Định dạng | Trạng thái | Thời gian inference (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Ghi nhận
Hướng dẫn này ban đầu được tạo bởi những người bạn của chúng tôi tại Seeed Studio, Lakshantha và Elaine.
Câu hỏi thường gặp (FAQ)
Làm cách nào để thiết lập Ultralytics YOLO26 trên thiết bị NVIDIA Jetson?
Để thiết lập Ultralytics YOLO26 trên thiết bị NVIDIA Jetson, trước tiên bạn cần cài đặt DeepStream SDK tương thích với phiên bản JetPack của bạn. Làm theo hướng dẫn từng bước trong Hướng dẫn khởi động nhanh của chúng tôi để cấu hình NVIDIA Jetson cho việc triển khai YOLO26.
Việc sử dụng TensorRT với YOLO26 trên NVIDIA Jetson có lợi ích gì?
Sử dụng TensorRT với YOLO26 giúp tối ưu hóa model cho việc inference, giảm đáng kể độ trễ và cải thiện throughput trên các thiết bị NVIDIA Jetson. TensorRT cung cấp khả năng inference deep learning hiệu suất cao, độ trễ thấp thông qua hợp nhất lớp, hiệu chuẩn độ chính xác và tự động điều chỉnh kernel. Điều này dẫn đến việc thực thi nhanh hơn và hiệu quả hơn, đặc biệt hữu ích cho các ứng dụng thời gian thực như phân tích video và máy tự hành.
Tôi có thể chạy Ultralytics YOLO26 với DeepStream SDK trên các thiết bị phần cứng NVIDIA Jetson khác nhau không?
Có, hướng dẫn triển khai Ultralytics YOLO26 với DeepStream SDK và TensorRT tương thích trên toàn bộ dòng NVIDIA Jetson. Điều này bao gồm các thiết bị như Jetson Orin NX 16GB với JetPack 5.1.3 và Jetson Nano 4GB với JetPack 4.6.4. Tham khảo phần Cấu hình DeepStream cho YOLO26 để biết các bước chi tiết.
Làm cách nào để tôi có thể chuyển đổi model YOLO26 sang ONNX cho DeepStream?
Để chuyển đổi model YOLO26 sang định dạng ONNX phục vụ triển khai với DeepStream, hãy sử dụng script utils/export_yolo26.py từ kho lưu trữ DeepStream-Yolo.
Dưới đây là một lệnh ví dụ:
python3 utils/export_yolo26.py -w yolo26s.pt --opset 12 --simplifyĐể biết thêm chi tiết về cách chuyển đổi model, hãy xem phần xuất model của chúng tôi.
Các benchmark hiệu suất cho YOLO trên NVIDIA Jetson Orin NX là gì?
Hiệu suất của các model YOLO26 trên NVIDIA Jetson Orin NX 16GB thay đổi tùy theo các mức độ chính xác của TensorRT. Ví dụ, các model YOLO26s đạt được:
- Độ chính xác FP32: 14.6 ms/im, 68.5 FPS
- Độ chính xác FP16: 7.94 ms/im, 126 FPS
- Độ chính xác INT8: 5.95 ms/im, 168 FPS
Các benchmark này nhấn mạnh hiệu quả và khả năng của việc sử dụng các model YOLO26 đã được tối ưu hóa bằng TensorRT trên phần cứng NVIDIA Jetson. Để biết thêm chi tiết, hãy xem phần Kết quả Benchmark của chúng tôi.