Xuất model Ultralytics YOLO sang Hailo#
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ư AI HAT+ của Raspberry Pi và AI HAT+ 2. Ultralytics xuất trực tiếp các model YOLO cho tác vụ phát hiện, phân đoạn, phân đoạn ngữ nghĩa, ước tính độ sâu, 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 thị giác máy tính ở biên: camera, robot, hệ thống công nghiệp, gateway và các thiết bị khác cần phát hiện đối tượng tại chỗ mà không gửi từng khung hình lên cloud. HEF đã biên dịch chứa mạng đã lượng tử hóa, phân bổ phần cứng, lập lịch và hậu xử lý HailoRT tùy chọn cần thiết cho accelerator được chọn.
Đối với các triển khai phần cứng mới, hãy đánh giá thêm DeepX, Axelera và Rockchip. DeepX là lựa chọn khởi đầu tốt hơn nếu 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ó thông lượng 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.
Vì sao nên triển khai Ultralytics YOLO trên Hailo?#
Kết hợp Ultralytics YOLO với bộ xử lý thần kinh (NPU) Hailo mang đến lộ trình thực tế từ huấn luyện model đến suy luận AI biên. Các trường hợp sử dụng phổ biến gồm:
- Camera thông minh và phân tích video: Chạy phát hiện đố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à đo mật độ hiện diện.
- Robot 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.
- Thị giác máy tính công nghiệp: Triển khai các model YOLO tùy chỉnh để kiểm tra, đếm, giám sát an toàn và kiểm soát chất lượng.
- Dự án AI trên Raspberry Pi: Bổ sung suy luận thị giác tăng tốc cho hệ thống Raspberry Pi bằng AI HAT+ hoặc AI HAT+ 2.
- Gateway biên và PC AI: Xử lý cục bộ nhiều luồng video hoặc cảm biến đồng thời giảm yêu cầu về băng thông và năng lực tính toán trên cloud.
Suy luận 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. Thông lượng, độ trễ 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 máy chủ và pipeline ứng dụng.
Cách hoạt động của quá trình export Hailo#
Ultralytics quản lý toàn bộ quy trình export đằng sau format="hailo":
YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compileExporter tự động thực hiện các giai đoạn sau:
- Export đồ thị ONNX tĩnh với các thiết lập tương thích với compiler.
- Chọn các đầu ra head cho kiến trúc model.
- Tạo các chỉ thị chuẩn hóa, activation và hậu xử lý.
- Tạo luồng hiệu chuẩn đại diện và lượng tử hóa model thành INT8.
- Biên dịch đồ thị đã tối ưu hóa cho accelerator Hailo được chọn.
- Lưu HEF cùng metadata của Ultralytics và xóa file ONNX trung gian.
Các model phát hiện YOLOv8 và YOLO11 sử dụng YOLO NMS của HailoRT trong pipeline đã biên dịch. YOLO26 biên dịch các tensor thô của detection head: Ultralytics áp dụng NMS cho đầu ra one-to-many mặc định hoặc giải mã đầu ra one-to-one không NMS bằng nms=False. Các model segmentation, pose và OBB của YOLOv8/YOLO11 biên dịch tensor thô của head, sau đó Ultralytics giải mã khi suy luận; các model classification YOLOv8/YOLO11/YOLO26 chạy softmax trên chip để HEF trả về trực tiếp xác suất lớp. Với semantic segmentation YOLO26, exporter tuân theo accelerator: Hailo-8/8L (DFC v3.x) trả về logits của classifier để tăng kích thước và rút gọn trên host, trong khi Hailo-10H/15 (DFC v5.x) biên dịch các head ArgMax đa lớp trên chip và trả về bản đồ lớp gọn. Các head đơn lớp sử dụng đường xử lý logits trên host ở mọi target vì cần ngưỡng thay vì ArgMax. Các model depth YOLO26 biên dịch dense logit conv trong a16 và tái tạo bản đồ độ sâu theo đơn vị đo trên host (phép clamp/exp và hiệu chuẩn log-affine đã học theo sau head), nhờ vậy bộ lượng tử hóa giữ phạm vi rộng nhất cho logit thô. Người dùng không cần tìm các node cuối ONNX, viết script model Hailo (.alls) hoặc tự tạo JSON NMS.
Cài đặt#
Cài đặt Ultralytics và tải xuống wheel DFC dành cho phần cứng mục tiêu từ Hailo Developer Zone (cần đăng ký miễn phí):
pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whlQuá trình biên dịch Hailo yêu cầu Linux x86_64. Hãy biên dịch model trên một workstation được hỗ trợ, sau đó sao chép thư mục đầu ra sang thiết bị mục tiêu. Không cần DFC để suy luận.
Hailo-8 và Hailo-8L sử dụng DFC v3.x. Hailo-10H và Hailo-15 sử dụng DFC v5.x. Hãy cài đặt thế hệ compiler phù hợp với accelerator mục tiêu.
Ultralytics Platform cung cấp dịch vụ export Hailo đượ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 accelerator mục tiêu 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=hailo8Export Hailo chỉ hỗ trợ INT8. Ultralytics tự động tải xuống bộ dữ liệu hiệu chuẩn theo tác vụ khi không cung cấp data. Với model tùy chỉnh, hãy sử dụng hình ảnh đại diện từ tập huấn luyện hoặc xác thực:
Ultralytics buộc mức tối ưu hóa DFC bằng 2 và cấu hình fine-tuning để sử dụng đúng kích thước bộ dữ liệu hiệu chuẩn. Hailo khuyến nghị ít nhất 1.024 hình ảnh đa dạng; các bộ dữ liệu nhẹ tích hợp sẵn có thể biên dịch ở mức 2 nhưng có thể không đại diện cho miền dữ liệu thực tế. Đối với export HEF dùng trong production, hãy truyền một bộ dữ liệu đại diện bằng data="path/to/dataset.yaml".
model.export(format="hailo", name="hailo8", data="path/to/dataset.yaml")Quá trình biên dịch sử dụng hình dạng đầu vào 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à phần cứng được hỗ trợ#
Hệ sinh thái Hailo hỗ trợ nhiều workload thị giác máy tính, nhưng exporter format="hailo" của Ultralytics hiện xác thực các head chuẩn cho YOLO detection, segmentation, semantic segmentation, ước tính độ sâu, classification, pose và OBB. Bảng tác vụ mô tả các đường xử lý exporter hiện có; thông tin xác thực phần cứng được liệt kê riêng bên dưới.
| Tác vụ Ultralytics | Export trực tiếp sang Hailo | Các dòng model được hỗ trợ | Ghi chú |
|---|---|---|---|
| Phát hiện đối tượng | ✅ | YOLOv8, YOLO11, YOLO26 | Các head Detect chuẩn của Ultralytics, bao gồm model tùy chỉnh |
| Instance segmentation | ✅ | YOLOv8, YOLO11 | Tensor thô của head được Ultralytics giải mã khi suy luận; hiện chưa hỗ trợ YOLO26-seg |
| Semantic segmentation | ✅ | YOLO26 | Hailo-8/8L và head đơn lớp trả về logits; Hailo-10H/15 tích hợp sẵn bản đồ đa lớp |
| Ước tính độ sâu | ✅ | YOLO26 | Dense logit được biên dịch trong a16; Ultralytics tái tạo bản đồ độ sâu theo đơn vị đo khi suy luận |
| Phân loại hình ảnh | ✅ | YOLOv8, YOLO11, YOLO26 | Softmax chạy trên chip; HEF trả về trực tiếp xác suất lớp |
| Ước tính pose | ✅ | YOLOv8, YOLO11 | Tensor thô của head được Ultralytics giải mã khi suy luận; hiện chưa hỗ trợ YOLO26-pose |
| Phát hiện đối tượng định hướng | ✅ | YOLOv8, YOLO11 | Tensor thô của head được Ultralytics giải mã khi suy luận; hiện chưa hỗ trợ YOLO26-OBB |
Các dòng model detection chuyên biệt như YOLOv10, YOLO-World, YOLOE và RT-DETR hiện ❌ chưa được hỗ trợ qua đường xử lý format="hailo" của Ultralytics. Ultralytics từ chối các tác vụ và dòng model này trước khi biên dịch thay vì tạo ra HEF chưa được xác thực.
| Dòng model | Hailo-8 / Hailo-8L | Hailo-10H / Hailo-15 | Đầu ra |
|---|---|---|---|
| YOLOv8 / YOLO11 detection | ✅ | ✅ | HEF có YOLO NMS của HailoRT |
| YOLO26 detection | ✅ | ✅ | Tensor detection thô; NMS trên host theo mặc định, không NMS với nms=False |
| YOLOv8-seg / YOLO11-seg | ✅ | ✅ | Tensor segmentation thô, được Ultralytics giải mã khi suy luận |
| YOLOv8-pose / YOLO11-pose | Đã xác thực trên Hailo-8L | Chưa được xác thực | Tensor pose thô, được Ultralytics giải mã khi suy luận |
| YOLOv8-obb / YOLO11-obb | Đã xác thực trên Hailo-8L | Chưa được xác thực | Tensor OBB thô, được Ultralytics giải mã khi suy luận |
| YOLOv8-cls / YOLO11-cls / YOLO26-cls | Đã xác thực trên Hailo-8L | Chưa được xác thực | Softmax trên chip; HEF trả về xác suất lớp |
| YOLO26-sem | Đã xác thực trên Hailo-8L | Chưa được xác thực | Logits hoặc bản đồ đa lớp tích hợp sẵn trên Hailo-10H/15 |
| YOLO26-depth | Đã xác thực trên Hailo-8L | Chưa được xác thực | Dense logit; bản đồ độ sâu theo đơn vị đo được Ultralytics giải mã |
Pose, OBB, classification, semantic segmentation YOLO26 và ước tính độ sâu YOLO26 (đường xử lý 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 đường xử lý tác vụ mới đó cần được xác thực bằng compiler và thiết bị tương ứng trước khi đưa vào production.
Chọn một trong các giá trị name sau:
name | Accelerator mục tiêu |
|---|---|
hailo8 | Hailo-8 |
hailo8l | Hailo-8L |
hailo10h | Hailo-10H |
hailo15h | Hailo-15H |
hailo15l | Hailo-15L |
Nếu bỏ qua name, hailo8l sẽ được dùng làm mặc định; hãy đặt name thành accelerator sẽ triển khai. Cài đặt thế hệ DFC phù hợp với target đã chọn.
Các thế hệ phần cứng và SDK Hailo#
Các dòng accelerator Hailo sử dụng những thế hệ compiler khác nhau. HEF được tạo ra phải phù hợp với phần cứng mục tiêu, vì vậy hãy chọn name cho thiết bị sẽ chạy suy luận, không phải máy thực hiện quá trình export.
| Dòng phần cứng | 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. Cách phân tách này cho phép bạn biên dịch trên workstation hoặc Ultralytics Platform, rồi triển khai artifact runtime nhỏ gọn lên host biên ARM hoặc x86.
Lưu ý về khả năng tương thích#
Quá trình biên dịch Hailo phụ thuộc vào phần cứng và sử dụng hình dạng đầu vào cố định. Hãy lưu ý các ràng buộc sau:
nameđược chọn phải khớp với accelerator triển khai.- Hình ảnh hiệu chuẩn cần đại diện cho điều kiện ánh sáng, góc nhìn, đối tượng và phông nền dự kiến trong môi trường 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 khung hình trên host về kích thước đã biên dịch hoặc biên dịch HEF riêng cho từng độ phân giải. - Hỗ trợ số lượng lớp tùy chỉnh vì Ultralytics tạo cấu hình hậu xử lý từ metadata của model.
- Các model detection có head
Detectchuẩn của Ultralytics, model segmentation, pose và OBB YOLOv8/YOLO11, model classification YOLOv8/YOLO11/YOLO26, cùng model semantic segmentation và ước tính độ sâu YOLO26 đều được hỗ trợ; hiện chưa hỗ trợ export YOLO26 instance segmentation, pose và oriented bounding box, cũng như YOLO-World, YOLOE, YOLOv10 và RT-DETR. - Artifact Hailo-8/8L và Hailo-10H/15 được biên dịch bằng các thế hệ DFC khác nhau và không thể thay thế cho nhau.
Hiệu chuẩn và lượng tử hóa INT8#
Export Hailo HEF sử dụng lượng tử hóa INT8 để ánh xạ mạng YOLO lên accelerator một cách hiệu quả. Bộ dữ liệu hiệu chuẩn ước tính phạm vi activation; quá trình này không huấn luyện lại model và không yêu cầu nhãn trong khi 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 activation 16-bit (a16) khi tác vụ cần dải giá trị rộng hơn.
Khi không chỉ định data, Ultralytics sử dụng tập dữ liệu calibration nhẹ dành riêng cho từng tác vụ, 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 miền calibration: calibration model depth bằng các ảnh detection không liên quan sẽ làm bản đồ dự đoán bị dẹt, còn các tập dữ liệu lớn hơn thuộc đúng miền sẽ cải thiện độ trung thực. Với model computer vision tùy chỉnh, hãy trỏ data đến YAML của dataset để compiler nhận được các ảnh đại diện cho miền 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 danh sách [train, val, test] giới hạn từng split; danh sách hai phần tử giữ nguyên test, còn 0 bỏ qua test. Nhiều ảnh hơn chỉ có ích khi chúng đại diện cho miền triển khai. Ảnh ngoài miền có thể làm giảm độ chính xác sau lượng tử hóa và tăng thời gian tối ưu hóa. Nếu HEF INT8 mất độ 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 rồi mới thay đổi model hoặc các thiết lập runtime.
Mức độ chính xác kỳ vọng theo họ model#
Được đo trên Hailo-8L với calibration đúng miền (COCO128, 128 ảnh), các bản xuất HEF INT8 giữ lại tỷ lệ sau đây trong mAP50 của PyTorch theo cùng quy trình đánh giá:
| Model | Tỷ lệ mAP50 được giữ lại | Ghi chú |
|---|---|---|
| YOLOv8n | ~100% | DFL head với NMS trên chip |
| YOLO11n | ~96% | Các khối attention trong backbone nhạy với INT8 hơn |
| YOLO26n | ~93% | Head end-to-end cùng attention; xem lưu ý về confidence |
Tỷ lệ giữ lại so sánh 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 là 0.25) vào NMS trên chip, vì vậy việc đối chiếu 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à phóng đại chênh lệch do lượng tử hóa.
Ngoài detection, các đường dẫn exporter cho segmentation, pose, OBB và classification đã được xác thực 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 split validation, sử dụng calibration đúng miền:
| Tác vụ | Metric (split validation) | YOLOv8n | YOLO11n |
|---|---|---|---|
| Instance segmentation | Tỷ lệ giữ lại mask mAP50 (COCO128-seg) | 98.0% | 93.6% |
| Tư thế | Tỷ lệ giữ lại box mAP50 (COCO8-pose) | 98.1% | 90.8% |
| Bounding box định hướng | 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 dữ liệu đúng miền mặc định của từng tác vụ (COCO128-seg, COCO8-pose, DOTA128); classification được calibration bằng ImageNet100. Các thiết lập mặc định này kéo theo hai điểm cần lưu ý: COCO8-pose chỉ có 8 ảnh, vì vậy chỉ nên xem kết quả pose là tham khảo và cần truyền data= lớn hơn khi triển khai production; DOTA8 làm mAP50 đạt gần 100% ở cả hai model, nên OBB được đánh giá trên DOTA128. Classification cũng là tác vụ duy nhất mà YOLO11 giữ lại nhiều hơn YOLOv8; với các tác vụ khác, backbone attention của YOLO11 nhạy với INT8 hơn.
Các phép đo trên thiết bị cho thấy ba nguyên tắc thực tiễn:
- Luôn calibration đúng miền. Fine-tuning bằng ảnh ngoài miền tương đương với việc tắt hoàn toàn fine-tuning: YOLO26n được calibration bằng 1,238 ảnh ngoài miền giữ độ chính xác tương đương (85.7%) với model được biên dịch mà không fine-tuning. Một tập nhỏ đúng miền tốt hơn một tập lớn ngoài miền.
- Giảm
confkhoảng 0.05 khi triển khai YOLO26. Lượng tử hóa làm điểm số YOLO26 giảm trung bình khoảng 0.05, vì vậy ngưỡng được tinh chỉnh trong PyTorch sẽ bỏ sót các detection hợp lệ trên HEF. Dùngconf=0.20trên thiết bị sẽ khớp số lượng detection của PyTorch tạiconf=0.25; giảm thêm một chút (khoảngconf=0.15) sẽ khôi phục gần như toàn bộ phần chênh lệch mAP50 còn lại, đổi lại có thêm các detection confidence thấp. Lượng tử hóa cũng xếp hạng lại khoảng 20% detection — đây là hiệu ứng thứ tự không thể đảo ngược bằng bất kỳ ngưỡng nào — nhưng sự xáo trộn này không cản trở việc khôi phục mAP50 khi hạ ngưỡng. - Mức suy giảm do attention là đặc tính cấu trúc trên Hailo-8/8L (DFC 3.33). Các khối attention được biên dịch thành các phép toán
matmulluôn giữ đầu vào activation INT8 ở mọi chế độ compiler hỗ trợ; chế độ đầu ra 16-bit không cấp phát được cho graph này, còn tăng precision của các layer xung quanh cũng không giúp ích vì phép nhân ma trận vẫn lượng tử lại đầu vào thành INT8 (trong các thử nghiệm của chúng tôi, bảo vệ các phép tích chập depthwise và output ở 16-bit không làm thay đổi mAP). Khi ưu tiên độ chính xác và có thể thay thế model, hiện tại YOLO11 lượng tử hóa tốt hơn YOLO26 trên nền tảng này; các thế hệ Hailo mới hơn (DFC 5.x) cung cấp thêm tùy chọn mixed-precision và có thể cho kết quả khác.
Các artifact được export#
Quá trình export tạo một thư mục chứa HEF có thể triển khai và metadata của Ultralytics:
yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json*.heflà model đã biên dịch được HailoRT nạp.metadata.yamllưu giữ tên model, tác vụ, kích thước đầu vào, stride và thông tin đích Hailo.nms_config.jsonghi lại cấu hình NMS HailoRT được tạo cho các model detection YOLOv8 và YOLO11. Detection YOLO26 và mọi tác vụ không phải detection (segmentation, semantic, depth, classification, pose, OBB) không sử dụng tệp 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, không thể cài đặt đồng thời hai bộ package, vì vậy chỉ chạy khối lệnh phù hợp với phần cứng của bạn rồi khởi động lại.
Dành cho AI HAT+ (Hailo-8 / Hailo-8L):
sudo apt install dkms
sudo apt install hailo-all
sudo rebootDành cho AI HAT+ 2 (Hailo-10H, Raspberry Pi OS Trixie trở lên):
sudo apt install dkms
sudo apt install hailo-h10-all
sudo rebootSau khi khởi động lại, hãy xác nhận accelerator đã được nhận diệ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 các máy chủ 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 nằm cạnh HEF. Ultralytics sử dụng HailoRT để chạy trực tiếp predict và val từ 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 đầu ra NMS HailoRT của YOLOv8/YOLO11 và giải mã một trong hai YOLO26 head. Các đầu ra one-to-many mặc định sẽ đi qua NMS của predictor. Backend giải mã tensor segmentation, pose và OBB dạng thô, trả về xác suất classification trên chip, đồng thời tạo class map semantic bằng phép reduction trên host đối với Hailo-8/8L và mọi head đơn lớp, hoặc bằng ArgMax trên chip đối với head đa lớp Hailo-10H/15. TAPPAS, GStreamer và helper picamera2.devices.Hailo trên Raspberry Pi vẫn khả dụng cho các pipeline dành riêng cho ứng dụng.
Để triển khai bằng GStreamer, truyền HEF cho 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à cùng một artifact model có thể triển khai qua nhiều giao diện runtime Hailo. Hãy chọn giao diện 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à khả năng điều khiển trực tiếp inference |
picamera2.devices.Hailo trên Raspberry Pi | Các dự án 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, kích thước đầu vào, stride hoặc thông tin model khác của Ultralytics. Bản thân HEF không thay thế logic ở cấp ứng dụng để thu hình từ camera, trực quan hóa, 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 camera hoặc pipeline video, hãy kiểm tra độc lập runtime và accelerator:
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 riêng inference Hailo khỏi giải mã video, thay đổi kích thước ảnh, vẽ và I/O của ứng dụng. Hãy đo riêng toàn bộ ứng dụng khi ước tính độ trễ đầu cuối hoặc số frame mỗi giây.
Benchmark#
Nhóm Ultralytics đã benchmark các model YOLO26, so sánh tốc độ và độ chính xác giữa PyTorch và Hailo.
| Model | Định dạng | Trạng thái | Kích thước (MB) | metrics/mAP50-95(B) | Thời gian suy luận (ms/ảnh) |
|---|---|---|---|---|---|
| YOLO26n | PyTorch | ✅ | 5.3 | 0.477 | 364.6 |
| YOLO26n | Hailo | ✅ | 7.3 | 0.455 | 21.7 |
| Model | Định dạng | Trạng thái | Kích thước (MB) | metrics/mIoU | Thời gian suy luận (ms/ảnh) |
|---|---|---|---|---|---|
| YOLO26n-sem | PyTorch | ✅ | 3.3 | 0.611 | 831.2 |
| YOLO26n-sem | Hailo | ✅ | 6.2 | 0.611 | 34.8 |
| Model | Định dạng | Trạng thái | Kích thước (MB) | metrics/delta1 | metrics/abs_rel | metrics/rmse | Thời gian suy luận (ms/ảnh) |
|---|---|---|---|---|---|---|---|
| YOLO26n-depth | PyTorch | ✅ | 12.4 | 0.8535 | 0.0983 | 0.2047 | 2133.4 |
| YOLO26n-depth | Hailo | ✅ | 9.9 | 0.8241 | 0.1232 | 0.2554 | 29.6 |
| Model | Định dạng | Trạng thái | Kích thước (MB) | độ chính xác (top1) | độ chính xác (top5) | Thời gian suy luận (ms/ảnh) |
|---|---|---|---|---|---|---|
| YOLO26n-cls | PyTorch | ✅ | 5.5 | 0.431 | 0.716 | 33.8 |
| YOLO26n-cls | Hailo | ✅ | 3.5 | 0.441 | 0.716 | 2.0 |
Việc validation cho các benchmark trên được thực hiện bằng COCO128 cho bài toán phát hiện, Cityscapes8 cho phân đoạn ngữ nghĩa, Depth8 cho ước lượng độ sâu và ImageNet100 cho phân loại. Cityscapes8 và Depth8 chỉ có 4 ảnh validation mỗi bộ, vì vậy hãy xem các giá trị độ chính xác phân đoạn ngữ nghĩa và độ sâu là kết quả kiểm tra smoke test, không phải phép đo mức duy trì độ chính xác; hãy validation trên một dataset đầy đủ như Cityscapes hoặc NYU Depth V2 trước khi đưa ra kết luận về độ chính xác. Thời gian inference không bao gồm tiền xử lý/hậu xử lý.
So sánh Hailo với các định dạng export YOLO khác#
Hãy chọn định dạng export dựa trên phần cứng sẽ thực thi model. HEF dành riêng cho phần cứng và nên được chọn khi thiết bị cuối đã có accelerator Hailo, chứ không phải như một định dạng edge đa dụng hoặc mặc nhiên nhanh nhất.
| Đích triển khai hoặc ưu tiên | Định dạng Ultralytics đề xuất | So sánh với Hailo |
|---|---|---|
| NPU Hailo hoặc HAT Raspberry Pi hiện có | 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 về điện năng | DeepX | Bắt đầu tại đâ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 thông lượng cao, đa luồng | Axelera | Đánh giá để tăng mật độ luồng và thông lượng trên phần cứng accelerator mới hơn |
| GPU NVIDIA | TensorRT | Sử dụng kernel GPU NVIDIA với tùy chọn FP16 và INT8 thay vì NPU riêng |
| CPU, GPU hoặc NPU Intel | OpenVINO | Hướng đế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 gốc |
| NPU Qualcomm Snapdragon | QNN | Biên dịch cho NPU trên thiết bị của Qualcomm mà không cần 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 nhúng |
| NPU Huawei Ascend | Ascend | Biên dịch model .om CANN cho Ascend AI Core trên bo mạch Atlas và OrangePi AIPro |
| Google Coral Edge TPU | Edge TPU | Chạy model LiteRT INT8 trên accelerator Coral thay vì module Hailo |
| SoC Ambarella CVflow | Ambarella | Biên dịch cho SoC camera và thị giác nhúng của Ambarella |
| Camera Raspberry Pi AI | Sony IMX500 | Chạy mạng ngay trên cảm biến camera thay vì thông qua accelerator Hailo kết nối với host |
| CPU/GPU di động hoặc nhúng | NCNN | Cung cấp runtime di động, gọn nhẹ khi không có NPU chuyên dụng được hỗ trợ |
| Triển khai đa runtime có tính di động | ONNX | Duy trì khả năng di động giữa các runtime; HailoRT không thể thực thi ONNX nếu chưa biên dịch 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ì đó là NPU. Với các triển khai M.2 mới, DeepX là ứng viên nổi bật 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 thông lượng đ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 nhúng. Các thông số TOPS và công suất của nhà cung cấp không thể so sánh trực tiếp với benchmark ứng dụng, vì vậy hãy xác thực cùng một checkpoint YOLO, kích thước đầu vào, độ chính xác, host và toàn bộ pipeline video 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 flag của compiler:
- Bắt đầu với model YOLO nhỏ và chỉ tăng kích thước model khi cần độ chính xác cao hơn.
- Chọn
imgszcố định thấp nhất mà vẫn giữ được các đối tượng quan trọng với ứng dụng. - Khi có thể, hãy dùng ảnh calibration từ camera và môi trường thực tế.
- Giữ mạng Hailo hoạt động liên tục qua các frame thay vì mở lại HEF cho mỗi lần inference.
- Tách thời gian inference trên thiết bị khỏi tiền xử lý, giải mã video, hậu xử lý, trực quan hóa và I/O mạng.
- Sử dụng pipeline streaming như GStreamer cho các workload video kéo dài.
- Xác thực HEF đã export trên đúng accelerator và phiên bản HailoRT được sử dụng trong môi trường production.
Các tham số xuất model#
| Đối số | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
name | str | hailo8l | Kiến trúc accelerator Hailo mục tiêu |
imgsz | int, list | 640 | Kích thước input cố định của model |
data | str | None | Tệp YAML của bộ dữ liệu hiệu chỉnh; với phân loại, thay vào đó hãy dùng thư mục bộ dữ liệu hoặc tên bộ dữ liệu tích hợp sẵn. Nếu bỏ qua, Ultralytics sẽ chọn bộ dữ liệu hiệu chỉnh phù hợp với tác vụ. |
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 tỷ lệ/số lượng [train, val, test]. Danh sách gồm hai mục giữ test ở dạng đầy đủ, còn 0 sẽ bỏ qua mục này. |
quantize | int | 8 | Quá trình export 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 HailoRT của YOLOv8/YOLO11 |
iou | float | 0.7 | Ngưỡng IoU NMS HailoRT của YOLOv8/YOLO11 |
device | str | None | Thiết bị dùng cho bước export ONNX trung gian, mặc định là CPU (device=cpu). Các bước Dataflow Compiler không sử dụng thiết bị này. |
Các bản export detection của YOLOv8/YOLO11 được áp dụng NMS HailoRT. YOLO26 mặc định xuất đầu ra one-to-many thô để xử lý NMS trên host; nms=False chọn đầu ra one-to-one không dùng NMS. Các tác vụ segmentation, pose và OBB sử dụng tensor head thô; classification trả về xác suất tính trên chip; semantic segmentation trả về logits thô trên Hailo-8/8L và tất cả các head một lớp, hoặc bản đồ lớp được tích hợp sẵn cho các head Hailo-10H/15 nhiều lớp. Ước lượng độ sâu trả về logit độ sâu thô, được Ultralytics giải mã thành bản đồ độ sâu theo đơn vị mét khi inference. Không hỗ trợ shape động, NMS nhúng của Ultralytics, FP16 và FP32.
Khắc phục sự cố khi export Hailo#
Lỗi import Hailo Dataflow Compiler#
Nếu quá trình export 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 export thông 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 export 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 input 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 giảm#
Sử dụng ảnh hiệu chuẩn tương tự input production và bao gồm các đối tượng, tỷ lệ, điều kiện chiếu sáng và phông nền quan trọng. So sánh model PyTorch gốc và HEF đã export trên cùng một tập validation trước khi triển khai. Ngay cả khi hiệu chuẩn tốt, vẫn có thể có khoảng chênh lệch vừa phải tùy theo họ model; xem Kỳ vọng về độ chính xác theo họ model để biết các baseline đo được.
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ế và driver thiết bị, firmware cùng các package HailoRT tương thích với nhau. Kiểm tra artifact bằng hailortcli parse-hef và xác minh accelerator bằng hailortcli fw-control identify.
Phân tích đầu ra có vẻ không chính xác#
Đặt metadata.yaml cạnh HEF để Ultralytics có thể chọn đúng luồng hậu xử lý cho YOLOv8, YOLO11 hoặc YOLO26. Các ứng dụng HailoRT tùy chỉnh cũng phải chọn quy trình hậu xử lý phù hợp với họ model đã export.
Tóm tắt#
Tính năng export Hailo của Ultralytics cung cấp lộ trình trực tiếp từ model YOLO đã huấn luyện đến HEF có thể triển khai:
- Tải model detection hoặc classification YOLOv8, YOLO11 hay YOLO26; model segmentation, pose hoặc OBB YOLOv8/YOLO11; hoặc model semantic segmentation hay ước lượng độ sâu YOLO26.
- Export 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 export được quản lý trên Ultralytics Platform.
- Sao chép HEF và
metadata.yamlsang thiết bị edge dùng Hailo. - Chạy inference bằng HailoRT, Raspberry Pi Picamera2 hoặc pipeline video GStreamer.
Để biết thêm các đích triển khai computer vision, xem chế độ Export, chế độ Benchmark và hướng dẫn tích hợp. 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.
Câu hỏi thường gặp#
Không. Chạy DFC trên hệ thống Linux x86_64 được hỗ trợ rồi triển khai HEF tạo ra 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ể.
Tính năng export trực tiếp hỗ trợ model detection sử dụng head detection YOLOv8, YOLO11 hoặc YOLO26 tiêu chuẩn; model segmentation, pose và OBB YOLOv8/YOLO11; cùng model classification YOLOv8/YOLO11/YOLO26. Các model tùy chỉnh được huấn luyện dựa trên những kiến trúc tiêu chuẩn này cũng được hỗ trợ. Model semantic segmentation và ước lượng độ sâu 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 HEF chưa được xác thực.
Có. Sử dụng cùng lệnh
format="hailo"với trọng số.pttùy chỉnh và truyền YAML của dataset huấn luyện quadatađể hiệu chuẩn INT8 bằng dữ liệu đại diện. Tên lớp và số lượng lớp được lấy từ metadata của model.Mỗi HEF được biên dịch cho một shape input cố định, vì vậy một HEF 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 dùng. Khi export, chọn
imgszphù hợp với pipeline triển khai.YOLO26 sử dụng hồi quy box không có DFL, vì vậy cả hai head đều được biên dịch thành tensor thô thay vì pipeline NMS HailoRT kiểu YOLOv8. Theo mặc định, Ultralytics giải mã tensor và áp dụng NMS; hoặc trả về detection không dùng NMS nếu export với
nms=False.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 máy build Linux x86_64. HailoRT tải và chạy HEF đó trên thiết bị mục tiêu.
Triển khai HEF đã biên dịch lên runtime Hailo. ONNX là biểu diễn trung gian được sử dụng trong quá trình export và sẽ bị xóa sau khi biên dịch thành công.
Tải wheel compiler dành cho thế hệ phần cứng của bạn từ Hailo Developer Zone. Chỉ cần compiler để tạo HEF; HailoRT sẽ chạy HEF trên accelerator mục tiêu.