YOLO Vision 2026:

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

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

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

Hailo edge AI ecosystem for Ultralytics YOLO

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

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

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

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

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

Локальный инференс может повысить конфиденциальность и сократить время отклика, поскольку изображения остаются на устройстве развертывания. Фактические пропускная способность, задержка и энергопотребление зависят от размера модели 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 используют HailoRT YOLO NMS в скомпилированном конвейере. Модели обнаружения YOLO26 используют выходы без NMS по схеме один-к-одному, поэтому экспортер автоматически выбирает другой путь вывода и квантования. Модели сегментации, определения позы и 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

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. Ultralytics автоматически загружает набор данных для калибровки, соответствующий задаче, если data не указан. Для пользовательских моделей используй репрезентативные изображения из обучающего или валидационного набора:

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

Ultralytics принудительно устанавливает уровень оптимизации DFC 2 и настраивает дообучение с учетом фактического размера набора данных для калибровки. Hailo рекомендует не менее 1 024 разнообразных изображений; встроенные облегченные наборы данных компилируются на уровне 2, но могут не отражать производственную предметную область. Для экспорта HEF в рабочую среду передай репрезентативный набор данных с помощью 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Стандартные головы Detect Ultralytics, включая пользовательские модели
Сегментация экземпляров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 / YOLO11HEF с HailoRT YOLO NMS
Обнаружение YOLO26Выходы головы обнаружения без NMS для поддерживаемых сред выполнения
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. Экспортер принимает остальные перечисленные цели, но эти новые пути задач требуют проверки с соответствующими компилятором и устройством перед использованием в рабочей среде.

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

Калибровка и INT8-квантизация#

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

Примечание

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

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

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 модели сохраняют следующую долю своего PyTorch mAP50 при том же протоколе оценки:

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

При сравнении обе модели используют один и тот же порог confidence. В 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)92.6%95.4%

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

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

  1. Всегда калибруй на данных целевой области. Дообучение на изображениях из другой области эквивалентно полному отключению дообучения: YOLO26n, откалиброванная на 1 238 изображениях из другой области, сохраняет ту же точность (85,7%), что и модель, скомпилированная без дообучения. Небольшой набор из целевой области лучше большого набора из другой области.
  2. Снижай conf примерно на 0.05 для развёртываний YOLO26. Квантизация в среднем сдвигает оценки 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-битным выходом не может выделить память для этого графа, а повышение точности окружающих слоёв не помогает, поскольку операция matmul всё равно повторно квантует свои входы в INT8 (защита depthwise-свёрток и выходных свёрток с точностью 16 бит не изменила mAP в наших тестах). Когда точность важнее всего и модели взаимозаменяемы, здесь YOLO11 сейчас квантизуется лучше YOLO26; более новые поколения Hailo (DFC 5.x) предлагают больше вариантов смешанной точности и могут давать другие результаты.

Экспортированные артефакты#

Экспорт создаёт каталог, содержащий готовый к развёртыванию HEF и метаданные Ultralytics:

yolo11n_hailo_model/
├── yolo11n.hef
├── metadata.yaml
└── nms_config.json
  • *.hef — скомпилированная модель, загружаемая HailoRT.
  • metadata.yaml сохраняет имена модели, задачу, размер входа, stride и информацию о целевом устройстве Hailo.
  • nms_config.json записывает сгенерированную конфигурацию NMS HailoRT для моделей детекции 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")

Для моделей детекции бэкенд автоматически преобразует выход NMS HailoRT моделей YOLOv8 и YOLO11 и декодирует выходы YOLO26 one-to-one. Он декодирует необработанные тензоры сегментации, оценки позы и 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. Выбери интерфейс, подходящий приложению:

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

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

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

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

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

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

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

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

Целевое устройство или приоритетРекомендуемый формат UltralyticsСравнение с Hailo
Имеющийся Hailo NPU или Raspberry Pi HATHailo HEF (format="hailo")Использует установленный ускоритель Hailo и стек HailoRT
Новый энергоэффективный NPU формата M.2 или SBCDeepXНачни отсюда, если нужны более высокая производительность YOLO и лучшая производительность на ватт
Высокопроизводительный периферийный NPU для нескольких потоковAxeleraВыбирай для большей плотности потоков и пропускной способности на новом оборудовании ускорителя
Графический процессор 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 и встраиваемых системах
SoC Ambarella CVflowAmbarellaКомпилирует модель для камерных SoC и SoC для компьютерного зрения Ambarella
Raspberry Pi AI CameraSony 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Порог уверенности HailoRT NMS для YOLOv8/YOLO11
ioufloat0.7Порог IoU HailoRT NMS для YOLOv8/YOLO11

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

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

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

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

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

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

Экспорт выполняется долго#

Оптимизация 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 использует голову обнаружения one-to-one без NMS. Ultralytics компилирует эти выходные тензоры напрямую, не добавляя YOLOv8-подобный NMS HailoRT, используемый для YOLOv8 и YOLO11.

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

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

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

Комментарии