Aprendizaje automático en Swift: bibliotecas para iOS/macOS

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Aprendizaje automático en Swift: bibliotecas para iOS/macOS

Swift es un lenguaje potente e intuitivo de Apple, que se utiliza activamente no solo para el desarrollo de aplicaciones para iOS y macOS, sino también para tareas de aprendizaje automático. Gracias a su rendimiento, seguridad de tipos e integración directa con los frameworks de Apple, Swift se convierte en una excelente opción para implementar modelos de ML en dispositivos. En este artículo, revisaremos las bibliotecas y herramientas clave para el aprendizaje automático en Swift que te ayudarán a crear aplicaciones inteligentes para el ecosistema Apple.



1. Core ML — el framework insignia de Apple

Core ML es el framework principal de Apple para integrar modelos de aprendizaje automático en aplicaciones. Soporta una gran cantidad de formatos de modelos (MLModel, ONNX, TensorFlow, PyTorch) y está optimizado para funcionar en dispositivos (iPhone, iPad, Mac). Core ML utiliza automáticamente Neural Engine, GPU y CPU para un rendimiento máximo.

Ejemplo: Clasificación de imágenes con Core ML

import CoreMLimport Vision

// Cargamos el modelo preentrenado MobileNetV2guard let model = try? VNCoreMLModel(for: MobileNetV2(configuration: MLModelConfiguration()).model) else { fatalError("No se pudo cargar el modelo")}

// Creamos la solicitudlet request = VNCoreMLRequest(model: model) { request, error in guard let results = request.results as? [VNClassificationObservation], let topResult = results.first else { print("No se pudo clasificar") return } print("Objeto: \\(topResult.identifier) con confianza \\(topResult.confidence)")}

// Cargamos la imagenguard 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 — aprendizaje sin código (y con código)

Create ML es una herramienta de Apple para entrenar modelos de aprendizaje automático directamente en Xcode. Soporta tareas de clasificación de imágenes, texto, datos tabulares, sistemas de recomendación e incluso clasificadores de sonido. Los modelos entrenados en Create ML se exportan automáticamente al formato .mlmodel y están listos para usar con Core ML.

Ejemplo: Entrenamiento de un modelo de clasificación de texto

import CreateML

// Cargamos datos desde CSVlet data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/path/to/data.csv"))

// Dividimos en conjuntos de entrenamiento y pruebalet (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 42)

// Creamos el clasificador de textolet classifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "label")

// Evaluamos la precisiónlet evaluationMetrics = classifier.evaluation(on: testingData)print("Precisión: \\(evaluationMetrics.classificationError)")

// Guardamos el modelolet metadata = MLModelMetadata(author: "PythonLib", shortDescription: "Clasificador de reseñas", version: "1.0")try classifier.write(to: URL(fileURLWithPath: "/path/to/SentimentClassifier.mlmodel"), metadata: metadata)


3. TensorFlow Lite (TFLite Swift) — TensorFlow móvil

TensorFlow Lite es la versión ligera de TensorFlow para dispositivos móviles y embebidos. La interfaz Swift permite cargar y ejecutar modelos TFLite en iOS y macOS. TFLite soporta aceleración por hardware a través de Metal Performance Shaders (MPS) y delegados de Core ML.

Ejemplo: Ejecución de un modelo TFLite

import TensorFlowLite

// Cargamos el modeloguard let modelPath = Bundle.main.path(forResource: "mobilenet_v1_1.0_224", ofType: "tflite") else { fatalError("Modelo no encontrado")}

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

// Preparamos los datos de entrada (por ejemplo, imagen 224x224)let inputData: Data = preprocessImag

Recommendations