Экспорт CoreML для моделей YOLO26#
Apple поставляет специализированные кремниевые чипы для ИИ — Neural Engine — в каждый современный iPhone, iPad и Mac, и CoreML является поддерживаемым способом развертывания моделей Ultralytics на них сегодня. Экспорт моделей Ultralytics YOLO26 в CoreML превращает обученную контрольную точку .pt в нативную .mlpackage, которая выполняет все семь задач YOLO на устройстве с низкой задержкой, без подключения к сети и без передачи данных с устройства.
Официальный Ultralytics YOLO iOS SDK и плагин Flutter запускают экспортированные файлы CoreML на Apple Neural Engine «из коробки» — инференс с камеры в реальном времени, предсказание для одного изображения и автоматическую загрузку моделей для всех семи задач YOLO26, включая Depth. Информацию о развертывании на мобильных NPU от Android см. в разделе интеграция с Qualcomm QNN.
Экспортируй модели классификации в imgsz=224. Экспортируй модели обнаружения, сегментации, семантики, глубины, позы и OBB в imgsz=640. Этот стандарт 224/640 разделяется официальными мобильными ресурсами CoreML, LiteRT и QNN.
Компания Apple представила новый фреймворк Core AI и формат .aimodel для поколения iOS 27 и macOS 27, а Ultralytics экспортирует его с помощью format="coreai". CoreML остается рекомендуемым форматом для SDK iOS и Flutter от Ultralytics и обеспечения более широкой совместимости с устройствами Apple.
Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎
Что такое 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 практически с нулевыми затратами на предварительную обработку.
Зачем экспортировать YOLO26 в CoreML?#
- Скорость Neural Engine: CoreML планирует поддерживаемые операции на Neural Engine от Apple для инференса на устройстве с низким временем отклика. Смотри таблицу физических устройств ниже и тестируй свой точный экспорт на целевом оборудовании.
- Без NMS по умолчанию: YOLO26 является сквозной моделью, поэтому экспортированному графу не нужен конвейер NMS, а декодирование занимает менее миллисекунды. Более старые модели обнаружения, такие как YOLO11, могут встраивать конвейер NMS для CoreML с помощью
nms=True. - Конфиденциально и офлайн: Все вычисления выполняются на устройстве — никаких обращений к облаку, никаких ключей API, полная конфиденциальность данных.
- Один экспорт для всей экосистемы: Тот же
.mlpackageработает на iOS, iPadOS, macOS, watchOS, tvOS и visionOS, а также обеспечивает работу официальных iOS SDK и плагина Flutter от Ultralytics.
Измеренная производительность#
Сквозной инференс для одного изображения для стандартизированных ресурсов v8.3.0 YOLO26n INT8 CoreML на iPhone 17 Pro с 12 ГБ памяти и iOS 26.5.2. Его чип A19 Pro оснащен 6-ядерным процессором CPU (2 производительных и 4 эффективных ядра), 6-ядерным GPU с нейроускорителями и 16-ядерным Neural Engine. Каждая ячейка показывает общее время (предварительная обработка + инференс + постобработка, без учета разметки) с разбивкой по этапам под ней. На iOS компонент Vision выполняет масштабирование входных данных прямо в запросе на инференс, поэтому предварительная обработка отображается как 0, а ее затраты включены в инференс.
| Модель | Задача | размер (пиксели) | CPU Core ML .cpuOnly(мс) | CPU + предпочтительно ANE Core ML .cpuAndNeuralEngine(мс) |
|---|---|---|---|---|
| YOLO26n | Обнаружение | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Сегментация | 640 | 12.6 0.0 / 12.0 / 0.5 | 4.8 0.0 / 4.2 / 0.6 |
| YOLO26n-sem | Семантика | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Depth | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Классификация | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-pose | Поза | 640 | 11.9 0.0 / 11.9 / 0.0 | 3.9 0.0 / 3.9 / 0.0 |
| YOLO26n-obb | OBB | 640 | 10.6 0.0 / 10.6 / 0.0 | 3.4 0.0 / 3.4 / 0.0 |
- Точные релизные ассеты
v8.3.0объявляют входные данные 224×224 для классификации и 640×640 для всех остальных задач. - Значения скорости представляют собой задержки при пакетной обработке одного изображения — среднее арифметическое 15 запусков после 3 прогревочных запусков на
bus.jpg, измеренное с помощью замеров времени для каждого этапа в iOS SDK через среду тестирования плагина Flutter в режиме профилирования (оптимизированный нативный код). Порядок процессоров/ускорителей чередовался между задачами в одном последовательном проходе. Строки для CPU запрашивают Core ML.cpuOnly; строки для CPU + предпочтительно ANE запрашивают.cpuAndNeuralEngine, а окончательное размещение операций контролируется Core ML. Устойчивая работа камеры в реальном времени работает медленнее, так как она включает конвейер захвата и масштабирования плюс стабилизацию температуры. Исторический предстандартный проход камеры зафиксировал 11.3 мс/кадр для детекции YOLO26n и 16.5 мс/кадр для глубины YOLO26n на том же устройстве — см. документацию по производительности iOS SDK для профилирования в установившемся режиме. - Сравни результаты для CPU/GPU на Android в интеграции LiteRT и результаты для NPU Snapdragon в интеграции Qualcomm QNN.
Поддерживаемые задачи#
Экспорт в CoreML поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26, единственном семействе, в котором поставляются эти «головы».
Экспорт моделей YOLO26 в CoreML#
Установка#
Чтобы установить необходимый пакет, выполни:
# Install the required package for YOLO26
pip install ultralyticsКонвертер coremltools устанавливается автоматически при первом экспорте. Экспорт запускается на macOS или x86 Linux; подробные инструкции и рекомендации ищи в нашем руководстве по установке и руководстве по частым проблемам.
Использование#
Формат CoreML поддерживает режимы Export, Predict и Validate. Инференс и валидация с помощью CoreML выполняются только на macOS. Экспортируй модель, затем загрузи экспортированную модель для запуска инференса или проверки ее точности.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML with INT8 weight quantization, matching the official app models
model.export(format="coreml", quantize=8, imgsz=640) # use imgsz=224 for classificationfrom 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")Аргументы экспорта#
| Аргумент | Тип | По умолчанию | Описание |
|---|---|---|---|
format | str | 'coreml' | Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания. |
imgsz | int или tuple | 640 | Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров. |
quantize | int или str | None | Точность квантования (только для весов в CoreML): 16 (FP16), 8 (INT8), "w8a16" (веса INT8 с активациями FP16) или 32/не задано (FP32). Программы NMS ML используют FP16 (для предварительного просмотра в Xcode, а также требуется для сегментации и позы); передай 32, чтобы переопределить для детектирования. Заменяет устаревшие флаги half/int8. |
nms | bool | False | Встраивает NMS в экспортированную модель. Поддерживается для детектирования, сегментации и позы (игнорируется с предупреждением для других задач); не требуется для моделей YOLO26 без NMS, используй для более ранних моделей, таких как YOLO11. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений с различными размерами. |
batch | int | 1 | Указывает размер пакета для пакетного инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict. |
device | str | None | Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps). |
Дополнительную информацию о процессе экспорта см. на странице документации Ultralytics по экспорту.
Нацеливание на Neural Engine#
CoreML выбирает железо с помощью MLModelConfiguration.computeUnits. iOS SDK от Ultralytics по умолчанию использует .cpuAndNeuralEngine на iOS 16+, а не .all: в приложении камеры реального времени графический процессор уже занят компоновкой превью и наложений, поэтому его исключение позволяет избежать конфликтов и дрожания времени кадров, пока всю тяжелую работу выполняет ANE. Задавай .cpuOnly только для тестирования совместимости — таблица выше показывает, во сколько это обойдется.
Запуск модели CoreML из Python на хосте Mac (через 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.
Развертывание экспортированных моделей YOLO26 CoreML#
Самый быстрый путь — официальный Ultralytics YOLO iOS SDK, тот же Swift-пакет, на котором работают приложение Ultralytics и плагин 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, лежащей в основе этого экспорта. - Отчеты о производительности Core ML в Xcode: Размещение по слоям на устройстве и профилирование задержки для твоей конкретной модели и устройства.
Поставляй модель либо встроенной в бандл приложения (мгновенная доступность, идеально для nano/small моделей), либо загружаемой при первом запуске и кэшируемой (меньший размер бинарного файла, простое обновление моделей). Официальные приложения сочетают оба подхода: модели nano по умолчанию входят в комплект для немедленного использования, в то время как более крупные варианты загружаются по запросу и кэшируются локально.
Рекомендуемый рабочий процесс#
- Обучай свою модель с помощью режима Train от Ultralytics или начните с официальных весов YOLO26
- Экспортируй с помощью
model.export(format="coreml", quantize=8, imgsz=640)на macOS или x86 Linux (imgsz=224для классификации) - Проверяй точность с помощью
model.val()на Mac и выполняй профилирование с помощью отчета о производительности Xcode Core ML на целевом устройстве - Развертывай с помощью iOS SDK, плагина Flutter или собственной интеграции Vision, ориентируясь на
.cpuAndNeuralEngine
Резюме#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат .mlpackage CoreML, квантовать их для Apple Neural Engine и развертывать с задержками порядка миллисекунд — через официальный iOS SDK, плагин Flutter или собственную интеграцию Vision. О других целях развертывания читай на странице руководств по интеграции и сравнивай форматы с помощью режима Benchmark.
FAQ#
Запусти
model.export(format="coreml", imgsz=640)в Python илиyolo export model=yolo26n.pt format=coreml imgsz=640из CLI на macOS или x86 Linux. Используйimgsz=224для классификации и добавьquantize=8, чтобы соответствовать официальным моделям приложения. Экспорт создает программуyolo26n.mlpackageML Program, готовую для Xcode, iOS SDK или плагина Flutter.Нет. YOLO26 работает без NMS «от конца до конца» (end-to-end), поэтому экспортированный граф уже выдает финальные детектирования, а затраты на декодирование составляют значительно меньше миллисекунды. Опция
nms=Trueсуществует для более ранних моделей, таких как YOLO11, где она встраивает NMS, чтобы твоему приложению не приходилось реализовывать подавление. Она поддерживается для моделей детектирования, сегментации и позы;nms=Trueигнорируется с предупреждением для других задач.Официальные модели приложения Ultralytics поставляются в формате INT8, что минимизирует размер загрузки и обеспечивает скорость, указанную в таблице выше.
quantize=16(FP16) — это консервативная альтернатива практически без потери точности. Проверь свой точный экспорт с помощьюmodel.val()на Mac перед выпуском.Установи
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(это значение по умолчанию для iOS SDK на iOS 16+). Избегай.allв приложениях камеры — графический процессор занят компоновкой превью, и планирование инференса там вызывает дрожание времени кадров. Подтверди размещение с помощью отчета о производительности Xcode Core ML.Да, на macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgиyolo val model=yolo26n.mlpackage data=coco8.yamlработают как любой другой формат. Для выполнения CoreML требуется оборудование Apple, поэтому эти режимы недоступны на Linux и Windows.Используй официальный Ultralytics YOLO iOS SDK (Swift Package) или плагин Flutter. Оба загружают официальные модели по имени с автоматической загрузкой и кэшированием, запускают их на Neural Engine и включают полноценный пользовательский интерфейс камеры в реальном времени — таблица измеренной производительности выше была получена именно на этом стеке.