Ultralytics YOLO27:

Экспорт Hailo для моделей Ultralytics YOLO#

Ускорители Hailo AI запускают скомпилированные модели в формате исполняемых файлов Hailo (HEF) на периферийных устройствах, таких как AI HAT+ и AI HAT+ 2 для Raspberry Pi. Ultralytics экспортирует модели YOLO для обнаружения, сегментации, семантической сегментации, оценки глубины, классификации, определения позы и OBB напрямую в HEF с помощью компилятора потока данных Hailo (DFC).

Развёртывание на Hailo предназначено для компьютерного зрения на периферии: камер, роботов, промышленных систем, шлюзов и других устройств, которым нужно локально обнаруживать объекты, не отправляя каждый кадр в облако. Скомпилированный файл HEF содержит квантованную сеть, распределение ресурсов оборудования, планирование и дополнительную постобработку HailoRT, необходимые выбранному ускорителю.

Hailo edge AI ecosystem for Ultralytics YOLO

Сравнение новых периферийных ускорителей

Для развёртывания на новом оборудовании также оцени DeepX, Axelera и Rockchip. DeepX — более подходящий вариант, если важны высокая производительность YOLO и эффективность на ватт, а Axelera ориентирована на развёртывания с высокой пропускной способностью. Rockchip также широко используется в недорогих одноплатных компьютерах и встроенных системах.

Зачем развёртывать Ultralytics YOLO на Hailo?#

Сочетание Ultralytics YOLO с нейропроцессорным модулем (NPU) Hailo позволяет перейти от обучения модели к инференсу на периферии. Типичные сценарии использования:

  • Умные камеры и видеоаналитика: запускай обнаружение объектов в реальном времени рядом с камерой для задач безопасности, розничной торговли, управления дорожным движением и подсчёта присутствующих.
  • Робототехника и автономные системы: обнаруживай людей, транспортные средства, посылки, инструменты или препятствия без постоянного подключения к облаку.
  • Промышленное компьютерное зрение: развёртывай пользовательские модели YOLO для инспекции, подсчёта, контроля безопасности и качества.
  • Проекты ИИ на Raspberry Pi: добавляй ускоренный инференс компьютерного зрения в системы Raspberry Pi с помощью AI HAT+ или AI HAT+ 2.
  • Периферийные шлюзы и ИИ-ПК: обрабатывай локально несколько потоков видео или данных датчиков, снижая требования к пропускной способности сети и облачным вычислительным ресурсам.

Локальный инференс может повысить конфиденциальность и сократить время отклика, поскольку изображения остаются на устройстве развёртывания. Фактические пропускная способность, задержка и энергопотребление зависят от размера модели YOLO, разрешения входных данных, архитектуры Hailo, хост-системы и конвейера приложения.

Как работает экспорт для Hailo#

Ultralytics выполняет весь процесс экспорта через format="hailo":

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

Экспортёр автоматически выполняет следующие этапы:

  1. Экспортирует статичный граф ONNX с настройками, совместимыми с компилятором.
  2. Выбирает выходы голов модели в соответствии с её архитектурой.
  3. Формирует инструкции по нормализации, активации и постобработке.
  4. Создаёт репрезентативный поток данных для калибровки и квантует модель до INT8.
  5. Компилирует оптимизированный граф для выбранного ускорителя Hailo.
  6. Сохраняет HEF с метаданными Ultralytics и удаляет промежуточный файл ONNX.

Для моделей обнаружения YOLOv8 и YOLO11 в скомпилированном конвейере используется YOLO NMS из HailoRT. YOLO26 компилирует необработанные тензоры голов обнаружения: Ultralytics применяет NMS к выходам по умолчанию «один ко многим» или декодирует выходы «один к одному» без NMS с помощью nms=False. Для сегментации, поз и OBB в YOLOv8/YOLO11 компилируются необработанные тензоры голов, которые Ultralytics декодирует при инференсе; для классификации YOLOv8/YOLO11/YOLO26 softmax выполняется на чипе, поэтому HEF сразу возвращает вероятности классов. Для семантической сегментации YOLO26 экспортёр учитывает ускоритель: Hailo-8/8L (DFC v3.x) возвращают логиты классификатора для апсемплинга и редукции на хосте, а Hailo-10H/15 (DFC v5.x) компилируют многоклассовые головы ArgMax на чипе и возвращают компактную карту классов. Для одноклассовых голов на всех целевых устройствах используются логиты на хосте, поскольку для них требуется пороговое значение, а не ArgMax. Для моделей глубины YOLO26 в a16 компилируется плотный свёрточный слой логитов, а карту метрической глубины восстанавливает хост (выполняя clamp/exp и обученную логарифмически-аффинную калибровку после головы), поэтому квантователь сохраняет максимальный диапазон необработанных логитов. Тебе не нужно искать конечные узлы ONNX, писать скрипт модели Hailo (.alls) или вручную создавать JSON для NMS.

Установка#

Установи Ultralytics и скачай wheel DFC для целевого оборудования с портала Hailo Developer Zone (требуется бесплатная регистрация):

pip install ultralytics
pip install /path/to/hailo_dataflow_compiler-*.whl
Примечание

Для компиляции Hailo требуется Linux x86_64. Скомпилируй модель на поддерживаемой рабочей станции, затем скопируй выходную директорию на целевое устройство. Для инференса DFC не требуется.

В Hailo-8 и Hailo-8L используется DFC v3.x. В Hailo-10H и Hailo-15 используется DFC v5.x. Установи поколение компилятора, соответствующее целевому ускорителю.

Экспорт на Ultralytics Platform

Ultralytics Platform обеспечивает управляемый экспорт для Hailo, поэтому локальная учётная запись Hailo и установка DFC не нужны.

Экспорт модели Hailo HEF#

Используй format="hailo" и выбери целевой ускоритель с помощью name:

from ultralytics import YOLO

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

Эквивалентная команда CLI:

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

Экспорт для Hailo поддерживает только INT8. Если параметр data не указан, Ultralytics автоматически скачает набор данных для калибровки, соответствующий задаче. Для пользовательских моделей используй репрезентативные обучающие или валидационные изображения:

Для максимальной точности используй не менее 1 024 калибровочных изображений

Ultralytics принудительно задаёт уровень оптимизации DFC 2 и настраивает дообучение с учётом фактического размера калибровочного набора данных. Hailo рекомендует не менее 1 024 разнообразных изображений; встроенные облегчённые наборы данных компилируются на уровне 2, но могут не соответствовать условиям эксплуатации. Для экспорта HEF в production передай репрезентативный набор данных через data="path/to/dataset.yaml".

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

Компиляция выполняется с фиксированной формой входных данных. Задай imgsz равным разрешению, которое будет использоваться на устройстве:

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

Поддерживаемые модели и оборудование#

Экосистема Hailo охватывает широкий спектр задач компьютерного зрения, но экспортёр Ultralytics format="hailo" сейчас проверяет стандартные головы обнаружения YOLO, сегментации, семантической сегментации, оценки глубины, классификации, позы и OBB. В таблице задач описаны доступные варианты экспорта; проверка оборудования указана отдельно ниже.

Задача UltralyticsПрямой экспорт для HailoПоддерживаемые семейства моделейПримечания
Детекция объектов✅YOLOv8, YOLO11, YOLO26Стандартные головы Ultralytics Detect, включая пользовательские модели
Сегментация экземпляров✅YOLOv8, YOLO11Необработанные тензоры голов декодируются Ultralytics при инференсе; YOLO26-seg пока не поддерживается
Семантическая сегментация✅YOLO26Hailo-8/8L и одноклассовые головы возвращают логиты; Hailo-10H/15 формируют многоклассовые карты непосредственно при компиляции
Оценка глубины✅YOLO26Плотные логиты компилируются в a16; Ultralytics восстанавливает карту метрической глубины при инференсе
Классификация изображений✅YOLOv8, YOLO11, YOLO26Softmax выполняется на чипе; HEF сразу возвращает вероятности классов
Оценка позы✅YOLOv8, YOLO11Необработанные тензоры голов декодируются Ultralytics при инференсе; YOLO26-pose пока не поддерживается
Обнаружение объектов с учётом ориентации✅YOLOv8, YOLO11Необработанные тензоры голов декодируются Ultralytics при инференсе; YOLO26-OBB пока не поддерживается

Специализированные семейства моделей обнаружения, такие как YOLOv10, YOLO-World, YOLOE и RT-DETR, сейчас ❌ не поддерживаются через путь Ultralytics format="hailo". Ultralytics отклоняет эти задачи и семейства моделей до компиляции, вместо того чтобы создавать непроверенный HEF.

Семейство моделейHailo-8 / Hailo-8LHailo-10H / Hailo-15Результат
Обнаружение объектов YOLOv8 / YOLO11✅✅HEF с YOLO NMS из HailoRT
Обнаружение объектов YOLO26✅✅Необработанные тензоры обнаружения; по умолчанию NMS выполняется на хосте, режим без NMS задаётся через nms=False
YOLOv8-seg / YOLO11-seg✅✅Необработанные тензоры сегментации, декодируемые Ultralytics при инференсе
YOLOv8-pose / YOLO11-poseПроверено на Hailo-8LНе провереноНеобработанные тензоры позы, декодируемые Ultralytics при инференсе
YOLOv8-obb / YOLO11-obbПроверено на Hailo-8LНе провереноНеобработанные тензоры OBB, декодируемые Ultralytics при инференсе
YOLOv8-cls / YOLO11-cls / YOLO26-clsПроверено на Hailo-8LНе провереноSoftmax на чипе; HEF возвращает вероятности классов
YOLO26-semПроверено на Hailo-8LНе провереноЛогиты или сформированная при компиляции многоклассовая карта на Hailo-10H/15
YOLO26-depthПроверено на Hailo-8LНе провереноПлотные логиты; карту метрической глубины декодирует Ultralytics

Поза, OBB, классификация, семантическая сегментация YOLO26 и оценка глубины YOLO26 (вариант для Hailo-8/8L) проверены на Hailo-8L с HailoRT 4.23 и DFC 3.33. Экспортёр принимает и другие перечисленные целевые устройства, но перед использованием в production новые варианты задач необходимо проверить на соответствующем компиляторе и устройстве.

Выбери одно из следующих значений name:

nameЦелевой ускоритель
hailo8Hailo-8
hailo8lHailo-8L
hailo10hHailo-10H
hailo15hHailo-15H
hailo15lHailo-15L

Если name не указан, по умолчанию используется hailo8l; задай name равным ускорителю, на котором будет развёрнута модель. Установи поколение DFC, соответствующее выбранному целевому устройству.

Поколения оборудования и SDK Hailo#

В разных семействах ускорителей Hailo используются разные поколения компилятора. Скомпилированный HEF должен соответствовать целевому оборудованию, поэтому выбери name для устройства, на котором будет выполняться инференс, а не для машины, на которой выполняется экспорт.

Семейство оборудованияПоколение DFC
Hailo-8 / Hailo-8LDFC v3.x
Hailo-10HDFC v5.x
Hailo-15H / Hailo-15LDFC v5.x

Компилятор работает в Linux x86_64, а полученный HEF — на устройстве Hailo через HailoRT. Благодаря этому компилировать модель можно на рабочей станции или в Ultralytics Platform, а небольшой артефакт для инференса развёртывать на периферийном хосте ARM или x86.

Примечания о совместимости#

Компиляция для Hailo зависит от оборудования и выполняется с фиксированной формой входных данных. Учитывай следующие ограничения:

  • Выбранное значение name должно соответствовать ускорителю, на котором будет развёрнута модель.
  • Калибровочные изображения должны представлять ожидаемые в production условия освещения, ракурсы, объекты и фоны.
  • Каждый HEF компилируется для фиксированного imgsz. Чтобы обрабатывать несколько разрешений, масштабируй кадры на хосте до скомпилированного размера или скомпилируй отдельный HEF для каждого разрешения.
  • Поддерживается произвольное количество классов, поскольку Ultralytics формирует конфигурацию постобработки на основе метаданных модели.
  • Поддерживаются модели обнаружения со стандартными головами Ultralytics Detect, модели сегментации, позы и OBB YOLOv8/YOLO11, модели классификации YOLOv8/YOLO11/YOLO26, а также модели семантической сегментации и оценки глубины YOLO26; сейчас не поддерживаются сегментация экземпляров, поза и обнаружение ориентированных ограничивающих рамок YOLO26, а также экспорт YOLO-World, YOLOE, YOLOv10 и RT-DETR.
  • Артефакты для Hailo-8/8L и Hailo-10H/15 компилируются с помощью разных поколений DFC и несовместимы друг с другом.

Калибровка и квантование INT8#

При экспорте HEF для Hailo используется квантование INT8, чтобы эффективно перенести сеть YOLO на ускоритель. Калибровочный набор данных позволяет оценить диапазоны активаций; он не переобучает модель, и для компиляции не требуются метки.

Примечание

Оборудование Hailo и Dataflow Compiler поддерживают точность INT4, INT8 и INT16. Путь Ultralytics format="hailo" компилируется в INT8, используя 16-битные активации (a16) для задач, которым нужен более широкий диапазон.

Если data не указан, Ultralytics использует лёгкий набор данных для калибровки, подобранный под конкретную задачу: например, COCO128 для детекции, cityscapes8 для семантической сегментации или depth8 для оценки глубины. Плотная голова оценки глубины особенно чувствительна к домену калибровки: калибровка модели глубины на нерелевантных изображениях для детекции сглаживает предсказанную карту, а увеличение размера набора из целевого домена повышает точность. Для собственной модели компьютерного зрения укажи YAML-файл набора данных в data, чтобы компилятор обрабатывал репрезентативные изображения из реального домена развёртывания:

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

fraction задаёт долю или количество изображений для калибровки. Списки [train, val, test] задают ограничение для каждого сплита; в списках из двух элементов test остаётся без ограничений, а 0 пропускает тестовый сплит. Большее количество изображений помогает только в том случае, если они представляют домен развёртывания. Изображения из других доменов могут снизить точность квантования и увеличить время оптимизации. Если INT8 HEF уступает исходной модели PyTorch по точности, сначала улучши данные для калибровки, прежде чем менять модель или настройки среды выполнения.

Ожидаемая точность в зависимости от семейства моделей#

При измерении на Hailo-8L с калибровкой по данным из целевого домена (COCO128, 128 изображений) экспорт INT8 HEF сохраняет следующую долю mAP50 PyTorch при одинаковом протоколе оценки:

МодельСохранение mAP50Примечания
YOLOv8n~100%Голова DFL с NMS на чипе
YOLO11n~96%Блоки внимания в основе модели сильнее чувствительны к INT8
YOLO26n~93%Сквозная голова и внимание; см. примечание о пороге уверенности

Сохранение точности сравнивается для обеих моделей при одном и том же пороге уверенности. В HEF YOLOv8 и YOLO11 значение conf (по умолчанию 0.25), заданное при экспорте, зафиксировано в NMS на чипе. Поэтому сравнение с PyTorch-базовой моделью при её низком пороге по умолчанию учитывает большую часть кривой «точность-полнота» и преувеличивает разрыв в точности из-за квантования.

Помимо детекции, пути экспорта сегментации, поз, OBB и классификации проверили на той же Hailo-8L (DFC 3.33, HailoRT 4.23). Каждый INT8 HEF сравнили с соответствующей контрольной точкой PyTorch на одном и том же валидационном сплите, используя калибровку по данным из целевого домена:

ЗадачаМетрика (валидационный сплит)YOLOv8nYOLO11n
Сегментация экземпляровСохранение mask mAP50 (COCO128-seg)98.0%93.6%
ПозаСохранение box mAP50 (COCO8-pose)98.1%90.8%
Ориентированный ограничивающий прямоугольникСохранение mAP50 (DOTA128)~100%96.9%
КлассификацияСохранение top-1 (ImageNet val)92.6%95.4%

Для сегментации, поз и OBB использовали стандартный для каждой задачи набор из целевого домена (COCO128-seg, COCO8-pose, DOTA128); для классификации использовали ImageNet100. Из этих настроек следуют два важных замечания: COCO8-pose содержит всего 8 изображений, поэтому считай результаты по позам ориентировочными и передавай более крупный data= для продакшена; а на DOTA8 значения mAP50 для обеих моделей близки к 100%, поэтому OBB оценивают на DOTA128. Классификация — единственная задача, в которой YOLO11 сохраняет точность лучше, чем YOLOv8; для остальных задач основа YOLO11 с блоками внимания сильнее чувствительна к INT8.

Из измерений на устройстве следуют три практических правила:

  1. Всегда калибруй по данным из целевого домена. Дообучение на изображениях из других доменов равносильно полному отказу от дообучения: YOLO26n, откалиброванная на 1 238 изображениях из других доменов, сохраняет ту же точность (85.7%), что и модель, скомпилированная без дообучения. Небольшой набор из целевого домена лучше большого набора из других доменов.
  2. Для развёртывания YOLO26 понижай conf примерно на 0.05. Квантование в среднем снижает оценки YOLO26 примерно на 0.05, поэтому порог, подобранный в PyTorch, приводит к пропуску корректных детекций в HEF. Использование conf=0.20 на устройстве даёт такое же количество детекций, как PyTorch при conf=0.25; если понизить порог ещё немного (примерно до conf=0.15), можно восстановить практически весь оставшийся разрыв в mAP50 ценой увеличения количества детекций с низкой уверенностью. Квантование также меняет ранжирование примерно 20% детекций — это постоянный эффект изменения порядка, который нельзя устранить порогом. Однако это перераспределение не мешает восстановить mAP50 при более низком пороге.
  3. На Hailo-8/8L (DFC 3.33) потери из-за внимания обусловлены архитектурой. Блоки внимания компилируются в операции matmul, которые во всех доступных режимах компилятора принимают активации INT8. Режим с 16-битным выходом не удаётся распределить по памяти для этого графа, а повышение точности окружающих слоёв не помогает, поскольку матричное умножение всё равно повторно квантует входы до INT8. В наших тестах сохранение глубинных свёрток и свёрток выходного слоя в 16-битном формате не изменило mAP. Если точность важнее всего, а модели взаимозаменяемы, сейчас YOLO11 квантуется здесь лучше, чем YOLO26; новые поколения Hailo (DFC 5.x) предоставляют больше вариантов смешанной точности, поэтому результаты могут отличаться.

Экспортируемые артефакты#

При экспорте создаётся каталог с готовым к развёртыванию HEF и метаданными Ultralytics:

yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json
  • *.hef — скомпилированная модель, которую загружает HailoRT.
  • metadata.yaml содержит имена моделей, задачу, размер входных данных, шаг и сведения о целевом оборудовании Hailo.
  • nms_config.json содержит созданную конфигурацию HailoRT NMS для моделей детекции YOLOv8 и YOLO11. Для детекции YOLO26 и всех задач, не связанных с детекцией (сегментация, семантическая сегментация, глубина, классификация, позы, OBB), этот файл не используется.

Промежуточный граф ONNX удаляется после компиляции.

Запуск инференса на оборудовании Hailo#

Установи HailoRT на целевое устройство. Пользователи Raspberry Pi AI HAT+ и AI HAT+ 2 могут воспользоваться руководством по программному обеспечению Raspberry Pi AI. В Raspberry Pi OS нельзя одновременно установить оба набора пакетов, поэтому выполни только блок для своего оборудования, а затем перезагрузи устройство.

Для 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

После перезагрузки проверь, что ускоритель обнаружен:

hailortcli fw-control identify
Примечание

Пакеты hailo-all и hailo-h10-all устанавливают HailoRT только в Raspberry Pi OS. На любом другом хосте скачай и установи пакет HailoRT из Hailo Developer Zone — того же источника, откуда берётся DFC.

Скопируй на устройство весь каталог экспорта, чтобы metadata.yaml находился рядом с HEF. Ultralytics использует HailoRT для запуска predict и val непосредственно из экспортированного каталога:

from ultralytics import YOLO

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

Для моделей детекции бэкенд преобразует выходные данные HailoRT NMS для YOLOv8/YOLO11 и автоматически декодирует любую из голов YOLO26. Выходы по умолчанию в режиме one-to-many передаются в NMS предиктора. Бэкенд декодирует необработанные тензоры сегментации, поз и OBB, возвращает вероятности классификации, вычисленные на чипе, и формирует карты семантических классов с помощью редукции на хосте для Hailo-8/8L и всех одноклассовых голов либо с помощью ArgMax на чипе для многоклассовых голов Hailo-10H/15. TAPPAS, GStreamer и вспомогательный модуль Raspberry Pi picamera2.devices.Hailo по-прежнему доступны для специализированных конвейеров приложений.

Для развёртывания с GStreamer передай 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#

HEF — один и тот же готовый к развёртыванию артефакт модели для нескольких интерфейсов среды выполнения Hailo. Выбери интерфейс, подходящий для приложения:

Вариант среды выполненияЛучше всего подходит для
API HailoRT для Python или C/C++Пользовательские приложения и непосредственное управление инференсом
picamera2.devices.Hailo для Raspberry PiПроекты с модулем камеры на Raspberry Pi
GStreamer и приложения HailoПотоки видео в реальном времени и многоэтапные конвейеры
hailortcliПроверка устройства, анализ HEF и бенчмаркинг

Храни metadata.yaml рядом с HEF, если приложению нужны названия классов Ultralytics, размер входных данных, шаг или другие сведения о модели. Сам HEF не заменяет логику приложения для захвата с камеры, визуализации, отслеживания, оповещений или хранения данных.

Проверка устройства Hailo и HEF#

Перед подключением камеры или видеоконвейера независимо проверь среду выполнения и ускоритель:

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

Измерения производительности только на устройстве позволяют отделить инференс Hailo от декодирования видео, изменения размера изображений, отрисовки и ввода-вывода приложения. При оценке сквозной задержки или количества кадров в секунду отдельно измерь производительность всего приложения.

Бенчмарки#

Команда Ultralytics сравнила модели YOLO26 по скорости и точности на PyTorch и Hailo.

Производительность
Raspberry Pi 5 Hailo 8 NPU vs PyTorch benchmarks
МодельФорматСтатусРазмер (МБ)metrics/mAP50-95(B)Время инференса (мс/изобр.)
YOLO26nPyTorch✅5.30.477364.6
YOLO26nHailo✅7.30.45521.7
МодельФорматСтатусРазмер (МБ)metrics/mIoUВремя инференса (мс/изобр.)
YOLO26n-semPyTorch✅3.30.611831.2
YOLO26n-semHailo✅6.20.61134.8
МодельФорматСтатусРазмер (МБ)metrics/delta1metrics/abs_relmetrics/rmseВремя инференса (мс/изобр.)
YOLO26n-depthPyTorch✅12.40.85350.09830.20472133.4
YOLO26n-depthHailo✅9.90.82410.12320.255429.6
МодельФорматСтатусРазмер (МБ)точность (top1)точность (top5)Время инференса (мс/изобр.)
YOLO26n-clsPyTorch✅5.50.4310.71633.8
YOLO26n-clsHailo✅3.50.4410.7162.0
Примечание

Для проверки результатов приведённых выше бенчмарков использовались COCO128 для детекции, Cityscapes8 для семантической сегментации, Depth8 для оценки глубины и ImageNet100 для классификации. Cityscapes8 и Depth8 содержат всего по 4 проверочных изображения, поэтому результаты по точности семантической сегментации и оценке глубины следует считать результатами дымового тестирования, а не измерениями сохранения точности; прежде чем делать выводы о точности, проверь результаты на полном наборе данных, например Cityscapes или NYU Depth V2. Время инференса не включает предварительную и последующую обработку.

Hailo в сравнении с другими форматами экспорта YOLO#

Выбирай формат экспорта исходя из оборудования, на котором будет выполняться модель. HEF — аппаратно-зависимый формат, который стоит выбирать, если на целевом устройстве уже установлен ускоритель Hailo, а не как универсальный формат для периферийных устройств или формат, автоматически обеспечивающий максимальную скорость.

Целевое устройство или приоритетРекомендуемый формат UltralyticsСравнение с Hailo
Уже установлен NPU Hailo или Raspberry Pi HATHailo HEF (format="hailo")Использует установленный ускоритель Hailo и программный стек HailoRT
Новый энергоэффективный NPU формата M.2 или SBCDeepXНачни с этого варианта, чтобы добиться более высокой производительности YOLO и лучшей производительности на ватт
Высокопроизводительный периферийный NPU для нескольких потоковAxeleraРассмотри этот вариант, если нужно увеличить плотность потоков и пропускную способность на новом оборудовании с ускорителем
GPU NVIDIATensorRTИспользует ядра GPU NVIDIA с вариантами FP16 и INT8 вместо отдельного NPU
CPU, GPU или NPU IntelOpenVINOИспользует ускорители, уже встроенные в системы Intel
Оборудование AppleCoreMLИспользует Apple Neural Engine, GPU и CPU через собственную среду выполнения Apple
NPU Qualcomm SnapdragonQNNКомпилирует модель для встроенного NPU Qualcomm, не требуя внешнего ускорителя
NPU RockchipRKNNШироко используется в недорогих SBC и встраиваемых системах
NPU Huawei AscendAscendКомпилирует модель .om для CANN под AI Core Ascend на платах Atlas и OrangePi AIPro
Google Coral Edge TPUEdge TPUЗапускает модель LiteRT в INT8 на ускорителе Coral вместо модуля Hailo
Система на кристалле Ambarella CVflowAmbarellaКомпилирует модели для камер Ambarella и систем на кристалле для встроенного компьютерного зрения
Камера Raspberry Pi AISony IMX500Запускает нейросеть непосредственно в датчике камеры, а не на подключённом к хосту ускорителе Hailo
Мобильный или встроенный CPU/GPUNCNNОбеспечивает лёгкую переносимую среду выполнения, если специализированный поддерживаемый NPU недоступен
Переносимое развёртывание в разных средах выполненияONNXОбеспечивает переносимость между средами выполнения; HailoRT не может запускать ONNX без предварительной компиляции в HEF

Не считай, что Hailo быстрее или энергоэффективнее только потому, что это NPU. Для новых развёртываний M.2 DeepX — более подходящий кандидат, если нужна повышенная производительность YOLO и лучшая производительность на ватт, а Axelera ориентирована на значительно большую пропускную способность при обработке множества потоков. Rockchip — популярный недорогой вариант для SBC и встраиваемых систем. Показатели TOPS и энергопотребления от производителей нельзя напрямую сравнивать с результатами тестирования приложений, поэтому перед покупкой оборудования проверь одинаковые контрольную точку YOLO, размер входных данных, точность, хост и полный видеоконвейер на устройствах-кандидатах.

Оптимизация производительности компьютерного зрения на Hailo#

Выбор модели и конвейера часто важнее флагов компилятора:

  • Начни с небольшой модели YOLO и увеличивай её размер, только если этого требует точность.
  • Выбери минимальный фиксированный imgsz, при котором сохраняются важные для приложения объекты.
  • По возможности используй для калибровки изображения с реальной камеры и из реального окружения.
  • Не закрывай сеть Hailo между кадрами: повторное открытие HEF для каждого инференса снижает производительность.
  • Измеряй время инференса на устройстве отдельно от предобработки, декодирования видео, постобработки, визуализации и сетевого ввода-вывода.
  • Для длительной обработки видео используй потоковый конвейер, например GStreamer.
  • Проверь экспортированный HEF на том же ускорителе и с той же версией HailoRT, которые используются в production.

Аргументы экспорта#

АргументТипПо умолчаниюОписание
namestrhailo8lЦелевая архитектура ускорителя Hailo
imgszint, list640Фиксированный размер входных данных модели
datastrNoneYAML-файл набора данных для калибровки; для классификации вместо него укажи каталог набора данных или встроенное название набора данных. Если параметр не задан, Ultralytics выбирает набор данных для калибровки в соответствии с задачей.
fractionfloat, int или list1.0Подмножество для калибровки, заданное как доля, количество изображений или [train, val, test] отношения/количества. Если список содержит два элемента, test остаётся без изменений, а 0 пропускает его.
quantizeint8При экспорте для Hailo используется квантование INT8
simplifyboolTrueУпростить промежуточный граф ONNX
conffloat0.25Порог уверенности NMS в HailoRT для YOLOv8/YOLO11
ioufloat0.7Порог IoU для NMS в HailoRT для YOLOv8/YOLO11
devicestrNoneУстройство для промежуточного этапа экспорта ONNX; по умолчанию используется CPU (device=cpu). Этапы Dataflow Compiler его не используют.

Для детекции YOLOv8/YOLO11 при экспорте применяется NMS в HailoRT. Для YOLO26 по умолчанию выводятся исходные выходы one-to-many для NMS на хосте; nms=False выбирает выходы one-to-one без NMS. Сегментация, поза и OBB используют исходные тензоры головы модели, классификация возвращает вероятности, вычисленные на чипе, а семантическая сегментация возвращает исходные логиты на Hailo-8/8L и для всех голов с одним классом либо готовые карты классов для голов с несколькими классами на Hailo-10H/15. Оценка глубины возвращает исходный логит глубины, который Ultralytics декодирует в метрическую карту глубины во время инференса. Динамические формы, встроенный NMS Ultralytics, FP16 и FP32 не поддерживаются.

Устранение неполадок при экспорте для Hailo#

Ошибка импорта Hailo Dataflow Compiler#

Если при экспорте сообщается, что hailo_sdk_client отсутствует, установи wheel DFC для целевого поколения оборудования в ту же среду Python, что и Ultralytics. Для Hailo-8/8L и Hailo-10H/15 нужны разные поколения компилятора.

Операционная система или архитектура не поддерживается#

Компиляция HEF поддерживается в Linux x86_64. Если на локальном компьютере установлена macOS или Windows, либо это Raspberry Pi или другая система ARM, выполни экспорт через Ultralytics Platform или используй совместимую рабочую станцию.

Экспорт занимает много времени#

Оптимизация DFC — самый ресурсоёмкий этап. Время компиляции увеличивается с размером модели, разрешением входных данных и объёмом калибровочных данных. Поддерживаемый GPU может ускорить оптимизацию, тогда как компиляция только на CPU может занять значительно больше времени.

Точность квантованной модели снижается#

Используй калибровочные изображения, похожие на реальные входные данные, с важными объектами, масштабами, условиями освещения и фонами. Перед развёртыванием сравни исходную модель PyTorch и экспортированный HEF на одном и том же валидационном наборе. Даже при хорошей калибровке сохраняется умеренный разрыв, зависящий от семейства моделей; измеренные базовые показатели см. в разделе Ожидаемая точность для разных семейств моделей.

HEF не загружается на устройство#

Убедись, что name соответствует физической архитектуре Hailo, а драйвер устройства, прошивка и пакеты HailoRT совместимы друг с другом. Проверь артефакт с помощью hailortcli parse-hef и убедись, что ускоритель определён верно, используя hailortcli fw-control identify.

Выводы разбираются некорректно#

Храни metadata.yaml рядом с HEF, чтобы Ultralytics мог выбрать соответствующий путь постобработки для YOLOv8, YOLO11 или YOLO26. Пользовательские приложения HailoRT также должны выбирать постобработку в соответствии с семейством экспортированной модели.

Итоги#

Экспорт Hailo в Ultralytics обеспечивает прямой путь от обученной модели YOLO до готового к развёртыванию HEF:

  1. Загрузи модель детекции или классификации YOLOv8, YOLO11 либо YOLO26; модель сегментации, позы или OBB YOLOv8/YOLO11; либо модель семантической сегментации или оценки глубины YOLO26.
  2. Выполни экспорт с помощью format="hailo" и выбери целевую архитектуру.
  3. Выполни калибровку и компиляцию локально с соответствующим DFC или воспользуйся управляемым экспортом в Ultralytics Platform.
  4. Скопируй HEF и metadata.yaml на граничное устройство с Hailo.
  5. Запусти инференс с помощью HailoRT, Raspberry Pi Picamera2 или видеоконвейера GStreamer.

О других целевых платформах для развёртывания компьютерного зрения см. разделы Режим экспорта, Режим бенчмаркинга и руководство по интеграциям. Руководства по другому оборудованию: DeepX, Axelera, ONNX, OpenVINO, TensorRT, NCNN, RKNN, Sony IMX500 и Qualcomm QNN.

Часто задаваемые вопросы#

  • Нет. Запусти DFC в поддерживаемой системе Linux x86_64, а затем разверни полученный HEF на Raspberry Pi.

  • Поддерживаемый GPU значительно сокращает время оптимизации DFC. Компиляция на CPU возможна, но может занять гораздо больше времени.

  • Прямой экспорт поддерживается для моделей детекции со стандартной головой детекции YOLOv8, YOLO11 или YOLO26; моделей сегментации, позы и OBB YOLOv8/YOLO11; а также моделей классификации YOLOv8/YOLO11/YOLO26. Сюда входят пользовательские модели, обученные на основе этих стандартных архитектур. Также поддерживаются модели семантической сегментации и оценки глубины YOLO26. Модели сегментации экземпляров, позы и OBB YOLO26, а также YOLOv10, YOLO-World, YOLOE и RT-DETR отклоняются, чтобы не создавать непроверенный HEF.

  • Да. Используй ту же команду format="hailo" с пользовательскими весами .pt и передай YAML-файл обучающего набора данных через data, чтобы выполнить репрезентативную калибровку INT8. Имена и количество классов считываются из метаданных модели.

  • Каждый HEF компилируется для фиксированной формы входных данных, поэтому изменить размер одного HEF динамически нельзя. На практике можно масштабировать входные данные на хосте до скомпилированного размера или скомпилировать несколько HEF для нужных разрешений. При экспорте выбери imgsz, чтобы он соответствовал конвейеру развёртывания.

  • В YOLO26 для регрессии рамок не используется DFL, поэтому обе головы компилируются в исходные тензоры, а не в конвейер NMS HailoRT, используемый в стиле YOLOv8. Ultralytics декодирует тензоры и по умолчанию применяет NMS либо возвращает детекции без NMS, если экспорт выполнен с nms=False.

  • Hailo Dataflow Compiler преобразует и квантует модель в HEF для конкретного оборудования на сборочной машине Linux x86_64. HailoRT загружает и запускает этот HEF на целевом устройстве.

  • Разверни скомпилированный HEF в среде выполнения Hailo. ONNX — это промежуточное представление, используемое при экспорте; после успешной компиляции оно удаляется.

  • Скачай wheel компилятора для своего поколения оборудования из Hailo Developer Zone. Компилятор нужен только для создания HEF; HailoRT запускает его на целевом ускорителе.

Комментарии