Maschinelles Lernen mit Swift: Bibliotheken für iOS/macOS
Swift ist eine leistungsstarke und moderne Sprache von Apple, die zunehmend nicht nur für die klassische App-Entwicklung, sondern auch für Aufgaben des maschinellen Lernens eingesetzt wird. Dank der engen Integration in das Apple-Ökosystem ermöglicht Swift die Ausführung von ML-Modellen direkt auf dem Gerät (iOS, macOS, watchOS, tvOS), ohne Daten an einen Server senden zu müssen. In diesem Artikel betrachten wir vier Schlüsselwerkzeuge: Core ML, Create ML, Swift for TensorFlow und Turi Create. Sie erfahren, wie sie funktionieren, wo ihre Stärken liegen und wie Sie mit ihnen arbeiten können.
1. Core ML – Grundlage für die Integration von Modellen
Core ML ist ein Framework von Apple, das es ermöglicht, trainierte Modelle des maschinellen Lernens in Swift-Apps zu integrieren. Es unterstützt Modelle aus TensorFlow, PyTorch, Keras, scikit-learn und anderen gängigen Bibliotheken (durch Konvertierung in das Format .mlmodel).
Der Hauptvorteil von Core ML ist die Leistung: Die Modelle werden auf dem Gerät ausgeführt und nutzen CPU, GPU oder Neural Engine (auf Geräten mit A12+-Chip). Dies gewährleistet geringe Latenz und Datenschutz.
Beispiel für die Verwendung von Core ML in Swift:
import CoreMLimport Vision
// Modell laden (z.B. MobileNetV2)guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else { fatalError("Modell konnte nicht geladen werden")}
// Anfrage erstellenlet request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { return } print("Erkannt: \\(topResult.identifier) mit Wahrscheinlichkeit \\(topResult.confidence)")}
// Anfrage auf einem Bild ausführenlet image = UIImage(named: "cat.jpg")!let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])try? handler.perform([request])2. Create ML – Modelltraining ohne (viel) Code
Create ML ist ein Tool von Apple zum Trainieren von Modellen des maschinellen Lernens mit minimalem Codeaufwand. Es läuft unter macOS (über Swift Playgrounds oder Xcode) und unterstützt Aufgaben wie: Bildklassifikation, Textklassifikation, tabellarische Daten, Empfehlungssysteme und vieles mehr.
Sie können ein Modell trainieren, indem Sie ihm einfach einen Ordner mit annotierten Daten übergeben. Nach dem Training wird das Modell automatisch in das Core ML-Format konvertiert und ist einsatzbereit.
Beispiel für das Training eines Bildklassifikators in Swift:
import CreateMLimport Foundation
// Pfad zum Ordner mit Trainingsdaten (Struktur: /train/class1/, /train/class2/)let trainingData = try MLImageClassifier.DataSource.labeledDirectories(at: URL(fileURLWithPath: "/path/to/train"))
// Modell erstellen und trainierenlet classifier = try MLImageClassifier(trainingData: trainingData)
// Genauigkeit auf Testdaten bewertenlet evaluationMetrics = classifier.evaluation(on: trainingData)print("Genauigkeit: \\(evaluationMetrics.classificationError)")
// Modell im .mlmodel-Format speicherntry classifier.write(to: URL(fileURLWithPath: "/path/to/MyImageClassifier.mlmodel"))3. Swift for TensorFlow (S4TF) – Wissenschaftliche Experimente
Swift for TensorFlow ist ein experimentelles Projekt von Google, das die Möglichkeiten von TensorFlow in die Welt von Swift bringt. Es ermöglicht das Schreiben differenzierbarer Berechnungen und das Trainieren neuronaler Netze in Swift unter Nutzung der vollen Leistungsfähigkeit der automatischen Differenzierung.
Obwohl das Projekt offiziell eingefroren ist, leben seine Ideen in der Community weiter, und der Code kann für Forschung und Prototyping verwendet werden. S4TF ist besonders nützlich, wenn Sie benutzerdefinierte Schichten, Verlustfunktionen erstellen oder mit Architekturen experimentieren möchten.
Beispiel eines einfachen neuronalen Netzes mit Swift for TensorFlow:
import TensorFlow
// Modell definieren: Vollständig verbundenes Netz mit einer Auch in der Bibliothek
Reaktive Programmierung in Swift: Combine und RxSwift für iOS/macOS
Arbeit mit Apache Kafka in Swift (iOS/macOS): Bibliotheken und Beispiele
Arbeiten mit Bildern in TypeScript: Bibliotheken, Werkzeuge und Codebeispiele
Swagger/OpenAPI-Generierung für PHP: Die besten Tools und Bibliotheken
Swagger/OpenAPI-Generierung für Rust: Utoipa und Aide