Ultralytics YOLO27:
Get Started

Esportazione CoreML per i modelli YOLO26#

Apple integra il suo chip AI dedicato, il Neural Engine, in ogni iPhone, iPad e Mac moderno; oggi CoreML è il percorso supportato da Ultralytics per distribuire modelli su questo chip. L'esportazione dei modelli Ultralytics YOLO26 in CoreML converte un checkpoint .pt addestrato in un .mlpackage nativo che esegue su dispositivo tutte e sette le attività YOLO con bassa latenza, senza connessione di rete né trasmissione di dati all'esterno del dispositivo.

Esegui YOLO oggi su Apple Neural Engine con le app mobili ufficiali

L'SDK ufficiale Ultralytics YOLO per iOS e il plugin Flutter eseguono gli export CoreML su Apple Neural Engine senza configurazione: inferenza in tempo reale dalla fotocamera, predizione su singola immagine e download automatico del modello per tutte e sette le attività YOLO26, inclusa Depth. Per la distribuzione su NPU Android, consulta l'integrazione Qualcomm QNN.

Dimensioni di input ufficiali per dispositivi mobili

Esporta i modelli di classificazione in imgsz=224. Esporta i modelli di rilevamento, segmentazione, segmentazione semantica, profondità, posa e OBB in 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 framework Core AI e il formato .aimodel per la generazione iOS 27 e macOS 27, e Ultralytics lo esporta con format="coreai". CoreML resta il formato predefinito per gli SDK Ultralytics per iOS e Flutter, che caricano Core AI come opzione facoltativa sui dispositivi iOS 27, oltre a essere il formato per una compatibilità più ampia con i dispositivi Apple.



Guarda: Come esportare Ultralytics YOLO26 in CoreML con quantizzazione INT8 | Distribuzione Apple | iOS/MacOS 🍎

Che cos'è CoreML?#

Apple CoreML deployment pipeline

CoreML (con la grafia "Core ML" adottata da Apple) è il framework di Apple per l'apprendimento automatico sul dispositivo. Carica modelli nel moderno formato ML Program — il bundle .mlpackage prodotto dall'esportatore di Ultralytics — e ne pianifica l'esecuzione tra i componenti del dispositivo: CPU, GPU e motore neurale Apple (ANE), l'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 tuoi dati sul dispositivo.

CoreML si integra direttamente con il framework Vision di Apple, che gestisce ridimensionamento e orientamento delle immagini prima che arrivino al modello: è così che l'SDK Ultralytics per iOS passa i fotogrammi della fotocamera a YOLO con un costo di preelaborazione praticamente nullo.

Perché esportare YOLO26 in CoreML?#

  • Velocità del Neural Engine: CoreML pianifica le operazioni supportate sul Neural Engine di Apple per un'inferenza sul dispositivo a bassa latenza. Consulta la tabella dei dispositivi fisici qui sotto e confronta le prestazioni della tua esportazione esatta sull'hardware di destinazione.
  • Scegli l'output: le esportazioni predefinite lasciano l'NMS alla tua app. Usa nms=True per integrare l'NMS oppure nms=False per la head senza NMS di YOLO26.
  • Privato e offline: tutti i calcoli restano sul dispositivo: nessun passaggio al cloud, nessuna chiave API, piena privacy dei dati.
  • Una sola esportazione per tutto l'ecosistema: lo stesso .mlpackage funziona su iOS, iPadOS, macOS, watchOS, tvOS e visionOS, e alimenta l'SDK Ultralytics per iOS ufficiale e il plugin Flutter.

Prestazioni misurate#

Inferenza end-to-end su una singola immagine per gli asset CoreML INT8 standardizzati v8.3.0 di YOLO26n 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 acceleratori Neural e un Neural Engine a 16 core. Ogni cella mostra il tempo totale (preelaborazione + inferenza + postelaborazione, esclusa l'annotazione), con la suddivisione per fase sotto. Su iOS, Vision esegue il ridimensionamento dell'input all'interno della richiesta di inferenza, quindi la preelaborazione è indicata come 0 e il relativo costo è incluso nell'inferenza.

ModelloAttivitàdimensione
(pixel)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE preferito
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nRilevamento6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegmentazione64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemantica6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthProfondità64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsClassificazione2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePosa64011.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 di v8.3.0 dichiarano input da 224×224 per la classificazione e da 640×640 per ogni altro task.
  • I valori di velocità sono latenze in raffica su singola immagine: la media di 15 esecuzioni dopo 3 esecuzioni di riscaldamento su bus.jpg, misurata con i tempi per fase dell'SDK iOS tramite l'infrastruttura di benchmark del plugin Flutter in modalità profile (codice nativo ottimizzato). L'ordine CPU/acceleratore è stato alternato tra i task in un'unica sequenza. Le righe CPU richiedono Core ML .cpuOnly; le righe CPU + ANE preferito richiedono .cpuAndNeuralEngine, mentre Core ML controlla la collocazione finale delle operazioni. Il funzionamento prolungato della fotocamera in tempo reale è più lento perché include la pipeline di acquisizione e ridimensionamento, oltre alla stabilizzazione termica. Una misurazione storica della fotocamera, precedente alla standardizzazione, ha rilevato 11.3 ms per fotogramma per il rilevamento YOLO26n e 16.5 ms per fotogramma per YOLO26n Depth sullo stesso dispositivo: consulta la documentazione sulle prestazioni dell'SDK iOS per la profilazione a regime.
  • Confronta i risultati di CPU/GPU Android nell'integrazione LiteRT e i risultati dell'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 queste head.

AttivitàYOLOv8YOLO11YOLO26
Rilevamento✅✅✅
Segmentazione✅✅✅
Semantica❌❌✅
Profondità❌❌✅
Classificazione✅✅✅
Stima della posa✅✅✅
OBB✅✅✅

Esportazione dei 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 alla prima esportazione. L'esportazione viene eseguita su macOS o Linux x86; per istruzioni dettagliate e best practice, consulta la guida all'installazione e la guida ai problemi comuni.

Utilizzo#

Il formato CoreML supporta le modalità Esportazione, Previsione e Validazione. L'inferenza e la validazione con CoreML funzionano solo su macOS. Esporta il modello, quindi carica il modello esportato per eseguire l'inferenza o convalidarne l'accuratezza.

Esporta
from ultralytics import YOLO

# Carica un modello YOLO26
model = YOLO("yolo26n.pt")

# Esporta in CoreML con quantizzazione INT8 dei pesi, in linea con i modelli dell'app ufficiale
model.export(format="coreml", quantize=8, imgsz=640)  # usa imgsz=224 per la classificazione
Predici
from ultralytics import YOLO

# Carica il modello CoreML esportato (macOS)
model = YOLO("yolo26n.mlpackage")

# Esegui l'inferenza
results = model("https://ultralytics.com/images/bus.jpg")
Convalida
from ultralytics import YOLO

# Carica il modello CoreML esportato (macOS)
model = YOLO("yolo26n.mlpackage")

# # Convalida l'accuratezza sul dataset COCO8
metrics = model.val(data="coco8.yaml")

Argomenti di esportazione#

ArgomentoTipoPredefinitoDescrizione
formatstr'coreml'Formato di destinazione del modello esportato, che definisce la compatibilità con i vari ambienti di distribuzione.
imgszint o tuple640Dimensione dell'immagine desiderata per l'input del modello. Può essere un intero per immagini quadrate o una tupla (height, width) per dimensioni specifiche.
quantizeint o strNonePrecisione della quantizzazione (solo pesi per CoreML): 16 (FP16), 8 (INT8), "w8a16" (pesi INT8 con attivazioni FP16) oppure 32/non impostato (FP32). I programmi ML NMS usano FP16 (per l'anteprima di Xcode e richiesto per segmentazione e posa); passa 32 per sostituirlo nel rilevamento. Sostituisce i flag deprecati half/int8.
nmsbool, facoltativoNoneSeleziona l'output grezzo (None, predefinito), NMS integrato (True) oppure la head senza NMS (False). L'NMS integrato supporta rilevamento, segmentazione e posa con dynamic=False.
dynamicboolFalseConsente dimensioni di input dinamiche. Non è supportato per i modelli di classificazione o RT-DETR e non può essere combinato con nms=True.
batchint1Specifica la dimensione del batch per l'inferenza del modello esportato o il numero massimo di immagini che il modello esportato elaborerà contemporaneamente in modalità predict. I valori superiori a 1 richiedono dynamic=True.
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 Ultralytics dedicata all'esportazione.

Uso del Neural Engine#

CoreML sceglie l'hardware tramite MLModelConfiguration.computeUnits. L'SDK Ultralytics per iOS usa per impostazione predefinita .cpuAndNeuralEngine su iOS 16+, anziché .all: in un'app per fotocamera in tempo reale, la GPU è già impegnata a comporre l'anteprima e le sovrapposizioni, quindi escluderla evita contese e oscillazioni nei tempi dei fotogrammi, mentre l'ANE svolge il lavoro più pesante. Imposta .cpuOnly solo per i test di compatibilità: la tabella qui sopra mostra il costo.

L'esecuzione di un modello CoreML da Python su un host Mac (tramite Ultralytics o coremltools) segue la stessa regola: Ultralytics carica con ComputeUnit.CPU_AND_NE (macOS 13+, con ripiego su CPU_ONLY nelle versioni precedenti di macOS), mantenendo l'inferenza sul Neural Engine (~3× più veloce della CPU). Questo evita anche un'attuale limitazione degli host macOS per cui l'impostazione predefinita 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.

Distribuzione dei modelli YOLO26 CoreML esportati#

Il percorso più rapido è l'SDK Ultralytics YOLO ufficiale per iOS, lo stesso pacchetto Swift alla base dell'app Ultralytics per iOS e del 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, integra YOLOView dell'SDK per l'inferenza in tempo reale con sovrapposizioni native, oppure usa il plugin Flutter per app multipiattaforma che condividono la stessa base di codice con Android.

Integrare autonomamente un .mlpackage grezzo è altrettanto semplice con lo stack Apple: caricalo con MLModel, racchiudilo in un VNCoreMLRequest e passa le immagini tramite VNImageRequestHandler. Queste risorse illustrano i dettagli:

Distribuisci il modello includendolo nel bundle dell'app (disponibilità immediata, ideale per i modelli nano/piccoli) oppure scaricandolo al primo avvio e memorizzandolo nella cache (binario più piccolo, aggiornamenti semplici del modello). 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 locale.

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

Riepilogo#

In questa guida hai imparato a esportare i modelli Ultralytics YOLO26 nel formato .mlpackage di CoreML, a quantizzarli per Apple Neural Engine e a distribuirli con latenze inferiori a dieci millisecondi, tramite l'SDK ufficiale per iOS e il plugin Flutter oppure con la tua integrazione Vision. Per altri target di distribuzione, consulta la pagina delle guide alle integrazioni e confronta i formati con la modalità Benchmark.

Domande frequenti#

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

  • Usa nms=True se la tua app necessita di rilevamenti con NMS incluso. L'esportazione predefinita nms=None produce output grezzi one-to-many da elaborare nella tua app; nms=False seleziona la head di YOLO26 senza NMS. L'NMS integrato supporta rilevamento, segmentazione e posa con forme statiche; gli altri task mantengono i propri output nativi.

  • I modelli dell'app ufficiale Ultralytics vengono distribuiti in INT8, riducendo al minimo le dimensioni del download e raggiungendo le velocità indicate nella tabella qui sopra. quantize=16 (FP16) è un'alternativa prudenziale che non comporta praticamente alcuna perdita di accuratezza. Convalida la tua esportazione specifica con model.val() su un Mac prima della distribuzione.

  • Imposta MLModelConfiguration.computeUnits = .cpuAndNeuralEngine (l'opzione predefinita dell'SDK per iOS su iOS 16+). Evita .all nelle app con fotocamera: la GPU è impegnata a comporre l'anteprima e pianificare lì l'inferenza causa oscillazioni nei tempi dei fotogrammi. Verifica la collocazione con un report sulle prestazioni Core ML di Xcode.

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

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

Commenti