YOLO Vision 2026:

Exportación a CoreML para modelos YOLO26#

Apple incluye silicio dedicado para IA (el Neural Engine) en cada iPhone, iPad y Mac modernos, y CoreML es la vía recomendada por Ultralytics para desplegar modelos en él hoy en día. Exportar modelos de Ultralytics YOLO26 a CoreML convierte un archivo de puntos de control entrenado de .pt en un .mlpackage nativo que ejecuta las siete tareas de YOLO en el dispositivo con baja latencia, sin conexión de red y sin que los datos salgan del dispositivo.

Ejecuta YOLO hoy mismo en el Apple Neural Engine con las aplicaciones móviles oficiales

El SDK oficial de Ultralytics YOLO para iOS y el complemento de Flutter ejecutan exportaciones de CoreML en el Apple Neural Engine de forma nativa: inferencia de cámara en tiempo real, predicción de imagen única y descarga automática de modelos para las siete tareas de YOLO26, incluida la profundidad. Para despliegues en NPU de Android, consulta la integración con Qualcomm QNN.

Tamaños de entrada móviles oficiales

Exporta modelos de clasificación en imgsz=224. Exporta modelos de detección, segmentación, semántica, profundidad, pose y OBB en imgsz=640. Este estándar de 224/640 es compartido por los recursos móviles oficiales de CoreML, LiteRT y QNN.

El nuevo formato de Core AI de Apple

Apple ha introducido el nuevo Core AI framework y .aimodel format para la generación de iOS 27 y macOS 27, y Ultralytics lo exporta con format="coreai". CoreML sigue siendo el formato recomendado para los SDKs de iOS y Flutter de Ultralytics y para una mayor compatibilidad con dispositivos Apple.



Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎

¿Qué es CoreML?#

Apple CoreML deployment pipeline

CoreML (denominado "Core ML" por Apple) es el marco de aprendizaje automático en el dispositivo de Apple. Carga modelos en el formato moderno ML Program (el paquete .mlpackage que produce el exportador de Ultralytics) y los programa en la CPU, la GPU y el Apple Neural Engine (ANE) del dispositivo, la NPU dedicada en cada chip con silicio de Apple. Como todo se ejecuta localmente, la inferencia funciona sin conexión, no añade latencia de red y mantiene los datos del usuario en el dispositivo.

CoreML se integra directamente con el marco Vision de Apple, que gestiona el escalado y la orientación de la imagen en su camino hacia el modelo; así es como el SDK de iOS de Ultralytics alimenta los fotogramas de la cámara a YOLO con un coste de preprocesamiento prácticamente nulo.

¿Por qué exportar YOLO26 a CoreML?#

  • Velocidad del Neural Engine: CoreML planifica las operaciones compatibles en el Neural Engine de Apple para la inferencia en el dispositivo de baja latencia. Consulta la tabla de dispositivos físicos a continuación y evalúa tu exportación exacta en tu hardware de destino.
  • Sin NMS por diseño: YOLO26 es de extremo a extremo, por lo que el grafo exportado no necesita ninguna tubería de NMS y la decodificación toma menos de un milisegundo. Los modelos de detección más antiguos, como YOLO11, pueden integrar una tubería de NMS de CoreML con nms=True.
  • Privado y sin conexión: Todo el cálculo permanece en el dispositivo; sin idas y vueltas a la nube, sin claves de API y con total privacidad de los datos.
  • Una exportación, todo el ecosistema: El mismo .mlpackage se ejecuta en iOS, iPadOS, macOS, watchOS, tvOS y visionOS, y alimenta el SDK de iOS y el complemento de Flutter oficiales de Ultralytics.

Rendimiento medido#

Inferencia de extremo a extremo para una sola imagen para los recursos CoreML INT8 de YOLO26n estandarizados v8.3.0 en un iPhone 17 Pro con 12 GB de memoria e iOS 26.5.2. Su A19 Pro cuenta con una CPU de 6 núcleos (2 de rendimiento y 4 de eficiencia), una GPU de 6 núcleos con aceleradores neuronales y un Neural Engine de 16 núcleos. Cada celda muestra el tiempo total (preprocesamiento + inferencia + postprocesamiento, excluyendo la anotación) con el desglose por etapa debajo. En iOS, Vision realiza el escalado de entrada dentro de la solicitud de inferencia, por lo que el preprocesamiento se registra como 0 y su coste se incluye en la inferencia.

ModeloTareatamaño
(píxeles)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE preferido
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetectar6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegmentar64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemántica6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthProfundidad64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsClasificar2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePose64011.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
  • Los recursos de lanzamiento exactos de v8.3.0 declaran entradas de 224×224 para clasificación y de 640×640 para cualquier otra tarea.
  • Los valores de velocidad son latencias de ráfaga para una sola imagen: la media de 15 ejecuciones tras 3 ejecuciones de calentamiento en bus.jpg, medidas a través de la temporización por etapa del SDK de iOS mediante el banco de pruebas del complemento de Flutter en modo de perfil (código nativo optimizado). El orden de CPU/acelerador alternó entre tareas en un barrido secuencial. Las filas de CPU solicitan Core ML .cpuOnly; las filas de CPU + ANE preferido solicitan .cpuAndNeuralEngine, y la ubicación final de la operación la controla Core ML. La operación continua de la cámara en tiempo real se ejecuta a un nivel superior porque incluye la captura y la tubería de escalado más el asentamiento térmico. Un barrido de cámara preestándar histórico midió 11,3 ms/fotograma para la detección de YOLO26n y 16,5 ms/fotograma para la profundidad de YOLO26n en el mismo dispositivo; consulta el documento de rendimiento del SDK de iOS para ver la perfilación en estado estacionario.
  • Compara los resultados de CPU/GPU en Android en la integración con LiteRT y los resultados de la NPU Snapdragon en la integración con Qualcomm QNN.

Tareas compatibles#

La exportación a CoreML es compatible con las siete tareas de Ultralytics. La segmentación semántica y la estimación de profundidad solo están disponibles con YOLO26, la única familia que incluye esas cabezas.

TareaYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Exportar modelos YOLO26 a CoreML#

Instalación#

Para instalar el paquete necesario, ejecuta:

Instalación
# Install the required package for YOLO26
pip install ultralytics

El conversor de coremltools se instala automáticamente en la primera exportación. La exportación se ejecuta en macOS o Linux x86; para obtener instrucciones detalladas y mejores prácticas, consulta nuestra guía de instalación y la guía de problemas comunes.

Uso#

El formato CoreML es compatible con los modos Export, Predict y Validate. La inferencia y la validación con CoreML se ejecutan únicamente en macOS. Exporta tu modelo y luego cárgalo para ejecutar la inferencia o validar su precisión.

Exportar
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
Predecir
from ultralytics import YOLO

# Load the exported CoreML model (macOS)
model = YOLO("yolo26n.mlpackage")

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
Validar
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")

Argumentos de exportación#

ArgumentoTipoPredeterminadoDescripción
formatstr'coreml'Formato de destino para el modelo exportado, definiendo la compatibilidad con diversos entornos de despliegue.
imgszint o tuple640Tamaño de imagen deseado para la entrada del modelo. Puede ser un número entero para imágenes cuadradas o una tupla (height, width) para dimensiones específicas.
quantizeint o strNonePrecisión de cuantización (solo pesos para CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesos INT8 con activaciones en FP16), o 32/sin definir (FP32). Los programas de NMS ML usan FP16 (para la vista previa de Xcode, y requerido por segmentación y pose); pasa 32 para anularlo en detección. Reemplaza las banderas obsoletas half/int8.
nmsboolFalseIncrusta NMS en el modelo exportado. Es compatible con detección, segmentación y pose (se ignora con una advertencia para otras tareas); no es necesario para YOLO26 sin NMS, úsalo para modelos anteriores como YOLO11.
dynamicboolFalsePermite tamaños de entrada dinámicos, mejorando la flexibilidad al manejar diferentes dimensiones de imagen.
batchint1Especifica el tamaño de inferencia por lotes del modelo de exportación o el número máximo de imágenes que el modelo exportado procesará simultáneamente en el modo predict.
devicestrNoneEspecifica el dispositivo para la exportación: GPU (device=0), CPU (device=cpu), MPS para Apple silicon (device=mps).

Para más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre exportación.

Dirigido al Neural Engine#

CoreML selecciona el hardware mediante MLModelConfiguration.computeUnits. El SDK de iOS de Ultralytics utiliza de forma predeterminada .cpuAndNeuralEngine en iOS 16+ en lugar de .all: en una aplicación de cámara en tiempo real, la GPU ya está ocupada componiendo la vista previa y las superposiciones, por lo que excluirla evita conflictos y fluctuaciones en el tiempo de los fotogramas mientras el ANE realiza el trabajo pesado. Fija .cpuOnly únicamente para pruebas de compatibilidad; la tabla anterior muestra lo que cuesta.

Ejecutar un modelo CoreML desde Python en un Mac host (a través de Ultralytics o coremltools) sigue la misma regla: Ultralytics se carga con ComputeUnit.CPU_AND_NE (macOS 13+, recurriendo a CPU_ONLY en macOS más antiguos), manteniendo la inferencia en el Neural Engine (~3 veces más rápido que la CPU). Esto también evita una limitación actual del host macOS donde el ComputeUnit.ALL / CPU_AND_GPU predeterminado —que añade la ruta de compilación de GPU/MPSGraph— aborta el proceso con una aserción de Error: MLIR pass manager failed en coremltools 9.x.

Desplegar modelos CoreML de YOLO26 exportados#

La vía más rápida es el SDK oficial de Ultralytics YOLO para iOS, el mismo paquete de Swift que impulsa la aplicación de iOS de Ultralytics y el complemento de Flutter. Resuelve automáticamente los nombres oficiales de los modelos, descarga y almacena en caché el .mlpackage, y devuelve resultados totalmente decodificados:

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
    }
}

Para aplicaciones de cámara, añade el YOLOView del SDK para inferencia en tiempo real con superposiciones nativas, o utiliza el complemento de Flutter para aplicaciones multiplataforma que comparten una misma base de código con Android.

Integrar un .mlpackage en bruto por ti mismo también es sencillo con la pila de Apple: cárgalo con MLModel, envuélvelo en un VNCoreMLRequest y alimenta las imágenes a través de VNImageRequestHandler. Estos recursos cubren los detalles:

Distribuye el modelo ya sea integrado en el paquete de la aplicación (disponibilidad instantánea, ideal para modelos nano/small) o descargado en la primera ejecución y almacenado en caché (binario más pequeño, actualizaciones de modelos sencillas). Las aplicaciones oficiales combinan ambos enfoques: los modelos nano predeterminados se empaquetan para un uso inmediato, mientras que las variantes más grandes se descargan bajo demanda y se almacenan en caché localmente.

Flujo de trabajo recomendado#

  1. Entrena tu modelo con el modo Train de Ultralytics, o comienza a partir de los pesos oficiales de YOLO26
  2. Exporta con model.export(format="coreml", quantize=8, imgsz=640) en macOS o Linux x86 (imgsz=224 para clasificación)
  3. Verifica la precisión con model.val() en un Mac y perfila con un informe de rendimiento de Xcode Core ML en tu dispositivo de destino
  4. Despliega con el SDK de iOS, el complemento de Flutter o tu propia integración de Vision, apuntando a .cpuAndNeuralEngine

Resumen#

En esta guía, has aprendido a exportar modelos de Ultralytics YOLO26 al formato .mlpackage de CoreML, cuantizarlos para el Apple Neural Engine y desplegarlos con latencias de un solo dígito en milisegundos, ya sea a través del SDK de iOS y el complemento de Flutter oficiales o de tu propia integración de Vision. Para otros destinos de despliegue, explora la página de la guía de integración y compara formatos con el modo Benchmark.

FAQ#

  • Ejecuta model.export(format="coreml", imgsz=640) en Python o yolo export model=yolo26n.pt format=coreml imgsz=640 desde la CLI en macOS o Linux x86. Utiliza imgsz=224 para la clasificación y añade quantize=8 para que coincida con los modelos oficiales de la aplicación. La exportación produce un programa ML yolo26n.mlpackage listo para Xcode, el SDK de iOS o el complemento de Flutter.

  • No. YOLO26 no requiere NMS de extremo a extremo, por lo que el gráfico exportado ya emite detecciones finales y costos de decodificación muy por debajo de un milisegundo. La opción nms=True existe para modelos anteriores como YOLO11, donde incrusta NMS para que tu aplicación no tenga que implementar la supresión. Es compatible con modelos de detección, segmentación y pose; nms=True se ignora con una advertencia para otras tareas.

  • Los modelos oficiales de la aplicación de Ultralytics se distribuyen como INT8, lo que minimiza el tamaño de descarga y se ejecuta a las velocidades de la tabla anterior. quantize=16 (FP16) es una alternativa conservadora prácticamente sin pérdida de precisión. Valida tu exportación exacta con model.val() en un Mac antes de realizar el lanzamiento.

  • Configura MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (el valor predeterminado del SDK de iOS en iOS 16+). Evita .all en aplicaciones de cámara: la GPU está ocupada componiendo la vista previa y programar la inferencia allí provoca fluctuaciones en el tiempo de los fotogramas. Confirma la ubicación con un informe de rendimiento de Xcode Core ML.

  • Sí, en macOS: yolo predict model=yolo26n.mlpackage source=image.jpg y yolo val model=yolo26n.mlpackage data=coco8.yaml funcionan como cualquier otro formato. La ejecución de CoreML requiere hardware de Apple, por lo que estos modos no están disponibles en Linux y Windows.

  • Utiliza el SDK oficial de Ultralytics YOLO para iOS (paquete de Swift) o el complemento de Flutter. Ambos cargan modelos oficiales por nombre con descarga y almacenamiento en caché automáticos, los ejecutan en el Neural Engine e incluyen interfaces de usuario de cámara en tiempo real completas; la tabla de rendimiento medida anterior se produjo exactamente con esta pila.

Comentarios