Ultralytics YOLO11 trên NVIDIA Jetson sử dụng DeepStream SDK và TensorRT
Xem: Cách sử dụng các mô hình Ultralytics YOLO11 với NVIDIA Deepstream trên Jetson Orin NX 🚀
Hướng dẫn toàn diện này cung cấp hướng dẫn chi tiết để triển khai Ultralytics YOLO11 trên các thiết bị NVIDIA Jetson bằng DeepStream SDK và TensorRT. Ở đây, chúng tôi sử dụng TensorRT để tối đa hóa hiệu suất suy luận trên nền tảng Jetson.
Lưu ý
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 JetPack ổn định mới nhất 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. Dự kiến nó sẽ hoạt động trên toàn bộ dòng phần cứng NVIDIA Jetson bao gồm cả phiên bản mới nhất và cũ.
NVIDIA DeepStream là gì?
NVIDIA DeepStream SDK là một bộ công cụ phân tích luồng hoàn chỉnh dựa trên GStreamer để xử lý đa cảm biến dựa trên AI, video, âm thanh và hiểu hình ảnh. Nó lý tưởng cho các nhà phát triển AI thị giác, đối tác phần mềm, công ty khởi nghiệp và OEM xây dựng các ứng dụng và dịch vụ IVA (Phân tích Video Thông minh). Giờ đây, bạn có thể tạo các quy trình xử lý luồng kết hợp mạng nơ-ron và các tác vụ xử lý phức tạp khác như theo dõi, mã hóa/giải mã video và hiển thị video. Các quy trình này cho phép phân tích theo 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 cung cấp cho bạn một cách nhanh hơn, dễ dàng hơn để phát triển các ứng dụng và dịch vụ AI thị giác tại chỗ, ở biên và trên đám mây.
Đ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:
- Tham khảo tài liệu của chúng tôi, Hướng dẫn khởi động nhanh: NVIDIA Jetson với Ultralytics YOLO11 để thiết lập thiết bị NVIDIA Jetson của bạn với Ultralytics YOLO11
- 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
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 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ũ.
Cấu hình DeepStream cho YOLO11
Ở đây, chúng tôi đang sử dụng kho lưu trữ GitHub marcoslucianops/DeepStream-Yolo, bao gồm hỗ trợ NVIDIA DeepStream SDK cho các mô hình YOLO. Chúng tôi đánh giá cao những nỗ lực đóng góp của marcoslucianops!
-
Cài đặt Ultralytics với các dependencies cần thiết
cd ~ pip install -U pip git clone https://github.com/ultralytics/ultralytics cd ultralytics pip install -e ".[export]" onnxslim
-
Sao chép kho lưu trữ DeepStream-Yolo
cd ~ git clone https://github.com/marcoslucianops/DeepStream-Yolo
-
Sao chép
export_yolo11.py
tệp từDeepStream-Yolo/utils
thư mục đếnultralytics
thư mụccp ~/DeepStream-Yolo/utils/export_yolo11.py ~/ultralytics cd ultralytics
-
Tải xuống mô hình phát hiện Ultralytics YOLO11 (.pt) mà bạn chọn từ các bản phát hành YOLO11. Ở đây, chúng ta sử dụng yolo11s.pt.
wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt
Lưu ý
Bạn cũng có thể sử dụng mô hình YOLO11 được huấn luyện tùy chỉnh.
-
Chuyển đổi mô hình sang ONNX
python3 export_yolo11.py -w yolo11s.pt
Truyền các đối số dưới đây vào lệnh trên
Đối với DeepStream 5.1, hãy xóa
--dynamic
arg và sử dụngopset
12 trở xuống. Mặc địnhopset
là 17.--opset 12
Để thay đổi kích thướ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 mô hình ONNX (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 kích thước lô = 4)
--batch 4
-
Sao chép mã
.onnx
tệp mô hình vàlabels.txt
tập tin đếnDeepStream-Yolo
thư mụccp yolo11s.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
config_infer_primary_yolo11.txt
tệp theo mô hình của bạn (đối với YOLO11s với 80 class)[property] ... onnx-file=yolo11s.pt.onnx ... num-detected-classes=80 ...
-
Chỉnh sửa
deepstream_app_config
tệp... [primary-gie] ... config-file=config_infer_primary_yolo11.txt
-
Bạn cũng có thể thay đổi nguồn video trong
deepstream_app_config
tập tin. Ở đây một tập tin 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
Lưu ý
Sẽ mất một thời gian dài để tạo tệp engine TensorRT trước khi bắt đầu suy luận. Vì vậy, hãy kiên nhẫn.

Mẹo
Nếu bạn muốn chuyển đổi mô hình 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_yolo11.txt
Hiệu chỉnh 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 bên dưới
Lưu ý
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.
-
Thiết lập
OPENCV
biến môi trườngexport 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 bộ dữ liệu COCO, hãy tải xuống val2017, giải nén và di chuyển đến
DeepStream-Yolo
thư mục -
Tạo một thư mục mới cho hình ảnh hiệu chuẩn
mkdir calibration
-
Chạy lệnh sau để chọn 1000 ảnh ngẫu nhiên từ bộ 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
Lưu ý
NVIDIA khuyến nghị nên có ít nhất 500 hình ảnh để có được độ chính xác tốt. Trong ví dụ này, 1000 hình ảnh được chọn để có được độ chính xác tốt hơn (càng nhiều hình ảnh = độ chính xác càng cao). Bạn có thể đặt nó từ head -1000. Ví dụ: đối với 2000 hình ảnh, head -2000. Quá trình này có thể mất nhiều thời gian.
-
Tạo
calibration.txt
tập tin với tất cả các hình ảnh đã chọnrealpath calibration/*jpg > calibration.txt
-
Đặt biến môi trường
export INT8_CALIB_IMG_PATH=calibration.txt export INT8_CALIB_BATCH_SIZE=1
Lưu ý
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. Đặt nó theo bộ nhớ GPU của bạn.
-
Cập nhật
config_infer_primary_yolo11.txt
tệpTừ
... 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 đa luồng
Xem: Cách Chạy Nhiều Luồng với DeepStream SDK trên Jetson Nano bằng Ultralytics YOLO11 🎉
Để thiết lập nhiều luồng trong một ứng dụng deepstream duy nhất, bạn có thể thực hiện các thay đổi sau đối với deepstream_app_config.txt
tệp
-
Thay đổi số hàng và cột để xây dựng hiển thị dạng 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
-
Thiết lập
num-sources=4
và thêmuri
của tất cả 4 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 suy luận
deepstream-app -c deepstream_app_config.txt

Kết quả Điểm chuẩn
Các điểm chuẩn sau đây tóm tắt cách các mô hình YOLO11 hoạt động ở các mức độ chính xác TensorRT khác nhau với kích thước đầu vào là 640x640 trên NVIDIA Jetson Orin NX 16GB.
Biểu đồ so sánh

Bảng so sánh chi tiết
Hiệu suất
Định dạng | Trạng thái | Thời gian suy luận (ms/ảnh) |
---|---|---|
TensorRT (FP32) | ✅ | 8.64 |
TensorRT (FP16) | ✅ | 5.27 |
TensorRT (INT8) | ✅ | 4.54 |
Định dạng | Trạng thái | Thời gian suy luận (ms/ảnh) |
---|---|---|
TensorRT (FP32) | ✅ | 14.53 |
TensorRT (FP16) | ✅ | 7.91 |
TensorRT (INT8) | ✅ | 6.05 |
Định dạng | Trạng thái | Thời gian suy luận (ms/ảnh) |
---|---|---|
TensorRT (FP32) | ✅ | 32.05 |
TensorRT (FP16) | ✅ | 15.55 |
TensorRT (INT8) | ✅ | 10.43 |
Định dạng | Trạng thái | Thời gian suy luận (ms/ảnh) |
---|---|---|
TensorRT (FP32) | ✅ | 39.68 |
TensorRT (FP16) | ✅ | 19.88 |
TensorRT (INT8) | ✅ | 13.64 |
Định dạng | Trạng thái | Thời gian suy luận (ms/ảnh) |
---|---|---|
TensorRT (FP32) | ✅ | 80.65 |
TensorRT (FP16) | ✅ | 39.06 |
TensorRT (INT8) | ✅ | 22.83 |
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.
Câu hỏi thường gặp
Làm cách nào để thiết lập Ultralytics YOLO11 trên thiết bị NVIDIA Jetson?
Để thiết lập Ultralytics YOLO11 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. 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 để định cấu hình NVIDIA Jetson của bạn để triển khai YOLO11.
Lợi ích của việc sử dụng TensorRT với YOLO11 trên NVIDIA Jetson là gì?
Sử dụng TensorRT với YOLO11 tối ưu hóa mô hình để suy luận, giảm đáng kể độ trễ và cải thiện thông lượng trên các thiết bị NVIDIA Jetson. TensorRT cung cấp khả năng suy luận deep learning hiệu suất cao, độ trễ thấp thông qua hợp nhất lớp, hiệu chỉnh độ 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 YOLO11 với DeepStream SDK trên các phần cứng NVIDIA Jetson khác nhau không?
Có, hướng dẫn triển khai Ultralytics YOLO11 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 YOLO11 để biết các bước chi tiết.
Làm cách nào để chuyển đổi mô hình YOLO11 sang ONNX cho DeepStream?
Để chuyển đổi mô hình YOLO11 sang định dạng ONNX để triển khai với DeepStream, hãy sử dụng utils/export_yolo11.py
script từ DeepStream-Yolo kho lưu trữ.
Đây là một lệnh ví dụ:
python3 utils/export_yolo11.py -w yolo11s.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.
Các chuẩn mực hiệu suất cho YOLO trên NVIDIA Jetson Orin NX là gì?
Hiệu suất của các mô hình YOLO11 trên NVIDIA Jetson Orin NX 16GB khác nhau dựa trên các mức độ chính xác của TensorRT. Ví dụ: các mô hình YOLO11s đạt được:
- Độ chính xác FP32: 14,6 ms/ảnh, 68,5 FPS
- Độ chính xác FP16: 7,94 ms/ảnh, 126 FPS
- Độ chính xác INT8: 5.95 ms/im, 168 FPS
Các điểm chuẩn này nhấn mạnh tính hiệu quả và khả năng sử dụng các mô hình YOLO11 được tối ưu hóa TensorRT trên phần cứng NVIDIA Jetson. Để biết thêm chi tiết, hãy xem phần Kết quả điểm chuẩn của chúng tôi.