Link to this sectionEsportazione CoreML per modelli YOLO26#
Apple integra silicio dedicato all'IA — il Neural Engine — in ogni iPhone, iPad e Mac moderni, e CoreML è l'unico modo per programmarlo. Esportare i modelli Ultralytics YOLO26 in CoreML trasforma un checkpoint .pt addestrato in un .mlpackage nativo che esegue tutte e sei le attività YOLO direttamente sul dispositivo in pochi millisecondi, senza connessione di rete e senza che i dati lascino il dispositivo.
L'Ultralytics YOLO iOS SDK e il plugin Flutter ufficiali eseguono le esportazioni CoreML sull'Apple Neural Engine fin da subito: inferenza della fotocamera in tempo reale, previsione su singola immagine e download automatico del modello per tutte e sei le attività YOLO26. Per la distribuzione su NPU Android, consulta l'integrazione Qualcomm QNN.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Link to this sectionCos'è CoreML?#
CoreML (chiamato "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 Ultralytics — e li pianifica tra CPU, GPU e Apple Neural Engine (ANE) del dispositivo, la NPU dedicata presente in ogni chip Apple-silicon. 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: è così che l'Ultralytics iOS SDK invia i fotogrammi della fotocamera a YOLO con un costo di pre-elaborazione praticamente nullo.
Link to this sectionPerché esportare YOLO26 in CoreML?#
- Velocità del Neural Engine: Il rilevamento YOLO26n viene eseguito end-to-end in 3,8 ms su un iPhone 17 Pro per singole immagini, e in ~16 ms/frame durante l'uso continuo della fotocamera in tempo reale (vedi la tabella e le note sotto) — un'esecuzione comodamente in tempo reale con margine per il resto della tua app.
- Senza NMS per progettazione: YOLO26 è end-to-end, quindi il grafo esportato non necessita di una pipeline NMS e la decodifica richiede meno di un millisecondo. Modelli meno recenti come YOLO11 possono incorporare una pipeline NMS CoreML con
nms=True. - Privato e offline: Tutti i calcoli rimangono sul dispositivo: niente viaggi verso il cloud, nessuna API key, massima riservatezza dei dati.
- Un'unica esportazione, l'intero ecosistema: Lo stesso
.mlpackagefunziona su iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta l'iOS SDK e il plugin Flutter ufficiali di Ultralytics.
Link to this sectionPrestazioni misurate#
Inferenza end-to-end su singola immagine per i modelli ufficiali YOLO26n INT8 CoreML su un iPhone 17 Pro (Apple A19, iOS 26.5). Ogni cella mostra il tempo totale (pre-elaborazione + inferenza + post-elaborazione, esclusa l'annotazione) con la suddivisione per fase sottostante. Su iOS, Vision esegue il ridimensionamento dell'input all'interno della richiesta di inferenza, quindi la pre-elaborazione è riportata come 0 e il suo costo è incluso nell'inferenza.
| Modello | Compito | dimensione (pixel) | CPU.cpuOnly(ms) | Neural Engine.cpuAndNeuralEngine(ms) |
|---|---|---|---|---|
| YOLO26n | Detect | 640 | 9.1 0.0 / 9.1 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-seg | Segment | 640 | 12.3 0.0 / 12.1 / 0.2 | 4.8 0.0 / 4.5 / 0.3 |
| YOLO26n-sem | Semantico | 10241 | 21.8 0.0 / 21.0 / 0.8 | 12.1 0.0 / 11.3 / 0.8 |
| YOLO26n-cls | Classify | 224 | 2.2 0.0 / 2.2 / 0.0 | 2.0 0.0 / 2.0 / 0.0 |
| YOLO26n-pose | Pose | 640 | 12.0 0.0 / 11.9 / 0.0 | 3.8 0.0 / 3.8 / 0.0 |
| YOLO26n-obb | OBB | 1024 | 21.7 0.0 / 21.7 / 0.0 | 7.2 0.0 / 7.2 / 0.0 |
- 1 Le esportazioni CoreML semantiche incorporano l'ArgMax nel grafo e restituiscono una mappa di classi compatta a piena risoluzione (
[1, 1024, 1024]) invece di logit float, quindi il post-processo è uno sweep colore sub-millisecondo e le maschere vengono renderizzate con una nitidezza a livello di pixel. - I valori di Speed sono le latenze di burst su singola immagine — la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su
bus.jpg, misurate tramite la temporizzazione per stadio dell'iOS SDK tramite l'harness di benchmark del plugin Flutter in modalità profile (codice nativo ottimizzato). Il funzionamento prolungato della fotocamera in tempo reale ha valori più alti (letterboxing del sensore completo per ogni fotogramma più stabilizzazione termica): il rilevamento YOLO26n misura ~16 ms/frame nell'app fotocamera live sullo stesso dispositivo — consulta il documento sulle prestazioni dell'iOS SDK per la profilazione a regime. - La tabella corrispondente per CPU/GPU/NPU Snapdragon si trova nell'integrazione Qualcomm QNN.
Link to this sectionEsportazione di modelli YOLO26 in CoreML#
Link to this sectionInstallazione#
Per installare il pacchetto richiesto, esegui:
# Install the required package for YOLO26
pip install ultralyticsIl convertitore coremltools viene installato automaticamente alla prima esportazione. L'esportazione avviene su macOS o x86 Linux; per istruzioni dettagliate e best practice, consulta la nostra guida all'installazione e la guida ai problemi comuni.
Link to this sectionUtilizzo#
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 caricalo per eseguire l'inferenza o convalidarne l'accuratezza.
from ultralytics import YOLO
# Load a YOLO26 model
model = YOLO("yolo26n.pt")
# Export to CoreML (FP16 by default); quantize=8 matches the official app models
model.export(format="coreml", quantize=8) # creates 'yolo26n.mlpackage'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")Link to this sectionArgomenti 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). Sostituisce i flag deprecati half/int8. |
nms | bool | False | Incorpora una pipeline CoreML NMS. Non necessaria per YOLO26, che è senza NMS; utilizzala 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 batch del modello esportato o il numero massimo di immagini che il modello esportato elaborerà simultaneamente 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.
Link to this sectionTargeting del Neural Engine#
CoreML sceglie l'hardware tramite MLModelConfiguration.computeUnits. L'Ultralytics iOS SDK utilizza come impostazione predefinita .cpuAndNeuralEngine su iOS 16+ invece di .all: in un'app fotocamera in tempo reale, la GPU è già occupata a comporre l'anteprima e gli overlay, quindi escluderla evita contese e jitter nel frame-time mentre l'ANE svolge il lavoro pesante. Imposta .cpuOnly solo per test di compatibilità: la tabella sopra mostra il relativo costo.
Eseguire un modello CoreML da Python su un Mac host (tramite Ultralytics o coremltools) segue la stessa regola: Ultralytics viene caricato con ComputeUnit.CPU_AND_NE (macOS 13+, con fallback a CPU_ONLY su versioni di macOS precedenti), mantenendo l'inferenza sul Neural Engine (~3 volte più veloce rispetto alla CPU). Ciò evita inoltre un'attuale limitazione dell'host macOS in cui il valore predefinito ComputeUnit.ALL / CPU_AND_GPU — che aggiunge il percorso di compilazione GPU/MPSGraph — interrompe il processo con un'asserzione Error: MLIR pass manager failed su coremltools 9.x.
Link to this sectionDistribuzione di modelli YOLO26 CoreML esportati#
Il percorso più rapido è l'ufficiale Ultralytics YOLO iOS SDK, 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 il .mlpackage e restituisce i 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, utilizza YOLOView dell'SDK per l'inferenza in tempo reale con overlay nativi, oppure usa il plugin Flutter per app multipiattaforma che condividono un'unica base di codice con Android.
Integrare un .mlpackage grezzo autonomamente è semplice con lo stack Apple: caricalo con MLModel, avvolgilo in una VNCoreMLRequest e invia le immagini tramite VNImageRequestHandler. Queste risorse coprono i dettagli:
- Integrare un modello Core ML nella tua app: La guida di Apple per aggregare e chiamare un modello CoreML.
- CoreML Tools: Riferimento per conversione, quantizzazione e ottimizzazione per la toolchain
coremltoolsche alimenta questa esportazione. - Rapporti sulle prestazioni di Xcode Core ML: Posizionamento sul dispositivo per livello e profiling della latenza per il tuo specifico modello e dispositivo.
Distribuisci il modello incorporato nel bundle dell'app (disponibilità istantanea, ideale per modelli nano/small) oppure scaricato al primo avvio e memorizzato nella cache (binario più piccolo, aggiornamenti del modello semplificati): le app ufficiali usano il secondo approccio con gli asset di rilascio GitHub.
Link to this sectionFlusso di lavoro consigliato#
- Addestra il tuo modello con la modalità Train di Ultralytics, o inizia dai pesi ufficiali YOLO26
- Esporta con
model.export(format="coreml", quantize=8)su macOS o Linux x86 - Verifica l'accuratezza con
model.val()su un Mac e profila con un rapporto sulle prestazioni di Xcode Core ML sul tuo dispositivo target - Distribuisci con l'iOS SDK, il plugin Flutter o la tua integrazione Vision personalizzata, puntando a
.cpuAndNeuralEngine
Link to this sectionRiepilogo#
In questa guida, hai imparato come esportare i modelli Ultralytics YOLO26 nel formato .mlpackage di CoreML, quantizzarli per l'Apple Neural Engine e distribuirli con latenze di pochi millisecondi, tramite l'iOS SDK ufficiale, il plugin Flutter o la tua integrazione Vision. Per altri target di distribuzione, esplora la pagina della guida all'integrazione e confronta i formati con la modalità Benchmark.
Link to this sectionFAQ#
Link to this sectionCome posso esportare i modelli YOLO26 in formato CoreML?#
Esegui model.export(format="coreml") in Python o yolo export model=yolo26n.pt format=coreml dalla CLI su macOS o Linux x86. Aggiungi quantize=8 per corrispondere ai modelli ufficiali dell'app. L'esportazione produce un ML Program yolo26n.mlpackage pronto per Xcode, l'iOS SDK o il plugin Flutter.
Link to this sectionHo bisogno di nms=True quando esporto YOLO26?#
No. YOLO26 è end-to-end senza NMS, quindi il grafo esportato emette già le rilevazioni finali e i costi di decodifica sono ampiamente inferiori a un millisecondo. L'opzione nms=True esiste per modelli precedenti come YOLO11, dove incorpora una pipeline CoreML NMS in modo che la tua app non debba implementare la soppressione.
Link to this sectionQuale precisione dovrei usare: FP16 o INT8?#
I modelli ufficiali dell'app Ultralytics sono distribuiti come INT8, che riduce al minimo la dimensione del download ed è eseguito alle velocità riportate nella tabella sopra. quantize=16 (FP16) è un'alternativa conservativa che non comporta praticamente alcuna perdita di accuratezza. Valida la tua esportazione specifica con model.val() su un Mac prima del rilascio.
Link to this sectionCome mi assicuro che l'inferenza venga eseguita sul Neural Engine?#
Imposta MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (il valore predefinito dell'iOS SDK su iOS 16+). Evita .all nelle app con fotocamera: la GPU è occupata a comporre l'anteprima e pianificare l'inferenza lì causerebbe jitter nel frame-time. Conferma il posizionamento con un rapporto sulle prestazioni di Xcode Core ML.
Link to this sectionPosso eseguire e convalidare i modelli CoreML con la Ultralytics CLI?#
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 CoreML richiede hardware Apple, quindi queste modalità non sono disponibili su Linux e Windows.
Link to this sectionQual è il modo più rapido per far girare YOLO26 in un'app iOS o Flutter?#
Usa l'Ultralytics YOLO iOS SDK ufficiale (Swift Package) o il plugin Flutter. Entrambi caricano i modelli ufficiali per nome con download e cache automatici, li eseguono sul Neural Engine e includono interfacce utente complete per la fotocamera in tempo reale: la tabella delle prestazioni misurate sopra è stata prodotta esattamente con questo stack.