YOLO Vision 2026:

Ultralytics YOLO 모델용 Hailo 내보내기#

Hailo AI accelerator는 Raspberry Pi AI HAT+ 및 AI HAT+ 2와 같은 엣지 디바이스에서 컴파일된 Hailo 실행 파일 형식(HEF) 모델을 실행합니다. Ultralytics는 Hailo Dataflow Compiler(DFC)를 사용하여 YOLO detection, segmentation, semantic segmentation, depth estimation, classification, pose 및 OBB 모델을 HEF로 직접 내보냅니다.

Hailo deployment는 모든 프레임을 클라우드로 전송하지 않고 로컬 object detection이 필요한 카메라, 로봇, 산업 시스템, gateway 및 기타 디바이스에서 엣지 computer vision을 구현하도록 설계되었습니다. 컴파일된 HEF에는 선택한 accelerator에 필요한 quantized network, hardware allocation, scheduling 및 선택적 HailoRT post-processing이 포함됩니다.

Hailo edge AI ecosystem for Ultralytics YOLO

최신 엣지 accelerator 비교

새로운 hardware deployment를 위해 DeepX, AxeleraRockchip도 평가해 보십시오. DeepX는 더 높은 YOLO performance와 더 나은 watt당 performance를 원하는 경우 더 적합한 시작점이며, Axelera는 더 높은 처리량의 deployment를 목표로 합니다. Rockchip은 합리적인 가격의 SBC와 embedded system 전반에서도 널리 사용됩니다.

Hailo에 Ultralytics YOLO를 deployment하는 이유#

Ultralytics YOLO와 Hailo neural processing unit(NPU)을 결합하면 model training부터 edge AI inference까지 실용적인 경로를 제공합니다. 일반적인 사용 사례는 다음과 같습니다:

  • Smart camera 및 video analytics: security, retail, traffic 및 occupancy 애플리케이션을 위해 카메라 근처에서 real-time object detection을 실행합니다.
  • Robotics 및 autonomous system: 지속적인 cloud connection에 의존하지 않고 사람, 차량, package, 도구 또는 장애물을 detection합니다.
  • Industrial computer vision: inspection, counting, safety monitoring 및 quality control을 위해 custom YOLO model을 deployment합니다.
  • Raspberry Pi AI project: AI HAT+ 또는 AI HAT+ 2를 사용하여 Raspberry Pi system에 accelerated vision inference를 추가합니다.
  • Edge gateway 및 AI PC: bandwidth와 cloud-compute 요구 사항을 줄이면서 여러 video 또는 sensor stream을 로컬에서 처리합니다.

이미지가 deployment device에 남아 있으므로 local inference는 privacy와 response time을 향상할 수 있습니다. 실제 throughput, latency 및 power use는 YOLO model size, input resolution, Hailo architecture, host system 및 application pipeline에 따라 달라집니다.

Hailo Export 작동 방식#

Ultralytics는 format="hailo"을 기반으로 전체 export workflow를 관리합니다:

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

exporter는 다음 단계를 자동으로 수행합니다:

  1. compiler와 호환되는 설정으로 static ONNX graph를 내보냅니다.
  2. model architecture에 맞는 head output을 선택합니다.
  3. normalization, activation 및 post-processing directive를 생성합니다.
  4. representative calibration stream을 구축하고 model을 INT8로 quantize합니다.
  5. 선택한 Hailo accelerator에 맞게 optimized graph를 compile합니다.
  6. Ultralytics metadata와 함께 HEF를 저장하고 중간 ONNX file을 제거합니다.

YOLOv8 및 YOLO11 detection model은 compiled pipeline에서 HailoRT YOLO NMS를 사용합니다. YOLO26 detection model은 NMS-free one-to-one output을 사용하므로 exporter가 다른 output 및 quantization path를 자동으로 선택합니다. YOLOv8/YOLO11 segmentation, pose 및 OBB는 raw head tensor를 compile하며, Ultralytics가 inference 시 이를 decode합니다. YOLOv8/YOLO11/YOLO26 classification은 chip에서 softmax를 실행하므로 HEF가 class probability를 직접 반환합니다. YOLO26 semantic segmentation의 경우 exporter는 accelerator를 따릅니다. Hailo-8/8L(DFC v3.x)은 host upsampling 및 reduction을 위한 classifier logit을 반환하고, Hailo-10H/15(DFC v5.x)은 multi-class ArgMax head를 chip에서 compile하여 compact class map을 반환합니다. Single-class head는 ArgMax 대신 threshold가 필요하므로 모든 target에서 host-logit path를 사용합니다. YOLO26 depth model은 a16에서 dense logit conv를 compile하고 host에서 metric depth map을 재구성합니다(head 이후에 수행되는 clamp/exp 및 learned log-affine calibration 포함). 따라서 quantizer는 raw logit에서 가장 넓은 range를 유지합니다. 사용자는 ONNX end node를 찾거나, Hailo model script(.alls)를 작성하거나, NMS JSON을 수동으로 생성할 필요가 없습니다.

설치#

Ultralytics를 설치하고 Hailo Developer Zone에서 target hardware에 맞는 DFC wheel을 다운로드합니다(무료 registration 필요):

pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whl
참고

Hailo compilation에는 Linux x86_64가 필요합니다. 지원되는 workstation에서 model을 compile한 다음 output directory를 target device로 복사합니다. inference에는 DFC가 필요하지 않습니다.

Hailo-8 및 Hailo-8L은 DFC v3.x를 사용합니다. Hailo-10H 및 Hailo-15는 DFC v5.x를 사용합니다. target accelerator에 맞는 compiler generation을 설치하십시오.

Ultralytics Platform에서 내보내기

Ultralytics Platform은 managed Hailo export를 제공하므로 local Hailo account 또는 DFC installation이 필요하지 않습니다.

Hailo HEF Model 내보내기#

format="hailo"을 사용하고 name로 target accelerator를 선택합니다:

from ultralytics import YOLO

model = YOLO("yolo11n.pt")
output = model.export(format="hailo", name="hailo8")
print(output)  # yolo11n_hailo_model/

이에 해당하는 CLI command는 다음과 같습니다:

yolo export model=yolo11n.pt format=hailo name=hailo8

Hailo export는 INT8만 지원합니다. data이 제공되지 않으면 Ultralytics가 task-specific calibration dataset을 자동으로 다운로드합니다. custom model에는 representative training 또는 validation image를 사용하십시오:

최상의 accuracy를 위해 calibration image를 최소 1,024장 사용합니다

Ultralytics는 DFC optimization level 2를 강제하고 실제 calibration dataset size를 사용하도록 fine-tuning을 구성합니다. Hailo는 다양한 image를 최소 1,024장 사용할 것을 권장합니다. 기본 제공 lightweight dataset은 level 2에서 compile되지만 production domain을 충분히 대표하지 않을 수 있습니다. production HEF export에는 data="path/to/dataset.yaml"을 사용하여 representative dataset을 전달하십시오.

model.export(format="hailo", name="hailo8", data="path/to/dataset.yaml")

Compilation은 fixed input shape을 사용합니다. device에서 사용할 resolution으로 imgsz을 설정하십시오:

model.export(format="hailo", name="hailo8", imgsz=640)

지원 모델 및 Hardware#

Hailo ecosystem은 광범위한 computer vision workload를 지원하지만, 현재 Ultralytics format="hailo" exporter는 standard YOLO detection, segmentation, semantic segmentation, depth estimation, classification, pose 및 OBB head를 검증합니다. task table에는 사용 가능한 exporter path가 설명되어 있으며, hardware validation은 아래에 별도로 나와 있습니다.

Ultralytics taskHailo 직접 export지원되는 model family참고
객체 탐지YOLOv8, YOLO11, YOLO26custom model을 포함한 standard Ultralytics Detect head
Instance segmentationYOLOv8, YOLO11inference 시 Ultralytics가 decode하는 raw head tensor; YOLO26-seg는 현재 지원되지 않음
Semantic segmentationYOLO26Hailo-8/8L 및 single-class head는 logit을 반환하고, Hailo-10H/15는 multi-class map을 내장합니다
Depth estimationYOLO26a16에서 dense logit을 compile하고, inference 시 Ultralytics가 metric depth map을 재구성합니다
Image classificationYOLOv8, YOLO11, YOLO26chip에서 softmax를 실행하며, HEF가 class probability를 직접 반환합니다
Pose estimationYOLOv8, YOLO11inference 시 Ultralytics가 decode하는 raw head tensor; YOLO26-pose는 현재 지원되지 않음
Oriented object detectionYOLOv8, YOLO11inference 시 Ultralytics가 decode하는 raw head tensor; YOLO26-OBB는 현재 지원되지 않음

YOLOv10, YOLO-World, YOLOE 및 RT-DETR과 같은 specialized detection family는 현재 Ultralytics format="hailo" path를 통해 ❌ 지원되지 않습니다. Ultralytics는 검증되지 않은 HEF를 생성하는 대신 compilation 전에 이러한 task와 model family를 거부합니다.

Model familyHailo-8 / Hailo-8LHailo-10H / Hailo-15출력
YOLOv8 / YOLO11 detectionHailoRT YOLO NMS가 포함된 HEF
YOLO26 detection지원되는 runtime을 위한 NMS-free detection-head output
YOLOv8-seg / YOLO11-seginference 시 Ultralytics가 decode하는 raw segmentation tensor
YOLOv8-pose / YOLO11-poseHailo-8L에서 검증됨검증되지 않음inference 시 Ultralytics가 decode하는 raw pose tensor
YOLOv8-obb / YOLO11-obbHailo-8L에서 검증됨검증되지 않음inference 시 Ultralytics가 decode하는 raw OBB tensor
YOLOv8-cls / YOLO11-cls / YOLO26-clsHailo-8L에서 검증됨검증되지 않음On-chip softmax; HEF가 class probability를 반환합니다
YOLO26-semHailo-8L에서 검증됨검증되지 않음Logit 또는 Hailo-10H/15에서 내장된 multi-class map
YOLO26-depthHailo-8L에서 검증됨검증되지 않음Dense logit; Ultralytics가 decode하는 metric depth map

Pose, OBB, classification, YOLO26 semantic segmentation 및 YOLO26 depth estimation(Hailo-8/8L path)은 HailoRT 4.23 및 DFC 3.33을 사용하여 Hailo-8L에서 검증되었습니다. exporter는 나열된 다른 target도 허용하지만, 이러한 새로운 task path는 production에서 사용하기 전에 일치하는 compiler 및 device로 검증해야 합니다.

다음 name 값 중 하나를 선택하십시오:

nameTarget accelerator
hailo8Hailo-8
hailo8lHailo-8L
hailo10hHailo-10H
hailo15hHailo-15H
hailo15lHailo-15L

name을 생략하면 hailo8l이 기본값으로 사용됩니다. name를 deployment할 accelerator로 설정하십시오. 선택한 target에 맞는 DFC generation을 설치하십시오.

Hailo Hardware 및 SDK Generation#

Hailo accelerator family는 서로 다른 compiler generation을 사용합니다. 생성된 HEF는 target hardware와 일치해야 하므로 export를 수행하는 machine이 아니라 inference를 실행할 device에 맞게 name을 선택하십시오.

Hardware familyDFC generation
Hailo-8 / Hailo-8LDFC v3.x
Hailo-10HDFC v5.x
Hailo-15H / Hailo-15LDFC v5.x

compiler는 Linux x86_64에서 실행되며, 생성된 HEF는 HailoRT를 통해 Hailo device에서 실행됩니다. 이러한 분리를 통해 workstation 또는 Ultralytics Platform에서 compile한 후 작은 runtime artifact를 ARM 또는 x86 edge host에 deployment할 수 있습니다.

호환성 참고 사항#

Hailo compilation은 hardware-specific이며 fixed input shape을 사용합니다. 다음 제약 사항을 고려하십시오:

  • 선택한 name은 deployment accelerator와 일치해야 합니다.
  • Calibration image는 production에서 예상되는 조명, 시점, object 및 background를 대표해야 합니다.
  • 각 HEF는 fixed imgsz에 맞게 compile됩니다. 여러 resolution을 제공하려면 host에서 frame을 compiled size로 resize하거나 resolution별로 별도의 HEF를 compile하십시오.
  • Ultralytics가 model metadata에서 post-processing configuration을 생성하므로 custom class count를 지원합니다.
  • 표준 Ultralytics Detect 헤드를 사용하는 Detection 모델, YOLOv8/YOLO11 segmentation, pose 및 OBB 모델, YOLOv8/YOLO11/YOLO26 classification 모델, 그리고 YOLO26 semantic segmentation 및 depth estimation 모델을 지원합니다. YOLO26 instance segmentation, pose 및 oriented bounding box와 YOLO-World, YOLOE, YOLOv10 및 RT-DETR export는 현재 지원되지 않습니다.
  • Hailo-8/8L 및 Hailo-10H/15 artifact는 서로 다른 DFC 세대에서 컴파일되므로 상호 교환할 수 없습니다.

Calibration 및 INT8 Quantization#

Hailo HEF export는 INT8 quantization을 사용하여 YOLO 네트워크를 accelerator에 효율적으로 매핑합니다. Calibration dataset은 activation 범위를 추정하며, 모델을 재학습하거나 compilation 중 label을 요구하지 않습니다.

참고

Hailo hardware와 Dataflow Compiler는 INT4, INT8 및 INT16 precision을 지원합니다. Ultralytics format="hailo" 경로는 INT8로 컴파일하며, task에 더 넓은 범위가 필요한 경우 16-bit activation(a16)을 적용합니다.

data을 생략하면 Ultralytics는 detection에는 COCO128, semantic segmentation에는 cityscapes8, depth estimation에는 depth8과 같은 task별 lightweight calibration dataset을 사용합니다. Dense depth head는 calibration domain에 특히 민감합니다. 관련 없는 detection 이미지로 depth 모델을 calibrate하면 예측 map이 평탄해지고, domain 내 더 큰 set을 사용하면 fidelity가 향상됩니다. Custom computer vision 모델의 경우 compiler가 실제 deployment domain의 대표 이미지를 관찰할 수 있도록 data을 해당 dataset YAML로 지정합니다:

model.export(format="hailo", name="hailo8", data="my_dataset.yaml")

fraction은 calibration에 사용할 비율 또는 이미지 수를 선택합니다. [train, val, test]개의 두 항목 list는 각 split의 limit을 지정하고, 두 항목 list를 사용하면 test는 전체로 유지되며, 0은 test를 건너뜁니다. 이미지는 deployment domain을 대표하는 경우에만 많을수록 도움이 됩니다. Domain 외 이미지는 quantized accuracy를 낮추고 optimization 시간을 늘릴 수 있습니다. INT8 HEF가 원본 PyTorch 모델보다 accuracy를 잃는 경우, 모델 또는 runtime 설정을 변경하기 전에 먼저 calibration data를 개선합니다.

Model Family별 Accuracy 기대치#

Domain 내 calibration(COCO128, 128 images)을 사용하여 Hailo-8L에서 측정한 결과, INT8 HEF export는 동일한 evaluation protocol에서 다음과 같은 PyTorch mAP50 비율을 유지합니다:

모델mAP50 유지율참고
YOLOv8n~100%On-chip NMS가 적용된 DFL head
YOLO11n~96%Backbone의 Attention block은 INT8에 더 민감합니다
YOLO26n~93%End-to-end head 및 attention; confidence 참고 사항을 확인하십시오

Retention은 동일한 confidence threshold에서 두 모델을 비교합니다. YOLOv8 및 YOLO11 HEF는 export 시점의 conf(기본값 0.25)을 on-chip NMS에 내장하므로, 기본 low threshold의 PyTorch baseline과 비교하여 validation하면 precision-recall curve의 더 큰 부분이 통합되어 quantization gap이 과대평가됩니다.

Detection 외에도 segmentation, pose, OBB 및 classification exporter 경로를 동일한 Hailo-8L(DFC 3.33, HailoRT 4.23)에서 검증했습니다. 각 INT8 HEF를 domain 내 calibration을 사용하여 동일한 validation split의 PyTorch checkpoint와 비교했습니다:

태스크Metric(validation split)YOLOv8nYOLO11n
Instance segmentationmask mAP50 유지율(COCO128-seg)98.0%93.6%
포즈box mAP50 유지율(COCO8-pose)98.1%90.8%
Oriented bounding boxmAP50 유지율(DOTA128)~100%96.9%
Classificationtop-1 유지율(ImageNet val)92.6%95.4%

Segmentation, pose 및 OBB는 각 task의 기본 domain 내 set(COCO128-seg, COCO8-pose, DOTA128)으로 calibration했으며, classification은 ImageNet100으로 calibration했습니다. 이러한 기본값에서는 두 가지 주의 사항이 따릅니다. COCO8-pose는 이미지가 8장뿐이므로 pose 결과는 참고용으로 보고 production에서는 더 큰 data=을 전달해야 합니다. 또한 DOTA8은 두 모델 모두 mAP50이 100%에 가깝게 포화되므로 OBB는 DOTA128에서 측정합니다. YOLO11이 YOLOv8보다 더 많이 유지되는 유일한 task는 classification이며, 다른 task에서는 YOLO11 attention backbone이 INT8에 더 민감합니다.

Device 측정에서 다음 세 가지 실용적인 규칙을 도출할 수 있습니다:

  1. 항상 domain 내에서 calibration합니다. Domain 외 이미지로 fine-tuning하는 것은 fine-tuning을 완전히 비활성화하는 것과 같습니다. 1,238개의 domain 외 이미지로 calibration한 YOLO26n은 fine-tuning 없이 컴파일한 모델과 동일한 accuracy(85.7%)를 유지합니다. 작은 domain 내 set이 큰 domain 외 set보다 낫습니다.
  2. YOLO26 deployment에서는 conf을 약 0.05 낮춥니다. Quantization으로 YOLO26 score가 평균 약 0.05 낮아지므로, PyTorch에서 조정한 threshold를 HEF에 적용하면 유효한 detection이 누락됩니다. Device에서 conf=0.20을 사용하면 conf=0.25에서 PyTorch의 detection 수와 일치하며, 더 낮은 값(약 conf=0.15)을 사용하면 low-confidence detection이 늘어나는 대신 남은 mAP50 gap을 사실상 모두 회복합니다. Quantization은 detection의 약 20% 순위도 다시 정렬합니다. 이는 threshold로 되돌릴 수 없는 영구적인 ordering effect이지만, 이러한 재정렬이 낮은 threshold에서의 mAP50 회복을 방해하지는 않습니다.
  3. Attention penalty는 Hailo-8/8L(DFC 3.33)에서 구조적입니다. Attention block은 compiler가 제공하는 모든 mode에서 INT8 activation input을 유지하는 matmul operation으로 컴파일됩니다. 16-bit-output mode는 이 graph에서 allocation에 실패하며, 주변 layer의 precision을 높여도 도움이 되지 않습니다. Matmul이 input을 어차피 INT8로 requantize하기 때문입니다(Depthwise 및 output convolution을 16-bit으로 보호해도 테스트에서 mAP는 변하지 않았습니다). Accuracy가 우선이고 모델을 서로 교체할 수 있다면, 현재 이 환경에서는 YOLO11이 YOLO26보다 더 잘 quantize됩니다. 최신 Hailo 세대(DFC 5.x)는 더 많은 mixed-precision option을 제공하므로 결과가 다를 수 있습니다.

Export된 Artifact#

Export하면 deploy 가능한 HEF와 Ultralytics metadata가 포함된 directory가 생성됩니다:

yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json
  • *.hef은 HailoRT가 load하는 compiled model입니다.
  • metadata.yaml은 model name, task, input size, stride 및 Hailo target 정보를 보존합니다.
  • nms_config.json은 YOLOv8 및 YOLO11 detection model을 위해 생성된 HailoRT NMS configuration을 기록합니다. YOLO26 detection과 모든 non-detection task(segmentation, semantic, depth, classification, pose, OBB)는 이 file을 사용하지 않습니다.

중간 ONNX graph는 compilation 후 제거됩니다.

Hailo Hardware에서 Inference 실행#

Target device에 HailoRT를 설치합니다. Raspberry Pi AI HAT+ 및 AI HAT+ 2 사용자는 Raspberry Pi AI software guide를 따를 수 있습니다. Raspberry Pi OS에서는 두 package set을 함께 설치할 수 없으므로 hardware에 맞는 block만 실행한 후 reboot합니다.

AI HAT+(Hailo-8 / Hailo-8L)의 경우:

sudo apt install dkms
sudo apt install hailo-all
sudo reboot

AI HAT+ 2(Hailo-10H, Raspberry Pi OS Trixie 이상)의 경우:

sudo apt install dkms
sudo apt install hailo-h10-all
sudo reboot

Reboot 후 accelerator가 감지되는지 확인합니다:

hailortcli fw-control identify
참고

hailo-allhailo-h10-all package는 Raspberry Pi OS에서만 HailoRT를 설치합니다. 그 밖의 host에서는 DFC와 동일한 source인 Hailo Developer Zone에서 HailoRT package를 download하여 설치합니다.

metadata.yaml이 HEF 옆에 유지되도록 전체 export directory를 device에 복사합니다. Ultralytics는 HailoRT를 사용하여 exported directory에서 predictval를 직접 실행합니다:

from ultralytics import YOLO

model = YOLO("yolo11n_hailo_model")
results = model.predict("path/to/image.jpg")

Detection model의 경우 backend가 YOLOv8 및 YOLO11 HailoRT NMS output을 변환하고 YOLO26 one-to-one output을 자동으로 decode합니다. Raw segmentation, pose 및 OBB tensor를 decode하고, on-chip classification probability를 반환하며, Hailo-8/8L에서는 host reduction을 통해 semantic class map을 생성하고 Hailo-10H/15의 single-class head에서는 모든 map을, multi-class head에서는 on-chip ArgMax를 통해 생성합니다. TAPPAS, GStreamer 및 Raspberry Pi picamera2.devices.Hailo helper는 application-specific pipeline에 계속 사용할 수 있습니다.

GStreamer deployment의 경우 HEF를 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

Hailo Deployment Option#

HEF는 여러 Hailo runtime interface에서 동일하게 deploy 가능한 model artifact입니다. Application에 적합한 interface를 선택합니다:

Runtime option적합한 용도
HailoRT Python 또는 C/C++ APICustom application 및 inference 직접 제어
Raspberry Pi picamera2.devices.HailoRaspberry Pi의 Camera Module project
GStreamer 및 Hailo applicationReal-time video stream 및 multi-stage pipeline
hailortcliDevice check, HEF inspection 및 benchmarking

Application에서 Ultralytics class name, input size, stride 또는 기타 model 정보가 필요한 경우 metadata.yaml을 HEF와 함께 유지합니다. HEF 자체가 camera capture, visualization, tracking, alert 또는 storage를 위한 application-level logic을 대체하지는 않습니다.

Hailo Device 및 HEF 확인#

Camera 또는 video pipeline을 통합하기 전에 runtime과 accelerator를 독립적으로 확인합니다:

hailortcli fw-control identify
hailortcli parse-hef yolo11n_hailo_model/yolo11n.hef

Device 전용 performance measurement는 video decoding, image resizing, drawing 및 application I/O와 Hailo inference를 분리합니다. End-to-end latency 또는 frames per second를 추정할 때는 전체 application을 별도로 측정합니다.

다른 YOLO Export Format과 Hailo 비교#

모델을 실행할 hardware를 기준으로 export format을 선택합니다. HEF는 hardware-specific format이므로 최종 device에 이미 Hailo accelerator가 포함된 경우 선택해야 하며, general-purpose 또는 자동으로 가장 빠른 edge format으로 선택해서는 안 됩니다.

Deployment target 또는 priority권장 Ultralytics formatHailo와의 비교
기존 Hailo NPU 또는 Raspberry Pi HATHailo HEF(format="hailo")설치된 Hailo accelerator 및 HailoRT stack 사용
새로운 저전력 M.2 또는 SBC NPUDeepX더 높은 YOLO performance와 더 나은 watt당 performance를 원할 때 여기서 시작합니다
High-throughput, multi-stream edge NPUAxelera최신 accelerator hardware에서 더 높은 stream density와 throughput을 위해 평가합니다
NVIDIA GPUTensorRT별도의 NPU 대신 FP16 및 INT8 option과 함께 NVIDIA GPU kernel 사용
Intel CPU, GPU 또는 NPUOpenVINOIntel system에 이미 통합된 accelerator를 대상으로 합니다
Apple hardwareCoreMLNative Apple runtime을 통해 Apple Neural Engine, GPU 및 CPU 사용
Qualcomm Snapdragon NPUQNNExternal accelerator가 아닌 Qualcomm의 on-device NPU용으로 컴파일합니다
Rockchip NPURKNN저렴한 SBC 및 embedded system 전반에서 널리 사용됨
Ambarella CVflow SoCAmbarellaAmbarella camera 및 embedded-vision SoC용으로 컴파일합니다
Raspberry Pi AI CameraSony IMX500Host에 연결된 Hailo accelerator가 아니라 camera sensor에서 network를 실행합니다
Mobile 또는 embedded CPU/GPUNCNN전용 지원 NPU를 사용할 수 없을 때 lightweight portable runtime 제공
Portable cross-runtime deploymentONNXRuntime 간 portability를 유지합니다. HailoRT는 ONNX를 HEF로 먼저 컴파일하지 않고는 실행할 수 없습니다

NPU라는 이유만으로 Hailo가 더 빠르거나 전력 효율이 높다고 가정하지 마십시오. 새로운 M.2 deployment에서는 DeepX가 더 높은 YOLO performance와 더 나은 watt당 performance를 위한 강력한 후보이며, Axelera는 상당히 높은 multi-stream throughput을 목표로 합니다. Rockchip은 SBC 및 embedded system 전반에서 인기 있는 저비용 option입니다. Vendor TOPS 및 power 수치는 직접 비교 가능한 application benchmark가 아니므로, hardware를 구매하기 전에 후보 device에서 동일한 YOLO checkpoint, input size, accuracy, host 및 전체 video pipeline을 검증하십시오.

Hailo Computer Vision Performance 최적화#

Model 및 pipeline 선택이 compiler flag보다 중요한 경우가 많습니다:

  • 작은 YOLO model로 시작하고 accuracy에 필요한 경우에만 model size를 늘립니다.
  • Application에 중요한 object를 유지하는 가장 낮은 고정 imgsz을 선택합니다.
  • 가능하면 실제 camera와 environment에서 얻은 calibration image를 사용합니다.
  • 각 inference마다 HEF를 다시 열지 말고 frame 간에 Hailo network를 활성 상태로 유지합니다.
  • Device inference time을 preprocessing, video decoding, post-processing, visualization 및 network I/O와 분리합니다.
  • 지속적인 video workload에는 GStreamer와 같은 streaming pipeline을 사용합니다.
  • Production에서 사용하는 정확한 accelerator 및 HailoRT version에서 exported HEF를 검증합니다.

내보내기 인수#

인수유형기본값설명
namestrhailo8l대상 Hailo accelerator 아키텍처
imgszint, list640고정된 모델 입력 크기
datastrNone캘리브레이션 데이터셋 YAML입니다. 분류의 경우 데이터셋 디렉터리 또는 기본 제공 데이터셋 이름을 사용합니다. 생략하면 Ultralytics가 작업별 캘리브레이션 데이터셋을 선택합니다.
fractionfloat, int 또는 list1.0Calibration subset은 비율, 이미지 수 또는 [train, val, test] 비율/개수로 지정합니다. 두 항목으로 구성된 목록에서는 test을 전체로 유지하고 0를 건너뜁니다.
quantizeint8Hailo export는 INT8 양자화를 사용합니다
simplifyboolTrue중간 ONNX 그래프 단순화
conffloat0.25YOLOv8/YOLO11 HailoRT NMS confidence threshold
ioufloat0.7YOLOv8/YOLO11 HailoRT NMS IoU threshold

Detection export의 경우 YOLOv8 및 YOLO11은 HailoRT NMS를 사용하고, YOLO26은 NMS가 없는 one-to-one 출력을 유지합니다. Segmentation, pose 및 OBB는 raw head tensor를 사용하고, classification은 on-chip probability를 반환하며, semantic segmentation은 Hailo-8/8L 및 모든 single-class head에서 raw logit을 반환하고 multi-class Hailo-10H/15 head에서는 사전 생성된 class map을 반환합니다. Depth estimation은 raw depth logit을 반환하며, Ultralytics는 inference 시 이를 metric depth map으로 디코딩합니다. end2end은 전달하지 마십시오. 명시적 override는 거부됩니다. Dynamic shape, embedded Ultralytics NMS, FP16 및 FP32는 지원되지 않습니다.

Hailo Export 문제 해결#

Hailo Dataflow Compiler Import Error#

export에서 hailo_sdk_client이 누락되었다고 보고하는 경우, Ultralytics와 동일한 Python 환경에 대상 hardware generation에 맞는 DFC wheel을 설치하십시오. Hailo-8/8L과 Hailo-10H/15에는 서로 다른 compiler generation이 필요합니다.

지원되지 않는 Operating System 또는 Architecture#

HEF compilation은 Linux x86_64에서 지원됩니다. 로컬 컴퓨터가 macOS, Windows, Raspberry Pi 또는 다른 ARM 시스템인 경우 Ultralytics Platform을 통해 export하거나 호환되는 workstation을 사용하십시오.

Export에 오랜 시간이 걸리는 경우#

DFC optimization은 가장 많은 비용이 드는 단계입니다. Compilation 시간은 모델 크기, 입력 해상도 및 calibration data에 따라 증가합니다. 지원되는 GPU를 사용하면 optimization을 가속할 수 있지만, CPU만 사용하는 compilation은 상당히 느릴 수 있습니다.

Quantized Model Accuracy Drops#

Production input과 유사하고 중요한 object, scale, lighting condition 및 background를 포함하는 calibration image를 사용하십시오. 배포 전에 동일한 validation set에서 원본 PyTorch 모델과 export된 HEF를 비교하십시오. 양호한 calibration을 수행하더라도 family에 따라 중간 정도의 격차가 남을 수 있습니다. 측정된 baseline은 Model Family별 Accuracy Expectations을 참조하십시오.

HEF가 Device에서 로드되지 않는 경우#

name이 실제 Hailo architecture와 일치하는지, 그리고 device driver, firmware 및 HailoRT package가 서로 호환되는지 확인하십시오. hailortcli parse-hef을 사용하여 artifact를 검사하고 hailortcli fw-control identify로 accelerator를 확인하십시오.

Output Parsing이 올바르지 않아 보이는 경우#

Ultralytics가 일치하는 YOLOv8, YOLO11 또는 YOLO26 post-processing path를 선택할 수 있도록 metadata.yaml을 HEF 옆에 보관하십시오. Custom HailoRT application도 마찬가지로 post-processing을 export된 model family에 맞춰야 합니다.

요약#

Ultralytics Hailo export는 학습된 YOLO 모델에서 배포 가능한 HEF로 직접 연결되는 경로를 제공합니다:

  1. YOLOv8, YOLO11 또는 YOLO26 detection 또는 classification 모델, YOLOv8/YOLO11 segmentation, pose 또는 OBB 모델, 또는 YOLO26 semantic segmentation 또는 depth estimation 모델을 로드합니다.
  2. format="hailo"을 사용하여 export하고 대상 architecture를 선택합니다.
  3. 일치하는 DFC를 사용하여 로컬에서 calibration 및 compilation을 수행하거나, Ultralytics Platform에서 managed export를 사용합니다.
  4. HEF와 metadata.yaml을 Hailo 기반 edge device에 복사합니다.
  5. HailoRT, Raspberry Pi Picamera2 또는 GStreamer video pipeline을 사용하여 inference를 실행합니다.

다른 computer vision deployment target은 Export mode, Benchmark modeintegrations guide를 참조하십시오. 관련 hardware guide로는 DeepX, Axelera, ONNX, OpenVINO, TensorRT, NCNN, RKNN, Sony IMX500Qualcomm QNN이 있습니다.

FAQ#

  • 아니요. 지원되는 Linux x86_64 시스템에서 DFC를 실행하고, 생성된 HEF를 Raspberry Pi에 배포하십시오.

  • 지원되는 GPU를 사용하면 DFC optimization 시간을 크게 줄일 수 있습니다. CPU compilation도 가능하지만 상당히 오래 걸릴 수 있습니다.

  • Direct export는 standard YOLOv8, YOLO11 또는 YOLO26 detection head를 사용하는 detection 모델, YOLOv8/YOLO11 segmentation, pose 및 OBB 모델, 그리고 YOLOv8/YOLO11/YOLO26 classification 모델을 지원합니다. 여기에는 이러한 standard architecture를 기반으로 구축된 custom-trained 모델도 포함됩니다. YOLO26 semantic segmentation 및 depth estimation 모델도 지원됩니다. YOLO26 instance segmentation, pose 및 OBB와 YOLOv10, YOLO-World, YOLOE 및 RT-DETR은 검증되지 않은 HEF를 생성하는 대신 거부됩니다.

  • 예. 동일한 format="hailo" command를 custom .pt weights와 함께 사용하고, representative INT8 calibration을 위해 data를 통해 training dataset YAML을 전달하십시오. Class name과 class count는 model metadata에서 읽습니다.

  • 각 HEF는 고정된 input shape에 맞춰 compilation되므로 단일 HEF의 크기를 동적으로 조정할 수 없습니다. 실제로는 host에서 input을 compiled size로 resize하거나, 필요한 resolution별로 여러 HEF를 compilation할 수 있습니다. deployment pipeline에 맞추도록 export 시 imgsz을 선택하십시오.

  • YOLO26은 NMS가 없는 one-to-one detection head를 사용합니다. Ultralytics는 YOLOv8 및 YOLO11에 사용되는 HailoRT YOLOv8-style NMS를 연결하는 대신 이러한 output tensor를 직접 compilation합니다.

  • Hailo Dataflow Compiler는 Linux x86_64 build machine에서 모델을 hardware-specific HEF로 변환하고 양자화합니다. HailoRT는 target device에서 해당 HEF를 로드하고 실행합니다.

  • compiled HEF를 Hailo runtime에 배포하십시오. ONNX는 export 중에 사용되는 intermediate representation이며 compilation이 성공하면 제거됩니다.

  • Hailo Developer Zone에서 hardware generation에 맞는 compiler wheel을 다운로드하십시오. Compiler는 HEF를 생성할 때만 필요하며, HailoRT는 target accelerator에서 이를 실행합니다.

댓글