Escrito por Fran Ramírez (@cybercaronte) Investigador de seguridad informática en Eleven Paths y también en el departamento de Ideas Locas CDO de Telefónica. Escritor del libro "Microhistorias: anecdotas y curiosidades de la historia de la informática" y "Docker: SecDevOps".
Raspberry Pi es un ordenador de bajo coste (unos 40€ según modelo) y reducido tamaño el cual se puede destinar para múltiples aplicaciones casi en cualquier ámbito. El modelo actual más potente es
Raspberry Pi 3 Model B+, el cual incorpora un procesador
quad-core de 64 bits a 1,4GHz WiFi, salida
HDMI,
LAN y
Bluetooth aparte de multitud de placas para proyectos que se pueden colocar a modo tarjetas de expansión (se denominan “
shields”). También llevan un puerto para tarjetas
microSD en las cuales podemos instalar el S.O.
Linux compatible que queramos.
A pesar de su reducido tamaño,
Raspberry Pi ofrece unas aceptables características técnicas para ejecutar algunas fases de proyectos de
Machine Learning y también para crear un entorno de aprendizaje (laboratorio) por muy poco dinero. Pero, por otro lado, también tenemos que tener en cuenta las limitaciones debido sobre todo a la escasa potencia de su
GPU, poca memoria
RAM y un microprocesador no demasiado potente. Pero realmente, donde
Raspberry tiene el mayor problema a la hora de ejecutar tareas de
Machine Learning es en la fase de entrenamiento. A no ser que sean muy sencillas, este proceso debe de realizarse con un ordenador un poco más potente (preferiblemente y según complejidad, usando
GPU). Por otro lado,
Raspberry Pi es totalmente capaz de ejecutar un modelo de
Machine Learning ya entrenado para casi cualquier tarea.
Figura 1. Raspberry Pi. Fuente.
Este artículo está dividido en dos partes bien definidas. La primera está orientada sobre todo a crear y configurar un entorno de laboratorio de prácticas con
Raspberry Pi para poder aprender
Machine Learning y sus
frameworks y utilidades más populares. En la segunda parte, publicamos una lista de proyectos que nos han llamado la atención, tanto por lo espectacular de los resultados como por ser un gran instrumento para aprender a la vez que nos divertimos creando un proyecto.
Parte 1: Raspberry como laboratorio:
Python: este es el lenguaje de programación preferido para realizar todo tipo de proyectos de
Machine Learning, por lo que será el primer elemento a instalar en nuestro entorno
Raspberry Pi. En
este enlace puedes encontrar instrucciones para su instalación. En estos enlaces tienes un curso completo que hemos realizado nosotros en el blog y que puedes seguir también en tu Raspberry Pi sin problema:
OpenAI Gym: es posible instalar
OpenAI Gym en
Raspberry Pi y comenzar a practicar algunos de los entornos de juegos más sencillos, empezando por ejemplo por los tutoriales que ya hemos publicado aquí en nuestro blog de
LUCA:
TensorFlow: esta famosa librería de
Google desde su versión 1.9 ya se puede instalar sin problemas en una
Raspberry Pi. La instalación es bastante sencilla, en
este enlace está detallado todo el proceso de instalación. También están disponibles nuestros tutoriales sobre
TensorFlow que ya hemos publicado también por aquí:
Keras: es una
API escrita en
Python capaz de ejecutarse junto a
TensorFlow la cual ofrece la capacidad de implementar redes neuronales de alto nivel para
Deep Learning. Permite por otro lado implementar redes neuronales de una manera rápida, modular y sencilla. En este enlace tienes las instrucciones de uso oficiales para su instalación. En el siguiente enlace te explicamos cómo crear redes neuronales con
Keras que podrás practicar también en tu
Raspberry Pi:
Jupyter Notebook: es un editor que nos permite crear y compartir documentos con código fuente, fórmulas, ecuaciones, visualizaciones, etc. Esta aplicación es ampliamente utilizada en todo tipo de campos relacionado con la ciencia de datos, modelos estadísticos, etc lo que le convierte en una herramienta ideal para
Machine Learning. Para saber más sobre
Jupyter, puedes consultar el capítulo 2 de Python para todos donde explicamos qué son los Jupyter Notebooks:
Parte 2: Algunos proyectos divertidos e interesantes
Chatbot basado en Machine Learning: utilizando un clasificador de texto con
Machine Learning, el autor de este proyecto ha creado un programa utilizando
Python y el módulo
NLTK, usando también un bot de
Telegram. La ventaja es que todo el entrenamiento utiliza un dataset existente de la
BBC que contiene 2225 documentos entre los años 2004 y 2005 divididos en categorías como negocios, entretenimiento, política, deportes, etc. El autor recomienda realizar el entrenamiento previamente en un portátil, ya que en un
MacBook Air del 2013 y tardó sólo 15 minutos y con la
Raspberry Pi tuvo que abortar el proceso porque no tenía claro cuándo iba a terminar (esto también depende del tipo de
Raspberry Pi que usemos). En
este enlace tienes un artículo donde hablamos de los
bot y los
chatbots y explicamos cómo crear uno de manera sencilla.
Figura 3. Ejemplo de ejecución del chatbot. Fuente.
Detección de objetos usando Deep Learning y una Raspberry Pi: este proyecto nos permitirá, utilizando una cámara (normalmente la
Pi Cámara) a identificar objetos como coches, frutas, electrodomésticos, etc. La arquitectura o modelo utilizado para la detección de objetos es
YOLO (
You Only Look Once) y según su autor, se consigue en menos de 20 líneas de código. El método es bastante curioso ya que primero tenemos que utilizar 100 fotografías mínimo por objeto que queramos identificar. Luego utilizando un programa para etiquetar imágenes como
LabelImg, manualmente se identifican los objetos que queramos luego utilizar para el entrenamiento (tarea un poco tediosa). Finalmente se entrenará el modelo en una máquina con
GPU. Algo que destacar es la utilización de un contenedor
Docker que realiza todo este trabajo en el equipo que hayamos seleccionado para el entrenamiento. Finalmente, la predicción de nuevas imágenes se realizará con la
Raspberry Pi y la cámara. Interesante proyecto sobre todo para aprender cómo funciona la detección de objetos.
Figura 4. Detección de vehículos usando Raspberry Pi en este proyecto. Fuente.
Robot autónomo con Arduino, Pi Cámara y Raspberry Pi: este proyecto requiere además de la
Raspberry Pi, un
Arduino Uno para el control de motores y dirección del vehículo y una
Raspberry Pi junto a la
Pi Cámara para realizar el reconocimiento de imágenes. El objetivo es hacer un vehículo que sea capaz de seguir una línea pintada en el circuito pero además, sea capaz de anticipar cuándo se acerca una curva. También es capaz de detectar colores para mantener el vehículo dentro de la calzada. Interesante proyecto que nos acerca, al menos a un nivel muy básico, a cómo funcionan los vehículos autónomos.
Figura 5. Proyecto del robot autónomo terminado. Fuente.
Creando música con Deep Learning y N-Synth Super: este atractivo proyecto nos invita a descubrir nuevas músicas y sonidos usando machine learning.
Open NSynth es una interface física experimental que utiliza algoritmos de machine learning desarrollados por
Google´s Brain Magenta Team, el cual tiene como misión explorar nuevos sonidos utilizar redes neuronales profundas. El corazón de este proyecto es una
Raspberry Pi 3 aunque será necesario construir y adquirir algunos otros componentes sencillos (todo está perfectamente explicado en la página web del proyecto). En este vídeo se explica perfectamente todo el proyecto y cómo funciona:
Cámara de seguridad inteligente: este proyecto también necesita de un
Arduino UNO para poder construirlo. En principio, no utiliza machine learning pero nos ofrece una instalación sencilla de una cámara de seguridad capaz de detectar movimiento y a la vez realizar panorámicas del entorno de observación. Nos ha parecido interesante ya que puede ser útil como base para realizar un proyecto más complejo usando
Machine Learning y reconocimiento de imágenes. Un buen punto de inicio para empezar con nuestro propio proyecto de electrónica y
Machine Learning.
DIY Cámara Raspberry con redes neuronales: este proyecto utiliza la
red neuronal Inception-v3 de
Google en una
Raspberry Pi para detectar y reconocer objetos (y no requiere conexión a Internet). Utiliza como hemos comentado una
Raspberry Pi, unos altavoces, una
Pi Cámara y una batería. Funciona colocando el objeto que queramos identificar delante del dispositivo y este al reconocerlo escucharemos qué tipo de objeto es por los altavoces. La red neuronal se entrena con un dataset llamado
ImageNet el cual consiste en una gran colección de imágenes divididas en 1000 clases, donde cada clase pertenece a un objeto. Según el autor, la
Raspberry Pi tarda alrededor de 10 segundos en reconocer en objeto. Interesante proyecto para aprender y explorar de nuevo el mundo de las redes neuronales y la visión artificial. Otro proyecto interesante relacionado con este que además nos sirve de base para utilizar
Machine Learning es este
scanner 3D usando Raspberry Pi y Kinect (de la XBox). Los sensores
Kinect están ahora a muy buen precio de segunda mano en tiendas de videojuegos y son una gran elemento para proyectos de
Machine Learning (ya hablaremos en otro artículo específicamente de
Kinect y
Machine Learning).

Figura 6. Componentes del proyecto cámara Raspberry Pi con Deep Learning.
Fuente.
Espejo mágico: si tienes un portátil que no funcione pero tenga intacta la pantalla, no lo tires porque este proyecto utiliza precisamente ese tipo de pantalla para crear un espejo inteligente. La base del proyecto es una
Raspberry Pi 3 con algunos componentes extras como la pantalla recuperada el portátil o un marco de madera para colocar un cristal (según el autor, el coste total no supera los 90€). El software utilizado es
MagicMirror2, una plataforma para
Raspberry Pi especialmente diseñada para este tipo de proyectos. Existe una gran comunidad detrás de este proyecto el cual además de ofrecer una
API abierta y muy completa para programar nuestros propios módulos, existen otros que permiten reconocimiento facial y muchos otros relacionados con
Machine Learning. El resultado final es bastante espectacular, donde tendremos un espejo que en función por ejemplo, de quién se esté mirando, le ofrecerá una u otra información interesante.
Figura 7. Espejo mágico en ejecución. Fuente.
DeepPiCar: coche autónomo con
Raspberry Pi, este es otro proyecto de vehículo autónomo. Además utiliza una
CNN (Red Neuronal Convolucional). Es una réplica de un vehículo desarrollado por
NVIDIA llamado Dave-2. Para realizar el proyecto será necesario invertir un poco más pero aún así el total no llega a los 100€. Este es sin duda alguna el proyecto que utiliza el modelo de Machine Learning más complejo que hemos visto hasta ahora. Aparte de ser una
CNN, el código de
DeepPicar ha sido desarrollado por el
MIT y se llama
DeepTesla, el cual ofrece una implementación casi exacta a la utilizada en vehículo de
NVIDIA Dave-2. El paper oficial de DeepPicar puedes encontrarlo en
este enlace.

Figura 8. DeepPiCar.
Fuente.
Detector de Papa Noel: y ya que estamos cerca de las fiestas de Navidad, este curioso y divertido proyecto de visión artificial nos permite utilizar
Deep Learning y una
Raspberry Pi para detectar a Papa Noel. El clasificador de imágenes ha sido especialmente entrenado para detectar a Santa Claus utilizando
Keras. El proceso es el siguiente, se carga el modelo en
Keras, se accede a la cámara de la
Raspberry Pi, se aplica
Deep Learning para detectar si
Papa Noel está en el encuadre y finalmente acceso a las
GPIO de la
Raspberry para hacer sonar música en caso de ser detectado. Un divertido y llamativo proyecto en el cual también se aprende sobre
Machine Learning.

Figura 9. Detector de Papa Noel.
Fuente.
Estas son sólo algunas de las posibilidades y proyectos para utilizar una
Raspberry Pi en el mundo del
Machine Learning. Seguro que volveremos con más proyectos.
Happy Hacking!