Xuất model YOLO của Ultralytics sang Hailo#
Các bộ tăng tốc AI Hailo chạy các model Định dạng thực thi Hailo (HEF) đã biên dịch trên các thiết bị edge như Raspberry Pi AI HAT+ và AI HAT+ 2. Ultralytics xuất trực tiếp các model YOLO cho các tác vụ detection, segmentation, semantic segmentation, depth estimation, classification, pose và OBB sang HEF bằng Trình biên dịch luồng dữ liệu Hailo (DFC).
Triển khai Hailo được thiết kế cho computer vision trên edge: camera, robot, hệ thống công nghiệp, gateway và các thiết bị khác cần detection đối tượng cục bộ mà không phải gửi từng frame lên cloud. HEF đã biên dịch chứa network đã quantize, phân bổ hardware, cơ chế scheduling và post-processing HailoRT tùy chọn cần thiết cho bộ tăng tốc được chọn.
Đối với các triển khai hardware mới, hãy đánh giá thêm DeepX, Axelera và Rockchip. DeepX là điểm khởi đầu tốt hơn khi cần hiệu năng YOLO cao hơn và hiệu năng trên mỗi watt tốt hơn, trong khi Axelera hướng đến các triển khai có throughput cao hơn. Rockchip cũng được sử dụng rộng rãi trên các SBC giá phải chăng và hệ thống nhúng.
Tại sao nên triển khai Ultralytics YOLO trên Hailo?#
Kết hợp Ultralytics YOLO với đơn vị xử lý thần kinh Hailo (NPU) mang lại lộ trình thực tế từ training model đến inference AI trên edge. Các use case phổ biến gồm:
- Camera thông minh và phân tích video: Chạy detection đối tượng theo thời gian thực gần camera cho các ứng dụng an ninh, bán lẻ, giao thông và giám sát số người.
- Robotics và hệ thống tự hành: Phát hiện người, phương tiện, kiện hàng, công cụ hoặc chướng ngại vật mà không phụ thuộc vào kết nối cloud liên tục.
- Computer vision công nghiệp: Triển khai các model YOLO tùy chỉnh cho inspection, counting, giám sát an toàn và kiểm soát chất lượng.
- Dự án Raspberry Pi AI: Bổ sung inference vision được tăng tốc cho các hệ thống Raspberry Pi bằng AI HAT+ hoặc AI HAT+ 2.
- Gateway edge và AI PC: Xử lý cục bộ nhiều luồng video hoặc sensor đồng thời giảm yêu cầu về bandwidth và tài nguyên tính toán trên cloud.
Inference cục bộ có thể cải thiện quyền riêng tư và thời gian phản hồi vì hình ảnh vẫn nằm trên thiết bị triển khai. Throughput, latency và mức tiêu thụ điện thực tế phụ thuộc vào kích thước model YOLO, độ phân giải đầu vào, kiến trúc Hailo, hệ thống host và pipeline ứng dụng.
Cách hoạt động của Hailo Export#
Ultralytics quản lý toàn bộ workflow export phía sau format="hailo":
YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compileExporter tự động thực hiện các giai đoạn sau:
- Xuất một graph ONNX tĩnh với các thiết lập tương thích với compiler.
- Chọn các head output cho kiến trúc model.
- Tạo các chỉ thị normalization, activation và post-processing.
- Xây dựng stream calibration đại diện và quantize model sang INT8.
- Biên dịch graph đã tối ưu cho bộ tăng tốc Hailo được chọn.
- Lưu HEF cùng metadata của Ultralytics và xóa file ONNX trung gian.
Các model detection YOLOv8 và YOLO11 sử dụng HailoRT YOLO NMS trong pipeline đã biên dịch. Các model detection YOLO26 sử dụng output one-to-one không có NMS, vì vậy exporter tự động chọn output và pipeline quantization khác. Segmentation, pose và OBB của YOLOv8/YOLO11 biên dịch các tensor head thô, được Ultralytics decode khi inference; classification của YOLOv8/YOLO11/YOLO26 chạy softmax trên chip, vì vậy HEF trả về trực tiếp xác suất class. Đối với semantic segmentation YOLO26, exporter tuân theo bộ tăng tốc: Hailo-8/8L (DFC v3.x) trả về classifier logits để host thực hiện upsampling và reduction, trong khi Hailo-10H/15 (DFC v5.x) biên dịch các head ArgMax multi-class trên chip và trả về class map nhỏ gọn. Các head single-class sử dụng pipeline host-logit trên mọi target vì cần threshold thay vì ArgMax. Các model depth YOLO26 biên dịch conv logit dense trong a16 và xây dựng lại metric depth map trên host (clamp/exp và phép calibration log-affine đã học tiếp nối head), vì vậy quantizer giữ range rộng nhất trên raw logit. Người dùng không cần tìm các end node ONNX, viết Hailo model script (.alls) hoặc tự tạo NMS JSON.
Cài đặt#
Cài đặt Ultralytics và tải DFC wheel cho hardware target từ Hailo Developer Zone (yêu cầu đăng ký miễn phí):
pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whlBiên dịch Hailo yêu cầu Linux x86_64. Biên dịch model trên workstation được hỗ trợ, sau đó sao chép thư mục output sang thiết bị target. Không cần DFC cho inference.
Hailo-8 và Hailo-8L sử dụng DFC v3.x. Hailo-10H và Hailo-15 sử dụng DFC v5.x. Cài đặt phiên bản compiler tương ứng với bộ tăng tốc target.
Ultralytics Platform cung cấp Hailo export được quản lý, vì vậy không cần tài khoản Hailo cục bộ hoặc cài đặt DFC.
Export model Hailo HEF#
Sử dụng format="hailo" và chọn bộ tăng tốc target bằng name:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
output = model.export(format="hailo", name="hailo8")
print(output) # yolo11n_hailo_model/Lệnh CLI tương đương là:
yolo export model=yolo11n.pt format=hailo name=hailo8Hailo export chỉ hỗ trợ INT8. Ultralytics tự động tải dataset calibration dành riêng cho task khi không cung cấp data. Đối với model tùy chỉnh, hãy sử dụng hình ảnh training hoặc validation đại diện:
Ultralytics buộc mức tối ưu hóa DFC là 2 và cấu hình fine-tuning sử dụng kích thước thực tế của dataset calibration. Hailo khuyến nghị ít nhất 1.024 hình ảnh đa dạng; các dataset nhẹ tích hợp được biên dịch ở level 2 nhưng có thể không đại diện cho domain production. Đối với Hailo export dùng trong production, hãy truyền dataset đại diện bằng data="path/to/dataset.yaml".
model.export(format="hailo", name="hailo8", data="path/to/dataset.yaml")Compilation sử dụng input shape cố định. Đặt imgsz thành độ phân giải được sử dụng trên thiết bị:
model.export(format="hailo", name="hailo8", imgsz=640)Model và hardware được hỗ trợ#
Hệ sinh thái Hailo hỗ trợ nhiều workload computer vision, nhưng exporter Ultralytics format="hailo" hiện xác thực các head YOLO tiêu chuẩn cho detection, segmentation, semantic segmentation, depth estimation, classification, pose và OBB. Bảng task mô tả các pipeline exporter hiện có; việc xác thực hardware được liệt kê riêng bên dưới.
| Task Ultralytics | Hailo export trực tiếp | Các họ model được hỗ trợ | Ghi chú |
|---|---|---|---|
| Phát hiện đối tượng | ✅ | YOLOv8, YOLO11, YOLO26 | Các head Detect tiêu chuẩn của Ultralytics, bao gồm model tùy chỉnh |
| Instance segmentation | ✅ | YOLOv8, YOLO11 | Các tensor head thô được Ultralytics decode khi inference; YOLO26-seg hiện chưa được hỗ trợ |
| Semantic segmentation | ✅ | YOLO26 | Hailo-8/8L và các head single-class trả về logits; Hailo-10H/15 tạo sẵn các map multi-class |
| Depth estimation | ✅ | YOLO26 | Logit dense được biên dịch trong a16; Ultralytics xây dựng lại metric depth map khi inference |
| Image classification | ✅ | YOLOv8, YOLO11, YOLO26 | Softmax chạy trên chip; HEF trả về trực tiếp xác suất class |
| Pose estimation | ✅ | YOLOv8, YOLO11 | Các tensor head thô được Ultralytics decode khi inference; YOLO26-pose hiện chưa được hỗ trợ |
| Oriented object detection | ✅ | YOLOv8, YOLO11 | Các tensor head thô được Ultralytics decode khi inference; YOLO26-OBB hiện chưa được hỗ trợ |
Các họ detection chuyên biệt như YOLOv10, YOLO-World, YOLOE và RT-DETR hiện ❌ không được hỗ trợ qua pipeline format="hailo" của Ultralytics. Ultralytics từ chối các task và họ model này trước khi compilation thay vì tạo ra một HEF chưa được xác thực.
| Họ model | Hailo-8 / Hailo-8L | Hailo-10H / Hailo-15 | Đầu ra |
|---|---|---|---|
| Detection YOLOv8 / YOLO11 | ✅ | ✅ | HEF với HailoRT YOLO NMS |
| Detection YOLO26 | ✅ | ✅ | Các output detection head không có NMS cho các runtime được hỗ trợ |
| YOLOv8-seg / YOLO11-seg | ✅ | ✅ | Các tensor segmentation thô, được Ultralytics decode khi inference |
| YOLOv8-pose / YOLO11-pose | Đã xác thực trên Hailo-8L | Chưa xác thực | Các tensor pose thô, được Ultralytics decode khi inference |
| YOLOv8-obb / YOLO11-obb | Đã xác thực trên Hailo-8L | Chưa xác thực | Các tensor OBB thô, được Ultralytics decode khi inference |
| YOLOv8-cls / YOLO11-cls / YOLO26-cls | Đã xác thực trên Hailo-8L | Chưa xác thực | Softmax trên chip; HEF trả về xác suất class |
| YOLO26-sem | Đã xác thực trên Hailo-8L | Chưa xác thực | Logits hoặc class map được tạo sẵn trên Hailo-10H/15 |
| YOLO26-depth | Đã xác thực trên Hailo-8L | Chưa xác thực | Logit dense; metric depth map được Ultralytics decode |
Pose, OBB, classification, semantic segmentation YOLO26 và depth estimation YOLO26 (pipeline Hailo-8/8L) đã được xác thực trên Hailo-8L với HailoRT 4.23 và DFC 3.33. Exporter chấp nhận các target khác được liệt kê, nhưng các pipeline task mới đó cần được xác thực với compiler và thiết bị tương ứng trước khi sử dụng trong production.
Chọn một trong các giá trị name sau:
name | Bộ tăng tốc target |
|---|---|
hailo8 | Hailo-8 |
hailo8l | Hailo-8L |
hailo10h | Hailo-10H |
hailo15h | Hailo-15H |
hailo15l | Hailo-15L |
Nếu bỏ qua name, hailo8l sẽ được sử dụng theo mặc định; đặt name thành bộ tăng tốc mà bạn sẽ triển khai. Cài đặt phiên bản DFC tương ứng với target đã chọn.
Các thế hệ hardware và SDK Hailo#
Các họ bộ tăng tốc Hailo sử dụng những thế hệ compiler khác nhau. HEF được tạo phải khớp với hardware target, vì vậy hãy chọn name cho thiết bị sẽ chạy inference thay vì máy thực hiện export.
| Họ hardware | Thế hệ DFC |
|---|---|
| Hailo-8 / Hailo-8L | DFC v3.x |
| Hailo-10H | DFC v5.x |
| Hailo-15H / Hailo-15L | DFC v5.x |
Compiler chạy trên Linux x86_64, trong khi HEF tạo ra chạy trên thiết bị Hailo thông qua HailoRT. Sự phân tách này cho phép bạn biên dịch trên workstation hoặc trong Ultralytics Platform và triển khai artifact runtime nhỏ gọn lên edge host ARM hoặc x86.
Lưu ý về khả năng tương thích#
Compilation Hailo phụ thuộc vào hardware và sử dụng input shape cố định. Hãy lưu ý các ràng buộc sau:
nameđã chọn phải khớp với bộ tăng tốc triển khai.- Hình ảnh calibration phải đại diện cho điều kiện ánh sáng, góc nhìn, đối tượng và background dự kiến trong production.
- Mỗi HEF được biên dịch cho một
imgszcố định. Để phục vụ nhiều độ phân giải, hãy resize frame trên host về kích thước đã biên dịch hoặc biên dịch một HEF riêng cho từng độ phân giải. - Hỗ trợ số lượng class tùy chỉnh vì Ultralytics tạo cấu hình post-processing từ metadata của model.
- Các model detection có các head Ultralytics chuẩn
Detect, các model segmentation, pose và OBB YOLOv8/YOLO11, các model classification YOLOv8/YOLO11/YOLO26, cùng các model semantic segmentation và depth estimation YOLO26 đều được hỗ trợ; instance segmentation, pose và oriented bounding box YOLO26, cùng các export YOLO-World, YOLOE, YOLOv10 và RT-DETR hiện chưa được hỗ trợ. - Các artifact Hailo-8/8L và Hailo-10H/15 được biên dịch bởi các thế hệ DFC khác nhau và không thể dùng thay thế cho nhau.
Calibration và Quantization INT8#
Export Hailo HEF sử dụng quantization INT8 để ánh xạ mạng YOLO hiệu quả lên accelerator. Dataset calibration ước tính các activation range; không retrain model và không yêu cầu label trong quá trình biên dịch.
Phần cứng Hailo và Dataflow Compiler hỗ trợ các độ chính xác INT4, INT8 và INT16. Đường dẫn format="hailo" của Ultralytics biên dịch ở INT8, áp dụng các activation 16-bit (a16) khi một task cần phạm vi rộng hơn.
Khi bỏ qua data, Ultralytics sử dụng dataset calibration nhẹ theo từng task, chẳng hạn COCO128 cho detection, cityscapes8 cho semantic segmentation hoặc depth8 cho depth estimation. Dense depth head đặc biệt nhạy với calibration domain: calibration một model depth bằng các ảnh detection không liên quan sẽ làm phẳng map dự đoán, còn các tập dữ liệu lớn hơn trong đúng domain sẽ cải thiện độ trung thực. Với một model computer vision tùy chỉnh, hãy trỏ data đến YAML của dataset để compiler quan sát các ảnh đại diện cho domain triển khai thực tế:
model.export(format="hailo", name="hailo8", data="my_dataset.yaml")fraction chọn tỷ lệ hoặc số lượng ảnh dùng cho calibration. Các list [train, val, test] giới hạn từng split, các list gồm hai phần tử giữ nguyên đầy đủ test, còn 0 bỏ qua test. Nhiều ảnh hơn chỉ hữu ích khi đại diện cho domain triển khai. Ảnh ngoài domain có thể làm giảm độ chính xác sau quantization và tăng thời gian optimization. Nếu HEF INT8 giảm độ chính xác so với model PyTorch gốc, trước tiên hãy cải thiện dữ liệu calibration thay vì thay đổi cài đặt model hoặc runtime.
Kỳ vọng độ chính xác theo họ model#
Được đo trên Hailo-8L với calibration trong domain (COCO128, 128 ảnh), các export HEF INT8 giữ lại tỷ lệ mAP50 PyTorch sau đây theo cùng protocol đánh giá:
| Model | Tỷ lệ giữ lại mAP50 | Ghi chú |
|---|---|---|
| YOLOv8n | ~100% | DFL head với NMS trên chip |
| YOLO11n | ~96% | Các attention block trong backbone nhạy hơn với INT8 |
| YOLO26n | ~93% | Head end-to-end cùng attention; xem ghi chú về confidence |
Tỷ lệ giữ lại so sánh cả hai model tại cùng một ngưỡng confidence. HEF YOLOv8 và YOLO11 tích hợp conf tại thời điểm export (mặc định 0.25) vào NMS trên chip, vì vậy việc validation với baseline PyTorch ở ngưỡng thấp mặc định sẽ tính đến phần lớn hơn của đường cong precision-recall và làm phóng đại khoảng cách quantization.
Ngoài detection, các luồng exporter cho segmentation, pose, OBB và classification đã được validation trên cùng Hailo-8L (DFC 3.33, HailoRT 4.23). Mỗi HEF INT8 được so sánh với checkpoint PyTorch tương ứng trên cùng validation split, sử dụng calibration trong domain:
| Task | Metric (validation split) | YOLOv8n | YOLO11n |
|---|---|---|---|
| Instance segmentation | Tỷ lệ giữ lại mask mAP50 (COCO128-seg) | 98.0% | 93.6% |
| Pose | Tỷ lệ giữ lại box mAP50 (COCO8-pose) | 98.1% | 90.8% |
| Oriented bounding box | Tỷ lệ giữ lại mAP50 (DOTA128) | ~100% | 96.9% |
| Classification | Tỷ lệ giữ lại top-1 (ImageNet val) | 92.6% | 95.4% |
Segmentation, pose và OBB được calibration bằng tập mặc định trong domain của từng task (COCO128-seg, COCO8-pose, DOTA128); classification được calibration bằng ImageNet100. Từ các mặc định này có hai điểm cần lưu ý: COCO8-pose chỉ có 8 ảnh, vì vậy hãy xem pose là kết quả tham khảo và truyền data= lớn hơn khi triển khai production; DOTA8 đạt bão hòa mAP50 gần 100% cho cả hai model, đó là lý do OBB được đọc trên DOTA128. Classification cũng là task duy nhất trong đó YOLO11 giữ lại nhiều hơn YOLOv8; với các task còn lại, attention backbone của YOLO11 nhạy hơn với INT8.
Các phép đo trên thiết bị dẫn đến ba quy tắc thực tiễn:
- Luôn calibration trong domain. Fine-tuning bằng ảnh ngoài domain tương đương với việc tắt hoàn toàn fine-tuning: YOLO26n được calibration với 1.238 ảnh ngoài domain giữ nguyên độ chính xác (85,7%) như model được biên dịch mà không fine-tuning. Một tập nhỏ trong domain tốt hơn một tập lớn ngoài domain.
- Giảm
confkhoảng 0.05 cho các triển khai YOLO26. Quantization làm điểm số YOLO26 giảm trung bình khoảng 0.05, vì vậy threshold được tinh chỉnh trong PyTorch sẽ loại bỏ các detection hợp lệ trên HEF. Sử dụngconf=0.20trên thiết bị sẽ khớp số lượng detection của PyTorch tạiconf=0.25, còn giảm thêm một chút (khoảngconf=0.15) sẽ khôi phục gần như toàn bộ khoảng cách mAP50 còn lại, với cái giá là có thêm detection confidence thấp. Quantization cũng xếp hạng lại khoảng 20% detection — một ảnh hưởng cố định đến thứ tự mà không threshold nào có thể đảo ngược — nhưng việc xáo trộn này không ngăn cản khôi phục mAP50 ở threshold thấp hơn. - Ảnh hưởng của attention mang tính cấu trúc trên Hailo-8/8L (DFC 3.33). Các attention block được biên dịch thành các operation
matmulgiữ input activation INT8 trong mọi mode mà compiler cung cấp; mode output 16-bit không thể allocation cho graph này, và tăng precision của các layer xung quanh cũng không hữu ích vì matmul vẫn requantize input về INT8 (bảo vệ depthwise và output convolution ở 16-bit không thay đổi mAP trong các thử nghiệm của chúng tôi). Khi độ chính xác là ưu tiên và model có thể thay thế cho nhau, YOLO11 hiện quantize tốt hơn YOLO26 trong trường hợp này; các thế hệ Hailo mới hơn (DFC 5.x) cung cấp nhiều tùy chọn mixed-precision hơn và có thể cho kết quả khác.
Artifact đã export#
Export tạo một thư mục chứa HEF có thể triển khai và metadata Ultralytics:
yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json*.heflà model đã biên dịch được HailoRT load.metadata.yamlgiữ lại tên model, task, kích thước input, stride và thông tin target Hailo.nms_config.jsonghi lại cấu hình HailoRT NMS được tạo cho các model detection YOLOv8 và YOLO11. Detection YOLO26 và mọi task không phải detection (segmentation, semantic, depth, classification, pose, OBB) không sử dụng file này.
Graph ONNX trung gian được xóa sau khi biên dịch.
Chạy Inference trên Phần cứng Hailo#
Cài đặt HailoRT trên thiết bị đích. Người dùng Raspberry Pi AI HAT+ và AI HAT+ 2 có thể làm theo hướng dẫn phần mềm Raspberry Pi AI. Trên Raspberry Pi OS, hai bộ package không thể được cài đặt đồng thời, vì vậy chỉ chạy block phù hợp với phần cứng của bạn, sau đó reboot.
Đối với AI HAT+ (Hailo-8 / Hailo-8L):
sudo apt install dkms
sudo apt install hailo-all
sudo rebootĐối với AI HAT+ 2 (Hailo-10H, Raspberry Pi OS Trixie hoặc mới hơn):
sudo apt install dkms
sudo apt install hailo-h10-all
sudo rebootSau khi reboot, xác nhận accelerator đã được phát hiện:
hailortcli fw-control identifyCác package hailo-all và hailo-h10-all chỉ cài đặt HailoRT trên Raspberry Pi OS. Trên mọi host khác, hãy tải xuống và cài đặt package HailoRT từ Hailo Developer Zone — cùng nguồn với DFC.
Sao chép toàn bộ thư mục export sang thiết bị để metadata.yaml vẫn nằm cạnh HEF. Ultralytics sử dụng HailoRT để chạy predict và val trực tiếp trên thư mục đã export:
from ultralytics import YOLO
model = YOLO("yolo11n_hailo_model")
results = model.predict("path/to/image.jpg")Với các model detection, backend tự động chuyển đổi output NMS HailoRT của YOLOv8 và YOLO11, đồng thời decode output one-to-one của YOLO26. Backend decode tensor segmentation, pose và OBB thô, trả về xác suất classification trên chip, và tạo semantic class map thông qua phép reduction trên host đối với Hailo-8/8L và mọi head một lớp, hoặc thông qua ArgMax trên chip đối với head đa lớp Hailo-10H/15. TAPPAS, GStreamer và helper picamera2.devices.Hailo của Raspberry Pi vẫn có sẵn cho các pipeline dành riêng cho ứng dụng.
Đối với triển khai GStreamer, truyền HEF vào hailonet:
gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! videoconvert ! \
hailonet hef-path=yolo11n_hailo_model/yolo11n.hef ! \
hailofilter function-name=yolov8 ! hailooverlay ! autovideosinkCác tùy chọn triển khai Hailo#
HEF là artifact model có thể triển khai giống nhau trên nhiều interface runtime Hailo. Hãy chọn interface phù hợp với ứng dụng:
| Tùy chọn runtime | Phù hợp nhất cho |
|---|---|
| API Python hoặc C/C++ của HailoRT | Ứng dụng tùy chỉnh và quyền kiểm soát inference trực tiếp |
picamera2.devices.Hailo của Raspberry Pi | Các project Camera Module trên Raspberry Pi |
| Ứng dụng GStreamer và Hailo | Luồng video thời gian thực và pipeline nhiều giai đoạn |
hailortcli | Kiểm tra thiết bị, kiểm tra HEF và benchmarking |
Giữ metadata.yaml cùng HEF khi ứng dụng cần tên class Ultralytics, kích thước input, stride hoặc thông tin model khác. Bản thân HEF không thay thế logic cấp ứng dụng cho việc capture camera, visualization, tracking, cảnh báo hoặc lưu trữ.
Xác minh Thiết bị Hailo và HEF#
Trước khi tích hợp pipeline camera hoặc video, hãy xác minh runtime và accelerator một cách độc lập:
hailortcli fw-control identify
hailortcli parse-hef yolo11n_hailo_model/yolo11n.hefCác phép đo hiệu năng chỉ trên thiết bị giúp tách inference Hailo khỏi giải mã video, resize ảnh, vẽ và I/O của ứng dụng. Khi ước tính latency end-to-end hoặc số khung hình mỗi giây, hãy đo riêng toàn bộ ứng dụng.
Hailo so với các định dạng export YOLO khác#
Chọn định dạng export dựa trên phần cứng sẽ thực thi model. HEF phụ thuộc vào phần cứng và nên được chọn khi thiết bị cuối đã tích hợp accelerator Hailo, không nên xem đây là định dạng edge đa dụng hoặc mặc nhiên nhanh nhất.
| Target triển khai hoặc ưu tiên | Định dạng Ultralytics khuyến nghị | So sánh với Hailo |
|---|---|---|
| NPU Hailo hiện có hoặc Raspberry Pi HAT | Hailo HEF (format="hailo") | Sử dụng accelerator Hailo và stack HailoRT đã cài đặt |
| NPU M.2 hoặc SBC mới bị giới hạn công suất | DeepX | Bắt đầu từ đây để đạt hiệu năng YOLO cao hơn và hiệu năng trên mỗi watt tốt hơn |
| NPU edge throughput cao, đa luồng | Axelera | Đánh giá lựa chọn này để đạt mật độ stream và throughput cao hơn trên phần cứng accelerator mới hơn |
| GPU NVIDIA | TensorRT | Sử dụng kernel GPU NVIDIA với các tùy chọn FP16 và INT8 thay vì một NPU riêng biệt |
| CPU, GPU hoặc NPU Intel | OpenVINO | Nhắm đến các accelerator đã tích hợp trong hệ thống Intel |
| Phần cứng Apple | CoreML | Sử dụng Apple Neural Engine, GPU và CPU thông qua runtime Apple native |
| NPU Qualcomm Snapdragon | QNN | Biên dịch cho NPU on-device của Qualcomm thay vì yêu cầu accelerator bên ngoài |
| NPU Rockchip | RKNN | Được sử dụng rộng rãi trên các SBC giá phải chăng và hệ thống embedded |
| SoC Ambarella CVflow | Ambarella | Biên dịch cho các SoC camera và embedded vision của Ambarella |
| Camera Raspberry Pi AI | Sony IMX500 | Chạy network trong camera sensor thay vì thông qua accelerator Hailo gắn với host |
| CPU/GPU mobile hoặc embedded | NCNN | Cung cấp runtime portable nhẹ khi không có NPU chuyên dụng được hỗ trợ |
| Triển khai portable đa runtime | ONNX | Duy trì khả năng portable giữa các runtime; HailoRT không thể thực thi ONNX nếu chưa biên dịch ONNX sang HEF |
Không nên cho rằng Hailo nhanh hơn hoặc tiết kiệm điện hơn chỉ vì đây là NPU. Với các triển khai M.2 mới, DeepX là ứng viên mạnh hơn để đạt hiệu năng YOLO cao hơn và hiệu năng trên mỗi watt tốt hơn, trong khi Axelera hướng đến throughput đa luồng cao hơn đáng kể. Rockchip là lựa chọn chi phí thấp phổ biến trên các SBC và hệ thống embedded. Các chỉ số TOPS và công suất của vendor không phải là benchmark ứng dụng có thể so sánh trực tiếp, vì vậy hãy validation cùng checkpoint YOLO, kích thước input, độ chính xác, host và pipeline video hoàn chỉnh trên các thiết bị ứng viên trước khi mua phần cứng.
Tối ưu hiệu năng Computer Vision trên Hailo#
Lựa chọn model và pipeline thường quan trọng hơn các compiler flag:
- Bắt đầu với một model YOLO nhỏ và chỉ tăng kích thước model khi độ chính xác yêu cầu.
- Chọn
imgszcố định thấp nhất nhưng vẫn giữ lại các object quan trọng đối với ứng dụng. - Khi có thể, hãy sử dụng ảnh calibration từ camera và môi trường thực tế.
- Duy trì network Hailo hoạt động qua các frame thay vì mở lại HEF cho mỗi lần inference.
- Tách riêng thời gian inference trên thiết bị khỏi preprocessing, giải mã video, post-processing, visualization và network I/O.
- Sử dụng pipeline streaming như GStreamer cho các workload video liên tục.
- Validation HEF đã export trên đúng accelerator và phiên bản HailoRT được sử dụng trong production.
Đối số Export#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
name | str | hailo8l | Kiến trúc bộ tăng tốc Hailo mục tiêu |
imgsz | int, list | 640 | Kích thước đầu vào cố định của model |
data | str | None | YAML của calibration dataset; đối với classification, thay vào đó là thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu bỏ qua, Ultralytics sẽ chọn calibration dataset phù hợp với task. |
fraction | float, int hoặc list | 1.0 | Tập con hiệu chuẩn dưới dạng tỷ lệ, số lượng ảnh hoặc các tỷ lệ/số lượng [train, val, test]. Với danh sách gồm hai mục, test để trống, còn 0 sẽ bỏ qua mục này. |
quantize | int | 8 | Xuất Hailo sử dụng lượng tử hóa INT8 |
simplify | bool | True | Đơn giản hóa đồ thị ONNX trung gian |
conf | float | 0.25 | Ngưỡng confidence NMS của HailoRT cho YOLOv8/YOLO11 |
iou | float | 0.7 | Ngưỡng IoU NMS của HailoRT cho YOLOv8/YOLO11 |
Đối với xuất detection, YOLOv8 và YOLO11 nhận NMS của HailoRT, trong khi YOLO26 giữ nguyên các output one-to-one không có NMS. Segmentation, pose và OBB sử dụng các tensor raw của head, classification trả về các xác suất trên chip, còn semantic segmentation trả về raw logits trên Hailo-8/8L và tất cả các head một lớp, hoặc các class map đã tích hợp cho các head Hailo-10H/15 nhiều lớp. Depth estimation trả về depth logit raw, được Ultralytics giải mã thành depth map theo đơn vị đo khi inference. Không truyền end2end; các ghi đè tường minh sẽ bị từ chối. Dynamic shape, NMS tích hợp của Ultralytics, FP16 và FP32 không được hỗ trợ.
Xử lý sự cố khi xuất Hailo#
Lỗi import Hailo Dataflow Compiler#
Nếu quá trình xuất báo thiếu hailo_sdk_client, hãy cài đặt wheel DFC dành cho thế hệ phần cứng mục tiêu trong cùng môi trường Python với Ultralytics. Hailo-8/8L và Hailo-10H/15 yêu cầu các thế hệ compiler khác nhau.
Hệ điều hành hoặc kiến trúc không được hỗ trợ#
Biên dịch HEF được hỗ trợ trên Linux x86_64. Hãy xuất qua Ultralytics Platform hoặc sử dụng workstation tương thích nếu máy tính cục bộ chạy macOS, Windows, Raspberry Pi hoặc một hệ thống ARM khác.
Quá trình xuất mất nhiều thời gian#
Tối ưu hóa DFC là giai đoạn tốn nhiều tài nguyên nhất. Thời gian biên dịch tăng theo kích thước model, độ phân giải đầu vào và dữ liệu hiệu chuẩn. GPU được hỗ trợ có thể tăng tốc quá trình tối ưu hóa, trong khi biên dịch chỉ bằng CPU có thể chậm hơn đáng kể.
Độ chính xác của model đã lượng tử hóa bị giảm#
Sử dụng các ảnh hiệu chuẩn tương tự với input trong môi trường production và bao quát các đối tượng quan trọng, scale, điều kiện chiếu sáng và background. So sánh model PyTorch gốc với HEF đã xuất trên cùng một validation set trước khi deployment. Ngay cả khi hiệu chuẩn tốt, vẫn tồn tại một khoảng chênh lệch vừa phải tùy theo model family; xem Accuracy Expectations by Model Family để biết các baseline đã đo.
HEF không tải được trên thiết bị#
Xác nhận name khớp với kiến trúc Hailo thực tế, đồng thời driver thiết bị, firmware và các package HailoRT tương thích với nhau. Kiểm tra artifact bằng hailortcli parse-hef và xác minh bộ tăng tốc bằng hailortcli fw-control identify.
Phân tích output có vẻ không chính xác#
Đặt metadata.yaml cùng với HEF để Ultralytics có thể chọn đúng pipeline post-processing cho YOLOv8, YOLO11 hoặc YOLO26. Các ứng dụng HailoRT tùy chỉnh cũng phải ghép post-processing tương ứng với model family đã xuất.
Tóm tắt#
Tính năng xuất Hailo của Ultralytics cung cấp một quy trình trực tiếp từ model YOLO đã train đến HEF có thể deployment:
- Load model detection hoặc classification YOLOv8, YOLO11 hoặc YOLO26; model segmentation, pose hoặc OBB YOLOv8/YOLO11; hoặc model semantic segmentation hay depth estimation YOLO26.
- Xuất bằng
format="hailo"và chọn kiến trúc mục tiêu. - Hiệu chuẩn và biên dịch cục bộ bằng DFC tương ứng, hoặc sử dụng tính năng managed export trong Ultralytics Platform.
- Sao chép HEF và
metadata.yamlsang edge device chạy Hailo. - Chạy inference bằng HailoRT, Raspberry Pi Picamera2 hoặc pipeline video GStreamer.
Đối với các target deployment computer vision khác, hãy xem Export mode, Benchmark mode và integrations guide. Các hướng dẫn phần cứng liên quan gồm DeepX, Axelera, ONNX, OpenVINO, TensorRT, NCNN, RKNN, Sony IMX500 và Qualcomm QNN.
FAQ#
Không. Chạy DFC trên hệ thống Linux x86_64 được hỗ trợ, sau đó deployment HEF thu được lên Raspberry Pi.
GPU được hỗ trợ giúp giảm đáng kể thời gian tối ưu hóa DFC. Có thể biên dịch bằng CPU, nhưng thời gian có thể lâu hơn đáng kể.
Xuất trực tiếp hỗ trợ các model detection có detection head YOLOv8, YOLO11 hoặc YOLO26 tiêu chuẩn; các model segmentation, pose và OBB YOLOv8/YOLO11; cùng các model classification YOLOv8/YOLO11/YOLO26. Điều này bao gồm các model được train tùy chỉnh và xây dựng từ những kiến trúc tiêu chuẩn đó. Các model semantic segmentation và depth estimation YOLO26 cũng được hỗ trợ. YOLO26 instance segmentation, pose và OBB, cùng với YOLOv10, YOLO-World, YOLOE và RT-DETR, sẽ bị từ chối thay vì tạo ra một HEF chưa được validation.
Có. Sử dụng cùng lệnh
format="hailo"với weights tùy chỉnh.ptvà truyền YAML của training dataset quadatađể hiệu chuẩn INT8 mang tính đại diện. Tên class và số lượng class được đọc từ metadata của model.Mỗi HEF được biên dịch cho một input shape cố định, vì vậy một HEF đơn lẻ không thể thay đổi kích thước động. Trên thực tế, bạn có thể resize input trên host về kích thước đã biên dịch hoặc biên dịch nhiều HEF cho các độ phân giải cần thiết. Chọn
imgszkhi xuất để khớp với deployment pipeline.YOLO26 sử dụng detection head one-to-one không có NMS. Ultralytics biên dịch trực tiếp các tensor output đó thay vì gắn NMS kiểu YOLOv8 của HailoRT được dùng cho YOLOv8 và YOLO11.
Hailo Dataflow Compiler chuyển đổi và lượng tử hóa model thành HEF dành riêng cho phần cứng trên build machine Linux x86_64. HailoRT load và chạy HEF đó trên thiết bị mục tiêu.
Deployment HEF đã biên dịch lên Hailo runtime. ONNX là intermediate representation được sử dụng trong quá trình xuất và bị xóa sau khi biên dịch thành công.
Tải compiler wheel dành cho thế hệ phần cứng của bạn từ Hailo Developer Zone. Compiler chỉ cần thiết để tạo HEF; HailoRT chạy HEF đó trên bộ tăng tốc mục tiêu.