CoreML-Export für YOLO26-Modelle#
Apple liefert in jedem modernen iPhone, iPad und Mac dedizierte KI-Hardware aus – die Neural Engine –, und CoreML ist der von Ultralytics unterstützte Weg, um Modelle heute darauf zu bereitstellen. Das Exportieren von Ultralytics YOLO26-Modellen nach CoreML verwandelt einen trainierten .pt-Checkpoint in ein natives .mlpackage, das alle sieben YOLO-Aufgaben auf dem Gerät mit geringer Latenz ausführt, ohne Netzwerkverbindung und ohne dass Daten das Gerät verlassen.
Das offizielle Ultralytics YOLO iOS SDK und das Flutter-Plugin führen CoreML-Exporte direkt auf der Apple Neural Engine aus – Echtzeit-Kamera-Inferenz, Einzelbildvorhersage und automatischer Modelldownload für alle sieben YOLO26-Aufgaben, einschließlich Depth. Für die Bereitstellung auf Android-NPUs siehe die Qualcomm QNN-Integration.
Exportiere Klassifizierungsmodelle unter imgsz=224. Exportiere Detect-, Segment-, Semantic-, Depth-, Pose- und OBB-Modelle unter
imgsz=640. Dieser Standard von 224/640 wird von den offiziellen CoreML-, LiteRT- und QNN-Mobilressourcen gemeinsam genutzt.
Apple hat das neue Core AI-Framework und das .aimodel-Format für die Generation von iOS 27 und macOS 27 eingeführt, aber Ultralytics exportiert es derzeit nicht. CoreML bleibt das unterstützte Format für aktuelle Ultralytics-Releases und eine breitere Kompatibilität mit Apple-Geräten.
Watch: How to Export Ultralytics YOLO26 to CoreML for 2x Fast Inference on Apple Devices 🚀
Was ist CoreML?#
CoreML (von Apple als „Core ML“ bezeichnet) ist Apples Framework für maschinelles Lernen auf dem Gerät. Es lädt Modelle im modernen ML Program-Format – dem .mlpackage-Paket, das der Ultralytics-Exporter erstellt –, und plant sie auf der CPU, der GPU und der Apple Neural Engine (ANE) des Geräts ein, der dedizierten NPU in jedem Apple-Silicon-Chip. Da alles lokal ausgeführt wird, funktioniert die Inferenz offline, verursacht keine Netzwerklatenz und hält Benutzerdaten auf dem Gerät.
CoreML lässt sich direkt in Apples Vision-Framework integrieren, das die Skalierung und Ausrichtung von Bildern auf dem Weg in das Modell übernimmt – auf diese Weise speist das Ultralytics iOS SDK Kameraframes mit effektiv null Vorverarbeitungskosten in YOLO ein.
Warum YOLO26 nach CoreML exportieren?#
- Neural Engine-Geschwindigkeit: CoreML plant unterstützte Operationen auf Apples Neural Engine für eine latenzarme On-Device-Inferenz ein. Siehe die Tabelle für physische Geräte unten und benchmarke deinen genauen Export auf deiner Zielhardware.
- NMS-frei von Natur aus: YOLO26 ist End-to-End, sodass der exportierte Graph keine NMS-Pipeline benötigt und die Decodierung im Submillisekundenbereich liegt. Ältere Erkennungsmodelle wie YOLO11 können eine CoreML NMS-Pipeline mit
nms=Trueeinbetten. - Privat und offline: Die gesamte Berechnung verbleibt auf dem Gerät – keine Cloud-Hin- und Rückwege, keine API-Schlüssel, vollständige Datenschutz.
- Ein Export, das gesamte Ökosystem: Derselbe
.mlpackageläuft auf iOS, iPadOS, macOS, watchOS, tvOS und visionOS und treibt das offizielle Ultralytics iOS SDK sowie das Flutter-Plugin an.
Gemessene Leistung#
End-to-End-Einzelbild-Inferenz für die standardisierten v8.3.0 YOLO26n INT8 CoreML-Ressourcen auf einem
iPhone 17 Pro mit 12 GB Speicher und iOS 26.5.2. Dessen A19 Pro verfügt über eine 6-Kern-CPU
(2 Performance- und 4 Effizienzkerne), eine 6-Kern-GPU mit Neural Accelerators und eine 16-Kern-Neural Engine. Jede Zelle
zeigt die Gesamtzeit (Vorverarbeitung + Inferenz + Nachbereitung, ohne
Annotation) mit der Aufteilung nach Phasen direkt darunter. Unter iOS führt Vision die Eingabeskalierung innerhalb der Inferenzanfrage durch,
sodass die Vorverarbeitung als 0 gemeldet wird und ihre Kosten in der Inferenz enthalten sind.
| Modell | Aufgabe | Größe (Pixel) | CPU Core ML .cpuOnly(ms) | CPU + ANE bevorzugt 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 | Semantisch | 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 |
- Die genauen
v8.3.0-Release-Ressourcen deklarieren 224×224 Eingaben für die Klassifizierung und 640×640 für alle anderen Aufgaben. - Geschwindigkeitswerte sind Einzelbild-Burst-Latenzen – der Mittelwert aus 15 Durchläufen nach 3 Aufwärmläufen auf
bus.jpg, gemessen über das phasenbasierte Timing des iOS SDKs über das Benchmark-Harness des Flutter-Plugins im Profilmodus (optimierter nativer Code). Die Reihenfolge von CPU und Beschleuniger wechselte zwischen den Aufgaben in einem sequenziellen Durchlauf. CPU-Zeilen fordern Core ML.cpuOnlyan; Zeilen mit bevorzugter CPU + ANE fordern.cpuAndNeuralEnginean, wobei die finale Operationsplatzierung von Core ML gesteuert wird. Der anhaltende Echtzeit-Kamerabetrieb läuft höher, da er die Erfassungs- und Skalierungspipeline sowie die thermische Beruhigung umfasst. Ein historischer Kamera-Durchlauf vor dem Standard maß 11,3 ms/Frame für YOLO26n Detect und 16,5 ms/frame für YOLO26n Depth auf demselben Gerät – siehe das iOS SDK-Leistungsdokument für das Profiling im eingeschwungenen Zustand. - Vergleiche die Android-CPU/GPU-Ergebnisse in der LiteRT-Integration und die Snapdragon-NPU-Ergebnisse in der Qualcomm QNN-Integration.
Unterstützte Aufgaben#
CoreML-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Familie, die diese Heads enthält.
Exportieren von YOLO26-Modellen nach CoreML#
Installation#
Um das erforderliche Paket zu installieren, führe Folgendes aus:
# Install the required package for YOLO26
pip install ultralyticsDer coremltools-Konverter wird beim ersten Export automatisch installiert. Der Export läuft auf macOS oder x86 Linux; für detaillierte Anweisungen und bewährte Methoden schaue in unseren Installationsleitfaden und den Leitfaden zu häufigen Problemen.
Verwendung#
Das CoreML-Format unterstützt die Modi Export, Predict und Validate. Inferenz und Validierung mit CoreML laufen nur auf macOS. Exportiere dein Modell und lade dann das exportierte Modell, um eine Inferenz auszuführen oder dessen Genauigkeit zu validieren.
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")Export-Argumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'coreml' | Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen definiert. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein. |
quantize | int oder str | None | Quantisierungspräzision (nur Gewichte für CoreML): 16 (FP16), 8 (INT8), "w8a16" (INT8-Gewichte mit FP16-Aktivierungen) oder 32/nicht festgelegt (FP32). Nicht festgelegte NMS ML Programs verwenden FP16 für die Xcode-Vorschau; übergebe 32, um dies zu überschreiben. Ersetzt die als veraltet markierten Flags half/int8. |
nms | bool | False | Bettet eine CoreML NMS-Pipeline ein. Nur für Detektionsmodelle (wird bei anderen Aufgaben mit einer Warnung ignoriert); nicht erforderlich für NMS-freies YOLO26, verwende dies für frühere Modelle wie YOLO11. |
dynamic | bool | False | Ermöglicht dynamische Eingabegrößen, was die Flexibilität bei der Verarbeitung variierender Bilddimensionen erhöht. |
batch | int | 1 | Legt die Batch-Inferenzgröße des exportierten Modells fest oder die maximale Anzahl an Bildern, die das exportierte Modell im Modus predict gleichzeitig verarbeitet. |
device | str | None | Gibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps). |
Weitere Details zum Exportprozess findest du auf der Ultralytics-Dokumentationsseite zum Exportieren.
Ausrichtung auf die Neural Engine#
CoreML wählt die Hardware über MLModelConfiguration.computeUnits aus. Das Ultralytics iOS SDK verwendet standardmäßig .cpuAndNeuralEngine unter iOS 16+ anstelle von .all: In einer Echtzeit-Kamera-App ist die GPU bereits mit der Zusammensetzung der Vorschau und von Overlays beschäftigt, sodass ein Ausschluss Konkurrenz und Frame-Zeit-Jitter vermeidet, während die ANE die schwere Arbeit erledigt. Fixiere .cpuOnly nur für Kompatibilitätstests – die obige Tabelle zeigt, was das kostet.
Das Ausführen eines CoreML-Modells von Python aus auf einem Mac-Host (über Ultralytics oder coremltools) folgt derselben Regel: Ultralytics lädt mit ComputeUnit.CPU_AND_NE (macOS 13+, fällt auf CPU_ONLY auf älteren macOS-Versionen zurück), wodurch die Inferenz auf der Neural Engine gehalten wird (~3× schneller als CPU). Dies vermeidet auch eine aktuelle macOS-Host-Einschränkung, bei der die Standardwerte ComputeUnit.ALL / CPU_AND_GPU – die den GPU/MPSGraph-Kompilierungspfad hinzufügen – den Prozess abbrechen mit einer Error: MLIR pass manager failed-Assertion auf coremltools 9.x.
Bereitstellung exportierter YOLO26 CoreML-Modelle#
Der schnellste Weg ist das offizielle Ultralytics YOLO iOS SDK, dasselbe Swift-Paket, das die Ultralytics iOS-App und das Flutter-Plugin antreibt. Es löst offizielle Modellnamen automatisch auf, lädt den .mlpackage herunter und zwischenspeichert ihn, und gibt vollständig decodierte Ergebnisse zurück:
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
}
}Für Kamera-Apps fügst du einfach die YOLOView des SDKs für Echtzeit-Inferenz mit nativen Overlays ein oder nutzt das Flutter-Plugin für plattformübergreifende Apps, die sich eine Codebasis mit Android teilen.
Die eigenständige Integration eines rohen .mlpackage ist mit Apples Stack ebenfalls unkompliziert – lade es mit MLModel, verpacke es in ein VNCoreMLRequest und füttere Bilder über VNImageRequestHandler ein. Diese Ressourcen decken die Details ab:
- Integrieren eines Core ML-Modells in deine App: Apples Leitfaden zum Bündeln und Aufrufen eines CoreML-Modells.
- CoreML Tools: Konvertierungs-, Quantisierungs- und Optimierungsreferenz für die
coremltools-Toolchain, die diesen Export antreibt. - Xcode Core ML Performance Reports: Schichtbezogene Hardware-Platzierung und Latenz-Profiling für dein exaktes Modell und Gerät.
Liefere das Modell entweder direkt in das App-Bundle eingebettet aus (sofortige Verfügbarkeit, ideal für Nano-/Small-Modelle) oder lade es beim ersten Start herunter und cache es (kleinere Binärdatei, einfache Modell-Updates). Die offiziellen Apps kombinieren beide Ansätze: Standard-Nano-Modelle sind für die sofortige Nutzung gebündelt, während größere Varianten bei Bedarf heruntergeladen und lokal gecacht werden.
Empfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Ultralytics Train-Modus oder beginne mit den offiziellen YOLO26-Gewichten
- Exportiere mit
model.export(format="coreml", quantize=8, imgsz=640)auf macOS oder x86 Linux (imgsz=224für Klassifizierung) - Überprüfe die Genauigkeit mit
model.val()auf einem Mac und erstelle ein Profil mit einem Xcode Core ML Performance Report auf deinem Zielgerät - Stelle bereit mit dem iOS SDK, dem Flutter-Plugin oder deiner eigenen Vision-Integration und ziele auf
.cpuAndNeuralEngineab
Zusammenfassung#
In diesem Leitfaden hast du gelernt, wie du Ultralytics YOLO26-Modelle in das .mlpackage-Format von CoreML exportierst, sie für die Apple Neural Engine quantisierst und mit Latenzen im einstelligen Millisekundenbereich bereitstellst – entweder über das offizielle iOS SDK und das Flutter-Plugin oder deine eigene Vision-Integration. Für andere Bereitstellungsziele durchstöbere die Seite des Integrationsleitfadens und vergleiche Formate mit dem Benchmark-Modus.
FAQ#
Führe
model.export(format="coreml", imgsz=640)in Python oderyolo export model=yolo26n.pt format=coreml imgsz=640vom CLI unter macOS oder x86 Linux aus. Verwendeimgsz=224für die Klassifizierung und fügequantize=8hinzu, um den offiziellen App-Modellen zu entsprechen. Der Export erzeugt einyolo26n.mlpackageML Program, das bereit für Xcode, das iOS SDK oder das Flutter-Plugin ist.Nein. YOLO26 ist NMS-frei End-to-End, sodass der exportierte Graph bereits finale Erkennungen ausgibt und die Decodierungskosten weit unter einer Millisekunde liegen. Die Option
nms=Trueexistiert für ältere Erkennungsmodelle wie YOLO11, bei denen sie eine CoreML NMS-Pipeline einbettet, damit deine App keine Unterdrückung implementieren muss. CoreML NMS-Pipelines unterstützen nur Objekterkennung, weshalbnms=Truebei anderen Aufgaben wie Segmentierung und Pose unter Ausgabe einer Warnung ignoriert wird.Die offiziellen Ultralytics-App-Modelle werden als INT8 ausgeliefert, was die Download-Größe minimiert und mit den Geschwindigkeiten in der obigen Tabelle läuft.
quantize=16(FP16) ist eine konservative Alternative im Wesentlichen ohne Genauigkeitsverlust. Validiere deinen genauen Export mitmodel.val()auf einem Mac vor der Auslieferung.Setze
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(der iOS SDK-Standard unter iOS 16+). Vermeide.allin Kamera-Apps – die GPU ist mit der Zusammensetzung der Vorschau beschäftigt, und das Einplanen der Inferenz dort verursacht Frame-Zeit-Jitter. Bestätige die Platzierung mit einem Xcode Core ML Performance Report.Ja, unter macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgundyolo val model=yolo26n.mlpackage data=coco8.yamlfunktionieren wie jedes andere Format. Die CoreML-Ausführung erfordert Apple-Hardware, weshalb diese Modi unter Linux und Windows nicht verfügbar sind.Verwende das offizielle Ultralytics YOLO iOS SDK (Swift Package) oder das Flutter-Plugin. Beide laden offizielle Modelle namentlich mit automatischem Download und Caching, führen sie auf der Neural Engine aus und enthalten vollständige Echtzeit-Kamera-Benutzeroberflächen – die gemessene Leistungstabelle oben wurde genau mit diesem Stack erstellt.