<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=160269078105920&amp;ev=PageView&amp;noscript=1">

Crear Apps Móviles Inteligentes con Aprendizaje Automático

Lunes 08 de Abril 2019./ Tiempo de Lectura: 9 minutos./ Por Fabiola Ramírez

El Aprendizaje Automático (ML por sus siglas en inglés) no es un campo nuevo, pero ha evolucionado con el tiempo. Hoy día no es solamente uno de los campos más importantes de la Inteligencia Artificial (IA) sino que también es necesario para todo. ML ha estado ayudando cada vez más y más a solucionar problemas utilizando predicciones confiables y resultados eficientes. Esto significa que ha provocado un cambio en la manera en que las personas llevan a cabo su vida a través del mundo.

Afortunadamente, existen herramientas que están integradas con el Aprendizaje Automático, como Azure ML, el cual es un servicio que se brinda en la nube de Microsoft.

TensorFlow es una biblioteca de código abierto de Google que incorpora modelos predictivos, IA de Amazon, y demás. Además, es más fácil utilizar ML para muchos tipos de proyectos.

Por otra parte, el mercado móvil ha estado avanzando también. Existen frameworks que facilitan el uso de Aprendizaje Automático, especialmente cuando se trata de apps móviles. Nos enfocaremos en las ventajas y posibilidades que ofrecen estas herramientas.

Este artículo brindará las pautas, información, y primeros pasos para comenzar a experimentar y desarrollar aplicaciones móviles con las herramientas que integran el Aprendizaje Automático. Esta herramienta es el ML Kit, el cual es una interfaz de programación de aplicaciones (API por sus siglas en inglés) que trabaja con modelos.

Estos modelos buscan rostros humanos y rastrean las posiciones de hitos faciales en fotos, videos, o transmisiones en vivo y brindan información acerca del estado de rasgos faciales. Si vas a crear ML, entrenar modelos es de gran ayuda. Core ML puede ser utilizado para facilitar la integración de modelos de aprendizaje automático en una app y TensorFlow Lite ayuda a integrar modelos previamente entrenados en apps móviles también.

¿Qué es el Aprendizaje Automático?

El Aprendizaje Automático es una rama de la Inteligencia Artificial. Desarrolla técnicas que permiten que las computadoras aprendan. Este aprendizaje es posible gracias a la detección de patrones dentro de un set de data, así que es el programa en sí el que predice cuáles situaciones podrían suceder y cuáles no. Estos cálculos permiten que la máquina aprenda para que logre generar decisiones y resultados confiables. 

¿De qué sirve el Aprendizaje Automático?

El Aprendizaje Automático abre posibilidades para crear experiencias nuevas y cautivadoras. Posee muchas aplicaciones prácticas que impulsan resultados reales de negocios, como ahorro de tiempo y de dinero, los cuales tienen el potencial para impactar dramáticamente el futuro de una organización.

Casos Comunes de Aprendizaje Automático

Los siguientes son unos ejemplos conocidos de aprendizaje automático que están en camino o que ya forman parte de nuestras vidas. 

  • Los vehículos auto-conducidos de Google .
  • Detección de fraude de tarjetas de crédito.
  • Reconocimiento facial en Google Photos y Facebook
  • Siri de Apple, Google Now, Echo de Amazon, y Cortana de Windows.
  • Proveedores de correo electrónico utilizan aprendizaje automático para detectar y manejar correos spam.
  • Los motores de recomendación utilizados por Amazon y Netflix le muestran productos y películas al usuario basándose en su previa interacción con el sitio.
  • Face ID para desbloquear dispositivos.

¿Por qué inferencia móvil?

Existen muchas razones para argumentar en favor del uso de Aprendizaje Automático en aplicaciones móviles. Estas son algunas:

  • Privacidad de datos
  • Liberar poder computacional
  • Disponible en todo momento (en línea o sin conexión)
  • Optimizar (CPU vs GPU) el rendimiento del dispositivo
  • Minimiza el rastro de memoria
  • Minimiza el consumo de energía
  • Casos de uso en tiempo real
  • Sin latencia y rápida ejecución

 

Introduciendo ML Kit

Detección facial

El Face API encuentra caras humanas en fotos, videos o transmisiones en vivo. También encuentra y rastrea las posiciones de hitos faciales como los ojos, nariz, y boca. Con esta tecnología se pueden editar fotos y videos, mejorar transmisiones de videos con efectos y decoraciones,crear controles manos-libre para juegos y apps, o reaccionar cuando una persona guiñe el ojo o sonríe y demás.

Reconocimiento facial

Esta función determina automáticamente la probabilidad de que dos caras correspondan a la misma persona. No obstante, este API por el momento solamente provee la funcionalidad de detección facial y no reconocimiento facial.

Rastreo facial

Este aspecto amplía la detección facial a secuencias de video. Cualquier rostro que aparece en un video por cualquier período de tiempo puede ser rastreada. Es decir, los rostros que se detectan en fragmentos de video consecutivos pueden ser identificados como la misma persona. Nótese que esto no es un tipo de reconocimiento facial. Este mecanismo simplemente infiere basándose en la posición y el movimiento de la(s) cara(s) en la secuencia de video.

API de Código de Barras

El API de código de barras detecta códigos de barra en tiempo real, en cualquier dispositivo, con cualquier orientación. También puede detectar y analizar varios códigos de barra en 1D o 2D en diferentes formatos simultáneamente.

API de Reconocimiento de Texto

El API de Reconocimiento de Texto reconoce texto en muchos idiomas. También muestra la estructura del texto reconocido, incluyendo párrafos y líneas. Puede automatizar el tedioso proceso de ingreso de datos como tarjetas de crédito, recibos, y tarjetas de presentación, así como ayudar a organizar fotos, traducir documentos, o aumentar la accesibilidad.

TensorFlow Lite para utilizar modelos en apps móviles

Este framework ayuda a pre-entrenar modelos que corren en apps móviles. Por ejemplo, puede convertir un modelo entrenado a medida al formato de archivo TensorFlow Lite (.tflite) utilizando el Convertidor TensorFlow Lite. Luego ese archivo se puede utilizar en la aplicación móvil que se está creando.

Introduciendo Create ML y Core ML

Core ML es un framework que crea y entrena modelos de aprendizaje automático a la medida en Macs. Es importante mencionar que Create ML fue creado este año en el evento anual de desarrolladores WWDC. Por ejemplo, se puede entrenar un modelo para que reconozca o clasifique peces al mostrarle muchas imágenes de peces. Cuando el modelo muestra buen desempeño, se puede integrar en la app que se está creando utilizando Core ML. 

Por lo demás, Core ML es otro framework que integra el aprendizaje automático en apps nuevos con facilidad (macOS, iOS, watchOS and tvOS). Algunas de sus características son: Redes Neuronales Profundas, Redes Neuronales Recurrentes, Máquinas de Vectores de Soporte, Ensambles de Árboles de Decisión, Modelos Lineares, y demás. En la imagén 1, podemos observar la integración del modelo en la app.

Screen Shot 2019-04-08 at 3.08.40 PM

Imagen 1: Modelos de aprendizaje automático integrados en un app (fuente: developer.apple.com)

Un modelo entrenado es el resultado de la aplicación de un algoritmo de aprendizaje automático a un set de data de entrenamiento. El modelo hace predicciones basadas en en los nuevos datos de entrada. Por ejemplo, un modelo que ha sido entrenado en el historial de precios de casas de una región puede predecir el precio de una casa cuando se le da el número de habitaciones y baños. Core ML está optimizado para ejecución en-el-dispositivo, la cual minimiza el rastro de memoria y el consumo de energía. El hecho de que corre estrictamente en el dispositivo asegura la privacidad de los datos del usuario y garantiza que el app se mantenga en funcionamiento y continúe respondiendo cuando no se encuentre disponible una conexión de red. Algunos de los tipos de modelos que posee Core ML son:

  • Análisis de Sentimiento
  • Reconocimiento de Escritura a Mano
  • Traducción
  • Clasificación de escenas
  • Transferencia de estilo
  • Etiquetado de música
  • Predicción de texto

Como se puede ver en la Imagen 2, tiene soporte de Vision para el análisis de imágen, bases para procesamiento de lenguaje natural y GameplayKit para evaluar los árboles de decisión aprendidos. Core ML en sí se construye basado en primitivos de bajo nivel como Accelerate y BNNS, así como Metal Performance Shaders.

Screen Shot 2019-04-08 at 3.08.48 PMImagen 2: Estructura general de servicios ML (fuente: developer.apple.com) 

 
Vision

Vision es un nuevo y poderoso framework que brinda soluciones a retos de visión de computadora por medio de una interfaz consistente. Primero que todo, debemos entender cómo utilizar el API de Vision para detectar rostros, computar hitos faciales, rastrear objetos, y más. Lleva las cosas más allá al brindar modelos de aprendizaje automático hechos a la medida para tareas Vision utilizando Core ML.

Detección y Reconocimiento Facial

Detecta rostros o rasgos faciales (como los ojos, boca, y demás) en una imagen. En la Imagen 3 hay 9 caras detectadas.

Screen Shot 2019-04-08 at 3.09.00 PMImagen 3: Detección facial (Fuente: Fabiola Ramírez)

 
Detección de código de barras

Encuentra y reconoce códigos de barras en una imagen por medio de una solicitud de análisis de imagen. Detecta información también.

Detección de texto

Esta función encuentra regiones de texto visibles en una imagen por medio de una solicitud de análisis de imagen.Detecta información acerca de las regiones del texto detectado también.

Detección de Objetos y Rastreo

Rastrea movimiento de un objeto rectangular previamente identificado a través de múltiples imágenes o secuencias de video. También brinda la posición y la medida de una característica detectada en la imagen.

API de Lenguaje Natural (NSLinguisticTagger)

Esta herramienta brinda una interfaz con una variedad de funcionalidades de procesamiento de lenguaje natural con soporte para muchos idiomas y guiones. Puede ser utilizado para segmentar texto de lenguaje natural en párrafos,oraciones, y palabras, etiquetar información acerca de esas fichas, como lo son partes de discurso, categorías de léxico, lema, guión, y lenguaje.

GameplayKit

Este framework orientado a objetos brinda las herramientas y tecnologías fundamentales para crear juegos. Construye y organiza la lógica de juego. Incorpora comportamientos comunes de juego como lo son la generación aleatoria de números, inteligencia artificial, la búsqueda de caminos, y el comportamiento de agentes.

¿Dónde obtengo los modelos?

Construya sus apps con los siguientes modelos listos-para-usar de Core ML o utilice Core ML Tools para convertir modelos hechos a medida en formato Core ML. 

Modelos Apple

Estos son algunos modelos que están listos para usar.

  • MobileNet
  • SqueezeNet
  • Places205-GoogLeNet
  • ResNet50
  • Inception v3
  • VGG16
 
Modelos hechos a medida de paquetes de aprendizaje automático

Afortunadamente, Apple ha desarrollado una herramienta que convierte modelos a formato Core ML. Actualmente estos modelos deben seguir los siguientes formatos de biblioteca:

  • Caffe
  • Keras
  • libSVM
  • scikit-learn
  • XGBoost
 
Utilice herramientas Core ML para convertir modelos entrenados a Core ML

Core ML Tools es un paquete de python que se puede utilizar para convertir modelos de toolbox de aprendizaje automático en formato Core ML. Sobre todo se puede utilizar para:

  • Convertir modelos existentes a formato .mlmodel de herramientas populares de aprendizaje automático incluyendo Keras, Caffe, scikit-learn, libsvm, y XGBoost.
  • Expresar modelos en formato .mlmodel a través de una API simple.
  • Hacer predicciones con un .mlmodel (en plataformas selectas para propósitos de prueba).

## Download and install python package 
> pip install coremltools


caffe_model = ('flowers.caffemodel', 'flowers.prototxt')
model = coremltools.converters.caffe.convert( caffe_model, 
image_input_names = 'data', class_labels = 'labels.txt')
model.save('FlowerClassifier.mlmodels')

 

Screen Shot 2019-04-08 at 3.09.14 PM

Integración de un modelo Core ML en un app

Esta herramienta permite integrar una gran variedad de tipos de modelos de aprendizaje automático en una app. Además de brindar soporte para aprendizaje profundo con más de 30 tipos de niveles, también brinda soporte para modelos estándar como los ensambles de árbol, SVMs, y modelos lineares generalizados. En primer lugar, existen algunos requisitos que se deben de considerar antes de comenzar:

  • iOS 11.0+ Beta
  • Xcode 9.0 Beta
  • Swift 3.0+

Screen Shot 2019-04-08 at 3.09.31 PM

Imagen 5: Integración de core ML en un proyecto (fuente: source developer.apple.com)

Como se puede observar en la Imagen 5, el modelo solamente se tiene que arrastrar al proyecto Xcode. El modelo debe de ser instanciado como objeto, luego la función de predicción debe de ser titulada. Por ejemplo, la entrada es una imagen y la salida es una cadena.

let flowerModel = FlowerClassifier() if let prediction = try?flowerModel.prediction(flowerImage: image)return          
prediction.flowerType

Conclusión

Existen pocos pasos para lograr una fácil integración de modelos de aprendizaje automático, la cual le permite crear apps con funciones nuevas e inteligentes utilizando unas pocas líneas de código. Solamente es cuestión de intentarlo.

Actualmente, el Aprendizaje Automático está ayudando no solo a encontrar soluciones a problemas difíciles sino que también está cambiando la manera en que las personas viven a nivel global. Por lo tanto, es importante estar al día y tomar ventaja de las herramientas o bibliotecas que ya ofrecen servicios de Aprendizaje Automático. Como todos saben, el mercado móvil ha estado creciendo también, así que existen frameworks con Aprendizaje Automático que pueden ser incorporados dentro de apps móviles, y que pueden funcionar en línea o sin conexión.

Acerca de Avantica

En Avantica trabajamos como un socio de software que le ayuda a cumplir sus objetivos comerciales y dar solución a cada reto que se le presente. Ofrecemos equipos dedicados y buscamos constantemente las mejores metodologías para brindarle los mejores resultados.

Iniciemos un proyecto

 

ANTERIOR
Acciones a tomar cuando el tiempo de pruebas se acorta en una metodología tradicional
SIGUIENTE
Devops & Lean UX