Machine Learning con Arduino Uno R4 Minima
Tuve ocasión de recibir una placa Arduino Uno R4 mínima antes del lanzamiento y tras una prueba de compatiblidad y ejecución de un script de ordenamiento por burbuja decidí llevar a cabo un proyecto un poco más interesante.
¿De qué se trata? Inteligencia Artificial en el Arduino UNO. ¿En qué forma? Predicción de resultados de partidos de futbol (Soccer) usando Machine Learning vía la plataforma Edge Impulse.
Para tal fin bajé una base de datos con los partidos históricos de la FIFA, generé IDs para los países, determiné los datos mínimos relevantes (equipo local, equipo visitante, ranking fifa local, ranking fifa visitante, ubicación neutral) y entrené el modelo de Machine Learning con un algoritmo de clasificación.
Luego programé el Arduino UNO R4 Minima para tomar los datos del partido a consultar y enviarlos al modelo para su inferencia. Debajo están los pasos completos. Obviamente que el mismo sistema puede ser utilizado para otros deportes.
Paso 1
Conectar el DFRobot LCD Keypad Shield al Arduino Uno. Los pines no encastran hasta el final. Quedan unos 3mm afuera, pero aún así hacen contacto.
Paso 2
Indicar en el Arduino IDE una nueva dirección para encontrar placas. Inicialmente Arduino refirió el siguiente link para el UNO R4 http://downloads.arduino.cc/packages/package_renesas_index.json, pero reporté que el link estaba caído y me enviaron el link correcto.
Para configurarlo en el IDE ir a File, Preferences, Additional Boards y cargar https://downloads.arduino.cc/packages/package_UNOr4_earlyaccess_index.json
Luego ir a Boards Manager y tipear R4 y bajar Renesas Boards. De paso bajar la librería para el Shield desde este link y agregarla via Sketch, Include Library, Add Zip.
El último paso es conectar la placa con un cable USB C a la computadora y seleccionar el Port correcto.
Paso 3
Bajar de https://github.com/ronibandini/soccerForecast soccer2.ino y el modelo entrenado https://github.com/ronibandini/soccerForecast/blob/main/ei-soccer-forecast-with-arduino-uno-r4-arduino-1.0.2.zip
Incorporar al Arduino IDE el Zip del modelo entrenado al igual que hicimos con la librería del Shield.
Ya está todo listo para subir el sketch al Arduino. En este punto deberíamos ver que se inicia el sistema de predicción.
Utilización del sistema de predicción
Primero seleccionamos el equipo local, luego el visitante, luego se puede indicar si la ubicación es neutra, en cuyo caso tanto ya no importa la localía. Estos datos se envian al modelo de TinyML y se obtiene un porcentaje que indica la probabilidad de que gane el primer equipo ingresado. La inferencia directamente vuela, lo cual demuestra toda la potencia del nuevo Arduino UNO R4 Minima, incluso para Inteligencia Artificial.
El código tiene cargados unos pocos países, pero se pueden agregar más ya que el modelo fue entrenado con todos los países. Solo hace falta sacar el ID del país desde countries.csv que está en Github y cargar el Fifa Rank actual del país, que se puede obtener en https://www.fifa.com/fifa-world-ranking/men?dateId=id13974
int idCountries[] = {9, 42, 28, 215, 44, 77, 102, 136, 191, 214, 70};
String countries[] = {“Argentine”,”Chile”,”Brazil”, “USA”,”Colombia”,”Germany”,”Italy”,”Mexico”,”Spain”,”England”,”France”};
int fifaRank[] = {1, 31, 3, 13, 17, 14, 8, 15, 10, 5, 2};
Modelo de Machine Learning
El modelo de predicción de partidos de Fifa está en este link y puede ser clonado para experimentar.
Los ejes de ingreso son team local, team remoto, ranking Fifa del team local, ranking Fifa del team remoto y ubicación neutral, en cuyo caso no corre cual es local y cual remoto.
En la etapa de la clasificación, lo máximo que pude lograr con los datos que elegí fue un 69% de accuracy. Seguramente se puede mejorar agregando features relevantes.
Precios y fechas del Arduino UNO R4 Minima
¿Cuánto sale el nuevo Arduino UNO R4 minima y desde cuándo se puede comprar?
El Arduino UNO R4 Minima sale u$18 y el Arduino UNO R4 WiFi sale u$25 Ambos se pueden comprar desde la página de Arduino
Video demostración