Inicio Artículos Ejecutar código Machine Learning en un nodo IoT integrado para identificar fácilmente...

Ejecutar código Machine Learning en un nodo IoT integrado para identificar fácilmente los objetos

306
0
digikey
digikey

Las redes de Internet de las cosas (IoT) que operan en entornos dinámicos se están ampliando alén 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). Puesto que la identificación de objetos es amoldable 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 eficaz.

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

Este artículo va a mostrar a los desarrolladores de qué manera incorporar el modelo ML de TensorFlow Lite for Microcontrollers de Google en un microcontrolador de Microchip Technology. A continuación, va a explicar de qué forma emplear 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 adaptada.

A continuación, presentará un kit de comienzo 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 afín 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 simples de usar para apresar datos audiovisuales, una vez que los datos se digitalizan y guardan han de 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 servirnos de un ejemplo, no van a coincidir exactamente con los datos guardados 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 eficaz el patrón capturado por la cámara con un patrón guardado en la memoria.

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

No obstante, 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. Con independencia 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 gigas de datos para muchos modelos grandes. Más datos requieren un mayor rendimiento de la CPU para encontrar de manera rápida una coincidencia precisa, con lo que este tipo de aplicaciones generalmente se ejecutan en computadoras potentes o portátiles de alta gama.

En el caso de una aplicación de sistemas incorporados, solo habría de ser preciso guardar 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 por su parte reduce las necesidades de memoria del sistema incorporado, mejorando de esta forma 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 marcha a 120 megahercios (MHz).

arm cortex
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)

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 marcha a temperaturas de entre -cuarenta °C y +125 °C, lo que lo hace aplicable a los ambientes más duros de IoT y IIoT. Es un microcontrolador de bajo voltaje y funciona de 1.71 a 3.63 voltios cuando marcha a ciento veinte MHz.

Las opciones de red del ATSAMD51J19A incluyen CAN dos.0B para redes industriales y Ethernet 10/100 para la mayor parte de las redes cableadas. Esto permite que el microcontrolador funcione en una pluralidad de redes de IoT. Una interfaz USB 2.0 aguanta tanto el modo perfecto 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 cuatro Kbytes combinado mejora el desempeño al procesar el código ML. Una unidad de punto flotante (FPU) asimismo es útil para mejorar el desempeño del código ML, de esta forma como para procesar los datos brutos de los sensores.

Almacenamiento de conjuntos de datos de aprendizaje

El ATSAMD51J19A asimismo tiene una interfaz QSPI para el almacenaje de programas externos o bien memoria de datos. Esto es útil para el almacenaje de datos auxiliares de conjuntos de datos de aprendizaje que sobrepasan la capacidad de la memoria flash en el chip. El QSPI asimismo es compatible con eXecute in Place (XiP) para la expansión de la memoria de programas externos de gran velocidad.

El ATSAMD51J19A también tiene un supervisor de host de tarjeta de memoria SD/MMC (SDHC) que es realmente útil para las aplicaciones de ML, ya que deja un simple intercambio de memoria de códigos ML y conjuntos de datos de aprendizaje. Al tiempo que el motor del TensorFlow Lite for Microcontrollers puede marchar en los quinientos doce Kbytes de flash del ATSAMD51J19A, los conjuntos de datos de aprendizaje pueden ser actualizados y mejorados de forma regular. El conjunto de datos de aprendizaje puede guardarse en un flash QSPI externo o bien en una EEPROM QSPI y, en dependencia de la configuración de la red, puede actualizarse a distancia por medio de la red. No obstante, 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 precisa decidir si el sistema debe ser desarrollado para intercambiar en caliente la tarjeta de memoria, o si el nodo IoT debe ser apagado.

Si el nodo IoT está exageradamente limitado por el espacio, entonces en lugar de emplear la memoria externa sería provechoso poner tanto de la aplicación como sea posible en la memoria del microcontrolador. ATSAMD51J20A-AFT de Microchip Technology es afín 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 cuatro mil trescientos diecisiete (Figura dos). La placa tiene 2 Mbytes de flash QSPI que pueden ser utilizados 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 ciento sesenta x 1.8 puede ser empleada 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 8 pulsadores, un acelerómetro de tres ejes, un sensor de luz, un mini-altífono 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.

kit de desarrollo
Figura 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 utilizando 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 que pueden ser utilizados 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 usada para enseñar 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 enseñar los objetos reconocidos, así como un porcentaje de confianza. Un ejemplo de visualización de resultados podría mostrar como:

Plátano: noventa y cinco por ciento
Llave: 12 por cien
Gafas: 8 por ciento
Peine: dos por cien

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 bien tarjetas de desarrollo de bajo costo y alta eficiencia ahorra tiempo y dinero, lo que da como resultado un sistema ML de alto desempeño que puede usarse para detectar objetos en un nodo IoT de forma rápida, fiable y eficaz.