YOLO Vision 2026:

Xuất mô hình YOLO của Ultralytics sang định dạng DEEPX#

Việc 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 định dạng model tương thích và được tối ưu hóa. Việc xuất các 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 các bộ tăng tốc DEEPX NPU. Hướng dẫn này sẽ hướng dẫn bạn quy trình chuyển đổi model YOLO sang định dạng DEEPX và triển khai chúng trên phần cứng tích hợp DEEPX.

DEEPX là gì?#

DEEPX NPU Inference

DEEPX là một công ty chất bán dẫn AI chuyên về các Đơn vị Xử lý Thần kinh (NPU) được thiết kế để suy luận deep learning tiết kiệm năng lượng ở biên. Các NPU của DEEPX được thiết kế cho các ứng dụng AI nhúng và công nghiệp đò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 mà kết nối đám mây không đáng tin cậy 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 đã được biên dịch, tối ưu hóa để thực thi trên phần cứng DEEPX NPU. 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 dành riêng cho phần cứng, tạo ra một thư mục model tự chứa sẵn sàng cho việc triển khai.

Các tính năng chính của mô hình DEEPX#

Các mô hình DEEPX mang lại nhiều ưu điểm 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.
  • Được tối ưu hóa cho NPU: Định dạng .dxnn được biên dịch cụ thể cho phần cứng DEEPX NPU, 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 giảm tải suy luận sang NPU, các mô hình DEEPX tiêu thụ ít điện năng hơn nhiều so với việc 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 các hình ảnh tập dữ liệu thực để giảm thiểu mất mát độ chính xác trong quá trình định lượng.
  • Đầu ra khép kín: Thư mục mô hình được xuất bao gồm tệp nhị phân đã biên dịch, cấu hình hiệu chuẩn và siêu dữ liệu để triển khai đơn giản.

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

Tính năng xuất DEEPX hỗ trợ tất cả bảy tác vụ của Ultralytics. Phân đoạn ngữ nghĩa và ước tính độ sâu chỉ có sẵn với YOLO26, dòng duy nhất tích hợp các phần đầu (head) đó.

Tác vụYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Xuất sang DEEPX: Chuyển đổi mô hình YOLO của bạn#

Xuất mô hình Ultralytics YOLO sang định dạng DEEPX và chạy suy luận với mô hình đã xuất.

Lưu ý

Việc xuất DEEPX chỉ được hỗ trợ trên các máy chạy Linux x86-64. ARM64 (aarch64) không được hỗ trợ cho bước xuất. Tuy nhiên, các mô hình 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

Gói trình biên dịch dx_com sẽ được cài đặt tự động từ kho lưu trữ DEEPX SDK trong lần xuất đầu tiên. Để có hướng dẫn chi tiết và các phương pháp hay nhất liên quan đến quá 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 bắt buộc 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 để tìm giải pháp và mẹo hữu ích.

Cách sử dụng#

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

Xuất (Export)
from ultralytics import YOLO

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

# Export the model to DEEPX format (quantize=8 is enforced automatically)
model.export(format="deepx")  # creates 'yolo26n_deepx_model/'
Dự đoán (Predict)
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Xác thực
from ultralytics import YOLO

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

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

Đối số xuất#

Đối sốLoạiMặc địnhMô tả
formatstr'deepx'Định dạng đích cho mô hình đã xuất, xác định khả năng tương thích với phần cứng NPU của DEEPX.
imgszint hoặc tuple640Kích thước ảnh mong muốn cho đầu vào của model. Quá trình xuất DEEPX yêu cầu đầu vào dạng vuông — truyền một số nguyên (ví dụ: 640) hoặc một bộ (tuple) trong đó 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 đối với việc xuất DEEPX và được bật tự động 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 với onnxslim.
opsetintNoneChỉ định phiên bản ONNX opset cho đồ thị ONNX trung gian. Nếu không được thiết lập, hệ thống sẽ sử dụng phiên bản được hỗ trợ mới nhất.
datastrNoneTệp YAML của tập dữ liệu được sử dụng để hiệu chỉnh INT8; riêng phân loại (classification) sẽ lấy thư mục tập dữ liệu hoặc tên tập dữ liệu có sẵn. Nếu bỏ qua với quantize=8, Ultralytics sẽ chọn tập dữ liệu hiệu chỉnh mặc định cho tác vụ của model.
devicestrNoneChỉ định thiết bị để xuất: GPU (device=0) hoặc CPU (device=cpu).
optimizeboolFalseBật 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 chạy 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ề quá trình xuất, hãy truy cập trang tài liệu của Ultralytics về việc xuất model.

Cấu trúc đầu ra#

Sau khi xuất thành công, một thư mục mô hình sẽ được tạo với bố cụ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à môi trường chạy dx_engine tải trực tiếp trên NPU. Tệp metadata.yaml chứa tên lớp, kích thước ảnh và thông tin khác được sử dụng bởi chuỗi suy luận của Ultralytics.

Triển khai các mô hình YOLO DEEPX đã xuất#

Khi bạn đã xuất thành công mô hình Ultralytics YOLO sang định dạng DEEPX, bước tiếp theo là triển khai các mô hình này trên phần cứng NPU của DEEPX.

Cài đặt Runtime#

Quá trình suy luận yêu cầu trình điều khiển DEEPX NPU, môi trường chạy 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 rằng môi trường chạy đã được cài đặt chính xác bằng 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

Sau khi môi trường chạy được cài đặt, hãy chạy suy luận và xác thực trên thiết bị DEEPX của bạn chính xác như trong phần Cách sử dụng ở trên — tệp _deepx_model đã xuất được tải trực tiếp bằng YOLO(...).

Hình dung với dxtron#

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

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

dxtron yolo26n_deepx_model/yolo26n.dxnn
Lưu ý

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

Điểm chuẩn (Benchmarks)#

Nhóm Ultralytics đã kiểm chuẩn các mô hình YOLO26, so sánh tốc độ và độ chính xác giữa PyTorch và DEEPX.

Hiệu suất
Raspberry Pi 5 DEEPX M1 NPU vs PyTorch benchmarks
Mô hìnhĐịnh dạngTrạng tháiKích thước (MB)metrics/mAP50-95(B)Thời gian suy luận (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
Mô hìnhĐịnh dạngTrạng tháiKích thước (MB)acc (top1)acc (top5)Thời gian suy luận (ms/im)
YOLO26n-clsPyTorch5.60.4310.71623.8
YOLO26n-clsDEEPX5.90.3330.6862.7
Lưu ý

Việc xác thực cho các đánh giá hiệu năng 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 suy luận không bao gồm tiền xử lý/hậu xử lý.

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

Để đạt được lưu lượng suy luận tốt nhất từ NPU DX-M1 được 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 cho PCIe Gen3.

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

Quy trình làm việc được đề xuất#

  1. Huấn luyện (Train) model của bạn bằng Chế độ Huấn luyện của Ultralytics
  2. Xuất (Export) sang định dạng DEEPX bằng model.export(format="deepx")
  3. Xác thực (Validate) độ chính xác với yolo val để xác minh mức thất thoát do lượng tử hóa là tối thiểu
  4. Dự đoán (Predict) bằng yolo predict để xác thực định tính
  5. Triển khai (Deploy) thư mục _deepx_model/ đã xuất lên phần cứng DEEPX NPU bằng môi trường chạy dx_engine

Ứng dụng trong thực tế#

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

  • 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 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 chướng ngại vật và nhận dạng đối tượng trên robot và máy bay không người lái tự hành.
  • 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 cách sử dụ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 với suy luận tại biên theo 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 DEEPX NPU. Quy trình xuất sử dụng hiệu chỉnh 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 môi trường chạy dx_engine xử lý việc 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 cung cấp một giải pháp hiệu quả để chạy các khối lượng công việc thị giác máy tính nâng cao trên các thiết bị nhúng và thiết bị biên — mang lại 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 bạn muốn tìm hiểu thêm về các tích hợp khác của Ultralytics YOLO, 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 rất 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ể xuất model của mình bằng phương thức export() trong Python hoặc thông qua CLI. Quá trình xuất sẽ tự động bật lượng tử hóa INT8 và sử dụng tập dữ liệu hiệu chỉnh để giảm thiểu sự 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.

    Ví dụ
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")
    model.export(format="deepx")
  • Các NPU DEEPX được thiết kế để thực thi các 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 sử dụng hiệu chỉnh dựa trên EMA với các hình ảnh tập dữ liệu thực tế, cho phép NPU phát huy hết hiệu năng. INT8 luôn được bắt buộc áp dụng cho việc xuất DEEPX — nếu bạn yêu cầu độ chính xác khác, nó sẽ bị ghi đè kèm theo cảnh báo.

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

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

    • yolo26n.dxnn — tệp nhị phân NPU đã được biên dịch
    • config.json — các thiết lập hiệu chỉnh và tiền xử lý
    • metadata.yaml — siêu dữ liệu (metadata) của 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ế độ Huấn luyện Ultralytics và được xuất bằng format="deepx" đều có thể được triển khai trên phần cứng DEEPX NPU, miễn là nó sử dụng các phép toán lớp được hỗ trợ. Việc xuất hỗ trợ tất cả bảy tác vụ của Ultralytics: phát hiện, phân đoạn thực thể, 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 có hướng (OBB).

  • Quy trình xuất DEEPX sử dụng mọi hình ảnh trong tập dữ liệu hiệu chỉnh với phương pháp hiệu chỉnh EMA. Một vài trăm hình ả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ở thành vấn đề trên các tập dữ liệu lớn.

  • Môi trường chạy DEEPX không được đóng gói sẵn với ultralytics và phải được cài đặt riêng trước khi chạy suy luận. Trên các máy x86-64 Linux và ARM64 Linux (ví dụ: Raspberry Pi 5), hãy cài đặt trình điều khiển NPU (dxrt-driver-dkms) và môi trường chạy (libdxrt) từ các bản phát hành GitHub của DEEPX-AI, sau đó cài đặt tệp wheel Python dx_engine đi kèm. Xem phần Cài đặt Môi trường Chạy ở trên để biết các lệnh từng bước.

Bình luận