CoreML für Swift: Das vollständige Tutorial mit Beispielen
1. Was ist CoreML und warum braucht man es?
CoreML ist ein Machine-Learning-Framework von Apple, das es Entwicklern ermöglicht, ML-Modelle direkt in Apps für iOS, macOS, watchOS und tvOS zu integrieren. Im Gegensatz zu Cloud-Lösungen führt CoreML alle Berechnungen lokal auf dem Gerät des Benutzers durch. Das bedeutet: blitzschnelle Datenverarbeitung ohne Netzwerkverzögerungen und maximaler Datenschutz.
Warum CoreML? Erstens können Entwickler komplexe KI-Funktionen wie Bilderkennung, Textanalyse oder Audioverarbeitung nutzen, ohne tief in neuronale Netze einsteigen zu müssen. Zweitens funktioniert die App auch offline – ein entscheidender Vorteil für viele Anwendungsfälle. Drittens ist CoreML von Apple für Neural Engine, GPU und CPU optimiert und liefert so auf allen Apple-Geräten Höchstleistung.
CoreML unterstützt Modelle aus gängigen Frameworks wie TensorFlow, PyTorch und scikit-learn. Diese lassen sich mit dem Tool coremltools in das Format .mlmodel konvertieren. Das Framework arbeitet nahtlos mit Vision (Bildanalyse), Natural Language (Textverarbeitung) und SoundAnalysis (Audioanalyse) zusammen.
2. Installation
CoreML ist ein integriertes Apple-Framework und benötigt keine Installation über Paketmanager. Sie importieren es einfach in Ihr Projekt. Für die Konvertierung von Modellen aus anderen Formaten benötigen Sie jedoch das Python-Paket coremltools.
Installation von coremltools (Python):
pip install coremltools
CoreML in einem Xcode-Projekt einbinden:
import CoreML
Für die Arbeit mit Bildern und Videos importieren Sie zusätzlich Vision:
import Vision
3. Schnellstart – Ein minimales Arbeitsbeispiel
Wir erstellen eine einfache App, die ein Bild mit dem vortrainierten Modell MobileNetV2 klassifiziert. Laden Sie das Modell MobileNetV2.mlmodel aus dem Apple-Repository herunter oder konvertieren Sie es mit coremltools.
Minimalbeispiel zur Bildklassifizierung:
import CoreML
import Vision
import UIKit
// 1. Modell laden
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else {
fatalError("Modell konnte nicht geladen werden")
}
// 2. Anfrage erstellen
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first else {
print("Bild konnte nicht klassifiziert werden")
return
}
print("Erkannt: \(topResult.identifier) mit Wahrscheinlichkeit \(topResult.confidence)")
}
// 3. Bild laden
guard let image = UIImage(named: "cat.jpg"),
let ciImage = CIImage(image: image) else {
fatalError("Bild konnte nicht geladen werden")
}
// 4. Anfrage ausführen
let handler = VNImageRequestHandler(ciImage: ciImage)
try? handler.perform([request])
4. Wichtige Methoden, Funktionen und Klassen
4.1. MLModel
Signatur: class MLModel
Funktion: Die Hauptklasse, die ein geladenes ML-Modell repräsentiert. Ermöglicht Vorhersagen und den Zugriff auf Modellinformationen.
Beispiel:
// Modell aus Datei laden
guard let modelURL = Bundle.main.url(forResource: "MyModel", withExtension: "mlmodelc"),
let model = try? MLModel(contentsOf: modelURL) else {
fatalError("Modell konnte nicht geladen werden")
}
// Metadaten des Modells abrufen
let description = model.mod Auch in der Bibliothek
PDF-Generierung in Kotlin: Die besten Bibliotheken und Codebeispiele
Flurl für C# (.NET): Komplettguide mit Beispielen
Elasticsearch REST-Client für Kotlin: Leitfaden zur Verwendung
Rust Task Scheduler: Überblick über Bibliotheken und Codebeispiele