Identificación de frutas usando Arduino y TensorFlow

Arduino tiene la misión de hacer que el aprendizaje automático sea lo suficientemente fácil de usar para cualquiera. La otra semana anunciamos la disponibilidad de TensorFlow Lite Micro en Arduino Library Manager. Con esto, algunos ejemplos de ML listos para usar, como reconocimiento de voz, visión artificial simple e incluso un tutorial de entrenamiento de reconocimiento de gestos de extremo a extremo. Para un fondo completo, le recomendamos que eche un vistazo a ese artículo . 


Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas

SUSCRIBETE A NUESTRO CANAL DE YOUTUBE, TUTORIALES GRATIS

En este artículo, veremos un tutorial aún más simple de principio a fin utilizando la biblioteca Micro TensorFlow Lite y el sensor de proximidad y colorímetro Arduino Nano 33 BLE Sense para clasificar objetos. Para hacer esto, ejecutaremos una pequeña red neuronal en el tablero mismo. 

La filosofía de TinyML es hacer más en el dispositivo con menos recursos, en factores de forma más pequeños, menos energía y silicio de menor costo. Ejecutar inferencias en la misma placa que los sensores tiene beneficios en términos de privacidad y duración de la batería y significa que se puede hacer independientemente de una conexión de red. 

El hecho de que tengamos el sensor de proximidad en el tablero significa que obtenemos una lectura instantánea de la profundidad de un objeto frente al tablero, en lugar de usar una cámara y tener que determinar si un objeto es de interés a través de la visión artificial. 

En este tutorial, cuando el objeto está lo suficientemente cerca, tomamos muestras del color: el sensor RGB incorporado se puede ver como una cámara de color de 1 píxel. Si bien este método tiene limitaciones, nos proporciona una forma rápida de clasificar objetos solo con una pequeña cantidad de recursos. Tenga en cuenta que podría ejecutar un modelo de visión completo basado en CNN en el dispositivo. Como esta placa Arduino en particular incluye un colorímetro a bordo, pensamos que sería divertido e instructivo comenzar de esta manera.

Mostraremos una aplicación TinyML de extremo a extremo simple pero completa que se puede lograr rápidamente y sin un fondo profundo en ML o incrustado. Lo que cubrimos aquí es la captura de datos, la capacitación y la implementación del clasificador. Se pretende que sea una demostración, pero hay margen para mejorar y aprovechar esto si decide conectar una cámara externa en el futuro. Queremos que tenga una idea de lo que es posible y un punto de partida con las herramientas disponibles.

Lo que necesitarás

  • Arduino Nano 33 BLE Sense
  • Un cable micro USB
  • Una máquina de escritorio / portátil con un navegador web 
  • Algunos objetos de diferentes colores 

Sobre el tablero Arduino

La placa de detección Arduino Nano 33 BLE que estamos usando aquí tiene un microcontrolador Arm Cortex-M4 con mbedOS y una tonelada de sensores integrados: micrófono digital, acelerómetro, giroscopio, temperatura, humedad, presión, luz, color y proximidad. 

Aunque es pequeño según la nube o los estándares móviles, el microcontrolador es lo suficientemente potente como para ejecutar modelos TensorFlow Lite Micro y clasificar los datos del sensor de los sensores integrados.

Configuración del editor web Arduino Create

En este tutorial usaremos Arduino Create Web Editor, una herramienta basada en la nube para programar placas Arduino. Para usarlo, debe registrarse para obtener una cuenta gratuita e instalar un complemento para permitir que el navegador se comunique con su placa Arduino a través de un cable USB.

Puede configurarlo rápidamente siguiendo las instrucciones de inicio que lo guiarán a través de lo siguiente:

  • Descargue e instale el complemento
  • Inicie sesión o regístrese para obtener una cuenta gratuita

NOTA : Si lo prefiere, también puede usar la aplicación de escritorio Arduino IDE. La configuración para la cual se describe en el tutorial anterior ).

Capturando datos de entrenamiento

Ahora capturaremos datos para usar para entrenar nuestro modelo en TensorFlow. Primero, elija algunos objetos de diferentes colores. Usaremos fruta, pero puedes usar lo que prefieras. 

Configurar el Arduino para la captura de datos

A continuación, usaremos Arduino Create para programar la placa Arduino con una aplicación object_color_capture.ino que muestrea datos de color de los objetos que colocas cerca de él. La placa envía los datos de color como un registro CSV a su máquina de escritorio a través del cable USB.

Para cargar la aplicación object_color_capture.ino en su placa Arduino:

  • Conecte su placa a su computadora portátil o PC con un cable USB
    • La placa Arduino lleva un micro USB macho
  • Abra object_color_capture.ino en Arduino Crear haciendo clic en este enlace

Su navegador abrirá la aplicación web Arduino Create (vea GIF arriba).

  • Presione ABRIR EN EL EDITOR WEB
    • Para los usuarios existentes, este botón estará etiquetado AGREGAR A MI SKETCHBOOK
  • Presione Cargar y Guardar
    • Esto tomará un minuto
    • Verá que la luz amarilla en el tablero parpadea mientras está programada
  • Abra el monitor serial
    • Esto abre el panel Monitor en el lado izquierdo de la aplicación web
    • Ahora verá datos de color en formato CSV aquí cuando los objetos estén cerca de la parte superior del tablero

Captura de datos en archivos CSV para cada objeto

Para cada objeto que queramos clasificar, capturaremos algunos datos de color. Al hacer una captura rápida con solo un ejemplo por clase, no entrenaremos un modelo generalizado, ¡pero aún podemos obtener una prueba rápida de concepto trabajando con los objetos que tiene a mano! 

Digamos, por ejemplo, que estamos probando una manzana :

  • Restablezca la placa con el pequeño botón blanco en la parte superior.
    • ¡Mantenga su dedo alejado del sensor, a menos que quiera probarlo!
    • El monitor en Arduino Create dirá ‘Puerto serie no disponible’ por un minuto
  • Entonces debería ver rojo, verde, azul aparecer en la parte superior del monitor en serie
  • Pon el frente del tablero a la manzana. 
    • La placa solo tomará muestras cuando detecte que un objeto está cerca del sensor y está suficientemente iluminado (encienda las luces o esté cerca de una ventana)
  • Mueva el tablero alrededor de la superficie del objeto para capturar variaciones de color.
  • Verá que los valores de color RGB aparecen en el monitor en serie como datos separados por comas. 
  • Capture a los pocos segundos muestras del objeto.
  • Copie y pegue estos datos de registro del Monitor en un editor de texto
    • Consejo: desactive la casilla de verificación AUTOSCROLL en la parte inferior para detener el movimiento del texto
  • Guarde su archivo como apple.csv
  • Restablezca la placa con el pequeño botón blanco en la parte superior.

Hacer esto unas cuantas veces más, la captura de otros objetos (por ejemplo banana.csv , orange.csv ). 

NOTA : La primera línea de cada uno de los archivos .csv debería leer:

Si no lo ve en la parte superior, simplemente puede copiar y pegar en la línea de arriba. 

Entrenando al modelo

Ahora usaremos colab para entrenar un modelo de ML utilizando los datos que acaba de capturar en la sección anterior.

  • Primero abra el Cuaderno FruitToEmoji Jupyter en colab
  • Siga las instrucciones en la colab
    • Subirá sus archivos * .csv 
    • Analizando y preparando los datos
    • Entrenando un modelo usando Keras
    • Salida del modelo TensorFlowLite Micro
    • Descargando esto para ejecutar el clasificador en Arduino 

¡Una vez hecho esto, habrá descargado model.h para ejecutar en su placa Arduino para clasificar objetos!

Colab lo guiará para colocar sus archivos .csv en la ventana de archivos, el resultado se muestra arriba

Programe el modelo Micro TensorFlow Lite en la placa Arduino

Finalmente, tomaremos el modelo que entrenamos en la etapa anterior y lo compilaremos y lo cargaremos en nuestra placa Arduino usando Arduino Create.

Su navegador abrirá la aplicación web Arduino Create:

  • Presione el botón OPEN IN WEB EDITOR
  • Importe el modelo que descargó de colab usando Importar archivo a boceto: 

Importe el modelo que descargó de colab

La pestaña model.h ahora debería verse así
  • Compila y sube la aplicación a tu placa Arduino
    • Esto tomará un minuto
    • Cuando termine, verá este mensaje en el Monitor :

  • Coloque el sensor RGB de su Arduino cerca de los objetos con los que lo entrenó
  • Verá la salida de clasificación en el Monito r:
Salida del clasificador en Arduino Create Monitor

También puede editar el boceto object_color_classifier.ino para generar emojis en su lugar (¡hemos dejado el código unicode en los comentarios en el código!), Que podrá ver en el terminal Mac OS X o Linux al cerrar la pestaña del navegador web con Arduino Cree, reinicie su placa y escriba cat /cu/usb.modem[n].

Salida de Arduino serie a terminal Linux usando resaltado ANSI y emojis unicode

Aprendiendo más

Los recursos en torno a TinyML aún están emergiendo, pero hay una gran oportunidad para comenzar y conocer a expertos que se realizarán del 2 al 3 de diciembre en Mountain View, California, en la Cumbre de Desarrollo AIoT de Arm . Esto incluye talleres de Sandeep Mistry, líder técnico de Arduino para ML en el dispositivo y de Pete Warden y Daniel Situnayake de Google, quienes literalmente escribieron el libro en TinyML . Podrás pasar tiempo con estos expertos y más en las sesiones de la comunidad TinyML allí también. ¡Esperamos verte ahí!

Conclusión

Hemos visto una demostración rápida de principio a fin de aprendizaje automático que se ejecuta en Arduino. Se puede usar el mismo marco para muestrear diferentes sensores y entrenar modelos más complejos. Para nuestro objeto por clasificación de color, podríamos hacer más, muestreando más ejemplos en más condiciones para ayudar al modelo a generalizar. En trabajos futuros, también podemos explorar cómo ejecutar una CNN en el dispositivo. Mientras tanto, esperamos que este sea un proyecto divertido y emocionante para usted. ¡Que te diviertas!

Fuente


SUSCRIBETE A NUESTROS BOLETINES, RECIBE EN TU CORREO LAS NOTICIAS MÁS DESTACADAS, SÓLO INGRESANDO TU CORREO ELECTRÓNICO



VIDEO RECOMENDADO

Deja un comentario