TENDENCIA
Inteligencia Artificial: hemos probado los kits hazlo-tú-mismo de Google
Google ha lanzado los primeros Kits para el desarrollo de prototipos interactivos que incorporan la Inteligencia Artificial en sus funciones. Hemos testeado el innovador Vision Kit y os contamos nuestras impresiones.
2018 ha sido el año en el que la Inteligencia Artificial fue definitivamente despachada como tecnología de empleo corriente en muchos dispositivos de uso cotidiano.
En los últimos años los progresos registrados en el sector del machine learning han influenciado profundamente el desarrollo de las tecnologías de gestión de los big data que están a la base de los sistemas de búsqueda en web como Google o de distribución de los contenidos en redes sociales como Facebook.
Las Redes Neurales, inicialmente empleadas como arquitecturas de cálculo más elegantes y alternativas respecto a los tradicionales paradigmas de model fitting típicos de los algoritmos de planteamiento estadístico tradicionales, han alcanzado gradualmente prestaciones elevadas, inimaginables hasta pocos años antes, y obtenido resultados importantes en campos como la visión artificial, llegando a igualar, si no a superar, las prestaciones de la corteza visual humana en muchas aplicaciones.
Mientras la investigación en el campo del aprendizaje automático y de las Redes Neurales prosigue intensa en los ambientes académicos y en los laboratorios de los grandes player que dominan el mercado de la alta tecnología, los primeros resultados ya consolidados en el campo del Deep Learning, basados en arquitecturas como las Dense Neural Network y las Convolutional Neural Network, comienzan a estar disponibles en lógica open source y gratuita para todos, favoreciendo aquel proceso de democratización de la tecnología al que los movimientos Hacker de los años ‘80-‘90 y Maker en tiempos más recientes nos han acostumbrado, revelando los beneficios en términos de progreso cultural y social.
En el otoño de 2015 Google lanzó bajo licencia Apache 2.0 Open Source la plataforma TensorFlow, un conjunto de librerías de segunda generación para el desarrollo de aplicaciones basadas en redes neurales.
La plataforma había sido inicialmente creada para uso interno de Google, para apoyar los proyectos de desarrollo de los sistemas que están a la base de la mayoría de los servicios del gigante californiano como: el motor de búsqueda, la interfaz de reconocimiento vocal, Google Foto y Gmail.
Actualmente, TensorFlow representa el estado del arte de los instrumentos de este tipo, y desde la fecha de su lanzamiento las empresas y las organizaciones que lo han adoptado son cada vez más numerosas.
¿Pero cómo está hecha una moderna aplicación de Inteligencia Artificial, y qué son las Redes Neurales?
Conceptualmente la cosa es bastante simple: se trata de un sistema software que simula la estructura de una red de células cerebrales, las neuronas precisamente.
Si en el cerebro de los animales superiores la información se propaga desde los órganos de los sentidos a través de la red de neuronas en forma de señal eléctrica, en el software la información está constituida por números que se propagan a través de simples operaciones de sumas aritméticas ponderadas a través de una red virtual de nodos de elaboración que desarrollan operaciones muy simples.
A cada conexión lógica entre una neurona virtual y otra está asociado un coeficiente, llamado peso. En la transferencia entre una neurona y otra la información numérica viene multiplicada por el peso asociado a la conexión. Cuando se implementa la red, esto es se escribe el software que representa el modelo de red, los coeficientes, o pesos, son valorados de modo casual.
Sucesivamente la red viene sometida a un proceso de aprendizaje, durante el cual, por medio de fórmulas matemáticas y algoritmos a veces complejos de derivación estadística, los pesos vienen modificados de modo iterativo hasta que la red empieza a clasificar los datos de modo aceptable y suficientemente preciso.
Escribir desde cero el software que modela la estructura de una red neural apta para gestionar problemas reales y los relativos algoritmos de funcionamiento es un trabajo muy complejo.
TensorFlow facilita este trabajo poniendo a disposición, como una especie de ladrillitos lego, todas las piezas necesarias, ahorrándole al programador gran parte del trabajo, ya que casi todo ya ha sido escrito por los autores del TensorFlow de modo elegante y paramétrico. El aprendizaje de TensorFlow requiere tiempo, pero una vez aprendido cómo utilizar los ladrillitos, la realización de una red neural de empleo práctico es muy rápida y requiere poquísimas líneas de código.
Las librerías de alto nivel de TensorFlow están disponibles solo para el lenguaje Python, que una vez más se confirma como el lenguaje de elección para este tipo de aplicaciones, y no es casualidad que al Python y a las aplicaciones de Deep Learning con TensorFlow hayamos dedicado uno de nuestros cursos de mayor éxito.
Descubre más sobre nuestros cursos
Para programar una red neural con TensorFlow es suficiente un ordenador personal y un IDE Python.
El entrenamiento de una red sobre un conjunto de datos reales requiere grandes capacidades de cálculo y tiempos de todos modos muy largos, ¡también de varios días!
Hoy es posible adquirir a consumo servicios de cálculo de empresas como Amazon o la propia Google; sin embargo el proceso de training es de todos modos cosa de expertos y los Data Scientist o Data Specialist están entre las figuras profesionales más solicitadas y pagadas por el mercado.
Una vez entrenada la red, esto es calculados los valores de los pesos de las conexiones neurales que hacen funcionar la red como clasificador de datos con la precisión deseada, la operación de clasificación, esto es el cálculo del output a partir de una muestra de datos en input, es un proceso rápido, casi instantáneo, computacionalmente poco costoso.
En nuestro centro de investigación en el FabLab del Spazio Chirale en la Garbatella hemos hecho funcionar redes neurales ya entrenadas en pequeños procesadores como el ATMega328 de Arduino o microordenadores de maker como Raspberry Pi.
Afortunadamente, dado que desde hace varios años se desarrollan y entrenan intensivamente redes neurales en todo el mundo, para los problemas más comunes y recurrentes empiezan a estar disponibles redes neurales ya entrenadas, descargables como componentes software de pago desde sitios de empresas o marketplace especializados o de forma gratuita y open source, haciendo posible la investigación y el desarrollo de nuevas aplicaciones a partir de una ulterior categoría de ladrillitos: los models ya listos, esto es piezas de software, librerías o API, que implementan un modelo (estructura) específico de red neural preentrenada en un dominio de datos de interés general.
Es en esta lógica que Google a lo largo de 2018 ha lanzado sus kits de Inteligencia Artificial hazlo-tú-mismo, simpáticamente llamados AIY, esto es Artificial Intelligence Yourself.
A decir verdad el Voice Kit, primer kit AIY presentado al mercado, no nos había entusiasmado: de hecho un bonito packaging para crear una atractiva caja en cartón con pulsador luminoso RGB y altavoz para empaquetar la interfaz Raspberry Pi hacia los servicios de reconocimiento vocal de Google disponibles en Cloud, ya ampliamente utilizados para decenas de productos smart y prototipos salidos de nuestros Fab Lab.
El Vision Kit, al contrario, nos parece un decidido paso adelante. Por primera vez, de hecho, la Red Neural viene alojada y por tanto ejecutada localmente en el hardware del dispositivo que se realiza.
La cosa puede parecer increíble tratándose, como es evidente por el nombre del kit, de un sistema para la visión artificial y además basado en el microordenador Raspberry Pi Zero WH, esto es una board entry level de unos 10 euros de coste, que sobre el papel debería elaborar y dar de comer a una probable red neural convolucional, en tiempo real, ¡un video streaming en resolución HD a color!
La cosa fue en realidad hecha posible por el desarrollo de un hardware adicional, un bonnet por decirlo en terminología más acorde con el mundo Raspberry Pi Zero, que actúa como coprocesador video y neural especializado, dejando por tanto a la microboard solo la tarea de recibir el output de la red y pilotar los actuadores que ponen en escena los relativos resultados según los efectos especiales deseados.
El verdadero corazón del sistema es por tanto el Vision Bonnet, un PCB que aloja el ya célebre Procesador Neural Intel Movidius Myriad 2 VPU, que hace posible la elaboración del streaming video y la ejecución de las operaciones de feed forward de la red neural, y un propio MCU que permite gestionar servomotores y LED sin ocupar ulteriores PIN GPIO de la Raspberry Pi Zero.
El kit es entregado completo de su imagen en tarjeta SD con una distribución Raspbian personalizada por Google que incluye el TensorFlow y el package Python aiy.vision que permite el desarrollo de aplicaciones AI específicas para el kit. En la distribución están incluidos numerosos ejemplos de utilización para las principales API que forman parte del package.
Desde el repositorio GitHub del proyecto AIY es posible descargar un compilador, que por desgracia funciona solo en sistemas Linux Intel, para transformar un frozen graph TensorFlow, esto es un modelo de red neural desarrollada y ya entrenada con TensorFlow, en un grafo en formato binario cargable en la Vision Bonnet en run-time.
Es por tanto posible diseñar y realizar los propios modelos de visión artificial, entrenando las redes en un sistema de desarrollo para TensorFlow de adecuada potencia, y exportar los grafos compilándolos para el sistema Vision Bonnet + Raspberry Pi, permitiendo la construcción de prototipos y productos interactivos según los métodos de la cultura maker.
En cualquier caso hay que tener presentes los límites en términos de recursos de elaboración del sistema Vision Bonnet, por lo que Google ofrece scripts para verificar la compatibilidad de los modelos desarrollados con las capacidades de este kit, que sigue siendo de todos modos una plataforma de tinkering más que de verdadero desarrollo.
Construyendo el kit según las instrucciones suministradas por el sitio web dedicado al proyecto AIY se ensambla una divertida caja en cartón en la cual por defecto está activa una demo de reconocimiento de las expresiones faciales. Cada vez que en el campo visual de la cámara hay rostros, estos vienen identificados y a cada uno se le atribuye una puntuación en base al grado de alegría mostrado por la expresión del rostro. El color RGB del pulsador luminoso varía del azul al amarillo en base al valor medio de alegría calculado por el sistema. Si se sonríe de modo muy evidente el kit emite beeps alegres a través del buzzer incluido.
Las instrucciones de montaje están bien hechas y muy claras, claramente dirigidas a personas poco expertas del mundo Linux y Raspberry Pi. Para hacer cualquier cosa además de jugar con la demo que se inicia por defecto es necesario acceder a la Raspberry Pi conectándose directamente con ratón, teclado y monitor, o bien remotamente vía terminal SSH; en este último caso la Raspberry debe estar conectada a la red Wi-Fi.
Para configurar la red Wi-Fi las instrucciones oficiales enumeran solo dos métodos: el uso de una app específica para smartphone Android, o el uso de monitor, ratón y teclado, que sin embargo en la Pi Zero requiere un hub USB con entrada Micro-USB.
No teniendo a mano en la mesa utilizada para el set-up del primer kit ni un smartphone Android ni un hub USB adecuado, prosaicamente nos pusimos a efectuar una configuración headless de la Raspberry Pi Zero, mucho más estándar que la extraña alternativa vía app dedicada e inexplicablemente no citada por las instrucciones oficiales entre las distintas posibilidades.
Lo que más nos gusta es que el kit es fácilmente hackeable y utilizable en cualquier proyecto maker. ¡Justo como ocurre con el Lego, lo bonito empieza cuando se tiran las instrucciones para construir el kit ilustrado en el packaging y se empieza a crear!