CoreML para Swift: guía completa con ejemplos prácticos
1. ¿Qué es CoreML y para qué sirve?
CoreML es un framework de machine learning desarrollado por Apple para integrar modelos de aprendizaje automático directamente en aplicaciones iOS, macOS, watchOS y tvOS. A diferencia de las soluciones en la nube, CoreML ejecuta todos los cálculos en el dispositivo del usuario, lo que garantiza un procesamiento instantáneo de datos sin demoras de red y una privacidad total de los datos del usuario.
¿Para qué sirve CoreML? En primer lugar, permite a los desarrolladores implementar funciones avanzadas de IA (reconocimiento de imágenes, procesamiento de lenguaje natural, análisis de audio) sin necesidad de conocer a fondo las redes neuronales. En segundo lugar, al funcionar en el dispositivo, la aplicación puede operar sin conexión, algo crucial para muchos casos de uso. En tercer lugar, Apple ha optimizado CoreML para trabajar con Neural Engine, GPU y CPU, ofreciendo el máximo rendimiento en todos los dispositivos Apple.
CoreML admite modelos creados en frameworks populares (TensorFlow, PyTorch, scikit-learn), que pueden convertirse al formato .mlmodel mediante la herramienta coremltools. El framework también se integra estrechamente con Vision (para análisis de imágenes), Natural Language (para procesamiento de texto) y SoundAnalysis (para audio).
2. Instalación
CoreML es un framework integrado de Apple y no requiere instalación a través de gestores de paquetes. Para usarlo, basta con importarlo en tu proyecto. Sin embargo, para convertir modelos desde otros formatos necesitarás el paquete de Python coremltools.
Instalación de coremltools (Python):
pip install coremltools
Importar CoreML en un proyecto de Xcode:
import CoreML
Para trabajar con imágenes y video, importa también Vision:
import Vision
3. Inicio rápido — ejemplo mínimo funcional
Vamos a crear una aplicación simple que clasifique una imagen usando el modelo preentrenado MobileNetV2. Primero, descarga el modelo MobileNetV2.mlmodel del repositorio de Apple o conviértelo con coremltools.
Ejemplo mínimo de clasificación de imágenes:
import CoreML
import Vision
import UIKit
// 1. Cargar el modelo
guard let model = try? VNCoreMLModel(for: MobileNetV2().model) else {
fatalError("No se pudo cargar el modelo")
}
// 2. Crear la solicitud
let request = VNCoreMLRequest(model: model) { request, error in
guard let results = request.results as? [VNClassificationObservation],
let topResult = results.first else {
print("No se pudo clasificar la imagen")
return
}
print("Reconocido: \(topResult.identifier) con probabilidad \(topResult.confidence)")
}
// 3. Cargar la imagen
guard let image = UIImage(named: "gato.jpg"),
let ciImage = CIImage(image: image) else {
fatalError("No se pudo cargar la imagen")
}
// 4. Ejecutar la solicitud
let handler = VNImageRequestHandler(ciImage: ciImage)
try? handler.perform([request])
4. Métodos, funciones y clases principales
4.1. MLModel
Firma: class MLModel
Función: Clase principal que representa un modelo de machine learning cargado. Permite realizar predicciones y obtener información sobre el modelo.
Ejemplo:
// Cargar modelo desde archivo
guard let modelURL = Bundle.main.url(forResource: "MiModelo", withExtension: "mlmodelc"),
let model = try? MLModel(contentsOf: modelURL) else {
fatalError("No se pudo cargar el modelo")
}
// Obtener metadatos del modelo
let description = model.mod También en la biblioteca
migrate en Go: guía completa con ejemplos prácticos
Frameworks CLI para PHP: Symfony Console y Laravel Zero — guía completa
Serialización de objetos en C++: bibliotecas y métodos
Cliente Elasticsearch para C# (.NET): NEST y Elastic.Clients.Elasticsearch
Trabajo con XML en PHP: análisis, creación y procesamiento de datos