YOLO Vision 2026:

Exportación a CoreML para modelos YOLO26#

Apple incluye silicio especializado para IA, el Neural Engine, en cada iPhone, iPad y Mac modernos, y CoreML es la ruta compatible de Ultralytics para implementar modelos en ellos hoy en día. Exportar modelos Ultralytics YOLO26 a CoreML convierte un punto de control .pt entrenado en un .mlpackage nativo que ejecuta las siete tareas de YOLO en el dispositivo con baja latencia, sin conexión a la 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 Ultralytics YOLO iOS SDK oficial y el plugin de Flutter ejecutan exportaciones CoreML en el Apple Neural Engine directamente; 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 la implementación en NPU de Android, consulta la integración Qualcomm QNN.

Tamaños de entrada móviles oficiales

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

El futuro formato Core AI de Apple

Apple ha introducido el nuevo marco de Core AI y formato .aimodel para la generación de iOS 27 y macOS 27, pero Ultralytics no lo exporta actualmente. CoreML sigue siendo el formato compatible para las versiones actuales de Ultralytics y una mayor compatibilidad con dispositivos Apple.



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

¿Qué es CoreML?#

Apple CoreML deployment pipeline

CoreML (estilizado como "Core ML" por Apple) es el framework de machine learning integrado 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 a través de la CPU, la GPU y el Apple Neural Engine (ANE) del dispositivo, la NPU dedicada en todos los chips de 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 Vision framework de Apple, que gestiona el escalado y la orientación de la imagen antes de que llegue al modelo; así es como el iOS SDK de Ultralytics envía 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 end-to-end, por lo que el grafo exportado no necesita una canalización NMS y la decodificación tarda menos de un milisegundo. Los modelos de detección más antiguos, como YOLO11, pueden integrar una canalización NMS de CoreML con nms=True.
  • Privado y sin conexión: Todo el cálculo permanece en el dispositivo: sin viajes a la nube, sin claves API y con total privacidad de los datos.
  • Una exportación, todo el ecosistema: El mismo .mlpackage funciona en iOS, iPadOS, macOS, watchOS, tvOS y visionOS, y potencia el iOS SDK y el plugin de Flutter oficiales de Ultralytics.

Rendimiento medido#

Inferencia de imagen única de extremo a extremo 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 núcleos 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 etapas debajo. En iOS, Vision realiza el reescalado de entradas 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 la versión exacta 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 de imagen única: 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 arnés 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, controlándose la ubicación final de la operación por Core ML. El funcionamiento sostenido de la cámara en tiempo real es mayor porque incluye la canalización de captura y reescalado más el asentamiento térmico. Un barrido de cámara histórico preestándar 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 la perfilación en estado estacionario.
  • Compara los resultados de CPU/GPU de Android en la integración de LiteRT y los resultados de NPU de Snapdragon en la integración de 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
Detectar
Segmentar
Semántica
Profundidad
Clasificar
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 convertidor 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 validación con CoreML solo se ejecutan en macOS. Exporta tu modelo y, a continuación, cárgalo para realizar inferencias 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 FP16), o 32/sin configurar (FP32). Los programas ML sin NMS usan FP16 para la vista previa en Xcode; pasa 32 para anularlo. Sustituye a las banderas obsoletas half/int8.
nmsboolFalseIntegra una canalización NMS de CoreML. Solo para modelos de detección (se ignora con un aviso en otras tareas); no es necesario para YOLO26, que no requiere 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 lote del modelo exportado o el número máximo de imágenes que el modelo 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 obtener más detalles sobre el proceso de exportación, visita la página de documentación de Ultralytics sobre la exportación.

Dirigido al Neural Engine#

CoreML elige el hardware mediante MLModelConfiguration.computeUnits. El iOS SDK de Ultralytics utiliza .cpuAndNeuralEngine por defecto 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 la contención y la inestabilidad en el tiempo de fotograma mientras el ANE realiza el trabajo pesado. Marca .cpuOnly solo para pruebas de compatibilidad; la tabla anterior muestra su coste.

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+, volviendo a CPU_ONLY en versiones de macOS más antiguas), manteniendo la inferencia en el Neural Engine (~3× más rápido que en 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— interrumpe el proceso con una aserción Error: MLIR pass manager failed en coremltools 9.x.

Desplegar modelos CoreML de YOLO26 exportados#

La ruta más rápida es el Ultralytics YOLO iOS SDK oficial, el mismo paquete de Swift que impulsa la aplicación de Ultralytics para iOS y el plugin de Flutter. Resuelve automáticamente los nombres de los modelos oficiales, descarga y almacena en caché el .mlpackage y devuelve los 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, utiliza el YOLOView del SDK para inferencia en tiempo real con superposiciones nativas, o usa el plugin de Flutter para aplicaciones multiplataforma que comparten una misma base de código con Android.

Integrar un .mlpackage en bruto tú mismo también es sencillo con la pila de Apple: cárgalo con MLModel, envuélvelo en una VNCoreMLRequest y envía 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 con 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 Core ML de Xcode en tu dispositivo de destino
  4. Despliega con el iOS SDK, el plugin de Flutter o tu propia integración con Vision, dirigiéndote a .cpuAndNeuralEngine

Resumen#

En esta guía, has aprendido cómo exportar modelos YOLO26 de Ultralytics 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 iOS SDK y el plugin de Flutter oficiales o tu propia integración con 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#

¿Cómo exporto modelos YOLO26 al formato CoreML?#

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. Usa imgsz=224 para la clasificación y añade quantize=8 para que coincida con los modelos de la aplicación oficial. La exportación produce un programa de ML yolo26n.mlpackage listo para Xcode, el SDK de iOS o el complemento de Flutter.

¿Necesito nms=True al exportar YOLO26?#

No. YOLO26 es end-to-end sin NMS, por lo que el grafo exportado ya emite las detecciones finales y los costes de decodificación son muy inferiores a un milisegundo. La opción nms=True existe para modelos de detección anteriores como YOLO11, donde integra una canalización NMS de CoreML para que tu aplicación no tenga que implementar la supresión. Las canalizaciones NMS de CoreML solo admiten la detección de objetos, por lo que nms=True se ignora con un aviso en otras tareas como la segmentación y la estimación de pose.

¿Qué precisión debería usar: FP16 o INT8?#

Los modelos oficiales de la aplicación Ultralytics se distribuyen como INT8, lo que minimiza el tamaño de descarga y se ejecuta a las velocidades indicadas en 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 despliegue.

¿Cómo me aseguro de que la inferencia se ejecute en el Neural Engine?#

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

¿Puedo ejecutar y validar modelos CoreML con la CLI de Ultralytics?#

Sí, en macOS: yolo predict model=yolo26n.mlpackage source=image.jpg y yolo val model=yolo26n.mlpackage data=coco8.yaml funcionan igual que 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.

¿Cuál es la forma más rápida de hacer que YOLO26 funcione en una aplicación de iOS o Flutter?#

Utiliza el Ultralytics YOLO iOS SDK (Swift Package) o el plugin de Flutter oficial. Ambos cargan los 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 arriba se produjo con exactamente esta pila.

Comentarios