EUR | USD

Ejecutar el código de aprendizaje de la máquina en un nodo de IoT integrado para identificar fácilmente los objetos

Por Bill Giovino

Colaboración de Editores de Digi-Key de América del Norte

Las redes de Internet de las cosas (IoT) que operan en entornos dinámicos se están ampliando más allá de la detección de objetos para incluir la identificación visual de objetos en aplicaciones como la seguridad, la vigilancia ambiental, la protección y la IoT industrial (IIoT). Dado que la identificación de objetos es adaptable e implica el uso de modelos de aprendizaje automático (ML), se trata de un campo complejo que puede ser difícil de aprender desde cero y de aplicar de manera eficiente.

La dificultad radica en que un modelo de ML es tan bueno como su conjunto de datos, y una vez que se adquieren los datos correctos, el sistema debe estar debidamente capacitado para actuar sobre él a fin de ser práctico.

Este artículo mostrará a los desarrolladores cómo implementar el modelo ML de TensorFlow Lite for Microcontrollers de Google en un microcontrolador de Microchip Technology. A continuación, explicará cómo utilizar los conjuntos de datos de aprendizaje de clasificación de imágenes y detección de objetos con TensorFlow Lite para identificar fácilmente los objetos con un mínimo de codificación personalizada.

A continuación, presentará un kit de inicio de TensorFlow Lite ML de Adafruit Industries que puede familiarizar a los desarrolladores con los fundamentos del ML.

ML para sistemas de visión integrados

El ML en un sentido amplio le da a una computadora o a un sistema incorporado una capacidad de reconocimiento de patrones similar a la de un humano. Desde el punto de vista sensorial humano, esto significa usar sensores como micrófonos y cámaras para imitar las percepciones sensoriales humanas del oído y la vista. Si bien los sensores son fáciles de usar para capturar datos audiovisuales, una vez que los datos se digitalizan y almacenan deben ser procesados para poder compararlos con los patrones almacenados en la memoria que representan sonidos u objetos conocidos. El reto es que los datos de imagen capturados por una cámara para un objeto visual, por ejemplo, no coincidirán exactamente con los datos almacenados en la memoria para un objeto. Una aplicación ML que necesite identificar visualmente el objeto debe procesar los datos para que pueda hacer coincidir de forma precisa y eficiente el patrón capturado por la cámara con un patrón almacenado en la memoria.

Hay diferentes librerías o motores utilizados para comparar los datos capturados por los sensores. TensorFlow es una librería de código abierto que se utiliza para comparar patrones. La biblioteca de códigos de TensorFlow Lite for Microcontrollers está específicamente diseñada para ser ejecutada en un microcontrolador, y como consecuencia ha reducido los requisitos de memoria y CPU para funcionar en un hardware más limitado. Específicamente, requiere un microcontrolador de 32 bits y utiliza menos de 25 kilobytes (Kbytes) de memoria flash.

Sin embargo, aunque TensorFlow Lite para microcontroladores es el motor ML, el sistema todavía necesita un conjunto de datos de aprendizaje de los patrones que debe identificar. Independientemente de lo bueno que sea el motor ML, el sistema solo es tan bueno como su conjunto de datos de aprendizaje, y para los objetos visuales algunos de los conjuntos de datos de aprendizaje pueden requerir múltiples gigabytes de datos para muchos modelos grandes. Más datos requieren un mayor rendimiento de la CPU para encontrar rápidamente una coincidencia exacta, por lo que este tipo de aplicaciones normalmente se ejecutan en computadoras potentes o portátiles de gama alta.

En el caso de una aplicación de sistemas incorporados, solo debería ser necesario almacenar en un conjunto de datos de aprendizaje aquellos modelos específicos que sean necesarios para la aplicación. Si un sistema se supone que reconoce herramientas y hardware, entonces los modelos que representan frutas y juguetes pueden ser eliminados. Esto reduce el tamaño del conjunto de datos de aprendizaje, lo que a su vez disminuye las necesidades de memoria del sistema incorporado, mejorando así el rendimiento y reduciendo los costos.

Un microcontrolador ML

Para ejecutar TensorFlow Lite for Microcontrollers, Microchip Technology se dirige al aprendizaje de la máquina en microcontroladores con el microcontrolador ATSAMD51J19A-AFT basado enArm® Cortex®-M4F (Figura 1). Tiene 512 Kbytes de memoria flash con 192 Kbytes de memoria SRAM y funciona a 120 megahercios (MHz). El ATSAMD51J19A-AFT forma parte de la familia de microcontroladores ATSAMD51 ML de Microchip Technology. Cumple con los estándares de calidad AEC-Q100 Grado 1 y funciona a temperaturas de entre -40 °C y +125 °C, lo que lo hace aplicable a los entornos más duros de IoT y IIoT. Es un microcontrolador de bajo voltaje y funciona de 1.71 a 3.63 voltios cuando funciona a 120 MHz.

El diagrama del ATSAMD51J19A de Microchip está basado en un núcleo Arm Cortex-M4F (haga clic para ampliar)Figura 1: El ATSAMD51J19A está basado en un núcleo Arm Cortex-M4F que funciona a 120 MHz. Es un microcontrolador completo con 512 Kbytes de flash y 192 Kbytes de SRAM. (Fuente de la imagen: Microchip Technology)

Las opciones de red del ATSAMD51J19A incluyen CAN 2.0B para redes industriales y Ethernet 10/100 para la mayoría de las redes cableadas. Esto permite que el microcontrolador funcione en una variedad de redes de IoT. Una interfaz USB 2.0 soporta tanto el modo de funcionamiento del host como el del dispositivo y puede utilizarse para la depuración del dispositivo o la conexión en red del sistema.

Un caché de instrucciones y datos de 4 Kbytes combinado mejora el rendimiento al procesar el código ML. Una unidad de punto flotante (FPU) también es útil para mejorar el rendimiento del código ML, así como para procesar los datos brutos de los sensores.

Almacenamiento de conjuntos de datos de aprendizaje

El ATSAMD51J19A también tiene una interfaz QSPI para el almacenamiento de programas externos o memoria de datos. Esto es útil para el almacenamiento de datos adicionales de conjuntos de datos de aprendizaje que exceden la capacidad de la memoria flash en el chip. El QSPI también es compatible con eXecute in Place (XiP) para la expansión de la memoria de programas externos de alta velocidad.

El ATSAMD51J19A también tiene un controlador de host de tarjeta de memoria SD/MMC (SDHC) que es muy útil para las aplicaciones de ML, ya que permite un fácil intercambio de memoria de códigos ML y conjuntos de datos de aprendizaje. Mientras que el motor del TensorFlow Lite for Microcontrollers puede funcionar en los 512 Kbytes de flash del ATSAMD51J19A, los conjuntos de datos de aprendizaje pueden ser actualizados y mejorados regularmente. El conjunto de datos de aprendizaje puede almacenarse en un flash QSPI externo o en una EEPROM QSPI y, dependiendo de la configuración de la red, puede actualizarse a distancia a través de la red. Sin embargo, para algunos sistemas puede ser más conveniente intercambiar físicamente una tarjeta de memoria con otra que tenga un conjunto de datos de aprendizaje mejorado. En esta configuración el desarrollador necesita decidir si el sistema debe ser diseñado para intercambiar en caliente la tarjeta de memoria, o si el nodo IoT debe ser apagado.

Si el nodo IoT está extremadamente limitado por el espacio, entonces en lugar de usar la memoria externa sería ventajoso poner tanto de la aplicación como sea posible en la memoria del microcontrolador. ATSAMD51J20A-AFT de Microchip Technology es similar y es compatible con ATSAMD51J19A, excepto que tiene 1 Mbyte de flash y 256 Kbytes de SRAM, proporcionando más almacenamiento en el chip para los conjuntos de datos de aprendizaje.

Desarrollando con TensorFlow Lite for microcontrollers

Adafruit Industries apoya el desarrollo del ATSAMD51J19A con el kit de desarrollo TensorFlow Lite for Microcontrollers 4317 (Figura 2). La placa tiene 2 Mbytes de flash QSPI que pueden ser usados para almacenar conjuntos de datos de aprendizaje. El kit viene con un conector de micrófono para el reconocimiento de audio ML. Su pantalla LCD TFT en color de 1.8 pulgadas de 160 x 128 puede ser utilizada para el desarrollo y la depuración. La pantalla también puede utilizarse para demostraciones de reconocimiento de voz cuando se utiliza TensorFlow Lite para microcontroladores con un conjunto de datos de aprendizaje de reconocimiento de voz. A medida que la aplicación reconoce diferentes palabras, éstas pueden ser mostradas en la pantalla.

El kit de Industrias Adafruit también tiene ocho pulsadores, un acelerómetro de tres ejes, un sensor de luz, un mini-altavoz y una batería de litio-poli. El puerto USB 2.0 del ATSAMD51J19A se lleva a un conector para la carga de la batería, la depuración y la programación.

Imagen de 4317 TensorFlow Lite for Microcontrollers de TensorFlow Lite for MicrocontrollersFigura 2: El kit de desarrollo de TensorFlow Lite for Microcontrollers 4317 de Adafruit Industries viene con una pantalla LCD TFT a color para el desarrollo y puede mostrar los resultados de las operaciones de ML. (Fuente de la imagen: Adafruit Industries)

El kit de Adafruit viene con la última versión de TensorFlow Lite for Microcontrollers. Los conjuntos de datos de aprendizaje pueden ser cargados usando el puerto USB en los 512 Kbytes de memoria flash del microcontrolador ATSAMD51J19A o cargados en la memoria externa de 2 Mbytes QSPI.

Para la evaluación del reconocimiento de imágenes, el conjunto de aprendizaje de detección de objetos TensorFlow puede ser cargado en la tarjeta de desarrollo. La placa de desarrollo tiene puertos para conectarse a los puertos paralelos y seriales del microcontrolador, muchos de los cuales pueden ser usados para conectarse a una cámara externa. Con el conjunto de aprendizaje de detección de objetos cargado en el microcontrolador, la pantalla LCD puede ser utilizada para mostrar la salida de los resultados del procesamiento de la detección de objetos ML, de modo que si reconoce un plátano, la pantalla TFT podría mostrar los objetos reconocidos, junto con un porcentaje de confianza. Un ejemplo de visualización de resultados podría mostrar como:

Plátano: 95%
Llave: 12%
Gafas: 8%
Peine: 2%

Para el desarrollo de aplicaciones de detección de objetos IoT, esto puede acelerar el desarrollo y ayudar a diagnosticar cualquier resultado de detección incorrecto.

Conclusión:

El ML es un campo en expansión que requiere habilidades especializadas para desarrollar motores y modelos de microcontroladores desde cero e implementarlos eficientemente en el borde. Sin embargo, el uso de una biblioteca de códigos existente, como TensorFlow Lite for Microcontrollers, en microcontroladores o tarjetas de desarrollo de bajo costo y alta eficiencia ahorra tiempo y dinero, lo que da como resultado un sistema ML de alto rendimiento que puede utilizarse para detectar objetos en un nodo IoT de manera rápida, fiable y eficiente.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Información sobre el autor

Bill Giovino

Bill Giovino es ingeniero electrónico con un BSEE de la universidad de Syracuse y es uno de los pocos profesionales capaz de pasar de ingeniería en diseño a ingeniería de aplicación en campo a marketing tecnológico de forma exitosa.

Durante más de 25 años, Bill ha disfrutado promocionar las nuevas tecnologías a audiencias técnicas y no técnicas por igual en muchas empresas, entre ellas STMicroelectronics, Intel y Maxim Integrated. Mientras trabajó en STMicroelectronics, Bill ayudó a dirigir los primeros éxitos de la empresa en la industria de microcontroladores. En Infineon, Bill estuvo a cargo de que el diseño del primer controlador de la empresa tuviera éxito en la industria automotriz de EE. UU. Como consultor de marketing para CPU Technologies, Bill ha ayudado a muchas empresas a convertir sus productos con bajo rendimiento en casos de éxito.

Bill fue uno de los primeros en adoptar el Internet de las cosas, incluso colocar la primera pila de TCP/IP en un microcontrolador. Bill es un ferviente creyente de "Vender a través de la educación" y de la gran importancia de contar con comunicaciones claras y bien escritas a la hora de promocionar productos en línea. Es moderador del grupo en Linkedin denominado Semiconductor Sales & Marketing (Marketing y ventas de semiconductores) y habla sobre el concepto B2E (empresa-empleado) de manera fluida.

Información sobre la editorial

Editores de Digi-Key de América del Norte