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.
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.
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.
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?#
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
.mlpackageviene 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.
| Modello | Compito | dimensione (pixel) | CPU Core ML .cpuOnly(ms) | CPU + ANE preferito Core ML .cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| 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 | Semantico | 640 | 9.7 0.0 / 9.2 / 0.5 | 4.6 0.0 / 4.2 / 0.5 |
| YOLO26n-depth | Depth | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Classify | 224 | 2.2 0.0 / 2.2 / 0.0 | 1.9 0.0 / 1.9 / 0.0 |
| YOLO26n-pose | 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 |
- Gli asset di rilascio esatti
v8.3.0dichiarano 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.
Esportazione di modelli YOLO26 in CoreML#
Installazione#
Per installare il pacchetto richiesto, esegui:
# Install the required package for YOLO26
pip install ultralyticsIl 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.
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")Argomenti di esportazione#
| Argomento | Tipo | Predefinito | Descrizione |
|---|---|---|---|
format | str | 'coreml' | Formato di destinazione per il modello esportato, che definisce la compatibilità con vari ambienti di distribuzione. |
imgsz | int o tuple | 640 | Dimensione dell'immagine desiderata per l'input del modello. Può essere un numero intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche. |
quantize | int o str | None | Precisione 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. |
nms | bool | False | Incorpora 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. |
dynamic | bool | False | Consente dimensioni di input dinamiche, migliorando la flessibilità nella gestione di dimensioni variabili delle immagini. |
batch | int | 1 | Specifica la dimensione dell'inferenza in batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict. |
device | str | None | Specifica 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:
- Integrazione di un modello Core ML nella tua app: la guida di Apple per raggruppare e chiamare un modello CoreML.
- CoreML Tools: riferimento per la conversione, quantizzazione e ottimizzazione per la toolchain
coremltoolsche alimenta questa esportazione. - Report sulle prestazioni di Xcode Core ML: posizionamento del dispositivo per livello e profilazione della latenza per il tuo modello e dispositivo specifico.
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#
- Addestra il tuo modello con la modalità Train di Ultralytics, o parti dai pesi YOLO26 ufficiali
- Esporta con
model.export(format="coreml", quantize=8, imgsz=640)su macOS o x86 Linux (imgsz=224per la classificazione) - 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 - Distribuisci con l'SDK iOS, il plugin Flutter o la tua integrazione Vision, puntando a
.cpuAndNeuralEngine
Riepilogo#
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 oyolo export model=yolo26n.pt format=coreml imgsz=640dal CLI su macOS o x86 Linux. Usaimgsz=224per la classificazione e aggiungiquantize=8per abbinare i modelli dell'app ufficiale. L'esportazione produce un ML Programyolo26n.mlpackagepronto 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=Trueesiste 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=Trueviene 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 conmodel.val()su un Mac prima della pubblicazione.Imposta
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(predefinito dell'SDK iOS su iOS 16+). Evita.allnelle 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.jpgeyolo val model=yolo26n.mlpackage data=coco8.yamlfunzionano 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.