CoreML-Export für YOLO26-Modelle#
Apple stattet jedes moderne iPhone, iPad und jeden Mac mit spezieller KI-Hardware aus – der Neural Engine – und CoreML ist heute der von Ultralytics unterstützte Weg, Modelle darauf bereitzustellen. Beim Export von Ultralytics YOLO26-Modellen wird ein trainierter Checkpoint .pt in ein natives .mlpackage umgewandelt, das alle sieben YOLO-Aufgaben bei niedriger Latenz direkt auf dem Gerät 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 standardmäßig auf dem Apple Neural Engine aus – mit Echtzeit-Kamerainferenz, Vorhersagen für einzelne Bilder und automatischem Modelldownload für alle sieben YOLO26-Aufgaben, einschließlich Depth. Informationen zur Bereitstellung auf der Android-NPU findest du in der Qualcomm-QNN-Integration.
Exportiere Klassifikationsmodelle mit imgsz=224. Exportiere Detect-, Segment-, Semantic-, Depth-, Pose- und OBB-Modelle mit
imgsz=640. Dieser Standard mit 224/640 wird von den offiziellen mobilen CoreML-, LiteRT- und QNN-Assets verwendet.
Apple hat das neue Core AI Framework und Format .aimodel für die Generation von iOS 27 und macOS 27 eingeführt, und Ultralytics exportiert dieses mit format="coreai". CoreML bleibt das Standardformat für die iOS- und Flutter-SDKs von Ultralytics, die das Core AI Framework auf iOS-27-Geräten als optionale Funktion laden, sowie das Format für eine breitere Kompatibilität mit Apple-Geräten.
Watch: How to Export Ultralytics YOLO26 to CoreML with INT8 Quantization | Apple Deployment | iOS/MacOS 🍎
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 – das .mlpackage-Paket, das der Ultralytics-Exporter erzeugt – und verteilt sie auf CPU, GPU und Apple Neural Engine (ANE), die spezielle NPU in jedem Chip mit Apple-Silizium. Da alles lokal ausgeführt wird, funktioniert die Inferenz offline, verursacht keine Netzwerklatenz und hält Nutzerdaten auf dem Gerät.
CoreML ist direkt in Apples Vision-Framework integriert. Dieses übernimmt die Skalierung und Ausrichtung von Bildern auf dem Weg zum Modell. So übergibt das Ultralytics iOS SDK Kamerabilder mit praktisch keinem zusätzlichen Vorverarbeitungsaufwand an YOLO.
Warum YOLO26 nach CoreML exportieren?#
- Geschwindigkeit des Neural Engine: CoreML plant unterstützte Operationen auf Apples Neural Engine ein, um eine Inferenz mit niedriger Latenz auf dem Gerät zu ermöglichen. Sieh dir die Tabelle mit den Ergebnissen auf physischen Geräten unten an und benchmarke deinen exakten Export auf der Zielhardware.
- Wähle die Ausgabe: Standardexporte überlassen NMS deiner App. Nutze
nms=True, um NMS einzubinden, odernms=Falsefür den NMS-freien Kopf von YOLO26. - Privat und offline: Die gesamte Berechnung bleibt auf dem Gerät – keine Cloud-Anfragen, keine API-Schlüssel, umfassender Datenschutz.
- Ein Export für das gesamte Ökosystem: Dasselbe
.mlpackageläuft auf iOS, iPadOS, macOS, watchOS, tvOS und visionOS und bildet die Grundlage für das offizielle iOS SDK und Flutter-Plugin von Ultralytics.
Gemessene Leistung#
End-to-End-Inferenz für einzelne Bilder mit den standardisierten v8.3.0 YOLO26n-INT8-CoreML-Assets auf einem
iPhone 17 Pro mit 12 GB Arbeitsspeicher und iOS 26.5.2. Der A19 Pro verfügt über eine 6-Kern-CPU
(2 Performance- und 4 Effizienzkerne), eine 6-Kern-GPU mit Neural Accelerators und einen 16-Kern-Neural Engine. Jede Zelle
zeigt die Gesamtzeit (Vorverarbeitung + Inferenz + Nachverarbeitung, ohne
Annotation) mit der Aufschlüsselung der einzelnen Phasen darunter. Unter iOS führt Vision die Skalierung der Eingabe innerhalb der Inferenzanfrage aus,
daher wird die Vorverarbeitung mit 0 angegeben und ihre Zeit der Inferenz zugerechnet.
| Modell | Aufgabe | Größe (Pixel) | CPU Core ML .cpuOnly(ms) | CPU + bevorzugt ANE 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 | Tiefe | 640 | 25.0 0.0 / 24.1 / 0.9 | 5.3 0.0 / 4.5 / 0.9 |
| YOLO26n-cls | Klassifizierung | 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 exakten
v8.3.0-Release-Assets geben Eingaben mit 224×224 für die Klassifikation und 640×640 für alle anderen Aufgaben an. - Geschwindigkeitswerte sind Burst-Latenzen für einzelne Bilder – der Mittelwert aus 15 Durchläufen nach 3 Aufwärmdurchläufen auf
bus.jpg, gemessen über die Phasen-Zeitmessung des iOS SDKs mithilfe des Benchmark-Harness des Flutter-Plugins im Profilmodus (optimierter nativer Code). Die Reihenfolge von CPU und Beschleuniger wurde zwischen den Aufgaben in einem sequenziellen Durchlauf abwechselnd verwendet. Die CPU-Zeilen fordern Core ML.cpuOnlyan; die Zeilen mit bevorzugter CPU + ANE fordern.cpuAndNeuralEnginean, wobei Core ML die endgültige Platzierung der Operationen steuert. Ein längerer Echtzeit-Kamerabetrieb weist höhere Werte auf, da er die Aufnahme- und Skalierungspipeline sowie die thermische Stabilisierung umfasst. Bei einem historischen Kameradurchlauf vor der Standardisierung wurden auf demselben Gerät 11.3 ms/Frame für YOLO26n Detect und 16.5 ms/Frame für YOLO26n Depth gemessen – Einzelheiten zur Messung im eingeschwungenen Zustand findest du in der Leistungsdokumentation des iOS SDKs. - Vergleiche die Android-Ergebnisse für CPU/GPU in der LiteRT-Integration und die Ergebnisse der Snapdragon-NPU in der Qualcomm-QNN-Integration.
Unterstützte Aufgaben#
Der CoreML-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Modellfamilie, die diese Köpfe ausliefert.
| Aufgabe | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Erkennen | ✅ | ✅ | ✅ |
| Segmentieren | ✅ | ✅ | ✅ |
| Semantisch | ❌ | ❌ | ✅ |
| Tiefe | ❌ | ❌ | ✅ |
| Klassifizieren | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
YOLO26-Modelle nach CoreML exportieren#
Installation#
Führe zur Installation des erforderlichen Pakets folgenden Befehl aus:
# Install the required package for YOLO26
pip install ultralyticsDer Konverter coremltools wird beim ersten Export automatisch installiert. Der Export läuft unter macOS oder x86 Linux. Detaillierte Anweisungen und bewährte Vorgehensweisen findest du in unserer Installationsanleitung und im Leitfaden zu häufigen Problemen.
Verwendung#
Das CoreML-Format unterstützt die Modi Export, Predict und Validate. Inferenz und Validierung mit CoreML laufen nur unter macOS. Exportiere dein Modell und lade es anschließend, um Inferenz auszuführen oder seine 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")Exportargumente#
| Argument | Typ | Standardwert | Beschreibung |
|---|---|---|---|
format | str | 'coreml' | Zielformat für das exportierte Modell, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen festlegt. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe. Kann für quadratische Bilder eine Ganzzahl oder für bestimmte Abmessungen ein Tupel (height, width) sein. |
quantize | int oder str | None | Quantisierungsgenauigkeit (nur Gewichte für CoreML): 16 (FP16), 8 (INT8), "w8a16" (INT8-Gewichte mit FP16-Aktivierungen) oder 32/nicht gesetzt (FP32). NMS-ML-Programme verwenden FP16 (für die Xcode-Vorschau und erforderlich für Segmentierung und Pose); übergib bei Detect 32, um dies zu überschreiben. Ersetzt die veralteten Flags half/int8. |
nms | bool, optional | None | Wähle rohe Ausgabe (None, Standard), eingebettetes NMS (True) oder den NMS-freien Kopf (False). Eingebettetes NMS unterstützt Detect, Segment und Pose mit dynamic=False. |
dynamic | bool | False | Ermöglicht dynamische Eingabegrößen. Wird für Klassifizierungs- oder RT-DETR-Modelle nicht unterstützt und kann nicht mit nms=True kombiniert werden. |
batch | int | 1 | Legt die Batch-Inferenzgröße des Exportmodells oder die maximale Anzahl an Bildern fest, die das exportierte Modell im Modus predict gleichzeitig verarbeitet. Werte über 1 erfordern dynamic=True. |
device | str | None | Gibt das Gerät für den Export an: GPU (device=0), CPU (device=cpu), MPS für Apple-Silizium (device=mps). |
Weitere Informationen zum Exportvorgang findest du auf der Ultralytics-Dokumentationsseite zum Export.
Auf den Neural Engine zielen#
CoreML wählt die Hardware über MLModelConfiguration.computeUnits aus. Das Ultralytics iOS SDK verwendet unter iOS 16+ standardmäßig .cpuAndNeuralEngine statt .all: In einer Echtzeit-Kamera-App ist die GPU bereits mit der Darstellung der Vorschau und der Einblendungen beschäftigt. Durch ihren Ausschluss werden Konkurrenz um Ressourcen und Schwankungen der Frame-Zeit vermieden, während der ANE die Hauptlast übernimmt. Verwende .cpuOnly nur für Kompatibilitätstests – die obige Tabelle zeigt die dadurch entstehenden Kosten.
Das Ausführen eines CoreML-Modells aus Python auf einem Mac-Host (über Ultralytics oder coremltools) folgt derselben Regel: Ultralytics lädt mit ComputeUnit.CPU_AND_NE (macOS 13+, mit Rückfall auf CPU_ONLY bei älteren macOS-Versionen) und hält die Inferenz auf dem Neural Engine (ca. 3× schneller als auf der CPU). Dadurch wird außerdem eine aktuelle Einschränkung von macOS-Hosts vermieden, bei der die standardmäßigen Optionen ComputeUnit.ALL / CPU_AND_GPU – die den GPU-/MPSGraph-Kompilierungspfad hinzufügen – den Prozess mit einer Error: MLIR pass manager failed-Assertion auf coremltools 9.x abbrechen.
Exportierte YOLO26-CoreML-Modelle bereitstellen#
Der schnellste Weg führt über das offizielle Ultralytics YOLO iOS SDK, dasselbe Swift-Paket, das die Ultralytics-iOS-App und das Flutter-Plugin verwendet. Es löst offizielle Modellnamen automatisch auf, lädt und cached .mlpackage und gibt vollständig dekodierte 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 kannst du YOLOView des SDKs für Echtzeit-Inferenz mit nativen Einblendungen einsetzen oder das Flutter-Plugin für plattformübergreifende Apps verwenden, die eine gemeinsame Codebasis mit Android nutzen.
Die direkte Integration eines rohen .mlpackage ist mit Apples Stack ebenfalls unkompliziert: Lade es mit MLModel, verpacke es in ein VNCoreMLRequest und übergib Bilder über VNImageRequestHandler. Diese Ressourcen enthalten die Einzelheiten:
- Ein Core-ML-Modell in deine App integrieren: Apples Anleitung zum Bündeln und Aufrufen eines CoreML-Modells.
- CoreML Tools: Referenz zu Konvertierung, Quantisierung und Optimierung für die Toolchain
coremltools, die diesen Export ermöglicht. - Xcode Core-ML-Leistungsberichte: Profiling der Geräteplatzierung und Latenz pro Schicht für dein exaktes Modell und Gerät.
Bette das Modell entweder in das App-Bundle ein (sofort verfügbar, ideal für Nano- und kleine Modelle) oder lade es beim ersten Start herunter und cache es (kleineres Binärprogramm, einfache Modellaktualisierungen). Die offiziellen Apps kombinieren beide Ansätze: Standardmäßige Nano-Modelle sind zur sofortigen Verwendung enthalten, während größere Varianten bei Bedarf heruntergeladen und lokal gecacht werden.
Empfohlener Arbeitsablauf#
- Trainiere dein Modell mit dem Train-Modus von Ultralytics oder beginne mit den offiziellen YOLO26-Gewichten.
- Exportiere mit
model.export(format="coreml", quantize=8, imgsz=640)unter macOS oder x86 Linux (imgsz=224für Klassifikation). - Überprüfe die Genauigkeit mit
model.val()auf einem Mac und erstelle mit einem Xcode-Core-ML-Leistungsbericht auf deinem Zielgerät ein Profil. - Stelle bereit mit dem iOS SDK, dem Flutter-Plugin oder deiner eigenen Vision-Integration und ziele auf
.cpuAndNeuralEngine.
Zusammenfassung#
In diesem Leitfaden hast du gelernt, wie du Ultralytics YOLO26-Modelle in das .mlpackage-Format von CoreML exportierst, für den Apple Neural Engine quantisierst und mit Latenzen im einstelligen Millisekundenbereich bereitstellst – entweder über das offizielle iOS SDK und Flutter-Plugin oder deine eigene Vision-Integration. Weitere Bereitstellungsziele findest du auf der Integrationsleitfadenseite; mit dem Benchmark-Modus kannst du Formate vergleichen.
FAQ#
Führe
model.export(format="coreml", imgsz=640)in Python oderyolo export model=yolo26n.pt format=coreml imgsz=640über die CLI unter macOS oder x86 Linux aus. Verwendeimgsz=224für Klassifikation und fügequantize=8hinzu, um die offiziellen App-Modelle abzubilden. Der Export erzeugt einyolo26n.mlpackage-ML-Programm, das für Xcode, das iOS SDK oder das Flutter-Plugin bereit ist.Nutze
nms=True, wenn deine App Detektionen inklusive NMS benötigt. Das standardmäßigenms=Noneexportiert rohe One-to-Many-Ausgaben zur Verarbeitung durch deine App;nms=Falsewählt den NMS-freien Kopf von YOLO26. Eingebettetes NMS unterstützt Detect, Segment und Pose mit statischen Shapes; andere Aufgaben behalten ihre nativen Ausgaben.Die offiziellen Ultralytics-App-Modelle werden als INT8 ausgeliefert, wodurch die Downloadgröße minimiert wird und sie die in der obigen Tabelle angegebenen Geschwindigkeiten erreichen.
quantize=16(FP16) ist eine konservative Alternative mit praktisch keinem Genauigkeitsverlust. Validiere deinen exakten Export mitmodel.val()auf einem Mac, bevor du ihn auslieferst.Setze
MLModelConfiguration.computeUnits = .cpuAndNeuralEngine(die Standardeinstellung des iOS SDKs unter iOS 16+). Vermeide.allin Kamera-Apps – die GPU ist mit der Darstellung der Vorschau beschäftigt, und das Einplanen der Inferenz dort verursacht Schwankungen der Frame-Zeit. Überprüfe die Platzierung mit einem Xcode-Core-ML-Leistungsbericht.Ja, unter macOS:
yolo predict model=yolo26n.mlpackage source=image.jpgundyolo val model=yolo26n.mlpackage data=coco8.yamlfunktionieren wie jedes andere Format. Die Ausführung von CoreML erfordert Apple-Hardware, daher sind diese Modi unter Linux und Windows nicht verfügbar.Verwende das offizielle Ultralytics YOLO iOS SDK (Swift-Paket) oder das Flutter-Plugin. Beide laden offizielle Modelle anhand ihres Namens automatisch herunter und cachen sie, führen sie auf dem Neural Engine aus und enthalten vollständige Echtzeit-Kameraoberflächen – die obige Tabelle zur gemessenen Leistung wurde genau mit diesem Stack erstellt.