Ultralytics YOLO27: Tham gia danh sách chờ.
Get Started

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 inference 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 chuyên về Bộ xử lý thần kinh (NPU), được thiết kế để inference deep learning tiết kiệm năng lượng ở biên. 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 của DEEPX phù hợp với các tình huống triển khai mà kết nối cloud 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 export đầu tiên. DX-COM 2.4.1 cung cấp wheel cho Python 3.8–3.14 trên Linux x86-64 với glibc 2.31 trở lên. Để cài đặt trước các dependency phục vụ export:

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ử.

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.

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 opset ONNX cho đồ thị ONNX trung gian. Nếu không đặt, phiên bản được hỗ trợ mới nhất sẽ được sử dụng.
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, runtime libdxrt và package Python dx_engine.

Lưu ý

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

# Install the NPU driver and libdxrt runtime
sudo apt update
wget https://github.com/DEEPX-AI/dx_rt_npu_linux_driver/raw/main/release/2.4.1/dxrt-driver-dkms_2.4.1-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.1-2_all.deb
wget https://github.com/DEEPX-AI/dx_rt/raw/main/release/3.3.2/libdxrt_3.3.2_all.deb
sudo apt install ./libdxrt_3.3.2_all.deb

# Create dx-engine wheel
cd /usr/share/libdxrt/python_package && sudo ./make_whl.sh

# Install the bundled dx_engine Python wheel
pip install dx_engine-*.whl

Xác minh runtime đã được cài đặt đúng cách bằng dxrt-cli --version. Bạn sẽ thấy đầu ra tương tự như sau:

DXRT v3.3.2
Minimum Driver Versions
Device Driver: v2.4.0
PCIe Driver: v2.2.0
Firmware: v2.5.2
Minimum Compiler Versions
Compiler: v1.18.1
.dxnn File Format: v6

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(...).

Trực quan hóa bằng dxtron#

dxtron là công cụ trực quan hóa đồ thị của DEEPX, dùng để kiểm tra model .dxnn đã biên dịch.

Cài đặt dxtron trên Linux x86-64 bằng cách tải package .deb từ SDK DEEPX và cài đặt qua dpkg:

wget https://sdk.deepx.ai/release/dxtron/v2.0.1/dxtron_2.0.1_amd64.deb
sudo dpkg -i dxtron_2.0.1_amd64.deb

Sau đó mở model đã export:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Lưu ý

dxtron có sẵn cho cả nền tảng x86-64 và aarch64.

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 ý

Validation cho các benchmark trên được thực hiện bằng COCO128 cho phát hiện, COCO128-seg cho phân đoạn, COCO8-pose cho ước tính tư thế, ImageNet100 cho phân loại 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ị.

Sự kết hợp giữa Ultralytics YOLO và công nghệ NPU của DEEPX mang đến giải pháp hiệu quả để chạy các workload thị giác máy tính tiên tiến trên thiết bị nhúng và thiết bị biên — cung cấp thông lượng cao với 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.

Ngoài ra, nếu muốn tìm hiểu thêm về các tích hợp Ultralytics YOLO khác, hãy truy cập trang hướng dẫn tích hợp của chúng tôi. Tại đó, bạn sẽ tìm thấy nhiều tài nguyên và thông tin hữu ích.

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 được đóng gói cùng 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à máy Linux ARM64 (ví dụ: Raspberry Pi 5), hãy cài đặt driver NPU (dxrt-driver-dkms) và runtime (libdxrt) từ các bản phát hành DEEPX-AI trên GitHub, sau đó cài đặt wheel Python dx_engine đi kèm. Xem phần Cài đặt runtime ở trên để biết các lệnh chi tiết từng bước.

Bình luận