YOLO Vision 2026:

Esportazione CoreML per modelli YOLO26#

Apple integra silicio AI dedicato — il Neural Engine — in ogni iPhone, iPad e Mac moderni, e CoreML è la via supportata da Ultralytics per distribuire modelli su di esso oggi. L'esportazione dei modelli Ultralytics YOLO26 in CoreML trasforma un checkpoint .pt addestrato in un .mlpackage nativo che esegue tutte e sette le attività di YOLO on-device a bassa latenza, senza connessione di rete e senza che i dati lascino il dispositivo.

Esegui YOLO sull'Apple Neural Engine oggi stesso con le app mobili ufficiali

L'Ultralytics YOLO iOS SDK ufficiale e il plugin Flutter eseguono le esportazioni CoreML sull'Apple Neural Engine nativamente — inferenza da fotocamera in tempo reale, previsione su singola immagine e download automatico del modello per tutte e sette le attività di YOLO26, incluso Depth. Per la distribuzione su NPU Android, consulta l'integrazione Qualcomm QNN.

Dimensioni di input mobili ufficiali

Esporta i modelli di classificazione a imgsz=224. Esporta i modelli detect, segment, semantic, depth, pose e OBB a imgsz=640. Questo standard 224/640 è condiviso dagli asset mobili ufficiali CoreML, LiteRT e QNN.

Il nuovo formato Core AI di Apple

Apple ha introdotto il nuovo Core AI framework e .aimodel format per la generazione di iOS 27 e macOS 27, e Ultralytics lo esporta con format="coreai". CoreML rimane il formato consigliato per gli SDK iOS e Flutter di Ultralytics e per una maggiore compatibilità con i dispositivi Apple.



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

Cos'è CoreML?#

Apple CoreML deployment pipeline

CoreML (indicato come "Core ML" da Apple) è il framework di machine learning on-device di Apple. Carica i modelli nel moderno formato ML Program — il bundle .mlpackage prodotto dall'esportatore di Ultralytics — e li pianifica tra CPU, GPU e Apple Neural Engine (ANE) del dispositivo, la NPU dedicata in ogni chip con silicio Apple. Poiché tutto viene eseguito localmente, l'inferenza funziona offline, non aggiunge latenza di rete e mantiene i dati dell'utente sul dispositivo.

CoreML si integra direttamente con il Vision framework di Apple, che gestisce il ridimensionamento e l'orientamento delle immagini in ingresso nel modello — ed è così che l'SDK iOS di Ultralytics invia i fotogrammi della fotocamera a YOLO con un costo di preprocessing sostanzialmente nullo.

Perché esportare YOLO26 in CoreML?#

  • Velocità del Neural Engine: CoreML pianifica le operazioni supportate sul Neural Engine di Apple per un'inferenza on-device a bassa latenza. Consulta la tabella dei dispositivi fisici sottostante ed esegui il benchmark del tuo export esatto sull'hardware di destinazione.
  • Senza NMS per progettazione: YOLO26 è end-to-end, quindi il grafo esportato non richiede alcuna pipeline NMS e la decodifica richiede meno di un millisecondo. I modelli di rilevamento più vecchi come YOLO11 possono incorporare una pipeline NMS CoreML con nms=True.
  • Privato e offline: Tutti i calcoli rimangono sul dispositivo — nessun round-trip nel cloud, nessuna chiave API, totale riservatezza dei dati.
  • Un'unica esportazione, l'intero ecosistema: Lo stesso .mlpackage viene eseguito su iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta l'SDK iOS e il plugin Flutter ufficiali di Ultralytics.

Prestazioni misurate#

Inferenza end-to-end su singola immagine per gli asset CoreML INT8 YOLO26n standardizzati v8.3.0 su un iPhone 17 Pro con 12 GB di memoria e iOS 26.5.2. Il suo A19 Pro ha una CPU a 6 core (2 core Performance e 4 Efficiency), una GPU a 6 core con Neural Accelerator e un Neural Engine a 16 core. Ogni cella mostra il tempo totale (preprocessing + inferenza + postprocessing, esclusa annotazione) con la suddivisione per fase sottostante. Su iOS, Vision esegue il ridimensionamento dell'input all'interno della richiesta di inferenza, quindi il preprocessing viene riportato come 0 e il suo costo è incluso nell'inferenza.

ModelloCompitodimensione
(pixel)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE preferito
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetect6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegment64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemantico6409.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-clsClassify2242.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
  • Gli asset di rilascio esatti v8.3.0 dichiarano input 224×224 per la classificazione e 640×640 per tutte le altre attività.
  • I valori di velocità sono latenze di burst su singola immagine — la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su bus.jpg, misurate tramite la temporizzazione per fase dell'SDK iOS attraverso il banco di prova del plugin Flutter in modalità profilo (codice nativo ottimizzato). L'ordine di CPU/acceleratore si è alternato tra le attività in una singola scansione sequenziale. Le righe della CPU richiedono Core ML .cpuOnly; le righe CPU + ANE preferito richiedono .cpuAndNeuralEngine, con il posizionamento finale dell'operazione controllato da Core ML. Il funzionamento continuo della fotocamera in tempo reale risulta più elevato perché include la pipeline di acquisizione e ridimensionamento più l'assestamento termico. Una precedente scansione della fotocamera pre-standard ha misurato 11,3 ms/fotogramma per YOLO26n detect e 16,5 ms/fotogramma per YOLO26n Depth sullo stesso dispositivo — consulta il documento sulle prestazioni dell'SDK iOS per la profilazione in stato stazionario.
  • Confronta i risultati di CPU/GPU Android nell'integrazione LiteRT e i risultati della NPU Snapdragon nell'integrazione Qualcomm QNN.

Attività supportate#

L'esportazione CoreML supporta tutti e sette i task di Ultralytics. La segmentazione semantica e la stima della profondità sono disponibili solo con YOLO26, l'unica famiglia che include tali teste.

CompitoYOLOv8YOLO11YOLO26
Detect
Segment
Semantic
Depth
Classify
Pose
OBB

Esportazione di modelli YOLO26 in CoreML#

Installazione#

Per installare il pacchetto richiesto, esegui:

Installazione
# Install the required package for YOLO26
pip install ultralytics

Il convertitore coremltools viene installato automaticamente al primo avvio dell'esportazione. L'esportazione viene eseguita su macOS o x86 Linux; per istruzioni dettagliate e best practice, consulta la nostra guida all'installazione e la guida ai problemi comuni.

Utilizzo#

Il formato CoreML supporta le modalità Export, Predict e Validate. L'inferenza e la convalida con CoreML vengono eseguite solo su macOS. Esporta il tuo modello, quindi carica il modello esportato per eseguire l'inferenza o validarne la precisione.

Esportazione
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
Previsione
from ultralytics import YOLO

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

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

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'coreml'Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione.
imgszint o tuple640Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione di quantizzazione (solo pesi per CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesi INT8 con attivazioni FP16) o 32/non impostato (FP32). I programmi ML NMS usano FP16 (per l'anteprima di Xcode, e richiesto da segment e pose); passa 32 per sovrascrivere su detect. Sostituisce i flag deprecati half/int8.
nmsboolFalseIncorpora NMS nel modello esportato. Supportato per detect, segment e pose (ignorato con un avviso per altri task); non necessario per YOLO26 senza NMS, usalo per modelli precedenti come YOLO11.
dynamicboolFalseConsente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di dimensioni variabili delle immagini.
batchint1Specifica la dimensione dell'inferenza in batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict.
devicestrNoneSpecifica il dispositivo per l'esportazione: GPU (device=0), CPU (device=cpu), MPS per Apple silicon (device=mps).

Per ulteriori dettagli sul processo di esportazione, visita la pagina della documentazione di Ultralytics sull'esportazione.

Targeting del Neural Engine#

CoreML sceglie l'hardware tramite MLModelConfiguration.computeUnits. L'SDK iOS di Ultralytics utilizza per impostazione predefinita .cpuAndNeuralEngine su iOS 16+ anziché .all: in un'app per fotocamera in tempo reale la GPU è già occupata a comporre l'anteprima e i livelli sovrapposti, quindi escluderla evita contese e jitter del tempo dei fotogrammi mentre l'ANE svolge il lavoro pesante. Fissa .cpuOnly solo per i test di compatibilità — la tabella sopra mostra il costo.

L'esecuzione di un modello CoreML da Python su un Mac host (tramite Ultralytics o coremltools) segue la stessa regola: Ultralytics si carica con ComputeUnit.CPU_AND_NE (macOS 13+, con fallback a CPU_ONLY su macOS meno recenti), mantenendo l'inferenza sul Neural Engine (~3 volte più veloce della CPU). Ciò evita anche un'attuale limitazione dell'host macOS in cui i valori predefiniti ComputeUnit.ALL / CPU_AND_GPU — che aggiungono il percorso di compilazione GPU/MPSGraph — interrompono il processo con un'asserzione Error: MLIR pass manager failed su coremltools 9.x.

Distribuzione di modelli YOLO26 CoreML esportati#

Il percorso più veloce è l'Ultralytics YOLO iOS SDK ufficiale, lo stesso pacchetto Swift che alimenta l'app iOS di Ultralytics e il plugin Flutter. Risolve automaticamente i nomi dei modelli ufficiali, scarica e memorizza nella cache .mlpackage e restituisce risultati completamente decodificati:

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

Per le app con fotocamera, inserisci YOLOView dell'SDK per l'inferenza in tempo reale con overlay nativi, oppure usa il plugin Flutter per app multipiattaforma che condividono una singola codebase con Android.

Integrare autonomamente un .mlpackage grezzo è semplice anche con lo stack di Apple — caricalo con MLModel, incapsulalo in un VNCoreMLRequest e inserisci le immagini tramite VNImageRequestHandler. Queste risorse coprono i dettagli:

Distribuisci il modello incorporato nel bundle dell'app (disponibilità immediata, ideale per modelli nano/small) o scaricato al primo avvio e memorizzato nella cache (binary più piccolo, aggiornamenti del modello semplici). Le app ufficiali combinano entrambi gli approcci: i modelli nano predefiniti sono inclusi per l'uso immediato, mentre le varianti più grandi vengono scaricate su richiesta e memorizzate nella cache localmente.

Flusso di lavoro consigliato#

  1. Addestra il tuo modello con la modalità Train di Ultralytics, o parti dai pesi YOLO26 ufficiali
  2. Esporta con model.export(format="coreml", quantize=8, imgsz=640) su macOS o x86 Linux (imgsz=224 per la classificazione)
  3. Verifica la precisione con model.val() su un Mac e profila con un report sulle prestazioni di Xcode Core ML sul tuo dispositivo di destinazione
  4. Distribuisci con l'SDK iOS, il plugin Flutter o la tua integrazione Vision, puntando a .cpuAndNeuralEngine

In questa guida hai imparato come esportare i modelli Ultralytics YOLO26 nel formato .mlpackage di CoreML, quantizzarli per l'Apple Neural Engine e distribuirli a latenze di pochi millisecondi — tramite l'SDK iOS ufficiale e il plugin Flutter o la tua integrazione Vision. Per altre destinazioni di distribuzione, esplora la pagina della guida all'integrazione e confronta i formati con la modalità Benchmark.

FAQ#

  • Esegui model.export(format="coreml", imgsz=640) in Python o yolo export model=yolo26n.pt format=coreml imgsz=640 dal CLI su macOS o x86 Linux. Usa imgsz=224 per la classificazione e aggiungi quantize=8 per abbinare i modelli dell'app ufficiale. L'esportazione produce un ML Program yolo26n.mlpackage pronto per Xcode, l'SDK iOS o il plugin Flutter.

  • No. YOLO26 è end-to-end senza NMS, quindi il grafo esportato emette già le rilevazioni finali e i costi di decodifica ben al di sotto di un millisecondo. L'opzione nms=True esiste per modelli precedenti come YOLO11, dove incorpora NMS in modo che la tua app non debba implementare la soppressione. È supportata per i modelli detect, segment e pose; nms=True viene ignorata con un avviso per gli altri task.

  • I modelli dell'app Ultralytics ufficiale vengono forniti come INT8, il che riduce al minimo le dimensioni del download ed esegue alle velocità indicate nella tabella sopra. quantize=16 (FP16) è un'alternativa conservativa praticamente senza perdita di precisione. Valida la tua esatta esportazione con model.val() su un Mac prima della pubblicazione.

  • Imposta MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (predefinito dell'SDK iOS su iOS 16+). Evita .all nelle app per fotocamera — la GPU è occupata a comporre l'anteprima e pianificare l'inferenza lì causa jitter del tempo dei fotogrammi. Conferma il posizionamento con un report sulle prestazioni di Xcode Core ML.

  • Sì, su macOS: yolo predict model=yolo26n.mlpackage source=image.jpg e yolo val model=yolo26n.mlpackage data=coco8.yaml funzionano come qualsiasi altro formato. L'esecuzione di CoreML richiede hardware Apple, quindi queste modalità non sono disponibili su Linux e Windows.

  • Usa l'Ultralytics YOLO iOS SDK ufficiale (Swift Package) o il plugin Flutter. Entrambi caricano i modelli ufficiali per nome con download e caching automatici, li eseguono sul Neural Engine e includono interfacce utente complete per fotocamera in tempo reale — la tabella delle prestazioni misurate sopra è stata prodotta esattamente con questo stack.

Commenti