Экспорт NXP i.MX95 с Neutron
Экспортируй Ultralytics YOLO с помощью format="nxp", чтобы создать модель .tflite INT8, скомпилированную для NPU NXP i.MX95 Neutron. Экспортёр повторно использует конвейер преобразования и калибровки LiteRT, а затем запускает компилятор NXP Neutron SDK 3.3.0 для развёртывания ИИ на периферийных устройствах.
Эта целевая платформа отличается от Sony IMX500 (format="imx"). В NXP i.MX8M Plus, i.MX93 и других процессорах NXP используются другие стеки ускорения; артефакт для i.MX95 несовместим с этими платформами.
Экспорт#
Выполняй экспорт в Linux x86_64 с Python 3.10 или новее. Компиляция проверена с Python 3.13 и 3.14. Ultralytics устанавливает зависимости для преобразования при необходимости. Neutron SDK доступен в репозитории пакетов NXP.
pip install -U ultralytics
pip install eiq-neutron-sdk==3.3.0 --extra-index-url https://eiq.nxp.com/repositoryfrom ultralytics import YOLO
model = YOLO("yolo26n.pt")
path = model.export(format="nxp", imgsz=640, data="coco128.yaml")
# Создаёт yolo26n_nxp.tfliteИспользуй калибровочные изображения, соответствующие условиям развёртывания: учитывай камеру, освещение и размеры объектов. Квантование INT8 может снизить точность, поэтому сравни промежуточную модель yolo26n_int8.tflite с моделью PyTorch на хосте. coco128.yaml — удобный пример, но он не заменяет калибровку для конкретного приложения и независимый набор данных для валидации.
| Аргумент | Описание |
|---|---|
imgsz | Фиксированный размер входного изображения, например 640 или (480, 640). |
quantize | INT8 (8); включается автоматически. Другие значения точности не поддерживаются. |
data | YAML-файл набора данных для калибровки или набор данных для классификации. |
fraction | Доля или количество калибровочных изображений. |
device | Устройство, используемое при экспорте и калибровке. Целевой платформой после компиляции остаётся i.MX95. |
Размер пакета фиксирован и равен 1. Экспорт детекторов использует исходные предсказания для внешнего NMS; Ultralytics применяет эту постобработку при предсказании и валидации. Встроенный NMS и выход top-k без NMS в YOLO26 не поддерживаются этим экспортом.
Платформа#
На платформе Ultralytics открой вкладку Экспорт модели и выбери NXP. Укажи размер изображения и скачай скомпилированный артефакт _nxp.tflite после завершения экспорта. Платформа запускает компилятор на своих CPU-воркерах; плата NXP нужна только для развёртывания и измерения производительности. Общий процесс описан в руководстве по экспорту моделей на платформе.
На платформе INT8 отображается как фиксированная настройка, а для задачи модели используется набор данных для калибровки по умолчанию, заданный экспортёром. Сейчас здесь нельзя настраивать параметры data или fraction калибровки. Чтобы выполнить калибровку на собственных репрезентативных изображениях, используй приведённые выше примеры экспорта через Python или CLI.
Развёртывание на i.MX95#
Установи среду выполнения TensorFlow Lite, libneutron_delegate.so, драйвер Neutron и прошивку, предоставленные NXP для BSP, совместимого с Neutron SDK 3.3.0. Инструкции по настройке платы и совместимости среды выполнения см. в руководстве NXP по развёртыванию.
Среда выполнения Ultralytics загружает tflite_runtime платы и делегат Neutron. Сохрани суффикс _nxp.tflite, чтобы Ultralytics выбрал среду выполнения NXP. Запусти на плате следующие примеры предсказания и валидации:
from ultralytics import YOLO
model = YOLO("yolo26n_nxp.tflite")
results = model.predict("https://ultralytics.com/images/bus.jpg", imgsz=640)from ultralytics import YOLO
model = YOLO("yolo26n_nxp.tflite")
metrics = model.val(data="coco128.yaml", imgsz=640, batch=1)Для прямого тестирования производительности TensorFlow Lite используй исполняемый файл тестирования на плате:
benchmark_model --graph=yolo26n_nxp.tflite --external_delegate_path=/usr/lib/libneutron_delegate.soПокрытие операторов и производительность#
При компиляции поддерживаемые подграфы заменяются операциями NeutronGraph. Неподдерживаемые операторы выполняются на CPU. Успешный экспорт не означает, что все операции выполняются на NPU или что накладные расходы на переключение между CPU и NPU устранены. Для выполнения на CPU всё ещё могут потребоваться механизмы внимания, изменения расположения тензоров и постобработка.
В журнал экспорта включена статистика компилятора NXP: преобразованные операторы, разделы NPU, оценка объёма памяти и оценка количества циклов NPU. В эти оценки не входят операторы CPU, предварительная и последующая обработка, а также накладные расходы среды выполнения. Измерь полную задержку обработки кадра, пиковое потребление RAM и объём хранилища для развёртывания на целевой плате; теоретическое значение TOPS и размер скомпилированного файла не позволяют определить эти показатели.
Сначала проверь откалиброванную промежуточную модель на соответствие модели PyTorch, затем проверь скомпилированную модель на плате, используя тот же набор данных и размер изображения. Компиляция на хосте и проверка точности промежуточной модели не подтверждают численное соответствие или задержку на NPU. Рекомендации по планированию валидации на уровне приложения см. в разделе лучшие практики развёртывания моделей.
Часто задаваемые вопросы#
Используй
model.export(format="nxp", data="your_dataset.yaml")в Python илиyolo export model=best.pt format=nxp data=your_dataset.yamlв CLI на Linux x86_64. Экспортёр калибрует модель до INT8 и компилирует её с Neutron SDK 3.3.0, создаваяbest_nxp.tflite. Инструкции для предварительно обученной модели YOLO26n см. в примерах экспорта.Да. Загрузи
YOLO("best_nxp.tflite")и вызовиpredict()илиval()либо используйyolo predictиyolo val. Оба способа используют среду выполнения TensorFlow Lite и делегат Neutron на плате. Сохрани суффикс_nxp.tfliteв имени файла и установи совместимую среду выполнения NXP, описанную в разделе Развёртывание на i.MX95.Этот экспорт предназначен только для i.MX95. В других процессорах NXP используются другие ускорители и цепочки инструментов развёртывания, поэтому артефакт i.MX95 Neutron нельзя использовать на i.MX8M Plus или i.MX93. Отдельный параметр
format="imx"предназначен для Sony IMX500, а не для процессоров NXP i.MX.Neutron компилирует поддерживаемые подграфы для NPU, а неподдерживаемые операторы оставляет в TensorFlow Lite для выполнения на CPU. Механизмы внимания, изменения расположения данных и постобработка могут создавать несколько разделов и накладные расходы на передачу данных. Изучи статистику преобразованных операторов компилятора, затем профилируй всё приложение на плате; успешная компиляция не гарантирует полного выполнения на NPU.
Выполни калибровку на репрезентативных изображениях и сравни PyTorch, промежуточную модель INT8 и скомпилированную модель на независимом наборе для валидации. Для оценки точности используй режим Validate, а задержку обработки кадра, пиковое потребление RAM процессом и объём хранилища для развёртывания измерь на плате i.MX95. Оценки объёма памяти компилятором, размер файла модели и значение TOPS недостаточны для определения производительности приложения.
Комментарии
Задай вопрос, поделись результатами или помоги кому-нибудь.