Aprendizaje Automático en Swift: bibliotecas para iOS/macOS
Swift es un lenguaje potente y moderno de Apple que se utiliza cada vez más no solo para el desarrollo clásico de aplicaciones, sino también para tareas de aprendizaje automático. Gracias a su estrecha integración con el ecosistema de Apple, Swift permite ejecutar modelos de ML directamente en el dispositivo (iOS, macOS, watchOS, tvOS) sin enviar datos al servidor. En este artículo, analizaremos cuatro herramientas clave: Core ML, Create ML, Swift for TensorFlow y Turi Create. Aprenderá cómo funcionan, cuáles son sus puntos fuertes y cómo empezar a trabajar con ellas.
1. Core ML — base para la integración de modelos
Core ML es un framework de Apple que permite incorporar modelos de aprendizaje automático entrenados en aplicaciones Swift. Admite modelos de TensorFlow, PyTorch, Keras, scikit-learn y otras bibliotecas populares (mediante conversión al formato .mlmodel).
La principal ventaja de Core ML es el rendimiento: los modelos se ejecutan en el dispositivo utilizando CPU, GPU o Neural Engine (en dispositivos con chip A12+). Esto garantiza baja latencia y privacidad de los datos.
Ejemplo de uso de Core ML en Swift:
import CoreMLimport Vision
// Cargamos el modelo (por ejemplo, MobileNetV2)guard let model = try? VNCoreMLModel(for: MobileNetV2().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 { return } print("Reconocido: \\(topResult.identifier) con probabilidad \\(topResult.confidence)")}
// Ejecutamos la solicitud en la imagenlet image = UIImage(named: "cat.jpg")!let handler = VNImageRequestHandler(cgImage: image.cgImage!, options: [:])try? handler.perform([request])2. Create ML — entrenamiento de modelos sin código (casi)
Create ML es una herramienta de Apple para entrenar modelos de aprendizaje automático con una escritura de código mínima. Funciona en macOS (a través de Swift Playgrounds o Xcode) y admite tareas como: clasificación de imágenes, texto, datos tabulares, sistemas de recomendación y mucho más.
Puede entrenar un modelo simplemente pasándole una carpeta con datos etiquetados. Después del entrenamiento, el modelo se convierte automáticamente al formato Core ML y está listo para usar.
Ejemplo de entrenamiento de un clasificador de imágenes en Swift:
import CreateMLimport Foundation
// Ruta a la carpeta con datos de entrenamiento (estructura: /train/class1/, /train/class2/)let trainingData = try MLImageClassifier.DataSource.labeledDirectories(at: URL(fileURLWithPath: "/path/to/train"))
// Creamos y entrenamos el modelolet classifier = try MLImageClassifier(trainingData: trainingData)
// Evaluamos la precisión en los datos de pruebalet evaluationMetrics = classifier.evaluation(on: trainingData)print("Precisión: \\(evaluationMetrics.classificationError)")
// Guardamos el modelo en formato .mlmodeltry classifier.write(to: URL(fileURLWithPath: "/path/to/MyImageClassifier.mlmodel"))3. Swift for TensorFlow (S4TF) — experimentos científicos
Swift for TensorFlow es un proyecto experimental de Google que aporta las capacidades de TensorFlow al mundo de Swift. Permite escribir cálculos diferenciables y entrenar redes neuronales en Swift, utilizando todo el poder de la diferenciación automática.
Aunque el proyecto está oficialmente congelado, sus ideas perduran en la comunidad y el código se puede utilizar para investigación y prototipado. S4TF es especialmente útil si desea crear capas personalizadas, funciones de pérdida o experimentar con arquitecturas.
Ejemplo de una red neuronal simple en Swift for TensorFlow:
import TensorFlow
// Definimos el modelo: red totalmente conectada con una