Ultralytics YOLO27: Tham gia danh sách chờ.
Bắt đầu

Xuất model Ultralytics YOLO sang DEEPX

Triển khai model thị giác máy tính trên phần cứng NPU chuyên dụng đòi hỏi định dạng model tương thích và được tối ưu hóa. Xuất model Ultralytics YOLO sang định dạng DEEPX cho phép suy luận INT8 hiệu quả trên bộ tăng tốc NPU DEEPX. Hướng dẫn này trình bày cách chuyển đổi model YOLO sang định dạng DEEPX và triển khai trên phần cứng sử dụng DEEPX.

DEEPX là gì?#

DEEPX NPU Inference

DEEPX là công ty bán dẫn AI và đối tác của Ultralytics, chuyên về bộ xử lý thần kinh (NPUs) được thiết kế để suy luận deep learning tiết kiệm năng lượng ở thiết bị edge. NPU DEEPX được thiết kế cho các ứng dụng AI nhúng và công nghiệp đòi hỏi cao, mang lại thông lượng cao với mức tiêu thụ điện năng tối thiểu. Phần cứng này phù hợp với các kịch bản triển khai mà kết nối đám mây không ổn định hoặc không mong muốn, chẳng hạn như robot, camera thông minh và hệ thống tự động hóa công nghiệp.

Định dạng xuất DEEPX#

Quá trình xuất DEEPX tạo ra binary model .dxnn đã biên dịch và tối ưu hóa để chạy trên phần cứng NPU DEEPX. Pipeline biên dịch sử dụng bộ công cụ dx_com để thực hiện lượng tử hóa INT8 và tối ưu hóa theo phần cứng, tạo thư mục model độc lập sẵn sàng triển khai.

Các tính năng chính của model DEEPX#

Model DEEPX mang lại một số ưu điểm khi triển khai ở biên:

  • Lượng tử hóa INT8: Model được lượng tử hóa xuống độ chính xác INT8 trong quá trình xuất, giúp giảm đáng kể kích thước model và tối đa hóa thông lượng NPU. Tìm hiểu thêm về lượng tử hóa model.
  • Tối ưu hóa cho NPU: Định dạng .dxnn được biên dịch riêng cho phần cứng NPU DEEPX, tận dụng các đơn vị tăng tốc chuyên dụng để inference nhanh và hiệu quả.
  • Tiêu thụ điện năng thấp: Bằng cách chuyển tác vụ inference sang NPU, model DEEPX tiêu thụ ít điện năng hơn nhiều so với inference tương đương trên CPU hoặc GPU.
  • Độ chính xác dựa trên hiệu chuẩn: Quá trình export sử dụng hiệu chuẩn dựa trên EMA với ảnh từ tập dữ liệu thực để giảm thiểu suy giảm độ chính xác khi lượng tử hóa.
  • Đầu ra độc lập: Thư mục model đã export bao gồm binary đã biên dịch, cấu hình hiệu chuẩn và metadata để triển khai dễ dàng.

Các tác vụ được hỗ trợ#

Quá trình export sang DEEPX hỗ trợ cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước tính độ sâu chỉ khả dụng với YOLO26, dòng model duy nhất có các head này.

Tác vụYOLOv8YOLO11YOLO26
Phát hiện✅✅✅
Phân đoạn✅✅✅
Ngữ nghĩa❌❌✅
Độ sâu❌❌✅
Phân loại✅✅✅
Tư thế✅✅✅
OBB✅✅✅

Export sang DEEPX: Chuyển đổi model YOLO của bạn#

Export model Ultralytics YOLO sang định dạng DEEPX và chạy suy luận bằng model đã export.

Lưu ý

Quá trình export sang DEEPX chỉ được hỗ trợ trên máy Linux x86-64. ARM64 (aarch64) không được hỗ trợ trong bước export. Tuy nhiên, các model dxnn đã export hoàn toàn tương thích và có thể chạy trên nền tảng ARM64.

Cài đặt#

Để cài đặt các package cần thiết, hãy chạy:

Cài đặt
# Install the required package for YOLO
pip install ultralytics

Compiler dx_com được tự động cài đặt từ PyPI trong lần xuất đầu tiên. DX-COM 2.5.0 cung cấp các gói wheel cho Python 3.8–3.14 trên Linux x86-64 với glibc 2.31 trở lên và yêu cầu tối thiểu 16 GB RAM. Để cài đặt trước các dependency dùng cho quá trình xuất:

pip install "ultralytics[export-deepx]"

Để cài đặt repository ở chế độ editable, thay "ultralytics[export-deepx]" bằng -e ".[export-base,export-deepx]". Để tái tạo môi trường Python 3.14 và chạy smoke export được CI sử dụng, hãy chạy trình tạo môi trường hiện có từ thư mục gốc của repository:

ULTRALYTICS_ISOLATED_VENVS="$PWD/.venvs" python .github/scripts/create-export-env.py --env isolated-deepx

Trình tạo môi trường yêu cầu uv và một bản Ultralytics checkout đã được cài đặt. Trình tạo tự động áp dụng các ràng buộc dependency đã được kiểm thử.

Khả năng tương thích với runtime

DX-COM 2.5.0 tạo ra định dạng tệp .dxnn v9, chỉ có thể tải trên DX-RT 3.5.0 trở lên. Cài đặt runtime DEEPX tương ứng như mô tả trong Cài đặt runtime, đồng thời kiểm tra ma trận tương thích phiên bản DEEPX trước khi nâng cấp từng thành phần riêng lẻ.

Cách sử dụng#

Định dạng DEEPX hỗ trợ các chế độ Export, Predict và Validate. Suy luận và validation chạy trên phần cứng NPU DEEPX. Hãy export model, sau đó tải model đã export để chạy suy luận hoặc đánh giá độ chính xác.

Lưu ý

Predict và Validate yêu cầu thiết bị NPU DEEPX đã cài runtime DEEPX (xem Cài đặt runtime). Quá trình xuất chạy trên máy chủ Linux x86-64 không có NPU; hãy sao chép thư mục _deepx_model/ đã xuất sang thiết bị NPU để chạy suy luận.

Export
from ultralytics import YOLO

# Nạp model YOLO26
model = YOLO("yolo26n.pt")

# Export model sang định dạng DEEPX (quantize=8 được tự động áp dụng bắt buộc)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
Dự đoán
from ultralytics import YOLO

# Tải model DEEPX đã export
model = YOLO("yolo26n_deepx_model")

# Chạy suy luận
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
from ultralytics import YOLO

# Tải model DEEPX đã export
model = YOLO("yolo26n_deepx_model")

# # Đánh giá độ chính xác trên bộ dữ liệu COCO8
metrics = model.val(data="coco8.yaml")

Các tham số xuất model#

Đối sốKiểuMặc địnhMô tả
formatstr'deepx'Định dạng đích của model đã export, xác định khả năng tương thích với phần cứng NPU DEEPX.
imgszint hoặc tuple640Kích thước ảnh mong muốn cho đầu vào của model. Quá trình export sang DEEPX yêu cầu đầu vào hình vuông — truyền một số nguyên (ví dụ: 640) hoặc một tuple có chiều cao bằng chiều rộng.
quantizeint hoặc str8/autoĐộ chính xác lượng tử hóa. 8 (INT8) là bắt buộc khi export sang DEEPX và được tự động bật nếu không chỉ định. Thay thế các cờ half/int8 đã lỗi thời.
simplifyboolTrueĐơn giản hóa đồ thị ONNX trung gian bằng onnxslim.
opsetintNoneChỉ định phiên bản ONNX opset cho đồ thị ONNX trung gian. Nếu không được thiết lập, phiên bản opset 18 sẽ được sử dụng (thấp hơn trên PyTorch < 2.4), tối đa bằng phiên bản onnx đã cài đặt.
datastrNoneYAML của tập dữ liệu dùng cho hiệu chuẩn INT8; riêng tác vụ phân loại sẽ nhận thư mục tập dữ liệu hoặc tên tập dữ liệu tích hợp sẵn. Nếu bỏ qua tùy chọn này cùng với quantize=8, Ultralytics sẽ chọn tập dữ liệu hiệu chuẩn mặc định cho tác vụ của model.
devicestrNoneChỉ định thiết bị dùng để export: GPU (device=0) hoặc CPU (device=cpu).
optimizeboolFalseBật mức tối ưu hóa cao hơn cho trình biên dịch, giúp giảm độ trễ suy luận nhưng tăng thời gian biên dịch.
Mẹo

Luôn chạy quá trình export sang DEEPX trên máy chủ Linux x86-64. Trình biên dịch dx_com không hỗ trợ ARM64.

Để biết thêm chi tiết về quy trình xuất, hãy truy cập trang tài liệu Ultralytics về xuất model.

Cấu trúc đầu ra#

Sau khi export thành công, một thư mục model sẽ được tạo với cấu trúc sau:

yolo26n_deepx_model/
├── yolo26n.dxnn     # Compiled DEEPX model binary (NPU executable)
├── config.json      # Calibration and preprocessing configuration
└── metadata.yaml    # Model metadata (classes, image size, task, etc.)

Tệp .dxnn là binary model đã biên dịch mà runtime dx_engine tải trực tiếp lên NPU. Tệp metadata.yaml chứa tên lớp, kích thước ảnh và thông tin khác được pipeline suy luận Ultralytics sử dụng.

Triển khai model YOLO DEEPX đã export#

Sau khi export model Ultralytics YOLO sang định dạng DEEPX thành công, bước tiếp theo là triển khai các model này trên phần cứng NPU DEEPX.

Cài đặt runtime#

Suy luận yêu cầu driver NPU DEEPX (v2.7.0 trở lên), runtime DX-RT (v3.5.0 trở lên), firmware NPU v2.7.6 trở lên và gói Python dx_engine. Đây là các phiên bản cần thiết để chạy model được biên dịch bằng DX-COM 2.5.0.

Lưu ý

Runtime DEEPX hỗ trợ cả Linux x86-64 và ARM64 (ví dụ: Raspberry Pi 5).

Cài đặt driver NPU và gói runtime libdxrt-bin bằng một trong các tùy chọn sau.

Tùy chọn A: Cài đặt từ các gói GitHub Release#

Tải các gói driver và runtime .deb từ kho lưu trữ GitHub của DEEPX-AI rồi cài đặt. Gói runtime được cung cấp riêng cho từng kiến trúc CPU (amd64 hoặc arm64):

# Install the NPU driver and DX-RT runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.7.0/dxrt-driver-dkms_2.7.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.7.0-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.5.0/libdxrt-bin_3.5.0_$(dpkg --print-architecture).deb
sudo apt install ./libdxrt-bin_3.5.0_$(dpkg --print-architecture).deb

Tùy chọn B: Cài đặt từ kho apt của DEEPX#

Đăng ký kho apt của DEEPX một lần, sau đó cài đặt và nâng cấp driver cùng runtime bằng apt:

# Add the DEEPX apt repository
wget -O - https://apt.releases.deepx.ai/gpg | sudo gpg --dearmor -o /usr/share/keyrings/deepx-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/deepx-archive-keyring.gpg] https://apt.releases.deepx.ai $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") main" | sudo tee /etc/apt/sources.list.d/deepx.list

# Install the NPU driver and DX-RT runtime
sudo apt update
sudo apt install dxrt-driver-dkms libdxrt-bin

Khởi động lại máy chủ sau khi cài đặt driver để nạp module kernel mới trước khi chạy dxcli.

Gói Python và firmware#

libdxrt-bin đi kèm các gói wheel dx_engine cho Python 3.8–3.14 trong /usr/share/libdxrt-bin/python/, nhưng không cài đặt chúng. Trong môi trường đã cài Ultralytics và NumPy, hãy cài đặt gói wheel phù hợp với phiên bản Python của bạn:

python -m pip install --upgrade --no-index --find-links /usr/share/libdxrt-bin/python dx_engine

DX-RT 3.5.0 yêu cầu firmware NPU v2.7.6 trở lên. Kiểm tra phiên bản firmware và ID thiết bị bằng dxcli -s; nếu phiên bản cũ hơn, hãy cập nhật bằng image firmware dành cho module của bạn. Các module DX-M1 và DX-M1M M.2 sử dụng image firmware khác nhau, vì vậy chỉ tải image phù hợp với module của bạn; dxcli -s hiển thị module là M1 hoặc M1M trong thông tin thiết bị:

# Download the firmware image matching your module (DX-M1 shown)
wget -O dx-m1-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1/2.7.6/mdot2/fw.bin
# wget -O dx-m1m-2.7.6.bin https://github.com/DEEPX-AI/dx_fw/raw/main/m1m/2.7.6/mdot2/fw.bin # DX-M1M

# Update the selected device; replace DEVICE_ID with its ID from dxcli -s
sudo systemctl stop dxrt.service
dxcli -d DEVICE_ID -u dx-m1-2.7.6.bin # for DX-M1M use dx-m1m-2.7.6.bin instead

Sau khi nạp firmware, hãy tắt hoàn toàn máy chủ rồi khởi động lại trước khi kiểm tra phiên bản firmware. Nếu không thể ngắt nguồn vật lý, hãy khởi động lại máy chủ theo hướng dẫn trong hướng dẫn khắc phục sự cố của DEEPX.

Xác minh cài đặt bằng dxcli -s, lệnh này hiển thị phiên bản runtime, driver và firmware của từng thiết bị. import dx_engine sẽ phát sinh lỗi RuntimeError nếu phiên bản của gói wheel dx_engine và runtime libdxrt đã cài đặt không khớp; vì vậy, hãy cài đặt lại gói wheel từ /usr/share/libdxrt-bin/python/ sau khi nâng cấp runtime.

Sau khi cài đặt runtime, hãy chạy suy luận và validation trên thiết bị DEEPX đúng như hướng dẫn trong phần Sử dụng ở trên — _deepx_model đã export được tải trực tiếp bằng YOLO(...).

Kiểm tra model đã biên dịch#

DX-COM 2.5.0 thay thế trình trực quan hóa đồ thị DX-TRON bằng Báo cáo tóm tắt biên dịch HTML tương tác, hiển thị cấu trúc model đã biên dịch và mức phân bổ khối lượng công việc giữa CPU/NPU. Nếu cần, hãy tạo báo cáo bằng cách biên dịch lại model ONNX trung gian được tạo trong quá trình xuất, sử dụng CLI dxcom trên máy chủ xuất x86-64:

dxcom -m yolo26n.onnx -c yolo26n_deepx_model/config.json -o yolo26n_deepx_report --export_html

Mở yolo26n_deepx_report/yolo26n_summary.html bằng trình duyệt để xem báo cáo.

Benchmark#

Nhóm Ultralytics đã đánh giá benchmark các model YOLO26, so sánh tốc độ và độ chính xác giữa PyTorch và DEEPX.

Hiệu năng
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
ModelĐịnh dạngTrạng tháiKích thước (MB)metrics/mAP50-95(B)Thời gian suy luận (ms/ảnh)
YOLO26nPyTorch✅5.30.4760315.2
YOLO26nDEEPX✅6.60.466034.6
YOLO26n-segPyTorch✅6.50.4080485.4
YOLO26n-segDEEPX✅7.90.392053.8
YOLO26n-posePyTorch✅7.60.4230506.3
YOLO26n-poseDEEPX✅8.80.459037.6
YOLO26n-obbPyTorch✅5.70.8171094.4
YOLO26n-obbDEEPX✅7.30.78356.4
ModelĐịnh dạngTrạng tháiKích thước (MB)độ chính xác (top1)độ chính xác (top5)Thời gian suy luận (ms/ảnh)
YOLO26n-clsPyTorch✅5.60.4310.71623.8
YOLO26n-clsDEEPX✅5.90.3330.6862.7
Lưu ý

Việc validation cho các benchmark trên được thực hiện bằng COCO128 cho detection, COCO128-seg cho segmentation, ImageNet100 cho classification, COCO8-pose cho ước lượng pose và DOTA128 cho model OBB. Thời gian suy luận không bao gồm tiền xử lý/hậu xử lý.

Mẹo tối ưu hiệu năng

Để đạt thông lượng suy luận tốt nhất từ NPU DX-M1 kết nối với Raspberry Pi 5, hãy mở tệp cấu hình khởi động và bật hỗ trợ PCIe Gen 3.

sudo nano /boot/firmware/config.txt

Thêm các dòng sau vào cuối tệp:

dtparam=pciex1
dtparam=pciex1_gen=3

Lưu và thoát (Ctrl+X, sau đó Y, rồi Enter), sau đó khởi động lại:

sudo reboot

Kiểm tra thế hệ PCIe. Tốc độ dự kiến là 8GT/s đối với PCIe Gen3.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"
  1. Huấn luyện model bằng Train Mode của Ultralytics
  2. Export sang định dạng DEEPX bằng model.export(format="deepx")
  3. Xác thực độ chính xác bằng yolo val để xác minh mức suy giảm do lượng tử hóa là tối thiểu
  4. Dự đoán bằng yolo predict để xác thực định tính
  5. Triển khai thư mục _deepx_model/ đã export lên phần cứng NPU DEEPX bằng runtime dx_engine

Ứng dụng thực tế#

Các model YOLO được triển khai trên phần cứng NPU DEEPX phù hợp với nhiều ứng dụng AI biên:

  • Giám sát thông minh: Phát hiện đối tượng theo thời gian thực cho các hệ thống an ninh và giám sát, với mức tiêu thụ điện năng thấp và không phụ thuộc vào cloud.
  • Tự động hóa công nghiệp: Kiểm soát chất lượng, phát hiện lỗi và giám sát quy trình ngay trên thiết bị trong môi trường nhà máy.
  • Robot: Điều hướng dựa trên thị giác, tránh chướng ngại vật và nhận dạng đối tượng trên robot tự hành và drone.
  • Nông nghiệp thông minh: Giám sát sức khỏe cây trồng, phát hiện sâu bệnh và ước tính năng suất bằng thị giác máy tính trong nông nghiệp.
  • Phân tích bán lẻ: Phân tích luồng khách hàng, giám sát kệ hàng và theo dõi hàng tồn kho bằng suy luận biên theo thời gian thực.

Tóm tắt#

Trong hướng dẫn này, bạn đã tìm hiểu cách export model Ultralytics YOLO sang định dạng DEEPX và triển khai trên phần cứng NPU DEEPX. Pipeline export sử dụng hiệu chuẩn INT8 và trình biên dịch dx_com để tạo binary .dxnn được tối ưu hóa cho phần cứng, trong khi runtime dx_engine xử lý suy luận trên thiết bị.

Kết hợp với nhau, Ultralytics YOLO và NPU DEEPX chạy các workload thị giác máy tính trên thiết bị nhúng và edge với thông lượng cao, mức tiêu thụ điện năng thấp cho các ứng dụng thời gian thực.

Để biết thêm chi tiết về cách sử dụng, hãy truy cập trang web chính thức của DEEPX.

Câu hỏi thường gặp#

  • Bạn có thể export model bằng phương thức export() trong Python hoặc thông qua CLI. Quá trình export tự động bật lượng tử hóa INT8 và sử dụng tập dữ liệu hiệu chuẩn để giảm thiểu suy giảm độ chính xác. Package trình biên dịch dx_com sẽ được tự động cài đặt nếu chưa có.

    Ví dụ
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • NPU DEEPX được thiết kế để thực thi phép tính INT8 với hiệu suất tối đa. Trình biên dịch dx_com lượng tử hóa model trong quá trình export bằng hiệu chuẩn dựa trên EMA với ảnh từ tập dữ liệu thực, giúp NPU phát huy toàn bộ hiệu năng. INT8 luôn được áp dụng bắt buộc khi export sang DEEPX — nếu bạn yêu cầu độ chính xác khác, lựa chọn đó sẽ bị ghi đè kèm cảnh báo.

  • Quá trình export model DEEPX (biên dịch) yêu cầu máy chủ Linux x86-64. Bước export không được hỗ trợ trên ARM64 (aarch64) và máy Windows. Có thể chạy suy luận bằng model .dxnn đã export trên mọi nền tảng Linux (x86-64 và ARM64) được runtime dx_engine hỗ trợ.

  • Quá trình export tạo một thư mục (ví dụ: yolo26n_deepx_model/) chứa:

    • yolo26n.dxnn — binary NPU đã biên dịch
    • config.json — cài đặt hiệu chuẩn và tiền xử lý
    • metadata.yaml — metadata của model, bao gồm tên lớp và kích thước ảnh
  • Có. Mọi model được huấn luyện bằng Train Mode của Ultralytics và export bằng format="deepx" đều có thể triển khai trên phần cứng NPU DEEPX, miễn là model sử dụng các phép toán layer được hỗ trợ. Quá trình export hỗ trợ cả bảy tác vụ của Ultralytics: phát hiện, phân đoạn instance, phân đoạn ngữ nghĩa, ước tính độ sâu, phân loại, ước tính tư thế và hộp giới hạn định hướng (OBB).

  • Pipeline export DEEPX cấu hình trình biên dịch dx_com chạy 100 bước hiệu chuẩn EMA trên ảnh từ tập dữ liệu hiệu chuẩn. Vài trăm ảnh thường là đủ để đạt độ chính xác lượng tử hóa tốt. Hãy trỏ data đến một tập dữ liệu nhỏ hơn nếu thời gian biên dịch trên các tập dữ liệu lớn là vấn đề đáng lo ngại.

  • Runtime DEEPX không đi kèm ultralytics và phải được cài đặt riêng trước khi chạy suy luận. Trên máy Linux x86-64 và Linux ARM64 (ví dụ: Raspberry Pi 5), hãy cài đặt driver NPU (dxrt-driver-dkms) và runtime (libdxrt-bin) từ các gói phát hành GitHub của DEEPX-AI hoặc kho apt của DEEPX, cập nhật firmware NPU lên v2.7.6 trở lên nếu cần, đồng thời cài đặt gói wheel Python dx_engine đi kèm vào môi trường của bạn. Model được xuất bằng DX-COM 2.5.0 yêu cầu DX-RT 3.5.0 trở lên. Xem mục Cài đặt runtime ở trên để biết các lệnh chi tiết từng bước.

Bình luận

Đặt câu hỏi, chia sẻ kết quả hoặc giúp đỡ người khác.