Экспорт моделей YOLO26 в CoreML#
Apple устанавливает специализированный ИИ-чип — Neural Engine — в каждый современный iPhone, iPad и Mac, а CoreML сегодня является поддерживаемым способом Ultralytics для развёртывания моделей на нём. Экспорт обученных моделей Ultralytics YOLO26 в CoreML преобразует контрольную точку .pt в нативный .mlpackage, который выполняет все семь задач YOLO на устройстве с низкой задержкой, без подключения к сети и передачи данных за пределы устройства.
Официальные Ultralytics YOLO iOS SDK и Flutter plugin запускают экспортированные модели CoreML на Apple Neural Engine сразу после установки — для обработки видео с камеры в реальном времени, предсказаний для отдельных изображений и автоматической загрузки моделей для всех семи задач YOLO26, включая Depth. Для развёртывания на NPU Android см. интеграцию Qualcomm QNN.
Экспортируй модели классификации с размером imgsz=224. Экспортируй модели detect, segment, semantic, depth, pose и OBB с размером
imgsz=640. Этот стандарт 224/640 используется для официальных мобильных ресурсов CoreML, LiteRT и QNN.
Apple представила новый Core AI framework и формат .aimodel для поколения iOS 27 и macOS 27, и Ultralytics экспортирует его с помощью format="coreai". CoreML остается форматом по умолчанию для SDK iOS и Flutter от Ultralytics, которые загружают Core AI как опцию на устройствах с iOS 27, а также форматом для более широкой совместимости с устройствами 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, который масштабирует и ориентирует изображения перед передачей в модель. Именно так Ultralytics iOS SDK передаёт кадры с камеры в 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, а также используется официальными iOS SDK и Flutter plugin Ultralytics.
Измеренная производительность#
Сквозной инференс одного изображения для стандартизированных ресурсов v8.3.0 YOLO26n INT8 CoreML на
iPhone 17 Pro с 12 ГБ памяти и iOS 26.5.2. В 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 | Detect | 640 | 9.2 0.0 / 9.2 / 0.0 | 3.2 0.0 / 3.2 / 0.0 |
| YOLO26n-seg | Segment | 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 | Глубина | 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 для всех остальных задач. - Значения Speed — это задержки пакетной обработки одного изображения: среднее значение для 15 запусков после 3 прогревочных запусков на
bus.jpg, измеренное с помощью поэтапного тайминга iOS SDK через тестовый стенд Flutter plugin в режиме профилирования (оптимизированный нативный код). Порядок CPU/ускорителя чередовался между задачами в одном последовательном проходе. Для строк CPU запрашивается Core ML.cpuOnly, а для строк CPU + ANE, предпочтительно, —.cpuAndNeuralEngine; окончательное размещение операций контролирует Core ML. При длительной работе камеры в реальном времени значения выше, поскольку учитывают конвейер захвата и масштабирования, а также стабилизацию температуры. В ходе исторического измерения камеры до введения стандарта на том же устройстве были получены значения 11.3 мс/кадр для detect YOLO26n и 16.5 мс/кадр для Depth YOLO26n — см. документацию по производительности iOS SDK, посвящённую профилированию установившегося режима. - Сравни результаты CPU/GPU для Android в интеграции LiteRT и результаты NPU Snapdragon в интеграции Qualcomm QNN.
Поддерживаемые задачи#
Экспорт CoreML поддерживает все семь задач Ultralytics. Семантическая сегментация и оценка глубины доступны только в YOLO26 — единственном семействе с такими головами.
| Задача | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Детекция | ✅ | ✅ | ✅ |
| Сегментация | ✅ | ✅ | ✅ |
| Семантическая сегментация | ❌ | ❌ | ✅ |
| Оценка глубины | ❌ | ❌ | ✅ |
| Классификация | ✅ | ✅ | ✅ |
| Поза | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Экспорт моделей 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). ML Programs NMS используют FP16 (для предпросмотра в Xcode и обязательно для segment и pose); передай 32, чтобы переопределить это значение для detect. Заменяет устаревшие флаги half/int8. |
nms | bool, необязательно | None | Выбери сырой вывод (None по умолчанию), встроенную NMS (True) или голову без NMS (False). Встроенная NMS поддерживает детектирование, сегментацию и позы с помощью dynamic=False. |
dynamic | bool | False | Позволяет использовать динамические размеры входных данных. Не поддерживается для моделей классификации или RT-DETR и не может комбинироваться с nms=True. |
batch | int | 1 | Задает размер пакета инференса экспортируемой модели или максимальное количество изображений, которое экспортированная модель будет обрабатывать одновременно в режиме predict. Значения больше 1 требуют dynamic=True. |
device | str | None | Указывает устройство для экспорта: GPU (device=0), CPU (device=cpu), MPS для Apple silicon (device=mps). |
Подробнее о процессе экспорта см. на странице документации Ultralytics об экспорте.
Нацеливание на Neural Engine#
CoreML выбирает оборудование через MLModelConfiguration.computeUnits. Ultralytics iOS SDK по умолчанию использует .cpuAndNeuralEngine в iOS 16+ вместо .all: в приложении с камерой реального времени GPU уже занят компоновкой предпросмотра и наложений, поэтому его исключение предотвращает конкуренцию за ресурсы и дрожание времени обработки кадров, пока 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 для iOS и Flutter plugin. Он автоматически распознаёт официальные имена моделей, загружает и кэширует .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 plugin для кроссплатформенных приложений с единой кодовой базой для 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 и выполни профилирование с помощью отчёта о производительности Core ML в Xcode на целевом устройстве - Разверни модель с помощью iOS SDK, Flutter plugin или собственной интеграции Vision, выбрав
.cpuAndNeuralEngine
Итоги#
В этом руководстве ты узнал, как экспортировать модели Ultralytics YOLO26 в формат .mlpackage CoreML, квантовать их для Apple Neural Engine и развёртывать с задержкой в единицы миллисекунд — через официальный iOS SDK и Flutter plugin или собственную интеграцию Vision. Для других целевых платформ открой страницу руководства по интеграциям и сравни форматы с помощью режима Benchmark.
Часто задаваемые вопросы#
Выполни
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 plugin.Используй
nms=True, если твоему приложению нужны детекции с включенной NMS. Значение по умолчаниюnms=Noneэкспортирует сырые результаты «один ко многим» для обработки твоим приложением;nms=Falseвыбирает голову YOLO26 без NMS. Встроенная NMS поддерживает детектирование, сегментацию и позы со статическими формами; остальные задачи сохраняют свой собственный вывод.Официальные модели приложений Ultralytics поставляются в формате INT8, что минимизирует размер загрузки и обеспечивает скорость, указанную в таблице выше.
quantize=16(FP16) — консервативная альтернатива практически без потери точности. Перед выпуском проверь свой конкретный экспорт с помощьюmodel.val()на Mac.Установи
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(значение по умолчанию в iOS SDK на 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.Используй официальный Ultralytics YOLO iOS SDK (Swift Package) или Flutter plugin. Оба компонента загружают официальные модели по имени, автоматически скачивают и кэшируют их, запускают на Neural Engine и включают полнофункциональные интерфейсы камеры реального времени — приведённая выше таблица производительности получена именно с этим стеком.