Ultralytics YOLO27: Запишись в список ожидания.

Экспорт CoreML для моделей YOLO26#

Apple устанавливает специализированные AI-чипы — Neural Engine — во все современные iPhone, iPad и Mac, а CoreML — это поддерживаемый Ultralytics способ развёртывания моделей на них. Экспорт моделей Ultralytics YOLO26 в CoreML преобразует обученный чекпойнт .pt в нативный .mlpackage, который запускает на устройстве все семь задач YOLO с низкой задержкой, без подключения к сети и передачи данных за пределы устройства.

Запускай YOLO на Apple Neural Engine уже сегодня с помощью официальных мобильных приложений

Официальный SDK Ultralytics YOLO для iOS и плагин Flutter запускают экспортированные модели CoreML на Apple Neural Engine сразу после установки: инференс с камеры в реальном времени, предсказание для отдельного изображения и автоматическая загрузка моделей для всех семи задач YOLO26, включая глубину. Для развёртывания на NPU Android см. интеграцию Qualcomm QNN.

Официальные размеры входных данных для мобильных устройств

Экспортируй модели классификации в imgsz=224. Экспортируй модели детекции, сегментации, семантической сегментации, оценки глубины, позы и OBB в imgsz=640. Этот стандарт 224/640 используется в официальных мобильных ресурсах CoreML, LiteRT и QNN.

Новый формат Core AI от Apple

Apple представила новый фреймворк Core AI и формат .aimodel для поколения iOS 27 и macOS 27, а Ultralytics поддерживает экспорт в него с помощью format="coreai". CoreML остается форматом по умолчанию для SDK Ultralytics для iOS и Flutter: на устройствах с iOS 27 они загружают Core AI по желанию. CoreML также обеспечивает совместимость с более широким набором устройств Apple.



Смотри: Как экспортировать Ultralytics YOLO26 в CoreML с квантованием INT8 | Развертывание на устройствах Apple | iOS/MacOS 🍎

Что такое CoreML?#

Apple CoreML deployment pipeline

CoreML (в оформлении Apple — «Core ML») — это платформа Apple для машинного обучения непосредственно на устройстве. Она загружает модели в современном формате ML Program — пакете .mlpackage, который создает экспортер Ultralytics, — и распределяет вычисления между CPU, GPU устройства и Apple Neural Engine (ANE) — выделенным NPU в каждом чипе Apple. Поскольку все выполняется локально, инференс работает без подключения к интернету, не создает сетевой задержки и сохраняет данные пользователя на устройстве.

CoreML напрямую интегрируется с фреймворком Vision от Apple, который масштабирует и корректирует ориентацию изображения перед передачей модели. Благодаря этому SDK Ultralytics для iOS передает кадры с камеры в YOLO практически без затрат на предобработку.

Зачем экспортировать YOLO26 в CoreML?#

  • Скорость Neural Engine: CoreML распределяет поддерживаемые операции по Neural Engine от Apple для инференса с низкой задержкой непосредственно на устройстве. Смотри таблицу ниже с результатами на физических устройствах и измеряй производительность своего экспорта на целевом оборудовании.
  • Выбери формат вывода: При экспорте по умолчанию обработку NMS выполняет приложение. Используй nms=True, чтобы встроить NMS, или nms=False для головы YOLO26 без NMS.
  • Конфиденциальность и работа офлайн: все вычисления выполняются на устройстве — без обращений к облаку и ключей API, с полной защитой данных.
  • Один экспорт — вся экосистема: один и тот же .mlpackage работает на iOS, iPadOS, macOS, watchOS, tvOS и visionOS, а также лежит в основе официальных SDK Ultralytics для iOS и плагина Flutter.

Измеренная производительность#

Сквозной инференс одного изображения для стандартизированных ресурсов YOLO26n INT8 CoreML v8.3.0 на iPhone 17 Pro с 12 ГБ памяти и iOS 27.0.1. В A19 Pro установлены 6-ядерный CPU (2 производительных и 4 энергоэффективных ядра), 6-ядерный GPU с Neural Accelerators и 16-ядерный Neural Engine. В каждой ячейке указано общее время (предобработка + инференс + постобработка, без учёта аннотации), а ниже приведено распределение времени по этапам. В iOS Vision масштабирует входные данные внутри запроса на инференс, поэтому время предобработки указано как 0, а её стоимость включена во время инференса.

МодельЗадачаразмер
(пиксели)
CPU
Core ML .cpuOnly
(мс)
CPU + предпочтительно ANE
Core ML .cpuAndNeuralEngine
(мс)
YOLO26nОбнаружение6408.8
0.0 / 8.8 / 0.0
3.7
0.0 / 3.7 / 0.0
YOLO26n-segСегментация64012.3
0.0 / 11.7 / 0.6
4.9
0.0 / 4.3 / 0.6
YOLO26n-semСемантическая6409.3
0.0 / 9.0 / 0.3
4.4
0.0 / 4.1 / 0.3
YOLO26n-depthГлубина64026.0
0.0 / 25.1 / 1.0
5.5
0.0 / 4.7 / 0.9
YOLO26n-clsКлассификация2244.1
0.0 / 4.1 / 0.0
2.0
0.0 / 1.9 / 0.0
YOLO26n-poseПоза64012.0
0.0 / 12.0 / 0.0
4.0
0.0 / 4.0 / 0.0
YOLO26n-obbOBB64010.7
0.0 / 10.7 / 0.0
3.9
0.0 / 3.9 / 0.0
  • В ресурсах точной версии v8.3.0 указаны входные изображения размером 224×224 для классификации и 640×640 для всех остальных задач.
  • На iOS 27.0.1 инференс .cpuOnly моделей глубины, позы и OBB l и x аварийно завершается внутри CPU-ядер Core ML (EXC_BAD_ACCESS в libBNNS); те же модели работают с .cpuAndNeuralEngine, а все остальные задачи и размеры выполняются на CPU.
  • Значения скорости — это задержки при серии запусков для одного изображения: среднее по 15 запускам после 3 прогревочных запусков на bus.jpg. Их измеряли поэтапно через SDK для iOS, используя тестовый стенд плагина Flutter в режиме профилирования (оптимизированный нативный код). В одном последовательном цикле задачи запускались попеременно на CPU и ускорителе. В строках CPU запрашивается Core ML .cpuOnly, а в строках «CPU + предпочтительно ANE» — .cpuAndNeuralEngine; фактическое распределение операций определяет Core ML. При длительной работе камеры в реальном времени значения выше, поскольку учитывают конвейер захвата и масштабирования, а также стабилизацию температуры. В историческом тесте камеры до стандартизации на том же устройстве было получено 11.3 мс/кадр для детекции YOLO26n и 16.5 мс/кадр для оценки глубины YOLO26n — смотри документацию по производительности SDK для iOS, чтобы узнать о профилировании в установившемся режиме.
  • Сравни результаты CPU/GPU на Android в интеграции LiteRT и результаты NPU Snapdragon в интеграции Qualcomm QNN.

Поддерживаемые задачи#

Экспорт в CoreML поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе с такими головами.

Экспорт моделей YOLO26 в CoreML#

Установка#

Чтобы установить необходимый пакет, выполни команду:

Установка
# Install the required package for YOLO26
pip install ultralytics

Конвертер coremltools автоматически устанавливается при первом экспорте. Экспорт выполняется в macOS или Linux на x86; подробные инструкции и рекомендации смотри в руководстве по установке и руководстве по распространенным проблемам.

Использование#

Формат CoreML поддерживает режимы Export, Predict и Validate. Инференс и валидация с CoreML доступны только в macOS. Экспортируй модель, а затем загрузи экспортированную модель, чтобы запустить инференс или проверить точность.

Экспорт
from ultralytics import YOLO

# Загрузи модель YOLO26
model = YOLO("yolo26n.pt")

# Экспорт в CoreML с квантованием весов INT8, как в официальных моделях приложения
model.export(format="coreml", quantize=8, imgsz=640)  # используй imgsz=224 для классификации
Предсказание
from ultralytics import YOLO

# Загрузи экспортированную модель CoreML (macOS)
model = YOLO("yolo26n.mlpackage")

# Выполнить инференс
results = model("https://ultralytics.com/images/bus.jpg")
Проверка
from ultralytics import YOLO

# Загрузи экспортированную модель CoreML (macOS)
model = YOLO("yolo26n.mlpackage")

# Проверить точность на наборе данных COCO8
metrics = model.val(data="coco8.yaml")

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

АргументТипПо умолчаниюОписание
formatstr'coreml'Целевой формат экспортируемой модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Заданный размер изображения на входе модели. Можно указать целое число для квадратных изображений или кортеж (height, width) для конкретных размеров.
quantizeint или strNoneТочность квантования: 16 (FP16), 8 или "w8a16" (эквивалентны: палитризация весов методом k-means до 8 бит с вычислениями FP16) либо 32 или отсутствие значения (FP32). Для ML Programs с NMS используется FP16 (для предпросмотра в Xcode и обязательно для сегментации и оценки позы); для обнаружения передай 32, чтобы переопределить значение. Заменяет устаревшие флаги half/int8.
nmsbool, необязательноNoneВыбери необработанный вывод (None, по умолчанию), встроенный NMS (True) или голову без NMS (False). Встроенный NMS поддерживает детекцию, сегментацию и позу при статических размерах с помощью dynamic=False.
dynamicboolFalseРазрешает динамические размеры входных данных. Не поддерживается для моделей классификации и RT-DETR; нельзя сочетать с nms=True.
batchint1Задает размер батча при инференсе экспортированной модели или максимальное число изображений, которые экспортированная модель обрабатывает одновременно в режиме predict. Для значений выше 1 требуется dynamic=True.
devicestrNoneЗадает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps).

Подробнее о процессе экспорта смотри на странице документации Ultralytics об экспорте.

Использование Neural Engine#

CoreML выбирает оборудование с помощью MLModelConfiguration.computeUnits. В SDK Ultralytics для iOS на iOS 16 и новее по умолчанию используется .cpuAndNeuralEngine, а не .all: в приложении с камерой реального времени GPU уже занят композицией предпросмотра и наложений, поэтому его исключение помогает избежать конкуренции за ресурсы и скачков времени обработки кадров, пока ANE выполняет основную работу. Фиксируй .cpuOnly только для проверки совместимости — стоимость такого выбора показана в таблице выше.

Запуск модели CoreML из Python на хосте Mac (через Ultralytics или coremltools) подчиняется тому же правилу: Ultralytics загружает модель с помощью ComputeUnit.CPU_AND_NE (macOS 13 и новее, а на более старых версиях macOS — с переходом на CPU_ONLY), оставляя инференс на Neural Engine (примерно в 3 раза быстрее CPU). Это также позволяет обойти текущее ограничение хоста macOS: стандартные ComputeUnit.ALL / CPU_AND_GPU, добавляющие путь компиляции GPU/MPSGraph, аварийно завершают процесс с утверждением Error: MLIR pass manager failed в coremltools 9.x. Исключение — модели RT-DETR: они загружаются с помощью ComputeUnit.ALL, поскольку точность FP16 при использовании только Neural Engine снижается.

Развертывание экспортированных моделей YOLO26 CoreML#

Быстрее всего это сделать с помощью официального SDK Ultralytics YOLO для iOS — того же пакета Swift, на котором работают приложение Ultralytics для iOS и плагин Flutter. SDK автоматически определяет официальные названия моделей, загружает модели и сохраняет их в кэше .mlpackage, а затем возвращает полностью декодированные результаты:

import UltralyticsYOLO

// Loads the official INT8 model (downloaded and cached on first use), then runs inference
let yolo = YOLO("yolo26n", task: .detect) { result in
    if case .success(let model) = result {
        let results = model(uiImage)  // boxes, labels, confidences, timing
    }
}

Для приложений с камерой подключи YOLOView из SDK, чтобы выполнять инференс в реальном времени с нативными наложениями, или используй плагин Flutter для кроссплатформенных приложений с общей кодовой базой для Android.

Встроить необработанную модель .mlpackage самостоятельно тоже просто с помощью стека Apple: загрузи ее через MLModel, оберни в VNCoreMLRequest и передавай изображения через VNImageRequestHandler. Подробности описаны в этих материалах:

Включи модель в пакет приложения (она будет доступна сразу — идеально для моделей nano/small) либо загружай при первом запуске и сохраняй в кэше (меньший размер приложения и простое обновление модели). В официальных приложениях используются оба подхода: модели nano по умолчанию включены в приложение и готовы к работе, а более крупные варианты загружаются по запросу и сохраняются локально.

  1. Обучи модель с помощью режима Train Ultralytics или начни с официальных весов YOLO26.
  2. Экспортируй с помощью model.export(format="coreml", quantize=8, imgsz=640) в macOS или Linux на x86 (imgsz=224 для классификации)
  3. Проверь точность с помощью model.val() на Mac и профилируй модель на целевом устройстве с помощью отчета о производительности Core ML в Xcode
  4. Разверни модель с помощью SDK для iOS, плагина Flutter или собственной интеграции Vision, ориентируясь на .cpuAndNeuralEngine

Итоги#

В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат CoreML .mlpackage, квантовать их для Apple Neural Engine и развертывать с задержкой в единицы миллисекунд — через официальный SDK для iOS и плагин Flutter либо собственную интеграцию с Vision.

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

  • Запусти model.export(format="coreml", imgsz=640) в Python или yolo export model=yolo26n.pt format=coreml imgsz=640 из CLI в macOS или Linux на x86. Для классификации используй imgsz=224 и добавь quantize=8, чтобы получить модель, соответствующую официальным моделям приложения. В результате экспорта будет создана модель ML Program yolo26n.mlpackage, готовая для Xcode, SDK для iOS или плагина Flutter.

  • Используй nms=True, если приложению нужны детекции со встроенным NMS. По умолчанию nms=None экспортирует необработанные выходные данные по принципу «один ко многим», которые обрабатывает приложение; nms=False выбирает голову YOLO26 без NMS. Встроенный NMS поддерживает детекцию, сегментацию и позу при статических формах; остальные задачи сохраняют собственные выходные данные.

  • Официальные модели приложения Ultralytics поставляются в формате INT8: это уменьшает размер загрузки и обеспечивает скорость, указанную в таблице выше. quantize=16 (FP16) — более консервативный вариант, практически не снижающий точность. Перед выпуском проверь точность конкретного экспорта с помощью model.val() на Mac.

  • Задай MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (значение по умолчанию в SDK для iOS на iOS 16 и новее). Не используй .all в приложениях с камерой: GPU занят композицией предпросмотра, и выполнение инференса на нем приводит к скачкам времени обработки кадров. Проверь распределение операций с помощью отчета о производительности Core ML в Xcode.

  • Да, в macOS: yolo predict model=yolo26n.mlpackage source=image.jpg и yolo val model=yolo26n.mlpackage data=coco8.yaml работают так же, как с любым другим форматом. Для работы CoreML требуется оборудование Apple, поэтому в Linux и Windows эти режимы недоступны.

  • Используй официальный SDK Ultralytics YOLO для iOS (Swift Package) или плагин Flutter. Оба решения загружают официальные модели по имени, автоматически скачивают и кэшируют их, выполняют на Neural Engine и предоставляют готовые пользовательские интерфейсы камеры для работы в реальном времени — таблица производительности выше получена именно с помощью этого стека.

Комментарии