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

Hướng dẫn bắt đầu nhanh: NVIDIA Jetson với Ultralytics YOLOv8

Hướng dẫn toàn diện này cung cấp hướng dẫn chi tiết để triển khai Ultralytics YOLOv8 trên các thiết bị NVIDIA Jetson . Ngoài ra, nó giới thiệu các điểm chuẩn hiệu suất để chứng minh khả năng của YOLOv8 trên các thiết bị nhỏ và mạnh mẽ này.

Hệ sinh thái NVIDIA Jetson

Ghi

This guide has been tested with both Seeed Studio reComputer J4012 which is based on NVIDIA Jetson Orin NX 16GB running the latest stable JetPack release of JP5.1.3 and Seeed Studio reComputer J1020 v2 which is based on NVIDIA Jetson Nano 4GB running JetPack release of JP4.6.1. It is expected to work across all the NVIDIA Jetson hardware lineup including latest and legacy.

NVIDIA Jetson là gì?

NVIDIA Jetson là một loạt các bảng tính nhúng được thiết kế để đưa điện toán AI (trí tuệ nhân tạo) tăng tốc lên các thiết bị biên. Các thiết bị nhỏ gọn và mạnh mẽ này được xây dựng xung quanh kiến trúc GPU của NVIDIA và có khả năng chạy các thuật toán AI phức tạp và các mô hình học sâu trực tiếp trên thiết bị mà không cần phải dựa vào tài nguyên điện toán đám mây. Bảng Jetson thường được sử dụng trong robot, xe tự hành, tự động hóa công nghiệp và các ứng dụng khác, nơi suy luận AI cần được thực hiện cục bộ với độ trễ thấp và hiệu quả cao. Ngoài ra, các bo mạch này dựa trên kiến trúc ARM64 và chạy với công suất thấp hơn so với các thiết bị điện toán GPU truyền thống.

So sánh dòng NVIDIA Jetson

Jetson Orin là phiên bản mới nhất của gia đình NVIDIA Jetson dựa trên kiến trúc NVIDIA Ampere, mang lại hiệu suất AI được cải thiện đáng kể khi so sánh với các thế hệ trước. Bảng dưới đây so sánh một số thiết bị Jetson trong hệ sinh thái.

Máy bay phản lực AGX Orin 64GB Máy bay phản lực Orin NX 16GB Jetson Orin Nano 8GB Máy bay phản lực AGX Xavier Máy bay phản lực Xavier NX Jetson Nano
Hiệu suất AI 275 NGỌN 100 NGỌN 40 ĐẦU 32 NGỌN 21 NGỌN 472 GFLOPS
GPU GPU kiến trúc NVIDIA Ampere 2048 lõi với 64 Tensor Lõi GPU kiến trúc NVIDIA Ampere 1024 lõi với 32 Tensor Lõi GPU kiến trúc NVIDIA Ampere 1024 lõi với 32 Tensor Lõi GPU kiến trúc NVIDIA Volta 512 lõi với 64 Tensor Lõi GPU kiến trúc NVIDIA Volta™ 384 lõi với 48 Tensor Lõi GPU kiến trúc NVIDIA Maxwell™ 128 lõi
Tần số tối đa GPU 1.3 GHz 918 MHz 625 MHz 1377 MHz 1100 MHz 921MHz
CPU 12 lõi NVIDIA Arm® Cortex A78AE v8.2 CPU 64-bit 3MB L2 + 6MB L3 8 lõi NVIDIA Arm® Cortex A78AE v8.2 CPU 64-bit 2MB L2 + 4MB L3 6 lõi Arm Cortex-A78AE®® v8.2 CPU 64-bit 1.5MB L2 + 4MB L3 8 lõi NVIDIA Carmel Arm®v8.2 CPU 64-bit 8MB L2 + 4MB L3 6 lõi NVIDIA Carmel Arm®v8.2 64-bit CPU 6MB L2 + 4MB L3 Bộ xử lý Quad-Core Arm® Cortex-A57® MPCore
Tần số tối đa của CPU 2.2 GHz 2.0 GHz 1.5 GHz 2.2 GHz 1.9 GHz 1.43GHz
Trí nhớ 64GB LPDDR5 256-bit 204.8GB/giây 16GB LPDDR5 128-bit 102.4GB/giây 8GB LPDDR5 128-bit 68 GB/giây 32GB 256-bit LPDDR4x 136.5GB/giây 8GB LPDDR128-bit4x 59.7GB/giây 4GB LPDDR4 64-bit 25.6GB/giây"

Để biết bảng so sánh chi tiết hơn, vui lòng truy cập phần Thông số kỹ thuật của trang NVIDIA Jetson chính thức.

NVIDIA JetPack là gì?

NVIDIA JetPack SDK cung cấp năng lượng cho các mô-đun Jetson là giải pháp toàn diện nhất và cung cấp môi trường phát triển đầy đủ để xây dựng các ứng dụng AI tăng tốc từ đầu đến cuối và rút ngắn thời gian đưa ra thị trường. JetPack bao gồm Jetson Linux với bộ nạp khởi động, nhân Linux, môi trường máy tính để bàn Ubuntu và một bộ thư viện hoàn chỉnh để tăng tốc điện toán GPU, đa phương tiện, đồ họa và thị giác máy tính. Nó cũng bao gồm các mẫu, tài liệu và công cụ dành cho nhà phát triển cho cả máy tính chủ và bộ công cụ dành cho nhà phát triển, đồng thời hỗ trợ các SDK cấp cao hơn như DeepStream để phân tích video trực tuyến, Isaac cho robot và Riva cho AI đàm thoại.

Flash JetPack đến NVIDIA Jetson

Bước đầu tiên sau khi chạm tay vào thiết bị NVIDIA Jetson là flash NVIDIA JetPack vào thiết bị. Có một số cách khác nhau để nhấp nháy thiết bị NVIDIA Jetson.

  1. If you own an official NVIDIA Development Kit such as the Jetson Orin Nano Developer Kit, you can download an image and prepare an SD card with JetPack for booting the device.
  2. If you own any other NVIDIA Development Kit, you can flash JetPack to the device using SDK Manager.
  3. If you own a Seeed Studio reComputer J4012 device, you can flash JetPack to the included SSD and if you own a Seeed Studio reComputer J1020 v2 device, you can flash JetPack to the eMMC/ SSD.
  4. If you own any other third party device powered by the NVIDIA Jetson module, it is recommended to follow command-line flashing.

Ghi

Đối với các phương pháp 3 và 4 ở trên, sau khi flash hệ thống và khởi động thiết bị, vui lòng nhập "sudo apt update &&& sudo apt install nvidia-jetpack -y" trên thiết bị đầu cuối thiết bị để cài đặt tất cả các thành phần JetPack còn lại cần thiết.

Run on JetPack 5.x

If you own a Jetson Xavier NX, AGX Xavier, AGX Orin, Orin Nano or Orin NX which supports JetPack 5.x, you can continue to follow this guide. However, if you have a legacy device such as Jetson Nano, please skip to Run on JetPack 4.x.

Dựng Ultralytics

Có hai cách thiết lập Ultralytics gói trên NVIDIA Jetson để xây dựng dự án Thị giác máy tính tiếp theo của bạn. Bạn có thể sử dụng một trong số chúng.

Bắt đầu với Docker

Cách nhanh nhất để bắt đầu Ultralytics YOLOv8 trên NVIDIA Jetson là chạy với docker image dựng sẵn cho Jetson.

Thực hiện lệnh dưới đây để kéo container Docker và chạy trên Jetson. Điều này dựa trên l4t-pytorch Docker Image chứa PyTorch và Torchvision trong môi trường Python3.

t=ultralytics/ultralytics:latest-jetson-jetpack5 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Sau khi hoàn tất, hãy chuyển đến Dùng TensorRT trên phần NVIDIA Jetson.

Bắt đầu mà không cần Docker

Cài đặt Ultralytics Gói

Here we will install Ultralytics package on the Jetson with optional dependencies so that we can export the PyTorch models to other different formats. We will mainly focus on NVIDIA TensorRT exports because TensorRT will make sure we can get the maximum performance out of the Jetson devices.

  1. Cập nhật danh sách gói, cài đặt pip và nâng cấp lên mới nhất

    sudo apt update
    sudo apt install python3-pip -y
    pip install -U pip
    
  2. Cài đặt ultralytics Gói pip với các phụ thuộc tùy chọn

    pip install ultralytics[export]
    
  3. Khởi động lại thiết bị

    sudo reboot
    
Cài đặt PyTorch và Torchvision

Những điều trên ultralytics Cài đặt sẽ cài đặt Torch và Torchvision. Tuy nhiên, 2 gói này được cài đặt qua pip không tương thích để chạy trên nền tảng Jetson dựa trên kiến trúc ARM64. Do đó, chúng ta cần cài đặt thủ công dựng sẵn PyTorch bánh xe pip và biên dịch / cài đặt Torchvision từ nguồn.

  1. Gỡ cài đặt hiện đang được cài đặt PyTorch và Torchvision

    pip uninstall torch torchvision
    
  2. Cài đặt PyTorch 2.1.0 theo JP5.1.3

    sudo apt-get install -y libopenblas-base libopenmpi-dev
    wget https://developer.download.nvidia.com/compute/redist/jp/v512/pytorch/torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl -O torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    pip install torch-2.1.0a0+41361538.nv23.06-cp38-cp38-linux_aarch64.whl
    
  3. Cài đặt Torchvision v0.16.2 theo PyTorch v2.1.0

    sudo apt install -y libjpeg-dev zlib1g-dev
    git clone https://github.com/pytorch/vision torchvision
    cd torchvision
    git checkout v0.16.2
    python3 setup.py install --user
    

Ghé thăm PyTorch cho trang Jetson để truy cập tất cả các phiên bản khác nhau của PyTorch cho các phiên bản JetPack khác nhau. Để biết danh sách chi tiết hơn về PyTorch, khả năng tương thích Torchvision, hãy truy cập PyTorch và trang tương thích Torchvision.

Cài đặt onnxruntime-gpu

Các onnxruntime-GPU gói được lưu trữ trong PyPI không có aarch64 nhị phân cho Jetson. Vì vậy, chúng ta cần phải cài đặt thủ công gói này. Gói này là cần thiết cho một số hàng xuất khẩu.

Tất cả đều khác nhau onnxruntime-gpu packages corresponding to different JetPack and Python versions are listed Ở đây. Tuy nhiên, ở đây chúng tôi sẽ tải xuống và cài đặt onnxruntime-gpu 1.17.0 với Python3.8 hỗ trợ cho JetPack chúng tôi đang sử dụng cho hướng dẫn này.

wget https://nvidia.box.com/shared/static/zostg6agm00fb6t5uisw51qi6kpcuwzd.whl -O onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl
pip install onnxruntime_gpu-1.17.0-cp38-cp38-linux_aarch64.whl

Ghi

onnxruntime-gpu sẽ tự động hoàn nguyên phiên bản numpy về phiên bản mới nhất. Vì vậy, chúng ta cần phải cài đặt lại numpy để 1.23.5 Để khắc phục sự cố bằng cách thực hiện:

pip install numpy==1.23.5

Run on JetPack 4.x

Here we support to run Ultralytics on legacy hardware such as the Jetson Nano. Currently we use Docker to achieve this.

Execute the below command to pull the Docker container and run on Jetson. This is based on l4t-cuda docker image which contains CUDA in a L4T environment.

t=ultralytics/ultralytics:latest-jetson-jetpack4 && sudo docker pull $t && sudo docker run -it --ipc=host --runtime=nvidia $t

Dùng TensorRT trên NVIDIA Jetson

Trong số tất cả các định dạng xuất mô hình được hỗ trợ bởi Ultralytics, TensorRT mang lại hiệu suất suy luận tốt nhất khi làm việc với các thiết bị NVIDIA Jetson và khuyến nghị của chúng tôi là sử dụng TensorRT với Jetson. Chúng tôi cũng có một tài liệu chi tiết về TensorRT tại đây.

Chuyển đổi Model sang TensorRT và Chạy suy luận

Các YOLOv8n Mô hình trong PyTorch định dạng được chuyển đổi thành TensorRT để chạy suy luận với mô hình đã xuất.

Ví dụ

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Export the model
model.export(format="engine")  # creates 'yolov8n.engine'

# Load the exported TensorRT model
trt_model = YOLO("yolov8n.engine")

# Run inference
results = trt_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to TensorRT format
yolo export model=yolov8n.pt format=engine  # creates 'yolov8n.engine'

# Run inference with the exported model
yolo predict model=yolov8n.engine source='https://ultralytics.com/images/bus.jpg'

Ghi

Truy cập trang Xuất để truy cập các đối số bổ sung khi xuất mô hình sang các định dạng mô hình khác nhau

NVIDIA Jetson Orin YOLOv8 Điểm chuẩn

YOLOv8 benchmarks were run by the Ultralytics team on 10 different model formats measuring speed and accuracy: PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN. Benchmarks were run on Seeed Studio reComputer J4012 powered by Jetson Orin NX 16GB device at FP32 precision with default input image size of 640.

Biểu đồ so sánh

Even though all model exports are working with NVIDIA Jetson, we have only included PyTorch, TorchScript, TensorRT for the comparison chart below because, they make use of the GPU on the Jetson and are guaranteed to produce the best results. All the other exports only utilize the CPU and the performance is not as good as the above three. You can find benchmarks for all exports in the section after this chart.

Hệ sinh thái NVIDIA Jetson

Bảng so sánh chi tiết

The below table represents the benchmark results for five different models (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) across ten different formats (PyTorch, TorchScript, ONNX, OpenVINO, TensorRT, TF SavedModel, TF GraphDef, TF Lite, PaddlePaddle, NCNN), giving us the status, size, mAP50-95(B) metric, and inference time for each combination.

Hiệu năng

Định dạng Tình trạng Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 6.2 0.6381 14.3
TorchScript 12.4 0.6117 13.3
ONNX 12.2 0.6092 70.6
OpenVINO 12.3 0.6092 104.2
TensorRT 13.6 0.6117 8.9
TF SavedModel 30.6 0.6092 141.74
TF GraphDef 12.3 0.6092 199.93
TF Lite 12.3 0.6092 349.18
PaddlePaddle 24.4 0.6030 555
NCNN 12.2 0.6092 32
Định dạng Tình trạng Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 21.5 0.6967 18
TorchScript 43.0 0.7136 23.81
ONNX 42.8 0.7136 185.55
OpenVINO 42.9 0.7136 243.97
TensorRT 44.0 0.7136 14.82
TF SavedModel 107 0.7136 260.03
TF GraphDef 42.8 0.7136 423.4
TF Lite 42.8 0.7136 1046.64
PaddlePaddle 85.5 0.7140 1464
NCNN 42.7 0.7200 63
Định dạng Tình trạng Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 49.7 0.7370 36.4
TorchScript 99.2 0.7285 53.58
ONNX 99 0.7280 452.09
OpenVINO 99.1 0.7280 544.36
TensorRT 100.3 0.7285 33.21
TF SavedModel 247.5 0.7280 543.65
TF GraphDef 99 0.7280 906.63
TF Lite 99 0.7280 2758.08
PaddlePaddle 197.9 0.7280 3678
NCNN 98.9 0.7260 135
Định dạng Tình trạng Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 83.7 0.7768 61.3
TorchScript 167.2 0.7554 87.9
ONNX 166.8 0.7551 852.29
OpenVINO 167 0.7551 1012.6
TensorRT 168.4 0.7554 51.23
TF SavedModel 417.2 0.7551 990.45
TF GraphDef 166.9 0.7551 1649.86
TF Lite 166.9 0.7551 5652.37
PaddlePaddle 333.6 0.7551 7114.67
NCNN 166.8 0.7685 231.9
Định dạng Tình trạng Kích thước trên đĩa (MB) mAP50-95(B) Thời gian suy luận (ms/im)
PyTorch 130.5 0.7759 93
TorchScript 260.7 0.7472 135.1
ONNX 260.4 0.7479 1296.13
OpenVINO 260.6 0.7479 1502.15
TensorRT 261.8 0.7469 84.53
TF SavedModel 651.1 0.7479 1451.76
TF GraphDef 260.5 0.7479 4029.36
TF Lite 260.4 0.7479 8772.86
PaddlePaddle 520.8 0.7479 10619.53
NCNN 260.4 0.7646 376.38

Explore more benchmarking efforts by Seeed Studio running on different versions of NVIDIA Jetson hardware.

Tái tạo kết quả của chúng tôi

Để tái tạo những điều trên Ultralytics Điểm chuẩn trên tất cả các định dạng xuất đều chạy mã này:

Ví dụ

from ultralytics import YOLO

# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")

# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
results = model.benchmarks(data="coco8.yaml", imgsz=640)
# Benchmark YOLOv8n speed and accuracy on the COCO8 dataset for all all export formats
yolo benchmark model=yolov8n.pt data=coco8.yaml imgsz=640

Lưu ý rằng kết quả đo điểm chuẩn có thể thay đổi dựa trên cấu hình phần cứng và phần mềm chính xác của hệ thống, cũng như khối lượng công việc hiện tại của hệ thống tại thời điểm chạy điểm chuẩn. Để có kết quả đáng tin cậy nhất, hãy sử dụng tập dữ liệu có số lượng hình ảnh lớn, tức là data='coco8.yaml' (4 val images), ordata = 'coco.yaml'' (5000 hình ảnh val).

Các phương pháp hay nhất khi sử dụng NVIDIA Jetson

Khi sử dụng NVIDIA Jetson, có một số phương pháp hay nhất cần tuân theo để cho phép hiệu suất tối đa khi NVIDIA Jetson đang chạy YOLOv8.

  1. Bật Chế độ nguồn MAX

    Bật Chế độ nguồn MAX trên Jetson sẽ đảm bảo tất cả các lõi CPU, GPU đều được bật.

    sudo nvpmodel -m 0
    
  2. Bật đồng hồ Jetson

    Kích hoạt Jetson Clocks sẽ đảm bảo tất cả các lõi CPU, GPU đều có xung nhịp ở tần số tối đa.

    sudo jetson_clocks
    
  3. Cài đặt ứng dụng Jetson Stats

    Chúng tôi có thể sử dụng ứng dụng thống kê jetson để theo dõi nhiệt độ của các thành phần hệ thống và kiểm tra các chi tiết hệ thống khác như xem CPU, GPU, RAM sử dụng, thay đổi chế độ nguồn, đặt thành xung nhịp tối đa, kiểm tra thông tin JetPack

    sudo apt update
    sudo pip install jetson-stats
    sudo reboot
    jtop
    

Thống kê Jetson

Các bước tiếp theo

Chúc mừng bạn đã thiết lập thành công YOLOv8 trên NVIDIA Jetson của bạn! Để tìm hiểu và hỗ trợ thêm, hãy truy cập thêm hướng dẫn tại Ultralytics YOLOv8 Tài liệu!



Created 2024-04-02, Updated 2024-06-11
Authors: lakshanthad (3), Ahelsamahy (1), glenn-jocher (7), Burhan-Q (2)

Ý kiến