Aprendizaje automático en Android
Como sabes, un creciente interés por el Machine Learning obligó a las empresas a centrarse e invertir en él. El aprendizaje automático (ML) es la especialidad de la ciencia computacional, que se centra en el análisis y la interpretación de patrones y estructuras en los datos para permitir el aprendizaje, el razonamiento y la toma de decisiones fuera de la interacción con el ser humano. Además, el aprendizaje automático es un enfoque de programación que proporciona a sus aplicaciones Android la capacidad de aprender y mejorar automáticamente a partir de la experiencia previa. Como resultado, Google ha diseñado e implementado una serie de características y herramientas avanzadas para el Aprendizaje Automático de Android. Este artículo tiene como objetivo discutir algunos conceptos principales y características avanzadas que se han recomendado para los desarrolladores de Android.
- Introducción y Visión General
- La definición de Aprendizaje Automático (ML)
- El Aprendizaje Automático en el Desarrollo de Android
- Directrices para el diseño de aplicaciones Android
- La decisión clave en el desarrollo de Android
- Kit ML para desarrolladores de apps
- TensorFlow Lite
- AutoML Vision Edge
- En conclusión
Introducción y Visión General
Básicamente, el aprendizaje automático (ML) es un enfoque de programación que proporciona a sus aplicaciones de Android la capacidad de aprender y mejorar automáticamente a partir de la experiencia sin ser explícitamente programado para hacerlo. Recientemente, Android cuenta con una amplia gama de herramientas de Machine Learning que están disponibles para todo el mundo: diseñadores, gerentes de producto hasta ingenieros, desarrolladores móviles y expertos en Machine Learning. Ahora bien, Android es una plataforma, y una de las formas en que se puede medir el éxito de una plataforma es a través de los grandes logros que se construyen sobre ella. Hoy en día, Android se ejecuta en 2,5 mil millones de dispositivos, y un número de ellos ya están utilizando ML en el dispositivo. Además, el aprendizaje automático en el dispositivo ya no es una tecnología del futuro porque se puede utilizar ahora mismo. Por ejemplo, se ha mencionado que más de 25.000 aplicaciones en Android e iOS hacen uso de las funciones de ML Kit.
En otras palabras, los teléfonos móviles modernos tienen capacidad suficiente para procesar tanto como los ordenadores tradicionales, y nuestros teléfonos y tabletas son lo suficientemente potentes como para ejecutar aplicaciones, que pueden aprender e interactuar en tiempo real. El aprendizaje automático (ML) nos está ayudando a crear aplicaciones inteligentes. Por ejemplo, la predicción de Google Apps para las próximas aplicaciones que es probable que uses, y una aplicación móvil, que resuelve el mayor problema del mundo para encontrar el emoji perfecto. Además, los Asistentes Inteligentes, los Filtros de Snapchat, las Respuestas Inteligentes y las Lentes de Google son algunos de los otros productos que utilizan el aprendizaje automático en los dispositivos. Existen varios SDK en los teléfonos móviles que ayudan a ejecutar el aprendizaje automático en los dispositivos móviles. Algunos de ellos incluyen kits de desarrollo de software desarrollados por empresas populares como Amazon, Intel y Microsoft, y también Google ha desarrollado el ML Kit. Las siguientes secciones de este ensayo considerarán algunos conceptos principales y nuevas características que han sido recomendadas por Google para el desarrollo de Android.
La definición de Aprendizaje Automático (ML)
De hecho, la mayor del Aprendizaje Automático se ocupa de la cuestión de cómo construir programas informáticos que mejoran automáticamente con las experiencias. Así, su respuesta está en sus datos. En resumen, el Aprendizaje Automático se considera un subconjunto de la IA, que utiliza métodos estadísticos para permitir que las máquinas mejoren con la experiencia. Permite a un sistema informático tomar decisiones para llevar a cabo una determinada tarea. Estos programas o algoritmos están diseñados de tal manera que pueden aprender y mejorar con el tiempo mediante la observación de nuevos datos. El objetivo principal del Aprendizaje Automático es derivar el significado de los datos. Por lo tanto, los datos son la clave para desbloquear el Machine Learning. Cuantos más datos cualificados tenga el ML, más preciso será el algoritmo de ML.
El Aprendizaje Automático (ML) es la ciencia de los algoritmos informáticos que mejoran automáticamente a través de experiencias pasadas.
Para hacer predicciones o tomar decisiones sin ser programados explícitamente, los algoritmos de Machine Learning construyen un modelo basado en ejemplos que se llama datos de entrenamiento.
Machine Learning es la extracción de conocimiento a partir de los datos.
Además, hay algunas diferencias entre la Inteligencia Artificial y el Machine Learning. El objetivo de la Inteligencia Artificial es crear una máquina que pueda imitar una mente humana, y requiere también capacidades de aprendizaje. Sin embargo, se trata de algo más que de aprender; también se trata de la representación del conocimiento, el razonamiento y el pensamiento abstracto. En cambio, el Aprendizaje Automático se centra únicamente en la escritura de software, que puede aprender de experiencias pasadas. Además, el Aprendizaje Automático está más relacionado con la Minería de Datos y la Estadística que con la Inteligencia Artificial.
El Aprendizaje Automático nos permite resolver ciertos tipos de problemas de forma muy elegante. Lo importante es que para qué utilizamos el Aprendizaje Automático en la práctica. Por ejemplo, tenías que escribir código para detectar si alguien estaba caminando. Además, si tuvieras acceso a su velocidad, tendrías que escribir un trozo de código bastante sencillo para especificar una métrica para la velocidad que muestre el caminar en la realidad. Extender esta situación a la carrera parece bastante sencillo. Además, si quisiéramos cubrir el ciclismo, sólo tendríamos que añadir otra condición de contorno a nuestro código. En este momento, la pregunta es ¿qué pasa con otros tipos de actividades, por ejemplo, el golf?
De hecho, el golf incluye un montón de caminar, pero también hay que llevar y balancear un montón de palos. Entonces, ¿cómo explicamos esta condición? Aquí es donde el aprendizaje automático puede ayudarnos eficazmente. En la programación tradicional, expresamos reglas en lenguajes como Kotlin o Java. Luego, aplicamos esas reglas a un problema de interés. En Machine Learning, el paradigma es algo diferente. En lugar de escribir un montón de reglas, tomamos un montón de datos de etiquetas como fotos de personas que realizan diferentes tipos de actividades con las correspondientes etiquetas para esas actividades. Además, si alimentamos estos datos a nuestra red neuronal, ésta aprenderá las reglas de negocio por nosotros sin necesidad de definirlas. En resumen, el Aprendizaje Automático ha demostrado ser notablemente eficaz en la solución de una serie de diversos tipos de problemas como la detección de actividades.
El Aprendizaje Automático en el Desarrollo de Android
Como usted ha notado, el Aprendizaje Automático es un enfoque de programación que proporciona a sus aplicaciones Android la capacidad de aprender y mejorar automáticamente a partir de la experiencia sin ser programado explícitamente para hacerlo. Además, es muy adecuado para las aplicaciones Android que utilizan datos no estructurados como imágenes y texto, o problemas con un gran número de parámetros como la predicción del equipo deportivo ganador. Actualmente, Android ofrece una gran variedad de herramientas y métodos de aprendizaje automático: Las guías de diseño de ML, el SDK de aprendizaje automático «llave en mano» de Google ML Kit, TF Hub para encontrar modelos de vanguardia preconstruidos, TF Lite Model Maker para entrenar un modelo existente con tus propios datos, y los modelos personalizados de ML Kit y Android Studio para integrar estos modelos en tu aplicación Android de forma adecuada.
Para desarrollar aplicaciones de ML para Android, te enfrentarás a cuatro tareas principales, que son las siguientes:
- Diseño: identificar los objetivos del producto y proporcionar patrones de diseño de ML para lograrlos.
- Construir y entrenar: construir el modelo de ML, o entrenar el modelo preentrenado de Google.
- Inferencia: el proceso de utilizar un modelo de aprendizaje automático, que ya ha sido entrenado para realizar una determinada tarea.
- Desplegar: Instalación y actualización de los modelos ML para su aplicación Android.
Directrices para el diseño de aplicaciones Android
Inicialmente, no hay ninguna diferencia en comparación con otras tecnologías avanzadas. Sus diseñadores de producto e ingeniería se combinan para decidir qué tipo de problema estamos tratando de resolver con nuestro producto. Por lo tanto, no es un esfuerzo único. Es un proceso extremadamente iterativo cuando se tiene una nueva tecnología. Hay que probar los límites y colaborar. Además, quieres observar cómo el usuario utiliza realmente tu producto. Esto significa que el diseño, la gestión de productos y la ingeniería de software desempeñan papeles clave en este proceso. Google ha elaborado dos guías en este campo de estudio:
- The People + AI Guidebook : En esta guía, hay seis secciones diferentes para ayudarte a estructurar la conversación con tus diseñadores y gestores de productos. En general, ofrece las mejores prácticas para ayudar a su equipo a tomar decisiones sobre productos de IA centrados en el ser humano.
2. La especificación Material Design for Machine Learning : esta guía incluye las siguientes secciones:
En primer lugar, las nuevas directrices de Material Design para los casos de uso de ML en el móvil.
En segundo lugar, permitir una gran UX móvil de extremo a extremo impulsada por ML.
Tercero, código fuente disponible para la detección y seguimiento de objetos y el escaneo de códigos de barras.
La decisión clave en el desarrollo de Android
De hecho, una decisión clave que debe abordar en el desarrollo de Android es la inferencia se ejecutará en el dispositivo, o el uso de un servicio en la nube que se accedería de forma remota. Para tomar esta decisión con precisión, debes considerar algunos parámetros como ventajas o desventajas. Por ejemplo, para el enfoque en el dispositivo se enfrentará a algunos beneficios como los siguientes:
- Privacidad: En muchos casos, es más apropiado mantener todo en el dispositivo. Por lo tanto, no tenemos que preocuparnos de cómo se procesan los datos en la nube.
2. Fuera de línea: el aprendizaje automático en el dispositivo funciona cuando no hay conectividad, o cuando la red es irregular. Por ejemplo, si pasas algún tiempo en los trenes subterráneos, sabrás que esto podría ser útil.
3. Baja latencia: al ejecutar nuestro procesamiento en el dispositivo, podemos ser capaces de eliminar la latencia de la red por completo. Además, si unimos esto a los últimos avances en aceleración de hardware, podemos ofrecer a los usuarios experiencias realmente en tiempo real en una amplia gama de dispositivos Android.
Kit ML para desarrolladores de apps
De hecho, ML Kit SDK es un nuevo producto de Google, que fue presentado en 2018. ML Kit es un kit de desarrollo de software que hace posible que los desarrolladores simplifiquen la integración de modelos de aprendizaje automático en sus apps móviles. Además, incluso un desarrollador junior puede abordar esta tarea fácilmente. Otro punto es que hace que sus apps para iOS y Android sean mucho más atractivas, personalizadas y útiles con soluciones optimizadas para ejecutarse en el dispositivo. Como se mencionó, más de 25.000 aplicaciones en Android e iOS hacen uso de las características de ML Kit.
Un nuevo SDK que lleva la experiencia de Machine Learning de Google a los desarrolladores móviles en un paquete potente y fácil de usar en Firebase.
ML Kit tiene algunas características que se pueden clasificar en tres secciones:
- Visión: APIs de análisis de vídeo e imagen para etiquetar imágenes y detectar códigos de barras, texto, caras y objetos.
- Lenguaje natural: API de procesamiento del lenguaje natural para identificar y traducir entre 58 idiomas y proporcionar sugerencias de respuesta.
- Personalizado: Construya sus propios modelos utilizando AutoML Vision Edge, o traiga sus propios modelos TensorFlow Lite, ejecute experimentos y despliéguelos en producción con ML Kit.
Cada categoría tiene algunas características. Por ejemplo, Visión tiene algunas características como APIs de base: Escaneo de códigos de barras, Detección de rostros, Etiquetado de imágenes, Detección de objetos, Detección de puntos de referencia y Detección de texto.
TensorFlow Lite
Básicamente, TensorFlow Lite es un conjunto de herramientas para ayudar a los programadores a ejecutar modelos TensorFlow en dispositivos móviles, embebidos y IoT de forma adecuada. De hecho, proporciona inferencia de aprendizaje automático en el dispositivo con baja latencia y un tamaño binario pequeño. En otras palabras, TensorFlow Lite está diseñado para facilitar la ejecución del aprendizaje automático en los dispositivos, en el borde de la red, en lugar de enviar datos de ida y vuelta desde un servidor. TensorFlow Lite incluye dos componentes principales:
- El intérprete de TensorFlow Lite : ejecuta (modelos optimizados) en muchos tipos de hardware diferentes, como teléfonos móviles y microcontroladores.
2. El convertidor de TensorFlow Lite : convierte los modelos de TensorFlow en una forma productiva para su uso por el intérprete, y puede ser capaz de introducir optimizaciones para mejorar el tamaño y el rendimiento binario.
Por último, los pasos para utilizar TensorFlow Lite contiene de los siguientes pasos brevemente:
- Elegir un modelo
- Convertir el modelo
- Desplegar en tu dispositivo
- Optimizar tu modelo
AutoML Vision Edge
Esta nueva función de Google puede construir modelos de clasificación de imágenes personalizados a partir de tus propios datos de entrenamiento. De hecho, si estás planeando reconocer el contenido de una imagen, una opción podría ser utilizar la API de etiquetado de imágenes en el dispositivo de ML Kit. Sin embargo, si necesita un modelo de etiquetado de imágenes más especializado, puede utilizar Firebase ML y AutoML Vision Edge para entrenar un modelo con sus propias imágenes y categorías. Por ejemplo, un modelo para distinguir entre especies de flores o tipos de alimentos. El modelo personalizado se entrena en Google Cloud, y luego se puede utilizar completamente en el dispositivo.
En conclusión
De un vistazo, Machine Learning es un enfoque de programación que proporciona a sus aplicaciones Android la capacidad de aprender y mejorar automáticamente a partir de la experiencia previa. Como resultado, Google ha diseñado e implementado una serie de características y herramientas avanzadas para el desarrollo de Android. Este artículo considera algunos conceptos principales y características avanzadas que han sido sugeridas para los desarrolladores de Android por Google.