YOLO Vision 2026:

Xuất Hailo cho các model YOLO của Ultralytics#

Các bộ tăng tốc Hailo AI 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 KitAI HAT+. Ultralytics xuất các mô hình phát hiện, phân đoạn, phân đoạn ngữ nghĩa, ước tính độ sâu, phân loại, tư thế và OBB của YOLO trực tiếp sang định dạng 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.

So sánh các bộ tăng tốc biên mới hơn

Đối với các triển khai phần cứng mới, hãy đánh giá thêm AxeleraDeepX, vốn nhắm đến các nền tảng bộ tăng tốc biên mới hơn và có thể mang lại 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 tập dữ liệu tích hợp sẵn theo tác vụ chỉ thích hợp cho việc kiểm tra nhanh.

Tạ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.

Cách thức hoạt động của tính năng Xuất Hailo#

Ultralytics sở hữu toàn bộ quy trình công việc xuất đằng sau format="hailo":

YOLO (.pt) -> ONNX -> Hailo parse -> INT8 optimization -> HEF compile

Trình xuất thực hiện các giai đoạn sau một cách tự động:

  1. 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.
  2. Chọn các đầu ra (head outputs) cho kiến trúc model.
  3. Tạo các chỉ thị chuẩn hóa, kích hoạt và hậu xử lý.
  4. Xây dựng luồng hiệu chuẩn đại diện và lượng tử hóa mô hình sang INT8.
  5. Biên dịch đồ thị đã tối ưu hóa cho bộ tăng tốc Hailo đã chọn.
  6. 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 của chúng, vì vậy công cụ xuất sẽ tự động chọn một đầu ra và đường dẫn lượng tử hóa khác. Phân đoạn, tư thế và OBB của YOLOv8/YOLO11 biên dịch các tensor phần đầu thô, mà Ultralytics giải mã khi suy luận, và phân loại YOLOv8/YOLO11/YOLO26 chạy softmax trên chip để HEF trả về xác suất lớp trực tiếp. Đối với phân đoạn ngữ nghĩa YOLO26, công cụ 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 để lấy mẫu tăng và thu gọn trên máy chủ, 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 nhỏ gọn. Các phần đầu đơn lớp sử dụng đường dẫn logit máy chủ 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 độ sâu YOLO26 biên dịch phép tích chập logit dày đặc trong a16 và xây dựng lại bản đồ độ sâu metric trên máy chủ (phép clamp/exp và hiệu chuẩn 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 kịch bản mô hình Hailo (.alls), hoặc tạo thủ công một JSON NMS.

Cà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-*.whl
Lưu ý

Biê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.

Xuất trên Nền tảng Ultralytics

Ultralytics Platform cung cấp tính năng xuất Hailo được quản lý, do đó không cần tài khoản Hailo cục bộ hay cài đặt DFC.

Xuất một mô hình Hailo HEF#

Sử dụng format="hailo" và chọn bộ tăng tốc đích 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=hailo8l

Quá trình xuất Hailo chỉ hỗ trợ INT8. Ultralytics tự động tải xuống tập dữ liệu hiệu chuẩn dành riêng cho tác vụ khi không cung cấp data. Đối với các mô hình tùy chỉnh, hãy sử dụng hình ảnh huấn luyện hoặc xác thực mang tính đại diện:

Sử dụng ít nhất 1.024 hình ảnh hiệu chuẩn để có độ chính xác tốt nhất

Ultralytics ép buộc cấp độ tối ưu hóa DFC 2 và định cấu hình việc tinh chỉnh để sử dụng kích thước tập 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 tập dữ liệu nhẹ tích hợp sẵn biên dịch ở cấp độ 2 nhưng có thể không đại diện cho miền sản xuất. Đối với các bản xuất HEF thương mại, hãy chuyển một tập dữ liệu đại diện bằng cách 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 kích thước đầ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="hailo8l", imgsz=640)

Các mô hình và phần cứng được hỗ trợ#

Hệ sinh thái Hailo bao phủ một loạt các khối lượng công việc thị giác máy tính, nhưng công cụ 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, phân đoạn ngữ nghĩa, ước tính độ sâu, phân loại, tư thế và OBB tiêu chuẩn của YOLO. Bảng tác vụ mô tả các đường dẫn công cụ 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ụ UltralyticsXuất Hailo trực tiếpCác dòng mô hình được hỗ trợLưu ý
Object detectionYOLOv8, YOLO11, YOLO26Các phần đầu Detect tiêu chuẩn của Ultralytics, bao gồm cả các mô hình tùy chỉnh
Instance segmentationYOLOv8, YOLO11Cá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ợ
Semantic segmentationYOLO26Hailo-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âuYOLO26Logit dày đặc được biên dịch trong a16; Ultralytics xây dựng lại bản đồ độ sâu metric khi suy luận
Phân loại hình ảnhYOLOv8, YOLO11, YOLO26Softmax 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, YOLO11Cá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ướngYOLOv8, YOLO11Cá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ợ

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ọ modelHailo-8 / Hailo-8LHailo-10 / Hailo-15Đầu ra
Phát hiện trên YOLOv8 / YOLO11HEF với HailoRT YOLO NMS
Phát hiện trên YOLO26Các đầu ra detection-head không cần NMS cho các runtime được hỗ trợ
YOLOv8-seg / YOLO11-segCá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-8LChưa được xác thựcCá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-8LChưa được xác thựcCá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-8LChưa được xác thựcSoftmax trên chip; HEF trả về xác suất lớp
YOLO26-semĐã xác thực trên Hailo-8LChưa được xác thựcLogit, 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-8LChưa được xác thựcLogit đặ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:

nameBộ tăng tốc mục tiêu
hailo8Hailo-8
hailo8lHailo-8L
hailo10hHailo-10H
hailo15hHailo-15H
hailo15lHailo-15L

hailo8l là mặc định. Cài đặt phiên bản DFC phù hợp với mục tiêu đã chọn.

Cá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. Tệp HEF được tạo phải khớp với phần cứng đích, vì vậy hãy chọn name cho thiết bị sẽ chạy suy luận thay vì máy thực hiện việc xuất.

Dòng phần cứngThế hệ DFCCác ví dụ triển khai điển hình
Hailo-8 / Hailo-8LDFC v3.xCác module bộ tăng tốc, Raspberry Pi AI Kit/HAT+
Hailo-10HDFC v5.xCác triển khai AI biên và Raspberry Pi mới hơn
Hailo-15H / Hailo-15LDFC v5.xCá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.

Ghi 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:

  • name đã 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 tệp HEF được biên dịch bằng một imgsz sẽ không có khả năng thay đổi kích thước động tại thời điểm chạy.
  • 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 các phần đầu Detect tiêu chuẩn của Ultralytics, các mô hình phân đoạn, tư thế và OBB của YOLOv8/YOLO11, các mô hình phân loại của YOLOv8/YOLO11/YOLO26, cùng với các mô hình phân đoạn ngữ nghĩa và ước tính độ sâu của YOLO26 đều được hỗ trợ; các tính năng xuất phân đoạn thực thể, tư thế 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.

Hiệ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 chuẩn nhẹ dành riêng cho tác vụ, chẳng hạn như COCO128 cho việc phát hiện, cityscapes8 cho phân đoạn ngữ nghĩa, hoặc depth8 cho ước tính độ sâu. Phần đầu độ sâu dày đặc đặc biệt nhạy cảm với miền hiệu chuẩn: việc hiệu chuẩn một mô hình độ sâu với các hình ảnh phát hiện không liên quan sẽ làm phẳng bản đồ được dự đoán, và các tập dữ liệu trong miền lớn hơn sẽ cải thiện độ trung thực. Đối với một mô hình thị giác máy tính tùy chỉnh, hãy trỏ data tới tệp YAML tập dữ liệu của nó để 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 phần của tập dữ liệu được sử dụng để hiệu chuẩn. 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 được lượng tử hóa và tăng thời gian tối ưu hóa. Nếu tệp HEF INT8 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 mô hình hoặc cài đặt thời gian chạy.

Kỳ 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ìnhTỷ lệ duy trì mAP50Lư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

Việc giữ lại so sánh cả hai mô hình ở cùng một ngưỡng độ tin cậy. Các tệp HEF YOLOv8 và YOLO11 nhúng conf tại thời điểm xuất (mặc định là 0.25) vào NMS trên chip, vì vậy việc xác thực dựa trên cơ sở PyTorch ở ngưỡng thấp mặc định của nó sẽ tích hợp một phần lớn hơn của đường cong độ chính xác-độ thu hồi (precision-recall curve) và 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)YOLOv8nYOLO11n
Instance segmentationDuy trì mask mAP50 (COCO128-seg)98.0%93.6%
PoseDuy trì box mAP50 (COCO8-pose)98.1%90.8%
Oriented bounding boxDuy trì mAP50 (DOTA128)~100%96.9%
Phân loạiDuy trì top-1 (ImageNet val)92.6%95.4%

Phân đoạn, tư thế và OBB được hiệu chuẩn với tập dữ liệu trong miền mặc định 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 ý rút ra từ các mặc định đó: COCO8-pose chỉ có 8 hình ảnh, vì vậy hãy coi tư thế chỉ mang tính biểu thị và chuyển một data= lớn hơn cho sản xuất, và DOTA8 làm bão hòa mAP50 gần 100% cho cả hai mô hình, đó 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 giữ lại nhiều hơn YOLOv8; đối với các tác vụ khác, xương sống chú ý (attention backbone) của YOLO11 nhạy cảm với INT8 hơn.

Ba quy tắc thực tế rút ra từ các phép đo trên thiết bị:

  1. 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.
  2. Giảm conf khoảng 0,05 cho các triển khai YOLO26. Lượng tử hóa làm giảm điểm số YOLO26 xuống khoảng 0,05 trung bình, do đó ngưỡng được điều chỉnh trong PyTorch sẽ bỏ qua các phát hiện hợp lệ trên HEF. Việc sử dụng conf=0.20 trên thiết bị khớp với số lượng phát hiện của PyTorch ở conf=0.25, và giảm xuống thấp hơn một chút (khoảng conf=0.15) khôi phục toàn bộ khoảng cách mAP50 còn lại với cái giá là có nhiều phát hiện độ tin cậy thấp hơn. Lượng tử hóa cũng 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ể hoàn tác — nhưng sự xáo trộn đó không cản trở việc khôi phục mAP50 ở ngưỡng thấp hơn.
  3. Hình phạt chú ý là mang tính cấu trúc trên Hailo-8/8L (DFC 3.33). Các khối chú ý biên dịch thành các thao tác matmul giữ các đầu vào kích hoạt INT8 ở mọi chế độ mà trình biên dịch cung cấp cho chúng; chế độ đầu ra 16-bit không thể phân bổ cho đồ thị này và việc nâng cao độ chính xác của các lớp xung quanh cũng không có ích gì vì phép nhân ma trận (matmul) sẽ lượng tử hóa lại các đầu vào của nó thành INT8 dù sao đi nữa (việc bảo vệ các phép tích chập theo chiều sâu và đầu ra ở dạng 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à mô hình 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 hỗn hợp độ chính xác hơn và có thể khác biệt.

Cá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
  • *.hef là mô hình đã biên dịch được tải bởi HailoRT.
  • metadata.yaml bảo lưu tên mô hình, tác vụ, kích thước đầu vào, sải bước (stride) và thông tin mục tiêu Hailo.
  • nms_config.json ghi lại cấu hình HailoRT NMS đã tạo cho các mô hình 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, ngữ nghĩa, độ sâu, phân loại, tư thế, OBB) không sử dụng tệp này.

Đồ thị ONNX trung gian sẽ bị xóa sau khi biên dịch.

Chạy suy luận trên phần cứng Hailo#

Cài đặt HailoRT trên thiết bị đích. 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 identify

Sao chép toàn bộ thư mục xuất sang thiết bị để metadata.yaml nằm cạnh tệp HEF. Ultralytics sử dụng HailoRT để chạy trực tiếp predictval 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 mô hình 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 một-đối-một của YOLO26. Nó giải mã các tensor phân đoạn, tư thế và OBB thô, trả về xác suất phân loại trên chip, đồng thời tạo ra các bản đồ lớp ngữ nghĩa thông qua việc thu gọn trên máy chủ đối với Hailo-8/8L và tất cả các phần đầu đơn lớp hoặc ArgMax trên chip đối với các phần đầu đa lớp của Hailo-10/15. TAPPAS, GStreamer và trình trợ giúp picamera2.devices.Hailo của Raspberry Pi vẫn khả dụng cho các pipeline dành riêng cho ứng dụng.

Đối với việc triển khai GStreamer, hãy truyền HEF tới hailonet:

gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! videoconvert ! \
  hailonet hef-path=yolo11n_hailo_model/yolo11n.hef ! \
  hailofilter function-name=yolov8 ! hailooverlay ! autovideosink

Cá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 RuntimePhù hợp nhất cho
HailoRT Python hoặc C/C++ APICác ứng dụng tùy chỉnh và kiểm soát suy luận trực tiếp
Raspberry Pi picamera2.devices.HailoCác dự án Camera Module trên Raspberry Pi
Các ứng dụng GStreamer và HailoLuồng video thời gian thực và các pipeline đa giai đoạn
hailortcliKiểm tra thiết bị, kiểm tra HEF và đo điểm chuẩn (benchmarking)

Giữ metadata.yaml cùng với HEF khi ứng dụng cần tên lớp, kích thước đầu vào, sải bước hoặc thông tin mô hình khác của Ultralytics. Bản thân tệp HEF không thay thế logic ở cấp độ ứng dụng cho việc chụp ảnh từ camera, trực quan hóa, theo dõi, 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 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.hef

Cá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.

So 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 NPUHailo HEF (format="hailo")
NVIDIA GPUTensorRT
CPU, GPU hoặc NPU của IntelOpenVINO
Phần cứng AppleCoreML
Qualcomm Snapdragon NPUQNN
Rockchip NPURKNN
Raspberry Pi AI CameraSony IMX500
Sử dụng linh hoạt trên nhiều runtimeONNX

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.

Tố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 imgsz cố định thấp nhất mà vẫn bảo lưu đượ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).

Đối số xuất#

Đối sốLoạiMặc địnhMô tả
namestrhailo8lKiến trúc bộ tăng tốc Hailo mục tiêu
imgszint, list640Kích thước đầu vào mô hình cố định
datastrNoneTập dữ liệu hiệu chuẩn YAML; phân loại thay vào đó sẽ nhận một thư mục dataset hoặc tên dataset tích hợp sẵn. Nếu bỏ qua, Ultralytics sẽ chọn một dataset hiệu chuẩn dành riêng cho tác vụ.
fractionfloat1.0Tỷ lệ ảnh hiệu chỉnh cần sử dụng
quantizeint8Việc xuất sang Hailo sử dụng lượng tử hóa INT8
simplifyboolTrueĐơn giản hóa biểu đồ ONNX trung gian
conffloat0.25Ngưỡng tin cậy NMS của HailoRT cho YOLOv8/YOLO11
ioufloat0.7Ngưỡ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ữ lại các đầu ra một-đối-một không cần NMS của nó. Phân đoạn, tư thế 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 của Hailo-10/15. Ước tính độ sâu trả về logit độ sâu thô, mà Ultralytics giải mã thành bản đồ độ sâu metric khi suy luận. Không truyền end2end; các ghi đè rõ ràng sẽ bị từ chối. Kích thước động, các lô (batch) lớn hơn một, NMS Ultralytics được nhúng sẵn, FP16 và FP32 cũng không được hỗ trợ.

Khắc phục sự cố xuất Hailo#

Lỗ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 hiệu rằng thiếu hailo_sdk_client, hãy cài đặt wheel DFC cho thế hệ phần cứng đích 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.

Hệ điều hành hoặc kiến trúc không được hỗ trợ#

Quá trình 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 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 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ể.

Độ 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 giống với dữ liệu đầu vào trong môi trường sản xuất và bao gồm các đối tượng quan trọng, tỷ lệ, điều kiện ánh sáng và nền. So sánh mô hình PyTorch ban đầu và tệp HEF đã xuất trên cùng một tập dữ liệu xác thực trước khi triển khai. Vẫn tồn tại một khoảng cách vừa phải phụ thuộc vào dòng mô hình ngay cả với hiệu chuẩn tốt; hãy xem Accuracy Expectations by Model Family để biết các chuẩn đo lường.

HEF 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 phần cứng Hailo vật lý và trình điều khiển thiết bị, phầnfirmware, cũng như 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.

Phân tích đầu ra có vẻ không chính xác#

Giữ metadata.yaml bên cạnh HEF để Ultralytics có thể chọn đường dẫn hậu xử lý YOLOv8, YOLO11 hoặc YOLO26 tương ứng. Các ứng dụng HailoRT tùy chỉnh cũng phải khớp quá trình hậu xử lý với dòng mô hình đã xuất.

Tó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:

  1. 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.
  2. Xuất với format="hailo" và chọn kiến trúc đích.
  3. 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.
  4. Sao chép HEF và metadata.yaml sang thiết bị biên chạy bằng chip Hailo.
  5. 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 Export mode, Benchmark modehướ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 IMX500Qualcomm QNN.

Câu hỏi thường gặp#

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

  • 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ể.

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

  • Có. Sử dụng cùng một lệnh format="hailo" với trọng số .pt tùy chỉnh và truyền tệp YAML tập dữ liệu huấn luyện qua data để hiệu chuẩn INT8 đại diện. Tên lớp và số lượng lớp được đọc từ siêu dữ liệu mô hình.

  • Không. DFC biên dịch một kích thước đầu vào cố định vào HEF. Chọn imgsz trong quá trình xuất để khớp với độ phân giải được sử dụng bởi pipeline triển khai.

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

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

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

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

Bình luận