Esta página fue traducida automáticamente.
Complete una encuesta de 1 minuto sobre la calidad de esta traducción.
Implementación de un flujo de trabajo para desplegar e integrar redes de Deep Learning en PLC para automatización industrial
Por Dr. Fabian Bause and Nicolas Camargo Torres, Beckhoff Automation GmbH & Co. KG
“Una ventaja clave del flujo de trabajo es que permite evaluar tradeoffs mediante iteraciones rápidas. Por ejemplo, en nuestras aplicaciones de control de calidad sacrificamos cierta precisión en la clasificación a cambio de reducir el tamaño de red y tiempos de ejecución”.
En automatización industrial, Machine Learning tiene muchas aplicaciones potenciales. Un clasificador basado en visión, por ejemplo, puede evaluar la calidad de los productos terminados, identificar componentes potencialmente defectuosos antes de agregarlos a un conjunto, o clasificar frutas y verduras que suelen tener variaciones naturales significativas. Si bien es posible desarrollar algunas de estas aplicaciones con técnicas tradicionales de visión artificial, IA y Deep Learning están impulsando la automatización de la inspección visual.
Sin embargo, los equipos de ingeniería suelen tener dificultades para implementar modelos de IA en un PLC o una PC industrial. Por eso, en lugar de integrar algoritmos de control y Deep Learning en un único sistema, utilizan diferentes sistemas, lo que genera una mayor latencia, y mayores costes de implementación y mantenimiento. Otro desafío que enfrentan los equipos es las diferentes de habilidades que se requieren; hasta la fecha, los flujos de trabajo de data science y control industrial tienen poco en común.
Nuestro equipo en Beckhoff Automation ha implementado un nuevo flujo de trabajo que combina herramientas de MATLAB® y productos de Beckhoff Automation para integrar el diseño de low-code y el entrenamiento de modelos de IA, lo que simplifica la implementación e integración de esos modelos en objetivos industriales. Junto con ingenieros de MathWorks, desarrollamos este flujo de trabajo y lo demostramos en una aplicación de control de calidad de ejemplo de inspección visual de tuercas hexagonales (Figura 1). Si bien este es un caso práctico de una sencilla aplicación que clasifica las tuercas hexagonales como defectuosas o no, los pasos del flujo de trabajo se pueden aplicar para acelerar el desarrollo y la implementación de aplicaciones mucho más sofisticadas y complejas.
Figura 1. Aplicación de control de calidad que utiliza modelos de IA para inspeccionar la calidad de tuercas hexagonales.
Los pasos son:
- Diseñar, entrenar y optimizar un modelo de Deep Learning en MATLAB con Deep Learning Toolbox™, o importar uno desde otro marco de Machine Learning como PyTorch® o TensorFlow™.
- Crear un objeto TwinCAT® compilado a partir del modelo utilizando MATLAB Coder™ y TwinCAT Target for MATLAB (el objeto TwinCAT compilado puede contener código de preprocesamiento y posprocesamiento además del modelo de Deep Learning).
- Invocar el objeto TwinCAT en TwinCAT 3 Engineering para realizar clasificaciones o predicciones. Se puede integrar con otras prestaciones o componentes que se ejecutan en el mismo PLC.
Además de estos pasos principales, nuestro flujo de trabajo de demostración incluyó dos pasos complementarios:
- Diseñar un algoritmo de control en Simulink® y Stateflow®. Crear un objeto TwinCAT a partir de este modelo de control utilizando Simulink Coder™ y TwinCAT 3 Target for Simulink.
- Usar MATLAB App Designer para diseñar una interfaz persona-máquina (HMI) que utilice TwinCAT 3 Interface for MATLAB and Simulink para intercambiar datos entre MATLAB y el entorno de ejecución TwinCAT.
Transferencia del aprendizaje con una red preentrenada
Después de recopilar y preparar los datos que se utilizarán en una aplicación de Deep Learning, el primer paso del flujo de trabajo es entrenar un modelo de Deep Learning. Con MATLAB y Deep Learning Toolbox, puede entrenar una red desde cero con la app Deep Network Designer, definir un modelo de Deep Learning como una función y usar un ciclo de entrenamiento personalizado. O puede reentrenar un modelo previamente entrenado con nuevos datos, lo que se conoce como transferencia del aprendizaje. Si existe una pequeña cantidad de datos anormales, los métodos de detección de anomalías como FCDD y PatchCore, incluidos en Automated Visual Inspection Library for Computer Vision Toolbox™, también son efectivos.
Para el ejemplo de aplicación de tuerca hexagonal, usamos transferencia del aprendizaje, y reentrenamos redes neuronales convolucionales para clasificar un conjunto de imágenes de tuercas hexagonales. Específicamente, cargamos redes ResNet-18 y SqueezeNet previamente entrenadas en MATLAB y luego las volvimos a entrenar para clasificar imágenes de tuercas hexagonales (Figura 2).
Figura 2. Entrenamiento de una red de Deep Learning para clasificar nuevas imágenes con Deep Learning Toolbox.
Si bien la red ResNet-18 era muy precisa, era más lenta y tenia un orden de magnitud más grande que la red SqueezeNet, que era algo menos precisa, pero aún lo suficientemente precisa para el caso práctico en cuestión. Además, dado el presupuesto de tiempo del PLC de 300 ms, vemos que ResNet-18 no cumpliría los requisitos, por lo que cambiamos a SqueezeNet. Mejoramos aún más el rendimiento de esta red y redujimos su tamaño podando los filtros de las capas de convolución. Esta poda resultó en una disminución de solo el 7% en la precisión, pero un aumento del doble de velocidad. La capacidad de evaluar rápidamente diferentes redes y opciones de compresión de red es una ventaja significativa para tomar decisiones de precisión, velocidad y tamaño.
Creación de un objeto TwinCAT compilado e integración en TwinCAT 3 Engineering
Crear un objeto TwinCAT a partir de una función de MATLAB (en este caso, una función que invoca un modelo de Deep Learning) es un proceso de dos pasos. El primer paso es generar código C/C++ para la función utilizando MATLAB Coder. El segundo paso es utilizar TwinCAT Target for MATLAB para compilar el código generado en un objeto TwinCAT. Crear un script para ejecutar estos dos pasos permite automatizar esta parte del flujo de trabajo (Figura 3). Cuando se realizan cambios en la red de Deep Learning, el equipo puede simplemente volver a ejecutar este script y generar inmediatamente un objeto TwinCAT actualizado.
Figura 3. Generación de código C/C++ que se utiliza para construir un objeto TwinCAT.
Es importante señalar que existe otra forma de implementar una red de Deep Learning en MATLAB en un PLC Beckhoff. Con este enfoque, un equipo exporta un archivo ONNX desde MATLAB y lo carga en TwinCAT 3, donde se puede usar con un motor de inferencia (TwinCAT Machine Learning Server) para realizar tareas de clasificación o regresión, incluso con la opción de calcular el modelo en una GPU. Una ventaja de nuestro flujo de trabajo (basado en MATLAB Coder y TwinCAT Target for MATLAB) es que se puede utilizar para incluir funcionalidades adicionales de preprocesamiento y posprocesamiento implementadas en MATLAB. Con el enfoque de exportación ONNX, solo se implementa la red en sí.
Una vez compilado el objeto TwinCAT, se puede utilizar en TwinCAT Engineering como cualquier otro objeto. Un ingeniero de automatización puede integrar el modelo de Deep Learning, ahora implementado como un objeto TwinCAT, con otro código de PLC, incluido texto estructurado. En nuestra aplicación de muestra, por ejemplo, escribimos código que para invocar al objeto compilado y pasar una imagen (redimensionada y convertida a una matriz de píxeles) capturada por una cámara. Luego, el código procesó la salida del clasificador, que incluye tanto el resultado de la predicción (la tuerca hexagonal está bien o defectuosa) como un puntaje de probabilidad que refleja la confianza en el resultado (Figura 4).
Diseño y despliegue de control del movimiento
Para completar nuestro diseño de aplicación de control de calidad de ejemplo, necesitábamos un sistema de control para un servomotor utilizado para posicionar tuercas hexagonales dentro del campo de visión de una cámara. Si bien lo podríamos haber implementado directamente en TwinCAT Engineering, aprovechamos esta oportunidad para utilizar el diseño basado en modelos mientras apuntábamos al mismo PLC Beckhoff utilizado en la implementación del clasificador. Comenzamos modelando el controlador de movimiento en Simulink con Stateflow. A continuación, después de ejecutar simulaciones para verificar el diseño, utilizamos Simulink Coder para generar código C/C++ a partir de nuestro modelo y luego utilizamos TwinCAT 3 Target para Simulink para compilar el código en un objeto TwinCAT. Luego pudimos visualizar este objeto en la TwinCAT Engineering e integrarlo con otros elementos de nuestro diseño (Figura 5).
Diseño de HMI con MATLAB App Designer y TwinCAT Interface for MATLAB
En la mayoría de los casos prácticos de automatización industrial, se proporciona una HMI para permitir que los operadores monitoreen y controlen equipos, vean datos en tiempo real, reciban alertas y administren los procesos de producción. Para crear la HMI para nuestra aplicación de control de calidad de ejemplo, comenzamos diseñando la interfaz gráfica utilizando MATLAB App Designer. El operador puede controlar el movimiento de las tuercas hexagonales a través de la interfaz, así como ver la tuerca hexagonal ubicada actualmente debajo de la cámara, ver los resultados de la red de Deep Learning (incluida la clasificación y el puntaje de probabilidad) y monitorear los puntos de referencia, incluido el tiempo de ejecución del clasificador (Figura 6). Todo el intercambio de datos entre la interfaz gráfica y el entorno de ejecución del PLC se realiza a través de TwinCAT 3 Interface for MATLAB and Simulink, que utiliza el protocolo de comunicación Automation Device Specification (ADS).
Futuras iteraciones
Una ventaja clave del flujo de trabajo es que permite evaluar tradeoff mediante iteraciones rápidas. Por ejemplo, en nuestras aplicaciones de control de calidad sacrificamos cierta precisión en la clasificación a cambio de reducir el tamaño de red y tiempos de ejecución. Si los requisitos de diseño exigieran una latencia aún menor, podríamos haber buscado mejoras adicionales mediante modificaciones en la red, o quizás elegir un PLC con componentes y procesadores de una clase de rendimiento superior.
También es posible ampliar este flujo de trabajo para satisfacer requisitos específicos del proyecto. Una de esas extensiones sería utilizar el resultado de la clasificación de red neuronal profunda para influir en el sistema de control. Si bien no es necesario en el demostrador de control de calidad específico que construimos, la capacidad de un sistema de control de tomar una acción inmediata en función del resultado de la clasificación es aplicable a una amplia gama de casos prácticos de automatización industrial y sería el siguiente paso obvio para adoptar en este flujo de trabajo.
Publicado en 2024