Link to this sectionЭкспорт CoreML для моделей YOLO26#
Apple устанавливает специализированные AI-чипы — Neural Engine — во все современные iPhone, iPad и Mac, а CoreML — это единственный способ их программирования. Экспорт моделей Ultralytics YOLO26 в CoreML превращает обученную контрольную точку .pt в нативный .mlpackage, который выполняет все шесть задач YOLO на устройстве за миллисекунды, без необходимости подключения к сети и передачи данных за пределы устройства.
Официальный iOS SDK Ultralytics YOLO и плагин Flutter запускают экспорт CoreML на Apple Neural Engine «из коробки» — поддерживаются инференс камеры в реальном времени, предсказание по одному изображению и автоматическая загрузка моделей для всех шести задач YOLO26. Для развертывания на NPU Android ознакомься с интеграцией Qualcomm QNN.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Link to this sectionЧто такое CoreML?#
CoreML (в стиле Apple «Core ML») — это фреймворк Apple для машинного обучения на устройстве. Он загружает модели в современном формате ML Program — это пакет .mlpackage, который создает экспортер Ultralytics, — и распределяет их между CPU, GPU и Apple Neural Engine (ANE), специализированным NPU в каждом чипе Apple Silicon. Поскольку все выполняется локально, инференс работает офлайн, не добавляет задержек сети и сохраняет пользовательские данные на устройстве.
CoreML напрямую интегрируется с фреймворком Vision от Apple, который управляет масштабированием и ориентацией изображений перед их подачей в модель — именно так iOS SDK Ultralytics передает кадры с камеры в YOLO практически с нулевыми затратами на предобработку.
Link to this sectionЗачем экспортировать YOLO26 в CoreML?#
- Скорость Neural Engine: детекция YOLO26n выполняется от начала до конца за 3.8 мс на iPhone 17 Pro для отдельных изображений и ~16 мс/кадр при непрерывном использовании камеры в реальном времени (см. таблицу и примечания ниже) — это комфортный режим реального времени с запасом производительности для работы твоего приложения.
- Без NMS по архитектуре: YOLO26 является end-to-end решением, поэтому для экспортированного графа не требуется конвейер NMS, а декодирование занимает менее миллисекунды. Более старые модели, такие как YOLO11, могут включать конвейер CoreML NMS с помощью
nms=True. - Приватно и офлайн: все вычисления остаются на устройстве — никаких обращений к облаку, никаких API-ключей, полная конфиденциальность данных.
- Один экспорт — вся экосистема: один и тот же файл
.mlpackageработает на iOS, iPadOS, macOS, watchOS, tvOS и visionOS, а также поддерживает официальный iOS SDK и плагин Flutter от Ultralytics.
Link to this sectionИзмеренная производительность#
Инференс от начала до конца для одного изображения для официальных моделей YOLO26n INT8 CoreML на iPhone 17 Pro (Apple A19, iOS 26.5). Каждая ячейка показывает общее время (предобработка + инференс + постобработка, исключая аннотирование) с разбивкой по этапам ниже. В iOS Vision выполняет масштабирование входных данных внутри запроса на инференс, поэтому предобработка указана как 0, а ее стоимость включена в инференс.
| Модель | Задача | размер (пиксели) | CPU.cpuOnly(мс) | Neural Engine.cpuAndNeuralEngine(мс) |
|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 9.1 0.0 / 9.1 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-seg | Сегментация | 640 | 12.3 0.0 / 12.1 / 0.2 | 4.8 0.0 / 4.5 / 0.3 |
| YOLO26n-sem | Семантика | 10241 | 21.8 0.0 / 21.0 / 0.8 | 12.1 0.0 / 11.3 / 0.8 |
| YOLO26n-cls | Классификация | 224 | 2.2 0.0 / 2.2 / 0.0 | 2.0 0.0 / 2.0 / 0.0 |
| YOLO26n-pose | Поза | 640 | 12.0 0.0 / 11.9 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-obb | OBB | 1024 | 21.7 0.0 / 21.7 / 0.0 | 7.2 0.0 / 7.2 / 0.0 |
- 1 Экспорт семантического CoreML встраивает ArgMax в граф и возвращает компактную карту классов в полном разрешении (
[1, 1024, 1024]) вместо float-логитов, поэтому постобработка представляет собой цветовое сканирование длительностью менее миллисекунды, а маски отображаются с высокой четкостью пикселей. - Значения скорости — это задержки при обработке одного изображения, рассчитанные как среднее арифметическое из 15 прогонов после 3 прогревочных прогонов на файле
bus.jpg. Измерения проводились через тайминги по этапам в iOS SDK с помощью бенчмарка Flutter-плагина в профилирующем режиме (оптимизированный нативный код). Стабильная работа камеры в реальном времени требует больше ресурсов (добавление леттербоксинга для всего сенсора в каждом кадре плюс тепловая стабилизация): модель YOLO26n показывает результат ~16 мс/кадр в приложении с живой камерой на том же устройстве — смотри документацию по производительности iOS SDK для профилирования в установившемся режиме. - Соответствующая таблица для CPU/GPU/NPU Snapdragon находится в разделе интеграции Qualcomm QNN.
Link to this sectionЭкспорт моделей YOLO26 в CoreML#
Link to this sectionУстановка#
Чтобы установить необходимый пакет, выполни:
# Install the required package for YOLO26
pip install ultralyticsКонвертер coremltools устанавливается автоматически при первом экспорте. Экспорт работает на macOS или x86 Linux; подробные инструкции и лучшие практики смотри в нашем руководстве по установке и руководстве по распространенным проблемам.
Link to this sectionИспользование#
Формат CoreML поддерживает режимы Экспорт, Предсказание и Валидация. Инференс и валидация с CoreML работают только на macOS. Экспортируй свою модель, а затем загрузи ее для выполнения инференса или проверки точности.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML (FP16 by default); quantize=8 matches the official app models
model.export(format="coreml", quantize=8) # creates 'yolo26n.mlpackage'from ultralytics import YOLO
# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")
# Run inference
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")
# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")Link to this sectionАргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'coreml' | Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входных данных модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования (только для весов в CoreML): 16 (FP16), 8 (INT8), "w8a16" (веса INT8 с активациями FP16) или 32/не задано (FP32). Заменяет устаревшие флаги half/int8. |
nms | bool | False | Встраивает конвейер CoreML NMS. Не требуется для YOLO26, работающей без NMS; используй для более ранних моделей, таких как YOLO11. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений с различными размерами. |
batch | int | 1 | Задает размер пакета (batch) для вывода экспортированной модели или максимальное количество изображений, которые модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps). |
Для получения дополнительной информации о процессе экспорта посети страницу документации Ultralytics по экспорту.
Link to this sectionНацеливание на Neural Engine#
CoreML выбирает оборудование через MLModelConfiguration.computeUnits. iOS SDK Ultralytics по умолчанию использует .cpuAndNeuralEngine на iOS 16+ вместо .all: в приложении камеры в реальном времени GPU уже занят композитингом превью и оверлеев, поэтому исключение его из работы позволяет избежать конфликтов и джиттера времени кадра, пока ANE выполняет основную работу. Выбирай .cpuOnly только для проверки совместимости — таблица выше показывает, сколько это стоит.
Запуск модели CoreML из Python на Mac host (через Ultralytics или coremltools) следует тем же правилам: Ultralytics загружается с ComputeUnit.CPU_AND_NE (macOS 13+ с переходом на CPU_ONLY в старых версиях macOS), что позволяет выполнять инференс на Neural Engine (в ~3 раза быстрее, чем на CPU). Это также позволяет избежать текущего ограничения macOS, при котором использование стандартных ComputeUnit.ALL / CPU_AND_GPU, добавляющих путь компиляции GPU/MPSGraph, прерывает процесс с ошибкой Error: MLIR pass manager failed в coremltools 9.x.
Link to this sectionРазвертывание экспортированных моделей YOLO26 CoreML#
Самый быстрый путь — это официальный iOS SDK Ultralytics YOLO, тот же пакет Swift, на котором работают приложение Ultralytics для iOS и плагин Flutter. Он автоматически распознает имена официальных моделей, загружает и кэширует .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. Эти ресурсы охватывают детали:
- Интеграция модели Core ML в твое приложение: руководство Apple по объединению и вызову модели CoreML.
- CoreML Tools: справочник по конвертации, квантованию и оптимизации для инструментария
coremltools, который обеспечивает этот экспорт. - Отчеты о производительности Xcode Core ML: профилирование размещения слоев на устройстве и задержек для твоей конкретной модели и устройства.
Поставляй модель либо встроенной в бандл приложения (мгновенная доступность, идеально для моделей nano/small), либо загружаемой при первом запуске и кэшируемой (меньший размер бинарного файла, легкие обновления модели) — официальные приложения используют второй подход с релизными ассетами GitHub.
Link to this sectionРекомендуемый рабочий процесс#
- Обучай свою модель с помощью режима обучения Ultralytics или начни с официальных весов YOLO26
- Экспортируй с помощью
model.export(format="coreml", quantize=8)на macOS или x86 Linux. - Проверяй точность с помощью
model.val()на Mac и профилируй с помощью отчета о производительности Xcode Core ML на целевом устройстве - Развертывай с помощью iOS SDK, плагина Flutter или собственной интеграции Vision, нацеливаясь на
.cpuAndNeuralEngine
Link to this sectionРезюме#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат .mlpackage для CoreML, квантовать их для Apple Neural Engine и развертывать с задержками в считанные миллисекунды — через официальный iOS SDK и плагин Flutter или через собственную интеграцию Vision. Для других целей развертывания просмотри страницу руководства по интеграции и сравни форматы с режимом Benchmark.
Link to this sectionFAQ#
Link to this sectionКак экспортировать модели YOLO26 в формат CoreML?#
Запусти model.export(format="coreml") в Python или yolo export model=yolo26n.pt format=coreml через CLI на macOS или x86 Linux. Добавь quantize=8, чтобы соответствовать официальным моделям приложения. Экспорт создает yolo26n.mlpackage ML Program, готовую для Xcode, iOS SDK или плагина Flutter.
Link to this sectionНужно ли мне nms=True при экспорте YOLO26?#
Нет. YOLO26 работает без NMS от начала до конца, поэтому экспортированный граф уже выдает финальные детекции, а затраты на декодирование составляют гораздо меньше миллисекунды. Опция nms=True существует для более ранних моделей, таких как YOLO11, где она встраивает конвейер CoreML NMS, чтобы твоему приложению не пришлось реализовывать подавление.
Link to this sectionКакую точность использовать — FP16 или INT8?#
Официальные модели приложения Ultralytics поставляются в формате INT8, что минимизирует размер загрузки и обеспечивает скорость, указанную в таблице выше. quantize=16 (FP16) — это консервативная альтернатива практически без потери точности. Перед выпуском проверь свой конкретный экспорт с помощью model.val() на Mac.
Link to this sectionКак убедиться, что инференс выполняется на Neural Engine?#
Установи MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (по умолчанию в iOS SDK на iOS 16+). Избегай .all в приложениях с камерой — GPU занят композитингом превью, и планирование инференса там вызывает джиттер времени кадра. Подтверди размещение с помощью отчета о производительности Xcode Core ML.
Link to this sectionМогу ли я запускать и проверять модели CoreML с помощью Ultralytics CLI?#
Да, на macOS: yolo predict model=yolo26n.mlpackage source=image.jpg и yolo val model=yolo26n.mlpackage data=coco8.yaml работают так же, как и с любым другим форматом. Выполнение CoreML требует оборудования Apple, поэтому эти режимы недоступны на Linux и Windows.
Link to this sectionКакой самый быстрый способ запустить YOLO26 в приложении iOS или Flutter?#
Используй официальный iOS SDK Ultralytics YOLO (Swift Package) или плагин Flutter. Оба варианта загружают официальные модели по имени с автоматической загрузкой и кэшированием, запускают их на Neural Engine и включают полноценные пользовательские интерфейсы камеры в реальном времени — таблица измеренной производительности выше была создана именно с этим стеком.