Apprentissage automatique en Swift : bibliothèques pour iOS/macOS

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Apprentissage automatique en Swift : bibliothèques pour iOS/macOS

Swift est un langage puissant et intuitif d'Apple, activement utilisé non seulement pour le développement d'applications iOS et macOS, mais aussi pour les tâches d'apprentissage automatique. Grâce à ses performances, à la sécurité des types et à l'intégration directe avec les frameworks Apple, Swift devient un excellent choix pour intégrer des modèles ML sur les appareils. Dans cet article, nous examinerons les bibliothèques et outils clés pour l'apprentissage automatique en Swift qui vous aideront à créer des applications intelligentes pour l'écosystème Apple.



1. Core ML — le framework phare d'Apple

Core ML est le framework principal d'Apple pour intégrer des modèles d'apprentissage automatique dans les applications. Il prend en charge un grand nombre de formats de modèles (MLModel, ONNX, TensorFlow, PyTorch) et est optimisé pour fonctionner sur les appareils (iPhone, iPad, Mac). Core ML utilise automatiquement le Neural Engine, le GPU et le CPU pour des performances maximales.

Exemple : Classification d'images avec Core ML

import CoreMLimport Vision

// Chargeons le modèle pré-entraîné MobileNetV2guard let model = try? VNCoreMLModel(for: MobileNetV2(configuration: MLModelConfiguration()).model) else { fatalError("Impossible de charger le modèle")}

// Créons une requêtelet request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { print("Impossible de classifier") return } print("Objet : \\(topResult.identifier) avec confiance \\(topResult.confidence)")}

// Chargeons l'imageguard let image = UIImage(named: "cat.jpg"), let ciImage = CIImage(image: image) else { return }

let handler = VNImageRequestHandler(ciImage: ciImage, options: [:])try? handler.perform([request])


2. Create ML — apprentissage sans code (et avec code)

Create ML est un outil d'Apple pour entraîner des modèles d'apprentissage automatique directement dans Xcode. Il prend en charge les tâches de classification d'images, de texte, de données tabulaires, les systèmes de recommandation et même les classificateurs audio. Les modèles entraînés dans Create ML sont automatiquement exportés au format .mlmodel et prêts à être utilisés avec Core ML.

Exemple : Entraînement d'un modèle de classification de texte

import CreateML

// Chargeons les données depuis un CSVlet data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/chemin/vers/donnees.csv"))

// Séparons en ensembles d'entraînement et de testlet (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 42)

// Créons un classificateur de textelet classifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")

// Évaluons la précisionlet evaluationMetrics = classifier.evaluation(on: testingData)print("Précision : \\(evaluationMetrics.classificationError)")

// Sauvegardons le modèlelet metadata = MLModelMetadata(author: "PythonLib", shortDescription: "Classificateur d'avis", version: "1.0")try classifier.write(to: URL(fileURLWithPath: "/chemin/vers/SentimentClassifier.mlmodel"), metadata: metadata)


3. TensorFlow Lite (TFLite Swift) — TensorFlow mobile

TensorFlow Lite est une version allégée de TensorFlow pour les appareils mobiles et embarqués. L'interface Swift permet de charger et d'exécuter des modèles TFLite sur iOS et macOS. TFLite prend en charge l'accélération matérielle via Metal Performance Shaders (MPS) et les délégations Core ML.

Exemple : Exécution d'un modèle TFLite

import TensorFlowLite

// Chargeons le modèleguard let modelPath = Bundle.main.path(forResource: "mobilenet_v1_1.0_224", ofType: "tflite") else { fatalError("Modèle non trouvé")}

let interpreter = try Interpreter(modelPath: modelPath)try interpreter.allocateTensors()

// Préparons les données d'entrée (par exemple, une image 224x224)let inputData: Data = preprocessImag

Recommendations