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 quy trình chi tiết để triển khai Ultralytics YOLO26 trên các thiết bị NVIDIA Jetson bằng DeepStream SDK và TensorRT. Tại đây, chúng ta sử dụng TensorRT để tối đa hóa hiệu năng inference trên nền tảng Jetson.
Hướng dẫn này trình bày cấu hình DeepStream cho YOLO26, hiệu chuẩn INT8, thiết lập đa luồng và kết quả benchmark.

Hướng dẫn này đã được kiểm thử trên NVIDIA Jetson Orin Nano Super Developer Kit chạy bản phát hành JetPack ổn định mới nhất là JP6.1, Seeed Studio reComputer J4012 dựa trên NVIDIA Jetson Orin NX 16GB chạy bản JetPack JP5.1.3 và Seeed Studio reComputer J1020 v2 dựa trên NVIDIA Jetson Nano 4GB chạy bản JetPack JP4.6.4. Dự kiến hướng dẫn sẽ hoạt động trên toàn bộ dòng phần cứng NVIDIA Jetson, bao gồm cả các phiên bản mới nhất và phiên bản cũ.
NVIDIA DeepStream là gì?#
DeepStream SDK của NVIDIA là bộ công cụ phân tích streaming hoàn chỉnh dựa trên GStreamer dành cho xử lý đa cảm biến, video, âm thanh và nhận hiểu hình ảnh bằng AI. Đây là lựa chọn lý tưởng cho các nhà phát triển vision AI, đối tác phần mềm, startup và OEM xây dựng các ứng dụng và dịch vụ IVA (phân tích video thông minh). Bạn có thể tạo các pipeline xử lý stream tích hợp mạng neural 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 dữ liệu video, hình ảnh và cảm biến theo thời gian thực. Khả năng hỗ trợ đa nền tảng của DeepStream mang đến cách thức nhanh hơn, đơn giản hơn để phát triển các ứng dụng và dịch vụ vision AI tại chỗ, ở edge và trên cloud.
Điều kiện tiên quyết#
Trước khi bắt đầu làm theo hướng dẫn này:
- Truy cập tài liệu của chúng tôi, Hướng dẫn bắt đầu nhanh: NVIDIA Jetson với Ultralytics YOLO26, để thiết lập thiết bị NVIDIA Jetson với Ultralytics YOLO26
- Cài đặt DeepStream SDK theo phiên bản JetPack
- Đối với JetPack 4.6.4, cài đặt DeepStream 6.0.1
- Đối với JetPack 5.1.3, cài đặt DeepStream 6.3
- Đối với JetPack 6.1, cài đặt DeepStream 7.1
- Đối với JetPack 7.1, 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 trên thiết bị Jetson. Bạn cũng có thể truy cập DeepStream SDK trên Jetson (Lưu trữ) để sử dụng các phiên bản DeepStream cũ.
Cấu hình DeepStream cho YOLO26#
Tại đây, chúng ta sử dụng repository GitHub marcoslucianops/DeepStream-Yolo, trong đó có hỗ trợ NVIDIA DeepStream SDK cho các model YOLO. Chúng tôi trân trọng những nỗ lực và đóng góp của marcoslucianops!
-
Cài đặt Ultralytics cùng các dependency cần thiết
pip install ultralytics onnx onnxslim -
Clone repository DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo -
Tải model phát hiện Ultralytics YOLO26 (.pt) tùy chọn từ dự án YOLO26. Ở đây, chúng ta 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 model YOLO26 được huấn luyện tùy chỉnh.
-
Chuyển đổi model sang ONNX và tạo tệp
labels.txtđể DeepStream đọc tên các lớp từ đófrom ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))
nms=False xuất phần đầu không có NMS, và agnostic_nms=True giữ lại một lớp duy nhất cho mỗi lần phát hiện để cluster-mode=4 (không phân cụm) trong cấu hình DeepStream không vẽ hộp hai lần. Thêm imgsz=1280 để thay đổi kích thước suy luận (mặc định: 640), batch=4 cho kích thước batch là 4 (batch đã xuất là tĩnh, do đó phải khớp với batch-size trong cấu hình DeepStream), và opset=12 cho TensorRT 8.2 trở về trước (DeepStream 6.0.1 trở xuống). Xem các tham số xuất để biết danh sách đầy đủ.
-
Sao chép file model
.onnxđã tạo và filelabels.txtvào thư mụcDeepStream-Yolocp yolo26s.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Đối với JetPack 7.1:
export CUDA_VER=13.0 -
Biên dịch library
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Chỉnh sửa file
config_infer_primary_yolo26.txttheo model của bạn (đối với YOLO26s có 80 class)[property] ... onnx-file=yolo26s.onnx ... num-detected-classes=80 ... parse-bbox-func-name=NvDsInferParseYolo ...
YOLO26 thay đổi kích thước đầu vào bằng padding ở giữa và chạy mà không có NMS. Để đạt độ chính xác tốt nhất, hãy thêm nội dung sau vào phần [property] của config_infer_primary_yolo26.txt:
[property]
...
maintain-aspect-ratio=1
symmetric-padding=1
cluster-mode=4
...-
Chỉnh sửa file
deepstream_app_config... [primary-gie] ... config-file=config_infer_primary_yolo26.txt -
Bạn cũng có thể thay đổi nguồn video trong file
deepstream_app_config. Ở đây, một file 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.txtQuá trình tạo file TensorRT engine sẽ mất nhiều thời gian trước khi bắt đầu inference. Vì vậy, vui lòng kiên nhẫn.

Nếu 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 muốn sử dụng độ chính xác INT8 cho inference, bạn cần thực hiện 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 kiểm thử 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 library
make -C nvdsinfer_custom_impl_Yolo clean && make -C nvdsinfer_custom_impl_Yolo -
Đối với dataset COCO, tải val2017, giải nén và di chuyển vào thư mục
DeepStream-Yolo -
Tạo thư mục mới cho các ảnh hiệu chuẩn
mkdir calibration -
Chạy lệnh sau để chọn ngẫu nhiên 1000 ảnh từ dataset COCO nhằm 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ị sử dụng ít nhất 500 ảnh để đạt độ chính xác tốt. Trong ví dụ này, 1000 ảnh được chọn để đạt độ chính xác cao hơn (nhiều ảnh hơn = độ chính xác cao hơn). Bạn có thể đặt giá trị này từ head -1000. Ví dụ, với 2000 ảnh, sử dụng head -2000. Quá trình này có thể mất nhiều thời gian.
-
Tạo file
calibration.txtchứa tất cả các ả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
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 theo dung lượng bộ nhớ GPU của bạn.
-
Cập nhật file
config_infer_primary_yolo26.txtTừ
... model-engine-file=model_b1_gpu0_fp32.engine #int8-calib-file=calib.table ... network-mode=0 ...Thành
... model-engine-file=model_b1_gpu0_int8.engine int8-calib-file=calib.table ... network-mode=1 ...
Chạy inference INT8#
Chạy cùng lệnh để xây dựng engine INT8 và bắt đầu 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 stream trong một ứng dụng DeepStream duy nhất, hãy thực hiện các thay đổi sau đối với file deepstream_app_config.txt:
-
Thay đổi số hàng và cột để tạo màn hình dạng lưới theo số stream bạn muốn sử dụng. Ví dụ, với 4 stream, chúng ta có thể thêm 2 hàng và 2 cột.
[tiled-display] rows=2 columns=2 -
Thêm một group
[sourceN]riêng cho mỗi stream, mỗi group cóurivànum-sources=1riêng.[source0] enable=1 type=3 uri=file:///path/to/video1.mp4 num-sources=1 [source1] enable=1 type=3 uri=file:///path/to/video2.mp4 num-sources=1 [source2] enable=1 type=3 uri=file:///path/to/video3.mp4 num-sources=1 [source3] enable=1 type=3 uri=file:///path/to/video4.mp4 num-sources=1
Chạy inference Multi-Stream#
Chạy cùng lệnh để khởi chạy tất cả stream trên màn hình dạng ô:
deepstream-app -c deepstream_app_config.txt
Kết quả benchmark#
Các benchmark sau đây tóm tắt hiệu năng của các model YOLO11 ở những 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. YOLO26 sử dụng cùng quy trình export và inference DeepStream được mô tả ở trên.
Biểu đồ so sánh#

Bảng so sánh chi tiết#
| Định dạng | Trạng thái | Thời gian suy luận (ms/im) |
|---|---|---|
| TensorRT (FP32) | ✅ | 8.64 |
| TensorRT (FP16) | ✅ | 5.27 |
| TensorRT (INT8) | ✅ | 4.54 |
Lời cảm ơ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.
FAQ#
Để 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 mình. Hãy làm theo hướng dẫn từng bước trong Hướng dẫn bắt đầu nhanh của chúng tôi để cấu hình NVIDIA Jetson cho việc triển khai YOLO26.
Sử dụng TensorRT với YOLO26 giúp tối ưu hóa model cho inference, giảm đáng kể latency và cải thiện throughput trên các thiết bị NVIDIA Jetson. TensorRT cung cấp inference deep learning hiệu năng cao, latency thấp thông qua việc hợp nhất layer, hiệu chuẩn độ chính xác và tự động tinh chỉnh kernel. Điều này giúp 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.
Có, hướng dẫn triển khai Ultralytics YOLO26 với DeepStream SDK và TensorRT tương thích với 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. Hãy tham khảo phần Cấu hình DeepStream cho YOLO26 để xem các bước chi tiết.
Xuất model với phần đầu không có NMS bằng công cụ xuất Ultralytics, và tạo tệp
labels.txtđể DeepStream đọc tên các lớp từ đó:from ultralytics import YOLO model = YOLO("yolo26s.pt") model.export(format="onnx", nms=False, agnostic_nms=True) # creates 'yolo26s.onnx' with open("labels.txt", "w") as f: f.write("\n".join(model.names.values()))Thêm
opset=12cho TensorRT 8.2 trở về trước (DeepStream 6.0.1 trở xuống). Để biết thêm chi tiết về việc chuyển đổi model, hãy xem phần xuất model của chúng tôi.Để chạy inference INT8, hãy hiệu chuẩn model trên một tập ảnh đại diện và chuyển cấu hình DeepStream sang chế độ INT8. Tải các ảnh COCO val2017, chọn khoảng 1000 ảnh hiệu chuẩn, đặt các biến môi trường
INT8_CALIB_IMG_PATHvàINT8_CALIB_BATCH_SIZE, sau đó cập nhậtconfig_infer_primary_yolo26.txtvớimodel-engine-file=model_b1_gpu0_int8.engine,int8-calib-file=calib.tablevànetwork-mode=1. Xem phần Hiệu chuẩn INT8 để biết đầy đủ các bước. INT8 hiện yêu cầu TensorRT 8.x.Để xử lý nhiều stream trong một ứng dụng DeepStream duy nhất, hãy chỉnh sửa file
deepstream_app_config.txtđể thêm lưới màn hình dạng ô và liệt kê URI của từng nguồn. Đặtrowsvàcolumnsbên dưới[tiled-display]để tạo lưới, thêm một group[sourceN]riêng cho mỗi stream vớiurivànum-sources=1riêng, đồng thời điều chỉnh lưới cho phù hợp với số stream. Xem phần Thiết lập MultiStream để tham khảo ví dụ đầy đủ.Hiệu năng của các model YOLO11 trên NVIDIA Jetson Orin NX 16GB thay đổi tùy theo mức độ chính xác TensorRT. Ví dụ, các model YOLO11s đạt được:
- Độ chính xác FP32: 14.53 ms/im, 68.8 FPS
- Độ chính xác FP16: 7.91 ms/im, 126 FPS
- Độ chính xác INT8: 6.05 ms/im, 165 FPS
Các benchmark này cho thấy hiệu quả và năng lực của việc sử dụng các model YOLO11 đượ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.