Ultralytics YOLO27:
Get Started

CoreML-Export für YOLO26-Modelle#

Apple verbaut in jedem modernen iPhone, iPad und Mac eigens entwickelte KI-Chips — die Neural Engine — und CoreML ist der von Ultralytics unterstützte Weg, Modelle heute darauf bereitzustellen. Beim Export von Ultralytics YOLO26-Modellen nach CoreML wird ein trainierter .pt-Checkpoint in ein natives .mlpackage umgewandelt. Damit lassen sich alle sieben YOLO-Aufgaben mit geringer Latenz direkt auf dem Gerät ausführen, ohne Netzwerkverbindung und ohne dass Daten das Gerät verlassen.

Führe YOLO schon heute mit den offiziellen mobilen Apps auf der Apple Neural Engine aus

Das offizielle Ultralytics YOLO iOS SDK und Flutter-Plugin führen CoreML-Exporte ohne zusätzliche Einrichtung auf der Apple Neural Engine aus: mit Kamera-Inferenz in Echtzeit, Vorhersagen für einzelne Bilder und automatischem Modell-Download für alle sieben YOLO26-Aufgaben, einschließlich Tiefe. Informationen zur NPU-Bereitstellung für Android findest du in der Qualcomm QNN-Integration.

Offizielle Eingabegrößen für Mobilgeräte

Exportiere Klassifizierungsmodelle mit imgsz=224. Exportiere Erkennungs-, Segmentierungs-, semantische Segmentierungs-, Tiefen-, Pose- und OBB-Modelle mit imgsz=640. Dieser Standard von 224/640 wird von den offiziellen CoreML-, LiteRT- und QNN-Assets für Mobilgeräte verwendet.

Apples neues Core-AI-Format

Apple hat das neue Core-AI-Framework und das Format .aimodel für die Generation iOS 27 und macOS 27 eingeführt, und Ultralytics exportiert es mit format="coreai". CoreML bleibt das Standardformat für die Ultralytics-SDKs für iOS und Flutter. Diese laden Core AI auf Geräten mit iOS 27 optional; außerdem bietet CoreML breitere Kompatibilität mit Apple-Geräten.



Ansehen: So exportierst du Ultralytics YOLO26 mit INT8-Quantisierung nach CoreML | Bereitstellung auf Apple-Geräten | iOS/macOS 🍎

Was ist CoreML?#

Apple CoreML deployment pipeline

CoreML (von Apple als „Core ML“ geschrieben) ist Apples Framework für maschinelles Lernen auf dem Gerät. Es lädt Modelle im modernen Format ML Program – dem .mlpackage-Paket, das der Ultralytics-Exporter erstellt – und verteilt ihre Ausführung auf CPU, GPU und Apple Neural Engine (ANE) des Geräts, die dedizierte NPU in jedem Apple-Silicon-Chip. Da alles lokal läuft, funktioniert die Inferenz offline, verursacht keine Netzwerklatenz und lässt Nutzerdaten auf dem Gerät.

CoreML ist direkt in Apples Vision-Framework integriert. Dieses verarbeitet die Bildskalierung und Ausrichtung, bevor die Bilder in das Modell gelangen. So übergibt das Ultralytics-iOS-SDK Kamerabilder an YOLO – praktisch ohne Vorverarbeitungsaufwand.

Warum YOLO26 nach CoreML exportieren?#

  • Geschwindigkeit der Neural Engine: CoreML führt unterstützte Operationen auf Apples Neural Engine aus und ermöglicht so Inferenz mit geringer Latenz auf dem Gerät. Sieh dir die Tabelle mit den Messwerten auf physischen Geräten unten an und miss die Geschwindigkeit deines konkreten Exports auf der Zielhardware.
  • Ausgabe auswählen: Bei Standardexporten übernimmt deine App NMS. Verwende nms=True, um NMS einzubetten, oder nms=False für den NMS-freien Kopf von YOLO26.
  • Privat und offline: Die gesamte Berechnung findet auf dem Gerät statt – keine Cloud-Aufrufe, keine API-Schlüssel, umfassender Datenschutz.
  • Ein Export für das gesamte Ökosystem: Dasselbe .mlpackage läuft unter iOS, iPadOS, macOS, watchOS, tvOS und visionOS und bildet die Grundlage für das offizielle iOS-SDK und das offizielle Flutter-Plugin von Ultralytics.

Gemessene Leistung#

Ende-zu-Ende-Inferenz eines einzelnen Bildes mit den standardisierten v8.3.0-YOLO26n-INT8-CoreML-Assets auf einem iPhone 17 Pro mit 12 GB Arbeitsspeicher und iOS 26.5.2. Das A19 Pro verfügt über eine 6-Kern-CPU (2 Leistungskerne und 4 Effizienzkerne), eine 6-Kern-GPU mit Neural Accelerators und eine 16-Kern-Neural Engine. Jede Zelle zeigt die Gesamtdauer (Vorverarbeitung + Inferenz + Nachverarbeitung, ohne Annotation) mit der Aufschlüsselung der einzelnen Phasen darunter. Unter iOS übernimmt Vision die Skalierung der Eingabe innerhalb der Inferenzanfrage, daher wird die Vorverarbeitung mit 0 angegeben und ihre Dauer der Inferenz zugerechnet.

ModellAufgabeGröße
(Pixel)
CPU
Core ML .cpuOnly
(ms)
CPU + ANE bevorzugt
Core ML .cpuAndNeuralEngine
(ms)
YOLO26nDetect6409.2
0.0 / 9.2 / 0.0
3.2
0.0 / 3.2 / 0.0
YOLO26n-segSegment64012.6
0.0 / 12.0 / 0.5
4.8
0.0 / 4.2 / 0.6
YOLO26n-semSemantisch6409.7
0.0 / 9.2 / 0.5
4.6
0.0 / 4.2 / 0.5
YOLO26n-depthTiefe64025.0
0.0 / 24.1 / 0.9
5.3
0.0 / 4.5 / 0.9
YOLO26n-clsKlassifizieren2242.2
0.0 / 2.2 / 0.0
1.9
0.0 / 1.9 / 0.0
YOLO26n-posePose64011.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
  • Die exakten v8.3.0-Release-Assets geben Eingabegrößen von 224×224 für die Klassifizierung und 640×640 für alle anderen Aufgaben an.
  • Geschwindigkeitswerte sind Latenzen bei Einzelbild-Bursts – der Mittelwert aus 15 Durchläufen nach 3 Aufwärmdurchläufen auf bus.jpg. Gemessen wurden sie anhand der Zeitangaben pro Phase des iOS-SDKs über die Benchmark-Testumgebung des Flutter-Plugins im Profilmodus (optimierter nativer Code). Die Reihenfolge von CPU und Beschleuniger wechselte bei den Aufgaben innerhalb eines sequenziellen Durchlaufs. Bei CPU-Zeilen wird Core ML .cpuOnly angefordert, bei Zeilen mit bevorzugter CPU- und ANE-Ausführung .cpuAndNeuralEngine; die endgültige Zuweisung der Operationen übernimmt Core ML. Bei dauerhaftem Echtzeit-Kamerabetrieb fallen die Werte höher aus, da die Aufnahme- und Skalierungspipeline sowie die thermische Stabilisierung hinzukommen. Bei einer historischen Kameramessung vor der Standardisierung wurden auf demselben Gerät 11.3 ms/Bild für YOLO26n detect und 16.5 ms/Bild für YOLO26n Depth gemessen – weitere Informationen zur Profilierung im Dauerbetrieb findest du in der Leistungsdokumentation des iOS-SDKs.
  • Vergleiche die CPU-/GPU-Ergebnisse für Android in der LiteRT-Integration und die NPU-Ergebnisse für Snapdragon in der Qualcomm-QNN-Integration.

Unterstützte Aufgaben#

Der CoreML-Export unterstützt alle sieben Aufgaben von Ultralytics. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar – der einzigen Modellfamilie, die diese Ausgabeköpfe mitbringt.

AufgabeYOLOv8YOLO11YOLO26
Erkennung✅✅✅
Segmentierung✅✅✅
Semantik❌❌✅
Tiefe❌❌✅
Klassifizierung✅✅✅
Pose✅✅✅
OBB✅✅✅

YOLO26-Modelle nach CoreML exportieren#

Installation#

Führe zum Installieren des erforderlichen Pakets Folgendes aus:

Installation
# Install the required package for YOLO26
pip install ultralytics

Der coremltools-Konverter wird beim ersten Export automatisch installiert. Der Export läuft unter macOS oder Linux auf x86. Detaillierte Anweisungen und bewährte Vorgehensweisen findest du in unserem Installationsleitfaden und im Leitfaden zu häufigen Problemen.

Verwendung#

Das CoreML-Format unterstützt die Modi Export, Vorhersage und Validierung. Inferenz und Validierung mit CoreML sind nur unter macOS möglich. Exportiere dein Modell und lade anschließend das exportierte Modell, um Inferenz auszuführen oder die Genauigkeit zu validieren.

Exportieren
from ultralytics import YOLO

# Ein YOLO26-Modell laden
model = YOLO("yolo26n.pt")

# Mit INT8-Gewichtquantisierung nach CoreML exportieren, passend zu den offiziellen App-Modellen
model.export(format="coreml", quantize=8, imgsz=640)  # für die Klassifizierung imgsz=224 verwenden
Vorhersagen
from ultralytics import YOLO

# Das exportierte CoreML-Modell laden (macOS)
model = YOLO("yolo26n.mlpackage")

# Inferenz ausführen
results = model("https://ultralytics.com/images/bus.jpg")
Validieren
from ultralytics import YOLO

# Das exportierte CoreML-Modell laden (macOS)
model = YOLO("yolo26n.mlpackage")

# Die Genauigkeit anhand des COCO8-Datensatzes validieren
metrics = model.val(data="coco8.yaml")

Exportargumente#

ArgumentTypStandardBeschreibung
formatstr'coreml'Zielformat des exportierten Modells, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen festlegt.
imgszint oder tuple640Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein.
quantizeint oder strNoneQuantisierungsgenauigkeit (bei CoreML nur für Gewichte): 16 (FP16), 8 (INT8), "w8a16" (INT8-Gewichte mit FP16-Aktivierungen) oder 32/nicht festgelegt (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 Optionen half/int8.
nmsbool, optionalNoneWähle rohe Ausgaben (None, Standard), eingebettetes NMS (True) oder den NMS-freien Kopf (False). Eingebettetes NMS unterstützt detect, segment und pose mit dynamic=False.
dynamicboolFalseErmöglicht dynamische Eingabegrößen. Für Klassifizierungs- oder RT-DETR-Modelle nicht unterstützt und nicht mit nms=True kombinierbar.
batchint1Legt die Batchgröße für die Inferenz des exportierten Modells oder die Höchstzahl der Bilder fest, die das exportierte Modell gleichzeitig im Modus predict verarbeitet. Für Werte über 1 ist dynamic=True erforderlich.
devicestrNoneLegt das Exportgerät fest: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps).

Weitere Informationen zum Exportvorgang findest du auf der Ultralytics-Dokumentationsseite zum Export.

Die Neural Engine als Ziel auswählen#

CoreML wählt die Hardware über MLModelConfiguration.computeUnits aus. Das Ultralytics-iOS-SDK verwendet unter iOS 16 und höher standardmäßig .cpuAndNeuralEngine statt .all: In einer Echtzeit-Kamera-App ist die GPU bereits mit der Darstellung der Vorschau und der Overlays beschäftigt. Wenn sie ausgeschlossen wird, lassen sich Ressourcenkonflikte und Schwankungen der Bilddauer vermeiden, während die ANE die rechenintensiven Aufgaben übernimmt. Lege .cpuOnly nur für Kompatibilitätstests fest – die Tabelle oben zeigt die Leistungseinbußen.

Auch bei der Ausführung eines CoreML-Modells mit Python auf einem Mac-Host (über Ultralytics oder coremltools) gilt dieselbe Regel: Ultralytics lädt das Modell mit ComputeUnit.CPU_AND_NE (macOS 13 und neuer, bei älteren macOS-Versionen mit Rückgriff auf CPU_ONLY) und führt die Inferenz dadurch auf der Neural Engine aus (~3× schneller als auf der CPU). So wird auch eine aktuelle Einschränkung von macOS-Hosts umgangen: Die standardmäßige Kombination aus ComputeUnit.ALL und CPU_AND_GPU – die den Kompilierungspfad für GPU/MPSGraph hinzufügt – bricht den Prozess mit einer Error: MLIR pass manager failed-Assertion unter coremltools 9.x ab.

Exportierte YOLO26-CoreML-Modelle bereitstellen#

Am schnellsten geht es mit dem offiziellen Ultralytics-YOLO-iOS-SDK, demselben Swift-Paket, das die Ultralytics-iOS-App und das Flutter-Plugin verwenden. Es erkennt offizielle Modellnamen automatisch, lädt das .mlpackage herunter, speichert es im Cache 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 Echtzeitinferenz mit nativen Overlays einbinden oder das Flutter-Plugin für plattformübergreifende Apps verwenden, die sich eine Codebasis mit Android teilen.

Auch die direkte Integration eines nicht weiter verarbeiteten .mlpackage ist mit Apples Technologie-Stack unkompliziert: Lade es mit MLModel, binde es in ein VNCoreMLRequest ein und übergib Bilder über VNImageRequestHandler. Weitere Informationen findest du in diesen Ressourcen:

Binde das Modell entweder direkt in das App-Paket ein (sofort verfügbar, ideal für Nano-/Small-Modelle) oder lade es beim ersten Start herunter und speichere es im Cache (kleinere Binärdatei, einfache Modellaktualisierungen). Die offiziellen Apps kombinieren beide Ansätze: Standardmäßige Nano-Modelle sind sofort einsatzbereit in der App enthalten, während größere Varianten bei Bedarf heruntergeladen und lokal zwischengespeichert werden.

  1. Trainiere dein Modell mit dem Train-Modus von Ultralytics oder verwende die offiziellen YOLO26-Gewichte als Ausgangspunkt
  2. Exportiere mit model.export(format="coreml", quantize=8, imgsz=640) unter macOS oder Linux auf x86 (imgsz=224 für die Klassifizierung)
  3. Überprüfe die Genauigkeit mit model.val() auf einem Mac und erstelle mit einem Core-ML-Leistungsbericht in Xcode ein Profil auf deinem Zielgerät
  4. Stelle das Modell mit dem iOS-SDK, dem Flutter-Plugin oder deiner eigenen Vision-Integration für .cpuAndNeuralEngine bereit

Zusammenfassung#

In dieser Anleitung hast du gelernt, wie du Ultralytics-YOLO26-Modelle in das CoreML-Format .mlpackage exportierst, für die Apple Neural Engine quantisierst und mit Latenzen im einstelligen Millisekundenbereich bereitstellst – entweder über das offizielle iOS-SDK und Flutter-Plugin oder über deine eigene Vision-Integration. Weitere Bereitstellungsziele findest du auf der Seite mit Integrationsleitfäden; Formate kannst du mit dem Benchmark-Modus vergleichen.

Häufig gestellte Fragen#

  • Führe model.export(format="coreml", imgsz=640) in Python oder yolo export model=yolo26n.pt format=coreml imgsz=640 über die CLI unter macOS oder Linux auf x86 aus. Verwende imgsz=224 für die Klassifizierung und füge quantize=8 hinzu, um die offiziellen App-Modelle nachzubilden. Beim Export entsteht ein yolo26n.mlpackage-ML-Program, das für Xcode, das iOS-SDK oder das Flutter-Plugin bereit ist.

  • Verwende nms=True, wenn deine App Erkennungen mit eingebettetem NMS benötigt. Beim standardmäßigen Export nms=None erhält deine App rohe One-to-many-Ausgaben zur Verarbeitung; mit nms=False wird der NMS-freie Kopf von YOLO26 ausgewählt. Eingebettetes NMS unterstützt detect, segment und pose mit statischen Formen; andere Aufgaben behalten ihre nativen Ausgaben.

  • Die offiziellen Ultralytics-App-Modelle werden als INT8 ausgeliefert. Das minimiert die Downloadgröße und ermöglicht die oben angegebenen Geschwindigkeiten. quantize=16 (FP16) ist eine konservative Alternative, die praktisch keinen Genauigkeitsverlust verursacht. Validiere deinen konkreten Export vor der Bereitstellung mit model.val() auf einem Mac.

  • Lege MLModelConfiguration.computeUnits = .cpuAndNeuralEngine fest (Standardeinstellung des iOS-SDKs unter iOS 16 und höher). Vermeide .all in Kamera-Apps – die GPU ist mit der Darstellung der Vorschau beschäftigt, und Inferenz auf der GPU führt zu Schwankungen der Bilddauer. Prüfe die Zuweisung mit einem Core-ML-Leistungsbericht in Xcode.

  • Ja, unter macOS funktionieren yolo predict model=yolo26n.mlpackage source=image.jpg und yolo val model=yolo26n.mlpackage data=coco8.yaml wie bei jedem anderen Format. Für die CoreML-Ausführung ist Apple-Hardware erforderlich, daher sind diese Modi unter Linux und Windows nicht verfügbar.

  • Verwende das offizielle Ultralytics-YOLO-iOS-SDK (Swift Package) oder das Flutter-Plugin. Beide laden offizielle Modelle anhand ihres Namens automatisch herunter und speichern sie im Cache, führen sie auf der Neural Engine aus und bieten vollständige Benutzeroberflächen für Echtzeitkameras – die Tabelle mit den Messwerten oben wurde genau mit diesem Technologie-Stack erstellt.

Kommentare