Ultralytics YOLO27:

Xuất mô hình 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 hiệu quả, được lượng tử hóa INT8 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 (NPUs), được thiết kế để suy luận học sâu 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 này phù hợp với các tình huống 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 một tệp nhị phân model .dxnn đã biên dịch, được tối ưu hóa để chạy trên phần cứng NPU DEEPX. Quy trình 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 ra một 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 ở độ 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 chuyên biệt cho phần cứng NPU DEEPX, tận dụng các đơn vị tăng tốc chuyên dụng để suy luận nhanh và hiệu quả.
  • Mức tiêu thụ điện năng thấp: Bằng cách chuyển tác vụ suy luận sang NPU, model DEEPX tiêu thụ ít điện năng hơn nhiều so với suy luận tương đương trên CPU hoặc GPU.
  • Độ chính xác dựa trên hiệu chuẩn: Quá trình xuất 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 tổn thất độ chính xác trong quá trình lượng tử hóa.
  • Đầu ra độc lập: Thư mục model đã xuất bao gồm tệp nhị phân đã 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ợ#

Xuất DEEPX hỗ trợ cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước lượng độ 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✅✅✅

Xuất sang DEEPX: Chuyển đổi model YOLO#

Xuất model Ultralytics YOLO sang định dạng DEEPX và chạy suy luận bằng model đã xuất.

Lưu ý

Xuất DEEPX chỉ được hỗ trợ trên máy Linux x86-64. Bước xuất không hỗ trợ ARM64 (aarch64). Tuy nhiên, model dxnn đã xuất hoàn toàn tương thích và có thể thực thi trên các nền tảng ARM64.

Cài đặt#

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

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

Trình biên dịch dx_com được tự động cài đặt từ kho SDK DEEPX trong lần xuất đầu tiên. Quy trình xuất hiện tại sử dụng DX-COM 2.3.0, cung cấp wheel cho Python 3.8–3.12 trên Linux x86-64 với glibc 2.31 trở lên.

Các bản phát hành PyPI của trình biên dịch đã bị gỡ khỏi danh sách phát hành. Để cài đặt trước các phần phụ thuộc phục vụ xuất, hãy cung cấp trang wheel của SDK cùng với --find-links; cách này hoạt động với cả pip và uv pip:

pip install "ultralytics[export-deepx]" --find-links https://sdk.deepx.ai/release/dxcom/v2.3.0/index.html

Để cài đặt repository ở chế độ có thể chỉnh sửa, thay "ultralytics[export-deepx]" bằng -e ".[export-base,export-deepx]". Để tái tạo môi trường Python 3.12 và chạy thử xuất được dùng trong CI, 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 checkout Ultralytics đã cài đặt. Trình tạo cài đặt trình biên dịch từ nguồn SDK và tự động áp dụng các ràng buộc phụ thuộc đã được kiểm thử.

Cách sử dụng#

Định dạng DEEPX hỗ trợ các chế độ Xuất, Dự đoán và Xác thực. Suy luận và xác thực chạy trên phần cứng NPU DEEPX. Hãy xuất model, sau đó tải model đã xuất để chạy suy luận hoặc xác thực độ chính xác.

Xuất
from ultralytics import YOLO

# Tải model YOLO26
model = YOLO("yolo26n.pt")

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

# Tải model DEEPX đã xuất
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 đã xuất
model = YOLO("yolo26n_deepx_model")

# Xác thực độ chính xác trên dataset COCO8
metrics = model.val(data="coco8.yaml")

Tham số xuất#

Tham sốLoạiMặc địnhMô tả
formatstr'deepx'Định dạng đích của model đã xuất, 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 model. Xuất 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 xuất DEEPX và sẽ tự động được bật nếu không được 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.
datastrNoneTệp YAML của tập dữ liệu dùng để hiệu chuẩn INT8; riêng tác vụ phân loại sử dụng 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 mục 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 để xuất: GPU (device=0) hoặc CPU (device=cpu).
optimizeboolFalseBật mức tối ưu hóa trình biên dịch cao hơn, 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 xuất 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 xuất 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à tệp nhị phân 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 quy trình suy luận Ultralytics sử dụng.

Triển khai model YOLO DEEPX đã xuất#

Sau khi xuất thành công model Ultralytics YOLO sang định dạng DEEPX, 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 trình điều khiển NPU DEEPX, runtime libdxrt và gói 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 kết quả 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à xác thực trên thiết bị DEEPX như hướng dẫn trong phần Cách sử dụng ở trên — model _deepx_model đã xuất sẽ đượ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 gói .deb từ SDK DEEPX và cài đặt bằng 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 đã xuất:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Lưu ý

dxtron khả dụng cho cả nền tảng x86-64 và aarch64.

Các benchmark#

Nhóm Ultralytics đã đánh giá hiệu năng 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 ý

Các phép xác thực cho kết quả đánh giá hiệu năng ở trên sử dụng COCO128 cho phát hiện, COCO128-seg cho phân đoạn, COCO8-pose cho ước lượng 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 với PCIe Gen3.

sudo lspci -vvv | grep -iA 33 accelerators | grep -E "LnkCap|LnkSta"

Quy trình đề xuất#

  1. Huấn luyện model bằng Chế độ Train của Ultralytics
  2. Xuất sang định dạng DEEPX bằng model.export(format="deepx")
  3. Xác thực độ chính xác bằng yolo val để kiểm tra mức tổn thất do lượng tử hóa ở mức 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/ đã xuất lên phần cứng NPU DEEPX bằng runtime dx_engine

Ứng dụng thực tế#

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 đám mây.
  • 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 sản lượng 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 lưu lượng khách hàng, giám sát kệ hàng và theo dõi hàng tồn kho với 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 xuất model Ultralytics YOLO sang định dạng DEEPX và triển khai trên phần cứng NPU DEEPX. Quy trình xuất sử dụng hiệu chuẩn INT8 và trình biên dịch dx_com để tạo tệp nhị phân .dxnn được tối ưu hóa cho phần cứng, trong khi runtime dx_engine đảm nhiệm 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 tác vụ thị giác máy tính nâng cao 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. Bạn sẽ tìm thấy nhiều tài nguyên và thông tin hữu ích tại đó.

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

  • Bạn có thể xuất model bằng phương thức export() trong Python hoặc qua CLI. Quá trình xuất 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 tổn thất độ chính xác. Gói trình biên dịch dx_com sẽ tự động được 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 hiện 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 xuất bằng cách 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. Xuất DEEPX luôn áp dụng INT8 — nếu bạn yêu cầu độ chính xác khác, yêu cầu đó sẽ bị ghi đè kèm cảnh báo.

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

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

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

  • Quy trình xuất DEEPX cấu hình trình biên dịch dx_com để thực hiện 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. Nếu thời gian biên dịch trên tập dữ liệu lớn là vấn đề đáng quan ngại, hãy trỏ data đến một tập dữ liệu nhỏ hơn.

  • 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 trình điều khiển 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 từng bước.

Bình luận