Saltar al contenido →

CoreML. Desde el Modelo hasta la App

La pasada WWDC será recordada como la conferencia de desarrolladores en la que Apple presentó dos de los pilares en lo que se apoyará el futuro de la programación para sus sistema: Realidad Aumentada y Machine Learning.

La mayor repercusión de cara al usuario final se la ha llevado AR (Augmented Reality) ya que sus desarrollos son muy “vistosos”, mientras que CoreML (framework de Machine Learning) ha interesado más en ambientes puramente de desarrolladores.

La Invasión Invisible

Pues os sorprendería saber que el uso de Machine Learning ha inundado la nueva versión iOS, desde el archiconocido Face ID hasta las predicciones del teclado de iOS pasando por lo modos que incorpora la cámara de iOS 11.

Y CoreML ha venido para quedarse, no penséis que es una moda pasajera, para nada. Sólo hay que ver el diseño del micro A11 Bionic que acompaña a los nuevos iPhone X y a la familia iPhone 8, un procesador que incorpora una zona exclusiva llamada Motor Neural para operaciones de Machine Learning, Deep Learning y Redes Neuronales.

Un motor neuronal es un componente de hardware diseñado para el aprendizaje automático, una forma de inteligencia artificial que capacita a los ordenadores para aprender por observación. Este motor puede hacer los cálculos increíblemente rápidos que requieren las redes neuronales y, al mismo tiempo, ser ultraeficiente.

Así que hay que tener claro que CoreML ha venido para quedarse.

Primero: El Modelo

Y ahora vamos a meternos en harina. Lo primero que necesita una app que va a hacer uso de CoreML es un modelo. ¿Y qué es un modelo?
Podríamos decir que un modelo se asemeja a un caja en la que por un lado entran datos y por el otro salen las predicciones basadas en esos datos.

Para este artículo vamos a usar un modelo que predice el doble un número entero dado. Es un modelo basado en Regresión Lineal que no tiene aplicación práctica en la vida real, tanto por la simpleza de la solución que aporta como por el hecho de que los modelos de regresión lineal puros no abundan en el mundo real.

Dicho esto sólo queda escribir el modelo usando el lenguaje Python, la librería de machine learning scikit-learn y la herramienta de exportación Core ML Tools

Si dispones de un Mac ya tienes instalado Python por defecto. La instalación de scikit-learn y Core ML Tools se hace mediante pip, el gestor de paquetes de Python.

Abrimos un Terminal y ejecutamos los siguientes comandos

sudo pip install scikit-learn
sudo pip install coremltools

Si ya los tienes instalados ejecuta este comando para actualizarlos a su última versión

sudo pip install -U scikit-learn
sudo pip install -U coremltools

Tras perdirnos la contraseña del administrador del sistema se procederá a la instalación de la libreria y todas sus dependencias.

Ahora abrid vuestro editor preferido y copiad el código bajo estas líneas.

El modelo en si mismo ocupa las 10 primeras líneas. El resto es la exportación del modelo a un archivo que se pueda importar en Xcode.

Esta exportación se hace mediante el paquete Core ML Tools y conviene mirar su documentación para saber los diferentes modelos y librerias que soporta.

Core ML Tools is a python package that can be used to convert models from machine learning toolboxes into the Core ML format.

Una vez que hayamos guardado en un archivo el código volvemos a Terminal y tras situarnos en la carpeta donde lo hemos guardado ejecutamos el intérprete de python

python nombre_de_tu_archivo.py

Al acabar la ejecución veremos que en la carpeta donde está archivo con nuestro modelo ha aparecido uno nuevo con extensión .mlmodel

Este es el archivo que necesitamos para nuestro proyecto en Xcode.

Segundo: Importar el modelo en Xcode

Una vez tenemos desarrollado el modelo el siguiente paso es importarlo en nuestro proyecto iOS o macOS de Xcode.

Para ello basta con arrastrar el archivo .mlmodel al navegador de archivos del proyecto de Xcode

Si todo va bien tras pulsar sobre el archivo recién importado aparecerán los detalles del modelo. Lo más importante está en la sección Model Class, en la que veremos el nombre de la clase Swift con la que usaremos el modelo, y en Model Evaluation Parameters vemos el nombre de los parámetros de entrada y de salida.

Tercero: Usar el modelo en la App

Lo primero que vamos a hacer es declarar una variable que haga referencia al modelo importado

Ahora añadimos una extensión que contenga el código con la llamada al modelo de Core ML

Y con esto ya podemos hacer uso de un modelo de Machine Learnign en nuestras aplicaciones iOS o macOS.

Conclusión

Como hemos visto lo más complicado del uso de Core ML es encontrar o desarrollar un modelo ya que gracias a los ingenieros de Apple la integración en Xcode y su posterior invocación con Swift es muy sencilla.

Enlaces

Podéis encontrar mucha información sobre Core ML en los siguientes enlaces.

Web

Vídeos

Librerías Python para Machine Learning

Herramientas de conversión de modelos

Libros

Python Machine Learning — Second Edition
Mastering Machine Learning with scikit-learn — Second Edition
Python Deep Learning
TensorFlow Machine Learning Cookbook

Publicado en CoreML Machine Learning Python Swift

Comentarios

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *