Skip to main content

Xuất DeepX cho các model Ultralytics YOLO

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

DeepX là gì?

DEEPX NPU Inference

DeepX là một công ty bán dẫn AI chuyên về các Đơn vị Xử lý Thần kinh (NPU) được thiết kế cho việc deep learning suy luận tại biên (edge) với hiệu quả năng lượng cao. Các NPU DeepX được thiết kế cho các ứng dụng AI công nghiệp và nhúng đòi hỏi khắt khe, 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 họ rất phù hợp cho các kịch bản triển khai nơi kết nối đám mây không ổn định hoặc không khả thi, 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

Việc xuất DeepX tạo ra một file nhị phân model .dxnn được biên dịch và tối ưu hóa để thực thi 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 cụ thể cho phần cứng, tạo ra một thư mục model hoàn chỉnh sẵn sàng để triển khai.

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

Các model DeepX mang lại một số lợi thế cho việc triển khai tại biên:

  • Lượng tử hóa INT8: Các model được lượng tử hóa về độ 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 NPU: Định dạng .dxnn được biên dịch đặc 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 chóng và hiệu quả.
  • Tiêu thụ điện năng thấp: Bằng cách chuyển tác vụ suy luận sang NPU, các model DeepX tiêu thụ ít điện năng hơn nhiều so với suy luận trên CPU hoặc GPU thông thường.
  • Độ 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 hình ảnh từ tập dữ liệu thực để giảm thiểu mất mát độ chính xác trong quá trình lượng tử hóa.
  • Kết quả đầu ra hoàn chỉnh: Thư mục model sau khi xuất bao gồm file nhị phân đã biên dịch, cấu hình hiệu chuẩn và metadata để triển khai đơn giản.

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

Tất cả các tác vụ tiêu chuẩn của Ultralytics đều được hỗ trợ xuất sang DeepX trên các dòng model YOLO26, YOLO11 và YOLOv8.

Xuất sang DeepX: Chuyển đổi model YOLO của bạn

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

Lưu ý

Xuất DeepX chỉ được hỗ trợ trên các máy Linux x86-64. ARM64 (aarch64) không được hỗ trợ cho bước xuất.

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

Gói trình biên dịch dx_com sẽ được tự động cài đặt từ repository HUB SDK của DeepX trong lần xuất đầu tiên. Để có hướng dẫn chi tiết và các phương pháp tốt nhất liên quan đến quy trình cài đặt, hãy xem hướng dẫn Cài đặt Ultralytics của chúng tôi. Trong quá trình cài đặt các gói cần thiết cho YOLO, nếu bạn gặp bất kỳ khó khăn nào, hãy tham khảo hướng dẫn Các vấn đề thường gặp để biết các giải pháp và mẹo.

Cách sử dụng

Cách sử dụng
from ultralytics import YOLO

# Load the YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to DeepX format (int8=True is enforced automatically)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'

Các tham số xuất

Tham sốLoạiMặc địnhMô tả
formatstr'deepx'Định dạng đích cho 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 hình ảnh mong muốn cho đầu vào model. Xuất DeepX yêu cầu đầu vào vuông — truyền một số nguyên (ví dụ: 640) hoặc một tuple trong đó chiều cao bằng chiều rộng.
int8boolTrueCho phép lượng tử hóa INT8. Bắt buộc cho việc xuất DeepX — tự động được đặt thành True nếu không được chỉ định.
datastr'coco128.yaml'File cấu hình tập dữ liệu được sử dụng cho hiệu chuẩn INT8. Chỉ định nguồn hình ảnh hiệu chuẩn.
devicestrNoneChỉ định thiết bị để xuất: GPU (device=0) hoặc CPU (device=cpu).
optimizeboolFalseCho phép tối ưu hóa trình biên dịch cao hơn, giúp giảm độ trễ suy luận và tăng thời gian biên dịch.
Mẹo

Luôn thực hiện xuất DeepX trên máy chủ x86-64 Linux. 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 của Ultralytics về việc xuất.

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

Gói trình biên dịch .dxnn file là file nhị phân model đã biên dịch mà runtime dx_engine tải trực tiếp trên NPU. File metadata.yaml chứa tên lớp, kích thước hình ảnh và các thông tin khác được sử dụng bởi pipeline suy luận của Ultralytics.

Triển khai các model DeepX YOLO đã xuất

Sau khi bạn đã 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 đòi hỏi driver NPU DeepX, runtime libdxrt và gói dx_engine Python.

Lưu ý

Runtime DeepX chỉ được hỗ trợ trên các máy Linux x86-64 và các máy Debian Trixie ARM64 (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.0/dxrt-driver-dkms_2.4.0-2_all.deb
sudo apt install ./dxrt-driver-dkms_2.4.0-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 với dxrt-cli --version. Bạn sẽ thấy kết quả đầu ra tương tự như:

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

Cách sử dụng

Cách sử dụng
from ultralytics import YOLO

# Load the exported DeepX model
model = YOLO("yolo26n_deepx_model")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")

# Process results
for r in results:
    print(f"Detected {len(r.boxes)} objects")
    r.show()

Trực quan hóa với dxtron

dxtron là bộ trực quan hóa đồ thị của DeepX để kiểm tra model .dxnn đã biên dịch.

Cài đặt dxtron trên Linux x86-64 bằng cách tải xuống gói .deb từ HUB SDK DeepX và cài đặt thông 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 đã xuất của bạn:

dxtron yolo26n_deepx_model/yolo26n.dxnn
Lưu ý

dxtron chỉ khả dụng cho x86-64 Linux. Các nền tảng ARM64/aarch64 và không phải Linux không được hỗ trợ.

Benchmarks

Đội ngũ Ultralytics đã benchmark các model YOLO26, so sánh tốc độ và độ chính xác giữa PyTorch và DeepX.

Hiệu năng
ModelĐịnh dạngTrạng tháiKích thước (MB)metrics/mAP50-95(B)Inference time (ms/im)
YOLO26nPyTorch5.30.4760315.2
YOLO26nDeepX6.60.466034.6
YOLO26n-segPyTorch6.50.4080485.4
YOLO26n-segDeepX7.90.392053.8
YOLO26n-posePyTorch7.60.4230506.3
YOLO26n-poseDeepX8.80.459037.6
YOLO26n-obbPyTorch5.70.8171094.4
YOLO26n-obbDeepX7.30.78356.4
ModelĐịnh dạngTrạng tháiKích thước (MB)acc (top1)acc (top5)Inference time (ms/im)
YOLO26n-clsPyTorch5.60.4310.71623.8
YOLO26n-clsDeepX5.90.3330.6862.7
Lưu ý

Việc đánh giá cho các chuẩn 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 các model OBB. Thời gian inference không bao gồm tiền/hậu xử lý.

Các mẹo tối ưu hóa hiệu suất

Để đạt được throughput inference tốt nhất từ NPU DX-M1 kết nối với Raspberry Pi 5, hãy mở file cấu hình boot 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 file:

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

Quy trình làm việc được khuyến nghị

  1. Predict model của bạn sử dụng Ultralytics Train Mode
  2. sang định dạng DeepX sử dụng model.export(format="deepx")
  3. Validate độ chính xác với yolo val để xác minh mức độ suy giảm định lượng tối thiểu
  4. khác, hãy xem các trang tài liệu về sử dụng yolo predict để đánh giá định tính
  5. Deploy thư mục _deepx_model/ đã xuất sang phần cứng NPU DeepX sử dụng dx_engine runtime

Các ứng dụng thực tế

Các model YOLO được triển khai trên phần cứng NPU DeepX rất phù hợp cho nhiều loại ứng dụng edge AI:

  • Giám sát thông minh: object detection 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 trên thiết bị, phát hiện lỗi và giám sát quy trình trong môi trường nhà máy.
  • Robot: Điều hướng dựa trên thị giác, tránh vật cản và nhận dạng vật thể trên các robot tự hành và thiết bị bay không người lái.
  • 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 computer vision 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 inference tại biên thời gian thực.

Tóm tắt

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

Sự kết hợp giữa Ultralytics YOLO và công nghệ NPU của DeepX cung cấp giải pháp hiệu quả để chạy các khối lượng công việc computer vision tiên tiến trên các thiết bị nhúng và thiết bị biên — mang lại throughput 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 DeepX official website.

Ngoài ra, nếu bạn muốn biết thêm về các tích hợp Ultralytics YOLO khác, hãy truy cập integration guide page của chúng tôi. Bạn sẽ tìm thấy rất nhiều tài nguyên và thông tin hữu ích ở đó.

Câu hỏi thường gặp (FAQ)

Làm thế nào để tôi xuất model Ultralytics YOLO của mình sang định dạng DeepX?

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

Ultralytics Platform
from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.export(format="deepx")

Tại sao việc xuất DeepX yêu cầu định lượng INT8?

Các NPU DeepX được thiết kế để thực hiện các tính toán INT8 với hiệu suất tối đa. Trình biên dịch dx_com định lượng model trong quá trình xuất bằng cách sử dụng hiệu chuẩn dựa trên EMA với các hình ảnh từ tập dữ liệu thực, cho phép NPU đạt được hiệu suất đầy đủ. Định lượng INT8 luôn được áp dụng cho việc xuất DeepX — nếu bạn truyền int8=False, nó sẽ bị ghi đè kèm theo cảnh báo.

Những nền tảng nào được hỗ trợ cho việc xuất DeepX?

Việc xuất (biên dịch) model DeepX yêu cầu một x86-64 Linux máy chủ. Bước xuất không được hỗ trợ trên các máy ARM64 (aarch64) và Windows. Việc inference sử dụng model .dxnn đã xuất có thể được thực hiện trên bất kỳ nền tảng Linux nào (x86-64 và ARM64) được hỗ trợ bởi dx_engine runtime.

Kết quả đầu ra của việc xuất DeepX là gì?

Quá trình xuất sẽ tạo ra 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 của model bao gồm tên lớp và kích thước ảnh

Tôi có thể triển khai các model tự huấn luyện trên phần cứng DeepX không?

Có. Bất kỳ model nào được huấn luyện bằng Ultralytics Train Mode và được 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 layer operation được hỗ trợ. Việc xuất hỗ trợ các tác vụ phát hiện (detection), phân đoạn (segmentation), ước tính tư thế (pose estimation), hộp bao định hướng (OBB) và phân loại (classification).

Tôi nên sử dụng bao nhiêu ảnh hiệu chuẩn cho việc xuất DeepX?

Quy trình xuất DeepX sử dụng mọi hình ảnh trong tập dữ liệu hiệu chuẩn (sau khi fraction lọc) với phương pháp hiệu chuẩn EMA. Một vài trăm ảnh thường là đủ để có độ chính xác lượng tử hóa tốt. Hãy trỏ data vào một tập dữ liệu nhỏ hơn (hoặc đặt fraction dưới 1.0) nếu thời gian biên dịch trở thành vấn đề trên các tập dữ liệu lớn.

Làm thế nào để cài đặt DeepX runtime cho việc inference?

DeepX runtime không được đóng gói sẵn với ultralytics và phải được cài đặt riêng trước khi thực hiện inference. Trên các máy Linux x86-64 và máy Debian Trixie ARM64 (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 GitHub của DEEPX-AI, sau đó cài đặt dx_engine Python wheel đi kèm. Xem mục Cài đặt Runtime ở trên để biết các lệnh từng bước.

Bình luận