Meet YOLO26: next-gen vision AI.

针对 Ultralytics YOLO 模型的 Hailo 导出

并非直接的 Ultralytics 导出格式

Hailo HEF 并未被官方支持作为直接的 Ultralytics model.export(format="hailo") 目标。以下工作流首先导出为 ONNX,然后使用 Hailo 的外部 Dataflow Compiler 工具链来生成 .hef 文件。如果希望获得比旧版 Hailo HEF 部署更高的能效比,请改用较新的直接 Ultralytics 导出格式,例如 Axelera AIDeepX

Hailo 工具链使用 HEF 文件适配嵌入式平台,包括 Raspberry Pi AI KitAI HAT+、工业相机、边缘网关和 AI PC。

本指南介绍如何使用 Hailo Dataflow Compiler (DFC) SDK 将 Ultralytics YOLO 检测模型导出为 Hailo 的 HEF (Hailo Executable Format)。该工作流从 YOLO .pt 模型开始,导出为 ONNX,使用 Hailo 工具进行编译,最终生成适配 Hailo-8、Hailo-8L 和 Hailo-15 加速器的 .hef 文件。

何时使用 Hailo HEF

HEF 是由 HailoRT 在 Hailo 目标设备上使用的已编译成品。仅当你的部署硬件明确要求 Hailo HEF 时,才使用本指南。如果你还在选择边缘硬件或导出目标,请从较新的直接 Ultralytics 导出格式开始,例如 Axelera AIDeepX,它们提供了受支持的 model.export(...) 工作流,且能效比优于旧版 Hailo 部署。

在部署角色方面,HEF 与针对 Rockchip NPU 的 RKNN、针对 Raspberry Pi AI 相机的 IMX500 以及针对 Snapdragon NPU 的 Qualcomm QNN 等特定硬件格式类似,但它目前并非由 Ultralytics 直接生成。

以下情况适用此工作流:

  • Raspberry Pi AI Kit 兼容性:Hailo-8L 用于官方 Raspberry Pi AI Kit 和 AI HAT+。
  • HailoRT 后处理:HailoRT 可以在已编译的推理流水线中包含 YOLO 非极大值抑制
  • INT8 编译:Hailo DFC 使用代表性校准图像对模型进行量化,以生成适配 Hailo 硬件的 INT8 图。了解有关 模型量化 的更多信息。

Hailo HEF 导出格式

HEF is a hardware-specific executable generated by the Hailo Dataflow Compiler. It contains the quantized model graph, memory allocation, scheduling, and optional post-processing configured for a target Hailo architecture. Unlike standard YOLO Export mode formats that are produced directly by model.export(format=...), HEF compilation currently uses a two-stage flow:

  1. 使用 Ultralytics 将 YOLO 导出为 ONNX
  2. 使用 Hailo DFC 工具对 ONNX 模型进行解析、优化、量化并编译为 HEF。

完整工作流展开为以下流水线:

YOLO (.pt) -> ONNX -> HAR (parse) -> HAR (optimize/quantize) -> HEF (compile)
  1. 导出为 ONNX:使用 Ultralytics 导出模式
  2. 解析:将 ONNX 模型解析为 Hailo 的中间 HAR 格式
  3. 加载模型脚本:使用带有归一化和后处理指令的 (.alls) 文件
  4. 校准和量化:使用代表性图像进行操作
  5. 编译:生成可部署的 HEF 文件

支持的任务

本指南侧重于 Ultralytics YOLO 目标检测模型,因为 Hailo 模型脚本和 NMS 配置是针对检测头特有的。

任务支持情况
目标检测✅ 是
实例分割❌ 否
语义分割❌ 否
姿态估计❌ 否
OBB 检测❌ 否
分类❌ 否

对于实例分割、语义分割、姿态估计、OBB 和分类部署,请在 导出模式 表中对比其他边缘格式,或在目标运行时支持该任务的情况下使用通用 ONNX 流水线。

兼容性说明

Hailo 导出兼容性取决于模型头、输入图像大小、类别数量、Hailo 架构、模型脚本 (.alls) 以及 NMS 配置。来自 Hailo Model Zoo 的静态文件是很有用的参考,但它们并非通用模板。例如,为一个 COCO 80 类 YOLO11n 模型创建的 NMS JSON 对于一个 3 类自定义模型或不同的固定 imgsz 而言是不正确的。

范围预期支持备注
YOLOv8 / YOLO11 检测,标准模型✅ 良好共享解耦检测头;.alls、结束节点和 NMS 配置仍需匹配导出的计算图和固定的 imgsz
自定义 YOLOv8 / YOLO11 检测✅ 可能需要根据类别数量、步长和检测头布局生成特定于模型的 NMS 配置;静态 Model Zoo JSON 将无法匹配。
YOLOv9 检测⚠️ 需验证具有相似的检测头模式,但在将其视为受支持之前,应对编译和输出解析进行测试。
YOLOv10 / YOLO26 端到端检测❌ 不支持端到端/无 NMS 的导出不匹配 Hailo NMS 后处理路径;如需手动测试,请使用传统检测头。
动态或任意图像大小❌ 不支持Hailo 编译使用固定的输入形状;.alls 和 NMS 设置必须匹配导出的 imgsz

安装

第 1 步:安装 Ultralytics

pip install ultralytics

第 2 步:安装 Hailo DFC SDK

Hailo DFC 是解析、优化和编译所必需的。从 Hailo Developer Zone 下载 Python wheel(需免费注册)并进行安装:

pip install /path/to/hailo_sdk_client-*.whl
注意

Hailo DFC SDK 需要 Linux x86_64 机器。导出和编译不能在 ARM 设备(如 Raspberry Pi)上执行。请将生成的 .hef 文件复制到你的 Hailo 驱动设备上,以便使用 HailoRT 进行部署。

YOLO11n HEF 导出示例

以下脚本将 YOLO11n 检测模型以 640 像素的固定输入大小从 .pt 编译为 .hef。它使用 Ultralytics 导出为 ONNX,然后使用 COCO128 作为小型校准数据集,通过 Hailo DFC 进行编译。

在运行脚本之前,请从 Hailo Model Zoo 下载匹配的 YOLO11n NMS 配置文件,或为您模型创建自己的 Hailo NMS JSON。将此脚本用作 YOLO11n 的已知起点;自定义模型需要匹配的结束节点、.alls 指令和 NMS 设置。

完整流水线
import random

import numpy as np
from hailo_sdk_client import ClientRunner
from PIL import Image

from ultralytics import YOLO
from ultralytics.data.utils import check_det_dataset
from ultralytics.utils import DATASETS_DIR

# Configuration
MODEL = "yolo11n"
HW_ARCH = "hailo8"  # hailo8 | hailo8l | hailo15h
IMGSZ = 640
CALIB_IMAGES = 128
NMS_CONFIG = "yolo11n_nms_config.json"  # Download or generate for your exact model.

# YOLO11 detection head end nodes. See "Supported Models and End Nodes" for YOLOv8 and other families.
END_NODES = [
    "/model.23/cv2.0/cv2.0.2/Conv",
    "/model.23/cv3.0/cv3.0.2/Conv",
    "/model.23/cv2.1/cv2.1.2/Conv",
    "/model.23/cv3.1/cv3.1.2/Conv",
    "/model.23/cv2.2/cv2.2.2/Conv",
    "/model.23/cv3.2/cv3.2.2/Conv",
]

# Step 1: Export to ONNX
model = YOLO(f"{MODEL}.pt")
model.export(format="onnx", imgsz=IMGSZ, opset=11)  # creates an ONNX file named after MODEL

# Step 2: Parse ONNX with Hailo DFC
# The DFC prints the detected end nodes after parsing; use them if unsure.
runner = ClientRunner(hw_arch=HW_ARCH)
runner.translate_onnx_model(f"{MODEL}.onnx", end_node_names=END_NODES)

# Step 3: Load model script (normalization + HailoRT NMS)
# The conv layer names are generated by DFC and can change for other model sizes/families.
alls = (
    "normalization1 = normalization([0.0, 0.0, 0.0], [255.0, 255.0, 255.0])\n"
    "change_output_activation(conv54, sigmoid)\n"
    "change_output_activation(conv65, sigmoid)\n"
    "change_output_activation(conv80, sigmoid)\n"
    f'nms_postprocess("{NMS_CONFIG}", meta_arch=yolov8, engine=cpu)\n'
    "allocator_param(width_splitter_defuse=disabled)"
)
runner.load_model_script(alls)

# Step 4: Build calibration dataset (auto-downloads COCO128)
check_det_dataset("coco128.yaml")
calib_dir = DATASETS_DIR / "coco128" / "images" / "train2017"
image_files = list(calib_dir.glob("*.jpg")) + list(calib_dir.glob("*.png"))
if not image_files:
    raise FileNotFoundError(f"No calibration images found in {calib_dir}")

calibset = np.zeros((CALIB_IMAGES, IMGSZ, IMGSZ, 3), dtype=np.float32)
for i in range(CALIB_IMAGES):
    img = Image.open(random.choice(image_files)).convert("RGB").resize((IMGSZ, IMGSZ))
    calibset[i] = np.array(img, dtype=np.float32)

# Step 5: Optimize and quantize
runner.optimize(calibset)
runner.save_har(f"{MODEL}.o.har")  # optional intermediate HAR

# Step 6: Compile to HEF
hef = runner.compile()
with open(f"{MODEL}.hef", "wb") as f:
    f.write(hef)

print(f"Compiled HEF saved to: {MODEL}.hef")

生成的 HEF 文件(例如 yolo11n.hef)已准备好在兼容的 Hailo 设备上部署。如果您正在为 Raspberry Pi AI Kit 编译,请在运行编译步骤之前设置 HW_ARCH = "hailo8l"

步骤详解

第 1 步:导出为 ONNX

Ultralytics 将你的训练模型导出为 ONNX 格式,Hailo DFC 将其作为输入读取。设置 opset=11 以实现广泛的 DFC 兼容性。

from ultralytics import YOLO

MODEL = "yolo11n"
model = YOLO(f"{MODEL}.pt")
model.export(format="onnx", imgsz=640, opset=11)

第 2 步:解析 ONNX 模型

translate_onnx_model 调用将 ONNX 计算图转换为 Hailo 的中间 HAR 表示。end_node_names 列表告诉 DFC 在 NMS 之前切断计算图的位置,以便 Hailo 可以挂载其自身的硬件后处理。

from hailo_sdk_client import ClientRunner

runner = ClientRunner(hw_arch="hailo8")
runner.translate_onnx_model(f"{MODEL}.onnx", end_node_names=END_NODES)
查找结束节点

DFC 在解析后会打印一个建议:

[info] In order to use HailoRT post-processing capabilities, these end node names should be used: ...

如果您不确定使用哪些节点,或者您正在使用自定义或不太常见的架构,请复制这些节点名称。

第 3 步:加载模型脚本

模型脚本 (.alls) 用于配置输入归一化、输出激活和 NMS 后处理。meta_arch=yolov8 设置同时适用于 YOLOv8 和 YOLO11,因为它们共享相同的检测头布局。

MODEL = "yolo11n"
NMS_CONFIG = "yolo11n_nms_config.json"
alls = (
    "normalization1 = normalization([0.0, 0.0, 0.0], [255.0, 255.0, 255.0])\n"
    "change_output_activation(conv54, sigmoid)\n"
    "change_output_activation(conv65, sigmoid)\n"
    "change_output_activation(conv80, sigmoid)\n"
    f'nms_postprocess("{NMS_CONFIG}", meta_arch=yolov8, engine=cpu)\n'
    "allocator_param(width_splitter_defuse=disabled)"
)
runner.load_model_script(alls)
注意

The change_output_activation layer names (conv54, conv65, conv80) are assigned by the DFC during parsing and are model-specific. If you are compiling a different model size or architecture, check the DFC output for the correct names, or use a predefined .alls file from the Hailo Model Zoo.

NMS_CONFIG 文件也是特定于模型的。使用与你导出的模型匹配的配置,或从 Hailo Model Zoo 中找到最接近的 YOLO 变体配置开始。

engine=cpu 通过主机 CPU 上的 HailoRT 运行 NMS。仅对 Hailo 文档明确说明由目标硬件和 SDK 版本支持的模型/脚本组合使用 engine=nn_core

如果您希望在应用程序代码中完全运行 NMS,请移除 nms_postprocess 行。如果这样做,请更新推理解析器,因为 HEF 将输出原始检测头张量,而不是分组的 NMS 检测结果。

第 4 步:构建校准数据集

INT8 量化需要一组代表性图像。以下脚本使用 COCO128,Ultralytics 会通过 check_det_dataset 自动下载该数据集:

from ultralytics.data.utils import check_det_dataset
from ultralytics.utils import DATASETS_DIR

check_det_dataset("coco128.yaml")  # downloads to DATASETS_DIR if not present
calib_dir = DATASETS_DIR / "coco128" / "images" / "train2017"
提示

校准时至少使用 64 张图像。更多图像通常能提高量化质量。为获得最佳结果,请使用来自你部署领域的数据集,而不是 COCO128。

第 5 步:优化和量化

runner.optimize(calibset)
runner.save_har(f"{MODEL}.o.har")  # optional intermediate checkpoint

此步骤应用量化感知微调和层噪声分析。强烈建议使用 GPU;如果没有 GPU,此步骤可能需要数小时。

第 6 步:编译为 HEF

hef = runner.compile()
with open(f"{MODEL}.hef", "wb") as f:
    f.write(hef)

支持的模型和结束节点

对于检测模型,end_node_names 标识了 Hailo 在挂载其 NMS 后处理之前应编译的 ONNX 检测头输出。这些名称因架构而异,并且当导出的计算图发生变化时可能会改变。

YOLO11 和 YOLOv8

YOLO11 和 YOLOv8 共享相同的解耦检测头。两个系列之间的层索引相差 1:

模型系列检测头层结束节点模式
YOLO11 (全部)model.23/model.23/cv2.0/cv2.0.2/Conv (6 个节点)
YOLOv8 (全部)model.22/model.22/cv2.0/cv2.0.2/Conv (6 个节点)

YOLO11 结束节点 (所有尺寸:n, s, m, l, x):

END_NODES = [
    "/model.23/cv2.0/cv2.0.2/Conv",
    "/model.23/cv3.0/cv3.0.2/Conv",
    "/model.23/cv2.1/cv2.1.2/Conv",
    "/model.23/cv3.1/cv3.1.2/Conv",
    "/model.23/cv2.2/cv2.2.2/Conv",
    "/model.23/cv3.2/cv3.2.2/Conv",
]

YOLOv8 结束节点 (所有尺寸:n, s, m, l, x):

END_NODES = [
    "/model.22/cv2.0/cv2.0.2/Conv",
    "/model.22/cv3.0/cv3.0.2/Conv",
    "/model.22/cv2.1/cv2.1.2/Conv",
    "/model.22/cv3.1/cv3.1.2/Conv",
    "/model.22/cv2.2/cv2.2.2/Conv",
    "/model.22/cv3.2/cv3.2.2/Conv",
]

其他架构

对于其他检测架构,请先在不使用 end_node_names 的情况下运行解析步骤,从 DFC 日志输出中读取建议的节点,然后使用这些节点重新运行:

# First pass: let the DFC suggest end nodes
runner = ClientRunner(hw_arch=HW_ARCH)
runner.translate_onnx_model(f"{MODEL}.onnx")
# Check the printed log for: "[info] In order to use HailoRT post-processing..."

许多 YOLO 变体的预定义 .alls 脚本和 NMS 配置文件可在 Hailo Model Zoo 中找到。

支持的硬件架构

架构设备峰值算力 (厂商规格)常见用例
hailo8Hailo-826 TOPSHailo 加速卡
hailo8lHailo-8L13 TOPSRaspberry Pi AI Kit
hailo15hHailo-15H20 TOPSHailo-15 目标设备

在编译之前,请设置脚本中的 HW_ARCH 以匹配你的目标设备。

在 Hailo 硬件上运行推理

一旦你获得了 .hef 文件,将其复制到你的 Hailo 支持设备上,并使用 HailoRT Python API (hailo_platform 软件包) 运行推理。与 DFC 导出步骤不同,推理直接在边缘设备上运行。

注意

下面的推理代码是在 Hailo 支持的设备 (例如 Raspberry Pi + AI Kit) 上运行,而不是在用于编译的 x86 机器上运行。

第 1 步:在设备上安装 HailoRT

在目标设备上,安装 HailoRT 和 Python 绑定。对于 Raspberry Pi AI Kit 和 AI HAT+ 用户,官方 Raspberry Pi AI 软件指南 通过以下命令安装 HailoRT、设备驱动程序和 Python 绑定:

sudo apt install dkms
sudo apt install hailo-all

对于非 Raspberry Pi 的 Hailo 设备,请从 Hailo 开发者专区 安装与你的设备、驱动程序和 SDK 版本匹配的 HailoRT 软件包。

AI HAT+ 2 设备使用不同的 Raspberry Pi 软件包 (hailo-h10-all) 和 Hailo-10H 工作流程。请遵循针对该硬件代次的 Raspberry Pi AI 软件指南。

第 2 步:快速完整性检查

在运行 Python 推理之前,请确认 Hailo 设备已被识别:

hailortcli fw-control identify

你应该能看到打印出的设备类型、固件版本和序列号。

第 3 步:运行推理

下面的脚本使用编译好的 HEF 文件和 hailo_platform Python API 对单张图像运行目标检测。它负责处理预处理、推理以及从 HailoRT NMS 输出中绘制边界框。

推理脚本
import numpy as np
from hailo_platform import (
    HEF,
    ConfigureParams,
    FormatType,
    HailoStreamInterface,
    InferVStreams,
    InputVStreamParams,
    OutputVStreamParams,
    VDevice,
)
from PIL import Image, ImageDraw

# Configuration
MODEL = "yolo11n"
HEF_PATH = f"{MODEL}.hef"  # path to your compiled HEF file
SOURCE = "bus.jpg"  # image path
IMGSZ = 640
CONF = 0.25

COCO_NAMES = [
    "person",
    "bicycle",
    "car",
    "motorcycle",
    "airplane",
    "bus",
    "train",
    "truck",
    "boat",
    "traffic light",
    "fire hydrant",
    "stop sign",
    "parking meter",
    "bench",
    "bird",
    "cat",
    "dog",
    "horse",
    "sheep",
    "cow",
    "elephant",
    "bear",
    "zebra",
    "giraffe",
    "backpack",
    "umbrella",
    "handbag",
    "tie",
    "suitcase",
    "frisbee",
    "skis",
    "snowboard",
    "sports ball",
    "kite",
    "baseball bat",
    "baseball glove",
    "skateboard",
    "surfboard",
    "tennis racket",
    "bottle",
    "wine glass",
    "cup",
    "fork",
    "knife",
    "spoon",
    "bowl",
    "banana",
    "apple",
    "sandwich",
    "orange",
    "broccoli",
    "carrot",
    "hot dog",
    "pizza",
    "donut",
    "cake",
    "chair",
    "couch",
    "potted plant",
    "bed",
    "dining table",
    "toilet",
    "tv",
    "laptop",
    "mouse",
    "remote",
    "keyboard",
    "cell phone",
    "microwave",
    "oven",
    "toaster",
    "sink",
    "refrigerator",
    "book",
    "clock",
    "vase",
    "scissors",
    "teddy bear",
    "hair drier",
    "toothbrush",
]

# Load HEF and connect to device
hef = HEF(HEF_PATH)
params = VDevice.create_params()
target = VDevice(params)

configure_params = ConfigureParams.create_from_hef(hef, interface=HailoStreamInterface.PCIe)
network_groups = target.configure(hef, configure_params)
network_group = network_groups[0]
network_group_params = network_group.create_params()

# Setup I/O virtual streams
input_vstreams_params = InputVStreamParams.make(network_group, quantized=False, format_type=FormatType.FLOAT32)
output_vstreams_params = OutputVStreamParams.make(network_group, quantized=False, format_type=FormatType.FLOAT32)

# Preprocess
orig = Image.open(SOURCE).convert("RGB")
ow, oh = orig.size
resized = orig.resize((IMGSZ, IMGSZ))
input_data = np.expand_dims(np.array(resized, dtype=np.float32), axis=0)  # (1,640,640,3)
input_name = hef.get_input_vstream_infos()[0].name

# Inference
with InferVStreams(network_group, input_vstreams_params, output_vstreams_params) as pipeline:
    with network_group.activate(network_group_params):
        pipeline.send({input_name: input_data})
        raw = pipeline.recv()

# Parse HailoRT NMS output and draw results
# When compiled with nms_postprocess the HEF outputs detections grouped by
# class: shape (batch, num_classes, max_dets, 5) where 5 = [y1,x1,y2,x2,score]
draw = ImageDraw.Draw(orig)
output_key = next(iter(raw.keys()))
batch_dets = raw[output_key][0]  # shape: (num_classes, max_dets, 5)

for cls_idx, cls_dets in enumerate(batch_dets):
    for det in cls_dets:
        score = float(det[4])
        if score < CONF:
            continue
        y1, x1, y2, x2 = det[:4]
        # Scale from model coords (0-640) back to original image size
        x1 = int(x1 * ow / IMGSZ)
        y1 = int(y1 * oh / IMGSZ)
        x2 = int(x2 * ow / IMGSZ)
        y2 = int(y2 * oh / IMGSZ)
        label = f"{COCO_NAMES[cls_idx]} {score:.2f}"
        draw.rectangle([x1, y1, x2, y2], outline="red", width=2)
        draw.text((x1 + 2, y1 + 2), label, fill="red")

orig.save("output.jpg")
print("Saved output.jpg")
提示

The detection output format assumes the HEF was compiled with nms_postprocess in the .alls script. If you compiled without NMS, the raw outputs are the 6 detection head tensors and you must run NMS in your application separately.

Raspberry Pi AI Kit 和 AI HAT+

Raspberry Pi AI Kit 和 13 TOPS AI HAT+ 使用 Hailo-8L。要使用任一设备,请:

  1. 在 x86 机器上编译 HEF 之前,设置 HW_ARCH = "hailo8l"
  2. .hef 复制到你的 Raspberry Pi。
  3. 按照 官方 Raspberry Pi AI 软件指南 安装 HailoRT。
  4. 运行上面的推理脚本。

对于在 Raspberry Pi 上进行的基于摄像头的推理,picamera2 Hailo 示例 提供了可用于实时检测摄像头模块的现成脚本。你也可以在 Coral Edge TPU on Raspberry Pi 指南Sony IMX500 集成指南 中比较 Raspberry Pi 的部署路径。

使用 TAPPAS 进行视频推理

对于高吞吐量视频管道,TAPPAS 提供了可通过 Hailo 芯片实时流式传输视频的 GStreamer 元素:

MODEL=yolo11n
gst-launch-1.0 filesrc location=video.mp4 ! decodebin ! \
  hailonet hef-path=${MODEL}.hef ! \
  hailofilter function-name=yolov8 ! \
  hailooverlay ! autovideosink

有关完整的管道配置选项,请参阅 TAPPAS 文档

总结

本指南涵盖了将 Ultralytics YOLO 检测模型导出为 Hailo HEF 格式的完整工作流程:

  1. 使用 Ultralytics 导出为 ONNX (model.export(format="onnx"))。
  2. 使用 Hailo DFC 解析 ONNX 模型并指定检测头终端节点。
  3. 通过模型脚本配置归一化和 NMS。
  4. 使用校准数据集(通过 Ultralytics 使用 COCO128)进行量化。
  5. 编译为适用于 Hailo-8、Hailo-8L 或 Hailo-15 的 .hef 文件。

欲了解更多详情,请参阅 Hailo 开发者专区Hailo 文档Hailo Model Zoo。有关其他 Ultralytics 导出目标,请参阅相关的 ONNXOpenVINOTensorRTNCNNTFLite Edge TPURKNNSony IMX500Qualcomm QNN 指南。若要跨格式比较导出模型的速度和精度,请使用 Benchmark 模式。有关格式和选项的完整列表,请访问 Export 模式 文档和 集成指南页面

常见问题解答 (FAQ)

支持哪些 Hailo 设备?

Hailo DFC 支持 Hailo-8 (hailo8)、Hailo-8L (hailo8l) 和 Hailo-15H (hailo15h)。请参阅 支持的硬件架构 表以获取匹配的 HW_ARCH 值。

可以导出哪些 Ultralytics 模型?

本指南重点介绍检测模型。请参阅 支持的任务 获取任务层级的范围,参阅 兼容性说明 获取模型兼容性限制,参阅 支持的模型和终端节点 获取 YOLO11 和 YOLOv8 终端节点示例。

为什么模型脚本对 YOLO11 使用 meta_arch=yolov8

YOLO11 使用与 YOLOv8 相同的解耦检测头架构。Hailo DFC 对这两个模型家族的 NMS 配置均使用 meta_arch=yolov8

优化步骤是否需要 GPU?

强烈建议在 runner.optimize() 中使用 GPU 进行量化感知微调。如果没有 GPU,该过程仍然可行,但速度会慢得多(使用 GPU 大约需要 10-20 分钟,而没有 GPU 则需要数小时)。

如何找到模型的正确终端节点?

Run runner.translate_onnx_model(...) without specifying end_node_names, then use the suggested detection-head nodes printed by the DFC. See Other Architectures for the example command.

我在哪里可以获得 Hailo DFC SDK 和 NMS 配置文件?

Hailo DFC SDK Python wheel 可从 Hailo 开发者专区 获取,而预定义的 .alls 脚本和 NMS 配置文件可从 Hailo Model Zoo 获取。

评论