Link to this sectionXuất Hailo cho các model YOLO của Ultralytics#
Các bộ tăng tốc AI Hailo chạy các mô hình định dạng Hailo Executable Format (HEF) đã được biên dịch trên các thiết bị biên như Raspberry Pi AI Kit và AI HAT+. Ultralytics xuất trực tiếp các mô hình phát hiện, phân đoạn, tạo dáng (pose), OBB, phân loại, phân đoạn ngữ nghĩa và ước lượng chiều sâu của YOLO sang HEF bằng Hailo Dataflow Compiler (DFC).
Việc triển khai Hailo được thiết kế cho thị giác máy tính tại biên: camera, robot, hệ thống công nghiệp, gateway và các thiết bị khác cần thực hiện phát hiện đối tượng cục bộ mà không cần gửi mọi khung hình lên cloud. Một file HEF đã biên dịch bao gồm mạng đã được 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 bộ tăng tốc đã chọn.
Đối với các triển khai phần cứng mới, hãy đánh giá thêm Axelera và DeepX, vốn nhắm đến các nền tảng tăng tốc biên mới hơn và có thể cung cấp hiệu suất cao hơn. Hailo khuyến nghị sử dụng ít nhất 1.024 hình ảnh hiệu chuẩn đại diện để đạt độ chính xác tốt nhất; các bộ dữ liệu đặc thù tác vụ tích hợp sẵn chỉ phù hợp cho việc kiểm thử nhanh.
Link to this sectionTại sao nên triển khai Ultralytics YOLO trên Hailo?#
Kết hợp Ultralytics YOLO với một đơn vị xử lý thần kinh (NPU) Hailo cung cấp một con đường thực tế từ huấn luyện mô hình đến suy luận AI biên tiêu thụ điện năng thấp. Các trường hợp sử dụng phổ biến bao gồm:
- Camera thông minh và phân tích video: Chạy phát hiện đối tượng thời gian thực gần camera cho các ứng dụng an ninh, bán lẻ, giao thông và kiểm soát mật độ.
- Robot và hệ thống tự hành: Phát hiện người, phương tiện, gói hàng, công cụ hoặc chướng ngại vật mà không cần dựa 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 mô hình YOLO tùy chỉnh cho việc kiểm tra, đếm, giám sát an toàn và kiểm soát chất lượng.
- Các dự án Raspberry Pi AI: Thêm suy luận thị giác tăng tốc vào các hệ thống Raspberry Pi bằng AI Kit hoặc AI HAT+.
- Edge gateway và AI PC: Xử lý nhiều luồng video hoặc cảm biến cục bộ đồng thời giảm băng thông và các yêu cầu về tính toán cloud.
Suy luận cục bộ có thể cải thiện tính 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 thực tế, độ trễ và mức sử dụng điện năng phụ thuộc vào kích thước mô hình YOLO, độ phân giải đầu vào, kiến trúc Hailo, hệ thống máy chủ và pipeline ứng dụng.
Link to this sectionCách thức hoạt động của tính năng Xuất Hailo#
Ultralytics sở hữu quy trình xuất hoàn chỉnh đằng sau format="hailo":
YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compileTrình xuất thực hiện các giai đoạn sau một cách tự động:
- Xuất một đồ thị ONNX tĩnh với các cài đặt tương thích với trình biên dịch.
- Chọn các đầu ra (head outputs) cho kiến trúc model.
- Tạo các chỉ thị chuẩn hóa, kích hoạt và hậu xử lý.
- Xây dựng luồng hiệu chuẩn đại diện và lượng tử hóa mô hình sang INT8.
- Biên dịch đồ thị đã tối ưu hóa cho bộ tăng tốc Hailo đã chọn.
- Lưu file HEF cùng với metadata của Ultralytics và xóa file ONNX trung gian.
Các mô hình phát hiện YOLOv8 và YOLO11 sử dụng HailoRT YOLO NMS trong pipeline đã biên dịch. Các mô hình phát hiện YOLO26 sử dụng đầu ra một-đối-một không cần NMS, do đó bộ xuất (exporter) tự động chọn một đường dẫn đầu ra và lượng tử hóa khác. Phân đoạn, tạo dáng và OBB của YOLOv8/YOLO11 biên dịch các tensor phần đầu thô, được Ultralytics giải mã lúc suy luận, và phân loại YOLOv8/YOLO11/YOLO26 chạy softmax trên chip để HEF trả về trực tiếp xác suất lớp. Đối với phân đoạn ngữ nghĩa YOLO26, bộ xuất tuân theo bộ tăng tốc: Hailo-8/8L (DFC v3.x) trả về các logit bộ phân loại để host lấy mẫu lên (upsampling) và thu gọn, trong khi Hailo-10/15 (DFC v5.x) biên dịch các phần đầu ArgMax đa lớp trên chip và trả về một bản đồ lớp gọn. Các phần đầu đơn lớp sử dụng đường dẫn logit-host trên mọi mục tiêu vì chúng yêu cầu một ngưỡng thay vì ArgMax. Các mô hình chiều sâu YOLO26 biên dịch conv logit đặc trong a16 và dựng lại bản đồ chiều sâu mét trên host (phần clamp/exp và hiệu chỉnh log-affine đã học theo sau phần đầu), do đó bộ lượng tử hóa giữ dải rộng nhất trên logit thô. Người dùng không cần tìm các nút cuối ONNX, viết một tập lệnh mô hình Hailo (.alls), hay tạo thủ công một JSON NMS.
Link to this sectionCài đặt#
Cài đặt Ultralytics và tải xuống DFC wheel cho phần cứng mục tiêu của bạn 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. Hãy biên dịch mô hình trên một máy trạm được hỗ trợ, sau đó sao chép thư mục đầu ra sang thiết bị mục tiêu. DFC không cần thiết cho quá trình suy luận.
Hailo-8 và Hailo-8L sử dụng DFC v3.x. Hailo-10 và Hailo-15 sử dụng DFC v5.x. Hãy cài đặt phiên bản trình biên dịch khớp với bộ tăng tốc mục tiêu.
Ultralytics Platform cung cấp tính năng xuất 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.
Link to this sectionXuất một mô hình Hailo HEF#
Sử dụng format="hailo" và chọn bộ tăng tốc mục tiêu với name:
from ultralytics import YOLO
model = YOLO("yolo11n.pt")
output = model.export(format="hailo", name="hailo8l")
print(output) # yolo11n_hailo_model/Lệnh CLI tương đương là:
yolo export model=yolo11n.pt format=hailo name=hailo8lXuất Hailo chỉ hỗ trợ INT8. Ultralytics sẽ tự động tải xuống bộ dữ liệu hiệu chuẩn đặc thù cho tác vụ khi data không được cung cấp. Đối với các model tùy chỉnh, hãy sử dụng hình ảnh huấn luyện hoặc kiểm chứng đại diện:
Ultralytics ép buộc cấp độ tối ưu hóa DFC là 2 và cấu hình tinh chỉnh để sử dụng kích thước bộ dữ liệu hiệu chuẩn thực tế. Hailo khuyến nghị sử dụng ít nhất 1.024 hình ảnh đa dạng; các bộ dữ liệu nhẹ tích hợp sẵn sẽ biên dịch ở cấp độ 2 nhưng có thể không đại diện cho miền dữ liệu thực tế. Để xuất HEF cho sản xuất, hãy truyền vào một bộ dữ liệu đại diện sử dụng data="path/to/dataset.yaml".
model.export(format="hailo", name="hailo8l", data="path/to/dataset.yaml")Quá trình biên dịch sử dụng hình dạng đầu vào cố định. Hãy thiết lập imgsz theo độ phân giải được sử dụng trên thiết bị:
model.export(format="hailo", name="hailo8l", imgsz=640)Link to this sectionCác mô hình và phần cứng được hỗ trợ#
Hệ sinh thái Hailo bao gồm phạm vi rộng lớn các tác vụ thị giác máy tính, nhưng bộ xuất format="hailo" của Ultralytics hiện xác thực các phần đầu phát hiện, phân đoạn, tạo dáng, OBB, phân loại, phân đoạn ngữ nghĩa và ước lượng chiều sâu YOLO tiêu chuẩn. Bảng tác vụ mô tả các đường dẫn xuất khả dụng; việc xác thực phần cứng được liệt kê riêng bên dưới.
| Tác vụ Ultralytics | Xuất Hailo trực tiếp | Các dòng mô hình được hỗ trợ | Lưu ý |
|---|---|---|---|
| Object detection | ✅ | YOLOv8, YOLO11, YOLO26 | Các head Detect tiêu chuẩn của Ultralytics, bao gồm cả các mô hình tùy chỉnh |
| Instance segmentation | ✅ | YOLOv8, YOLO11 | Các tensor đầu thô được Ultralytics giải mã tại thời điểm inference; YOLO26-seg hiện chưa được hỗ trợ |
| Phân loại hình ảnh | ✅ | YOLOv8, YOLO11, YOLO26 | Softmax chạy trên chip; HEF trả về xác suất lớp trực tiếp |
| Ước tính tư thế (Pose estimation) | ✅ | YOLOv8, YOLO11 | Các tensor head thô được Ultralytics giải mã tại thời điểm inference; YOLO26-pose hiện không được hỗ trợ |
| Phát hiện đối tượng có định hướng | ✅ | YOLOv8, YOLO11 | Các tensor head thô được Ultralytics giải mã tại thời điểm inference; YOLO26-OBB hiện không được hỗ trợ |
| Semantic segmentation | ✅ | YOLO26 | Hailo-8/8L và các đầu ra đơn lớp trả về logit; Hailo-10/15 tạo ra bản đồ đa lớp |
| Ước tính độ sâu | ✅ | YOLO26 | Logit đặc được biên dịch trong a16; Ultralytics dựng lại bản đồ chiều sâu mét khi suy luận |
Các dòng phát hiện chuyên biệt như YOLOv10, YOLO-World, YOLOE và RT-DETR cũng ❌ không được hỗ trợ. Ultralytics sẽ từ chối các tác vụ và dòng mô hình này trước khi biên dịch thay vì tạo ra một HEF không được xác thực.
| Họ model | Hailo-8 / Hailo-8L | Hailo-10 / Hailo-15 | Đầu ra |
|---|---|---|---|
| Phát hiện trên YOLOv8 / YOLO11 | ✅ | ✅ | HEF với HailoRT YOLO NMS |
| Phát hiện trên YOLO26 | ✅ | ✅ | Các đầu ra detection-head không cần NMS cho các runtime được hỗ trợ |
| YOLOv8-seg / YOLO11-seg | ✅ | ✅ | Các tensor segmentation thô, được Ultralytics giải mã tại thời điểm inference |
| YOLOv8-pose / YOLO11-pose | Đã xác thực trên Hailo-8L | Chưa được xác thực | Các tensor pose thô, được Ultralytics giải mã tại thời điểm inference |
| YOLOv8-obb / YOLO11-obb | Đã xác thực trên Hailo-8L | Chưa được xác thực | Các tensor OBB thô, được Ultralytics giải mã tại thời điểm inference |
| 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 | Logit, hoặc bản đồ đa lớp được tạo sẵn trên Hailo-10/15 |
| YOLO26-depth | Đã xác thực trên Hailo-8L | Chưa được xác thực | Logit đặc; bản đồ chiều sâu mét được giải mã bởi Ultralytics |
Tạo dáng, OBB, phân loại, phân đoạn ngữ nghĩa YOLO26 và ước lượng chiều sâu YOLO26 (đường dẫn Hailo-8/8L) đã được xác thực trên Hailo-8L với HailoRT 4.23 và DFC 3.33. Bộ xuất chấp nhận các mục tiêu khác được liệt kê, nhưng các đường dẫn tác vụ mới đó yêu cầu xác thực bằng trình biên dịch và thiết bị tương ứng trước khi sử dụng trong môi trường sản xuất.
Chọn một trong các giá trị name sau:
name | Bộ tăng tốc mục tiêu |
|---|---|
hailo8 | Hailo-8 |
hailo8l | Hailo-8L |
hailo10h | Hailo-10H |
hailo15h | Hailo-15H |
hailo15l | Hailo-15L |
hailo8l là mặc định. Hãy cài đặt phiên bản DFC khớp với mục tiêu đã chọn.
Link to this sectionCác thế hệ phần cứng và SDK Hailo#
Các dòng bộ tăng tốc Hailo sử dụng các thế hệ trình biên dịch khác nhau. File HEF được tạo ra phải khớ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 thay vì thiết bị thực hiện xuất.
| Dòng phần cứng | Thế hệ DFC | Các ví dụ triển khai điển hình |
|---|---|---|
| Hailo-8 / Hailo-8L | DFC v3.x | Các module bộ tăng tốc, Raspberry Pi AI Kit/HAT+ |
| Hailo-10H | DFC v5.x | Các triển khai AI biên và Raspberry Pi mới hơn |
| Hailo-15H / Hailo-15L | DFC v5.x | Các ứng dụng camera thông minh và thị giác nhúng |
Trình biên dịch chạy trên Linux x86_64, trong khi HEF kết quả chạy trên thiết bị Hailo thông qua HailoRT. Sự tách biệt này cho phép bạn biên dịch trên máy trạm hoặc trên Nền tảng Ultralytics và triển khai artifact runtime nhỏ gọn lên một máy chủ biên ARM hoặc x86.
Link to this sectionGhi chú về khả năng tương thích#
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:
- Giá trị
nameđược chọn phải khớp với bộ tăng tốc triển khai. - Các hình ảnh hiệu chuẩn nên thể hiện ánh sáng, góc nhìn, đối tượng và nền dự kiến trong môi trường thực tế.
- Một HEF được biên dịch với một
imgsznhất định không thể thay đổi kích thước linh hoạt khi runtime. - Số lượng lớp tùy chỉnh được hỗ trợ vì Ultralytics tạo cấu hình hậu xử lý từ metadata của mô hình.
- Các mô hình phát hiện với phần đầu
DetectUltralytics tiêu chuẩn, các mô hình phân đoạn, tạo dáng và OBB của YOLOv8/YOLO11, các mô hình phân loại YOLOv8/YOLO11/YOLO26, cùng các mô hình phân đoạn ngữ nghĩa và ước lượng chiều sâu YOLO26 được hỗ trợ; các bản xuất phân đoạn thực thể, tạo dáng và hộp bao định hướng của YOLO26, cùng với YOLO-World, YOLOE, YOLOv10 và RT-DETR hiện chưa được hỗ trợ. - Các artifact của Hailo-8/8L và Hailo-10/15 được biên dịch bởi các thế hệ DFC khác nhau và không thể thay thế cho nhau.
Link to this sectionHiệu chuẩn và Lượng tử hóa INT8#
Xuất HEF Hailo sử dụng lượng tử hóa INT8 để ánh xạ mạng YOLO một cách hiệu quả lên bộ tăng tốc. Tập dữ liệu hiệu chuẩn ước tính các phạm vi kích hoạt; nó không huấn luyện lại mô hình hoặc yêu cầu nhãn trong quá trình biên dịch.
Khi bỏ qua data, Ultralytics sử dụng một tập dữ liệu hiệu chỉnh nhẹ dành riêng cho tác vụ, chẳng hạn như COCO128 cho phát hiện, cityscapes8 cho phân đoạn ngữ nghĩa, hoặc depth8 cho ước lượng chiều sâu. Phần đầu chiều sâu đặc cực kỳ nhạy cảm với miền hiệu chỉnh: hiệu chỉnh mô hình chiều sâu với các hình ảnh phát hiện không liên quan làm phẳng bản đồ dự đoán, và các tập trong miền lớn hơn giúp cải thiện độ trung thực. Đối với mô hình thị giác máy tính tùy chỉnh, hãy trỏ data đến YAML tập dữ liệu của mô hình để trình biên dịch quan sát các hình ảnh đại diện từ miền triển khai thực tế:
model.export(format="hailo", name="hailo8l", data="my_dataset.yaml")fraction chọn một phần của tập dữ liệu được sử dụng để hiệu chuẩn (calibration). Nhiều hình ảnh hơn chỉ hữu ích khi chúng đại diện cho miền triển khai; các hình ảnh ngoài miền có thể làm giảm độ chính xác sau khi lượng tử hóa và tăng thời gian tối ưu hóa. Nếu tệp INT8 HEF bị mất độ chính xác so với mô hình PyTorch gốc, trước tiên hãy cải thiện dữ liệu hiệu chuẩn trước khi thay đổi cài đặt mô hình hoặc runtime.
Link to this sectionKỳ vọng về độ chính xác theo dòng model#
Được đo lường trên Hailo-8L với hiệu chuẩn trong miền (COCO128, 128 hình ảnh), các bản xuất INT8 HEF duy trì tỷ lệ mAP50 trên PyTorch của chúng theo cùng một giao thức đánh giá như sau:
| Mô hình | Tỷ lệ duy trì mAP50 | Lưu ý |
|---|---|---|
| YOLOv8n | ~100% | Head DFL với NMS trên chip |
| YOLO11n | ~96% | Các khối Attention trong backbone nhạy cảm hơn với INT8 |
| YOLO26n | ~93% | Head end-to-end cộng với attention; xem lưu ý về độ tin cậy |
Tỷ lệ duy trì so sánh cả hai model ở cùng một ngưỡng tin cậy. Các HEF của YOLOv8 và YOLO11 tích hợp conf tại thời điểm xuất (mặc định 0.25) vào NMS trên chip, vì vậy việc xác thực dựa trên baseline PyTorch ở ngưỡng thấp mặc định sẽ tích hợp một phần lớn hơn của đường cong precision-recall và làm phóng đại khoảng cách lượng tử hóa.
Ngoài phát hiện, các quy trình xuất cho phân đoạn, pose, OBB và phân loại đã được xác thực trên cùng cấu hình Hailo-8L (DFC 3.33, HailoRT 4.23). Mỗi tệp INT8 HEF được so sánh với checkpoint PyTorch tương ứng trên cùng tập dữ liệu validation, sử dụng hiệu chuẩn trong miền (in-domain calibration):
| Tác vụ | Chỉ số (tập validation) | YOLOv8n | YOLO11n |
|---|---|---|---|
| Instance segmentation | Duy trì mask mAP50 (COCO128-seg) | 98.0% | 93.6% |
| Pose | Duy trì box mAP50 (COCO8-pose) | 98.1% | 90.8% |
| Oriented bounding box | Duy trì mAP50 (DOTA128) | ~100% | 96.9% |
| Phân loại | Duy trì top-1 (ImageNet val) | 92.6% | 95.4% |
Phân đoạn, pose và OBB được hiệu chuẩn với tập dữ liệu mặc định trong miền của từng tác vụ (COCO128-seg, COCO8-pose, DOTA128); phân loại được hiệu chuẩn với ImageNet100. Có hai lưu ý từ các mặc định đó: COCO8-pose chỉ có 8 hình ảnh, vì vậy hãy coi pose là chỉ số tham khảo và truyền tham số data= lớn hơn cho môi trường production, và DOTA8 làm bão hòa mAP50 gần 100% cho cả hai model, đó là lý do tại sao OBB được đọc trên DOTA128. Phân loại cũng là tác vụ duy nhất mà YOLO11 duy trì tốt hơn YOLOv8; đối với các tác vụ khác, backbone attention của YOLO11 nhạy cảm hơn với định dạng INT8.
Ba quy tắc thực tế rút ra từ các phép đo trên thiết bị:
- Luôn hiệu chuẩn trong miền. Tinh chỉnh bằng hình ảnh ngoài miền tương đương với việc vô hiệu hóa hoàn toàn quá trình tinh chỉnh: một YOLO26n được hiệu chuẩn với 1.238 hình ảnh ngoài miền vẫn giữ nguyên độ chính xác (85.7%) như khi được biên dịch mà không cần tinh chỉnh. Một tập dữ liệu trong miền nhỏ sẽ tốt hơn một tập dữ liệu ngoài miền lớn.
- Giảm
confkhoảng 0.05 đối với các bản triển khai YOLO26. Quá trình lượng tử hóa làm giảm điểm số của YOLO26 khoảng 0.05 trung bình, do đó một ngưỡng được tinh chỉnh trong PyTorch sẽ bỏ lỡ các phát hiện hợp lệ trên HEF. Sử dụngconf=0.20trên thiết bị sẽ khớp với số lượng phát hiện của PyTorch tạiconf=0.25, và việc giảm thấp hơn một chút (khoảngconf=0.15) sẽ khôi phục về cơ bản toàn bộ khoảng cách mAP50 còn lại với cái giá là có thêm nhiều phát hiện có độ tự tin thấp hơn. Lượng tử hóa cũng làm sắp xếp lại khoảng 20% các phát hiện — một hiệu ứng thứ tự vĩnh viễn mà không ngưỡng nào có thể đảo ngược — nhưng việc xáo trộn đó không ngăn cản khả năng phục hồi mAP50 tại ngưỡng thấp hơn. - Hình phạt attention mang tính cấu trúc trên Hailo-8/8L (DFC 3.33). Các khối attention biên dịch thành các phép toán
matmulgiữ đầu vào activation INT8 trong mọi chế độ mà trình biên dịch cung cấp; chế độ đầu ra 16-bit bị lỗi phân bổ cho đồ thị này, và việc tăng độ chính xác của các lớp xung quanh cũng không giúp ích gì vì matmul vẫn lượng tử hóa lại các đầu vào của nó thành INT8 (việc bảo vệ các lớp tích chập depthwise và output ở mức 16-bit không làm 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 tại lượng tử hóa tốt hơn YOLO26 ở đâ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ể sẽ khác biệt.
Link to this sectionCác Artifact đã xuất#
Quá trình xuất tạo ra 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à mô hình đã biên dịch được tải bởi HailoRT.metadata.yamllưu giữ tên mô hình, tác vụ, kích thước đầu vào, stride và thông tin mục tiêu Hailo.nms_config.jsonghi lại cấu hình HailoRT NMS đã tạo cho các model phát hiện YOLOv8 và YOLO11. Phát hiện YOLO26 và tất cả các tác vụ không phải phát hiện (phân đoạn, pose, OBB, phân loại, ngữ nghĩa) không sử dụng tệp này.
Đồ thị ONNX trung gian sẽ bị xóa sau khi biên dịch.
Link to this sectionChạy suy luận trên phần cứng Hailo#
Cài đặt HailoRT trên thiết bị mục tiêu. Người dùng Raspberry Pi AI Kit và AI HAT+ có thể làm theo hướng dẫn phần mềm Raspberry Pi AI:
sudo apt install hailo-all
hailortcli fw-control identifySao chép toàn bộ thư mục xuất sang thiết bị để metadata.yaml luô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 đã xuất:
from ultralytics import YOLO
model = YOLO("yolo11n_hailo_model")
results = model.predict("path/to/image.jpg")Đối với các model phát hiện, backend chuyển đổi đầu ra HailoRT NMS của YOLOv8 và YOLO11 và tự động giải mã các đầu ra one-to-one của YOLO26. Nó giải mã các tensor thô của phân đoạn, pose và OBB, trả về xác suất phân loại trên chip, và tạo bản đồ lớp ngữ nghĩa thông qua giảm thiểu trên host đối với Hailo-8/8L và tất cả các đầu ra đơn lớp hoặc ArgMax trên chip đối với các đầu ra đa lớp của Hailo-10/15. TAPPAS, GStreamer, và công cụ hỗ trợ picamera2.devices.Hailo cho Raspberry Pi vẫn khả dụng cho các pipeline dành riêng cho ứng dụng.
Đối với triển khai GStreamer, hãy 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 ! autovideosinkLink to this sectionCác tùy chọn triển khai Hailo#
HEF là cùng một artifact mô hình có thể triển khai trên 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 |
|---|---|
| HailoRT Python hoặc C/C++ API | Các ứng dụng tùy chỉnh và kiểm soát suy luận trực tiếp |
Raspberry Pi picamera2.devices.Hailo | Các dự án Camera Module trên Raspberry Pi |
| Các ứng dụng GStreamer và Hailo | Luồng video thời gian thực và các pipeline đa giai đoạn |
hailortcli | Kiểm tra thiết bị, kiểm tra HEF và đo điểm chuẩn (benchmarking) |
Giữ tệp metadata.yaml cùng với HEF khi ứng dụng cần tên lớp, kích thước đầu vào, stride hoặc các thông tin mô hình khác từ Ultralytics. Bản thân tệp HEF không thay thế logic cấp ứng dụng cho việc ghi hình camera, hiển thị, theo dõi, cảnh báo hoặc lưu trữ.
Link to this sectionXác minh thiết bị Hailo và HEF#
Trước khi tích hợp camera hoặc pipeline video, hãy xác minh độc lập môi trường runtime và bộ tăng tốc:
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 biệt quá trình suy luận của Hailo khỏi việc giải mã video, thay đổi kích thước ảnh, vẽ và I/O ứng dụng. Hãy đo lường riêng biệt toàn bộ ứng dụng khi ước tính độ trễ end-to-end hoặc số khung hình trên giây.
Link to this sectionSo sánh Hailo với các định dạng xuất mô hình YOLO khác#
Chọn định dạng xuất dựa trên phần cứng sẽ thực thi mô hình:
| Mục tiêu triển khai | Định dạng xuất của Ultralytics |
|---|---|
| Hailo NPU | Hailo HEF (format="hailo") |
| NVIDIA GPU | TensorRT |
| CPU, GPU hoặc NPU của Intel | OpenVINO |
| Phần cứng Apple | CoreML |
| Qualcomm Snapdragon NPU | QNN |
| Rockchip NPU | RKNN |
| Raspberry Pi AI Camera | Sony IMX500 |
| Sử dụng linh hoạt trên nhiều runtime | ONNX |
HEF là lựa chọn phù hợp khi thiết bị cuối chứa bộ tăng tốc Hailo. ONNX vẫn hữu ích như một định dạng trao đổi di động, nhưng HailoRT thực thi tệp HEF đặc thù cho phần cứng do DFC tạo ra thay vì mô hình ONNX gốc.
Link to this sectionTối ưu hóa hiệu suất thị giác máy tính trên Hailo#
Các lựa chọn về mô hình và pipeline thường quan trọng hơn các tham số trình biên dịch:
- Bắt đầu với một mô hình YOLO nhỏ và chỉ tăng kích thước mô hình khi độ chính xác yêu cầu.
- Chọn
imgszcố định thấp nhất mà vẫn giữ được các đối tượng quan trọng đối với ứng dụng. - Sử dụng ảnh hiệu chỉnh từ camera thực tế và môi trường thực tế khi có thể.
- Giữ cho mạng Hailo hoạt động liên tục qua các khung hình thay vì mở lại HEF cho mỗi lần suy luận.
- Tách biệt thời gian suy luận trên thiết bị khỏi quá trình tiền xử lý, giải mã video, hậu xử lý, hiển thị và I/O mạng.
- Sử dụng một pipeline truyền phát như GStreamer cho các khối lượng công việc video duy trì liên tục.
- Xác thực HEF đã xuất trên đúng bộ tăng tốc và phiên bản HailoRT được sử dụng trong môi trường thực tế (production).
Link to this sectionĐối số xuất#
| Đối số | Loại | 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 mô hình cố định |
data | str | đặc thù tác vụ | YAML tập dữ liệu hiệu chỉnh |
fraction | float | 1.0 | Tỷ lệ ảnh hiệu chỉnh cần sử dụng |
quantize | int | 8 | Việc xuất sang Hailo sử dụng lượng tử hóa INT8 |
simplify | bool | True | Đơn giản hóa biểu đồ ONNX trung gian |
conf | float | 0.25 | Ngưỡng tin cậy NMS của HailoRT cho YOLOv8/YOLO11 |
iou | float | 0.7 | Ngưỡng IoU NMS của HailoRT cho YOLOv8/YOLO11 |
Đối với việc xuất phát hiện, YOLOv8 và YOLO11 nhận HailoRT NMS, trong khi YOLO26 giữ các đầu ra một-đối-một không cần NMS. Phân đoạn, tạo dáng và OBB sử dụng các tensor phần đầu thô, phân loại trả về xác suất trên chip, và phân đoạn ngữ nghĩa trả về logit thô trên Hailo-8/8L và tất cả các phần đầu đơn lớp hoặc các bản đồ lớp được nhúng sẵn cho các phần đầu đa lớp Hailo-10/15. Ước lượng chiều sâu trả về logit chiều sâu thô, được Ultralytics giải mã thành bản đồ chiều sâu mét lúc suy luận. Không truyền end2end; các lệnh ghi đè tường minh sẽ bị từ chối. Các kích thước động, lô (batches) lớn hơn một, Ultralytics NMS được nhúng, FP16 và FP32 cũng không được hỗ trợ.
Link to this sectionKhắc phục sự cố xuất Hailo#
Link to this sectionLỗi nhập Trình biên dịch luồng dữ liệu Hailo (Hailo Dataflow Compiler)#
Nếu quá trình xuất báo cáo thiếu hailo_sdk_client, hãy cài đặt tệp wheel DFC 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-10/15 yêu cầu các thế hệ trình biên dịch khác nhau.
Link to this sectionHệ điều hành hoặc kiến trúc không được hỗ trợ#
Việc biên dịch HEF được hỗ trợ trên Linux x86_64. Hãy xuất thông qua Ultralytics Platform hoặc sử dụng máy trạm tương thích nếu máy tính cục bộ là macOS, Windows, Raspberry Pi hoặc các hệ thống ARM khác.
Link to this sectionQuá trình xuất mất nhiều thời gian#
Tối ưu hóa DFC là giai đoạn tiêu tốn tài nguyên nhất. Thời gian biên dịch tăng lên cùng với kích thước mô hình, độ phân giải đầu vào và dữ liệu hiệu chỉnh. Một GPU được hỗ trợ có thể tăng tốc độ tối ưu hóa, trong khi biên dịch chỉ bằng CPU có thể chậm hơn đáng kể.
Link to this sectionĐộ chính xác của mô hình đã lượng tử hóa bị giảm#
Sử dụng các hình ảnh hiệu chuẩn tương tự như dữ liệu đầu vào thực tế và bao gồm các đối tượng quan trọng, quy mô, điều kiện ánh sáng và bối cảnh. Hãy so sánh model PyTorch gốc và HEF đã xuất trên cùng một tập dữ liệu xác thực trước khi triển khai. Một khoảng cách vừa phải phụ thuộc vào dòng model vẫn tồn tại ngay cả khi hiệu chuẩn tốt; xem Kỳ vọng về độ chính xác theo dòng model để biết các baseline đã đo lường.
Link to this sectionHEF không tải được trên thiết bị#
Xác nhận rằng name khớp với kiến trúc Hailo vật lý và driver thiết bị, firmware, cùng các gói 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.
Link to this sectionPhân tích đầu ra có vẻ không chính xác#
Hãy giữ metadata.yaml bên cạnh HEF để Ultralytics có thể chọn đường dẫn hậu xử lý khớp với YOLOv8, YOLO11 hoặc YOLO26. Các ứng dụng HailoRT tùy chỉnh cũng phải khớp phần hậu xử lý với họ model đã xuất.
Link to this sectionCâu hỏi thường gặp#
Link to this sectionTôi có thể biên dịch HEF trên Raspberry Pi không?#
Không. Hãy chạy DFC trên hệ thống Linux x86_64 được hỗ trợ và triển khai HEF thu được sang Raspberry Pi.
Link to this sectionTôi có cần GPU NVIDIA không?#
Một GPU được hỗ trợ sẽ giảm đáng kể thời gian tối ưu hóa DFC. Biên dịch bằng CPU là khả thi nhưng có thể mất nhiều thời gian hơn đáng kể.
Link to this sectionNhững mô hình YOLO nào hỗ trợ xuất sang Hailo?#
Xuất trực tiếp hỗ trợ các mô hình phát hiện với phần đầu phát hiện YOLOv8, YOLO11 hoặc YOLO26 tiêu chuẩn, các mô hình phân đoạn, tạo dáng và OBB của YOLOv8/YOLO11, và các mô hình phân loại YOLOv8/YOLO11/YOLO26. Điều này bao gồm các mô hình được huấn luyện tùy chỉnh xây dựng từ các kiến trúc tiêu chuẩn đó. Các mô hình phân đoạn ngữ nghĩa và ước lượng chiều sâu YOLO26 cũng được hỗ trợ. Phân đoạn thực thể, tạo dáng và OBB của YOLO26, 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 xác thực.
Link to this sectionTôi có thể xuất một mô hình YOLO được huấn luyện tùy chỉnh không?#
Có. Sử dụng cùng lệnh format="hailo" với trọng số .pt tùy chỉnh và truyền YAML tập dữ liệu huấn luyện thông qua data để có hiệu chỉnh INT8 đại diện. Tên lớp và số lượng lớp được đọc từ metadata của mô hình.
Link to this sectionXuất Hailo có hỗ trợ kích thước ảnh động không?#
Không. DFC biên dịch một hình dạng đầu vào cố định vào HEF. Hãy chọn imgsz trong khi xuất để khớp với độ phân giải được sử dụng bởi pipeline triển khai.
Link to this sectionTại sao YOLO26 tạo ra đầu ra Hailo khác biệt?#
YOLO26 sử dụng head phát hiện một-một không cần NMS. Ultralytics biên dịch trực tiếp các tensor đầu ra đó thay vì đính kèm NMS kiểu YOLOv8 của HailoRT được sử dụng cho YOLOv8 và YOLO11.
Link to this sectionSự khác biệt giữa DFC và HailoRT là gì?#
Hailo Dataflow Compiler chuyển đổi và lượng tử hóa mô hình thành HEF đặc thù cho phần cứng trên máy xây dựng Linux x86_64. HailoRT tải và chạy tệp HEF đó trên thiết bị mục tiêu.
Link to this sectionTôi nên triển khai tệp ONNX hay HEF?#
Triển khai tệp HEF đã biên dịch sang runtime của Hailo. ONNX là một biểu diễn trung gian được sử dụng trong quá trình xuất và sẽ bị xóa sau khi biên dịch thành công.
Link to this sectionTôi có thể lấy Hailo DFC ở đâu?#
Tải xuống tệp wheel trình biên dịch cho thế hệ phần cứng của bạn từ Hailo Developer Zone. Trình biên dịch chỉ cần thiết để tạo tệp HEF; HailoRT chạy nó trên bộ tăng tốc mục tiêu.
Link to this sectionTóm tắt#
Tính năng xuất Hailo của Ultralytics cung cấp một lộ trình trực tiếp từ model YOLO đã huấn luyện sang file HEF có thể triển khai:
- Tải một mô hình phát hiện hoặc phân loại YOLOv8, YOLO11 hoặc YOLO26, một mô hình phân đoạn, tạo dáng hoặc OBB YOLOv8/YOLO11, hoặc một mô hình phân đoạn ngữ nghĩa hoặc ước lượng chiều sâu YOLO26.
- Xuất với
format="hailo"và chọn kiến trúc mục tiêu. - Hiệu chỉnh và biên dịch cục bộ với DFC phù hợp, hoặc sử dụng tính năng xuất được quản lý trên Ultralytics Platform.
- Sao chép HEF và
metadata.yamlsang thiết bị edge chạy bằng Hailo. - Chạy inference với HailoRT, Raspberry Pi Picamera2, hoặc pipeline video GStreamer.
Đối với các mục tiêu triển khai thị giác máy tính khác, hãy xem Chế độ xuất, Chế độ đo điểm chuẩn và hướng dẫn tích hợp. Các hướng dẫn phần cứng liên quan bao gồm ONNX, OpenVINO, TensorRT, NCNN, RKNN, Sony IMX500 và Qualcomm QNN.