YOLO Vision 2026:

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

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

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

Официальный 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.

Будущий формат Core AI от Apple

Apple представила новый фреймворк Core AI и формат .aimodel для поколения iOS 27 и macOS 27, однако Ultralytics в настоящее время не выполняет экспорт в него. CoreML остается поддерживаемым форматом для текущих релизов Ultralytics и более широкой совместимости с устройствами Apple.



Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀

Что такое CoreML?#

Apple CoreML deployment pipeline

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Обнаружение6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segСегментация64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semСемантика6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthDepth64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsКлассификация2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-poseПоза64011.9
0.0 / 11.9 / 0.0
3.9
0.0 / 3.9 / 0.0
YOLO26n-obbOBB64010.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, единственном семействе, в котором поставляются эти «головы».

ЗадачаYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
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 classification
Предсказание
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")

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

АргументТипПо умолчаниюОписание
formatstr'coreml'Целевой формат для экспортированной модели, определяющий совместимость с различными средами развертывания.
imgszint или tuple640Желаемый размер изображения для входа модели. Может быть целым числом для квадратных изображений или кортежем (height, width) для конкретных размеров.
quantizeint или strNoneТочность квантования (только для весов в CoreML): 16 (FP16), 8 (INT8), "w8a16" (веса INT8 с активациями FP16) или 32 / не задано (FP32). Неустановленные программы NMS ML используют FP16 для превью в Xcode; передай параметр 32, чтобы переопределить это. Заменяет устаревшие флаги half / int8.
nmsboolFalseВстраивает конвейер CoreML NMS. Только для моделей обнаружения (для других задач игнорируется с предупреждением); не требуется для YOLO26, где NMS не используется, но пригодится для более ранних моделей, таких как YOLO11.
dynamicboolFalseПозволяет использовать динамические размеры входных данных, повышая гибкость при обработке изображений с различными размерами.
batchint1Указывает размер пакета для пакетного инференса экспортированной модели или максимальное количество изображений, которые экспортированная модель будет обрабатывать одновременно в режиме predict.
devicestrNoneУказывает устройство для экспорта: 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. Эти ресурсы охватывают все детали:

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

Рекомендуемый рабочий процесс#

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

  • Нет. YOLO26 работает без NMS сквозным образом, поэтому экспортированный граф уже выдает окончательные детекции, а затраты на декодирование составляют значительно меньше миллисекунды. Опция nms=True существует для более ранних моделей обнаружения, таких как YOLO11, где она встраивает конвейер NMS для CoreML, чтобы твоему приложению не приходилось реализовывать подавление. Конвейеры CoreML 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 и включают полноценный пользовательский интерфейс камеры в реальном времени — таблица измеренной производительности выше была получена именно на этом стеке.

Комментарии