Cette page a été traduite automatiquement.
Merci de bien vouloir compléter un sondage de 1 minute concernant la qualité de cette traduction.
Mise en œuvre d'un workflow pour le déploiement et l'intégration de réseaux de Deep Learning sur des automates programmables pour l'automatisation industrielle
Par Dr Fabian Bause et Nicolas Camargo Torres, Beckhoff Automation GmbH & Co. KG
« L’un des principaux avantages du workflow décrit ici est qu’il permet aux équipes d’évaluer les décisions de compromis via des itérations rapides. Par exemple, dans nos applications de contrôle qualité, nous avons fait un compromis sur la précision de classification pour réduire la taille du réseau et des temps d’exécution. »
Dans l’automatisation industrielle, le Machine Learning a de nombreuses applications potentielles. Un classificateur basé sur la vision, par exemple, peut évaluer la qualité des produits finis, identifier les composants potentiellement défectueux avant qu’ils ne soient intégrés à un assemblage ou trier les fruits et légumes qui ont tendance à présenter des variations naturelles importantes. Bien qu’il soit possible de créer certaines de ces applications à l’aide de techniques traditionnelles de Computer Vision, l’émergence de l’IA, telle que le Deep Learning, favorise l’automatisation de l’inspection visuelle.
Cependant, les équipes d'ingénierie rencontrent souvent des difficultés lors du déploiement de modèles d'IA sur un automate programmable ou un PC industriel. Ainsi, au lieu d'intégrer les algorithmes de contrôle et de Deep Learning dans un seul système, elles utilisent des systèmes distincts, ce qui entraîne une latence et des coûts de déploiement et de maintenance plus élevés. Un autre défi auquel les équipes sont confrontées provient des compétences disparates requises : jusqu’à présent, la Data Science et les workflows de contrôle industriel ont relativement peu de points communs.
Notre équipe chez Beckhoff Automation a mis en place un nouveau workflow qui combine des outils MATLAB® et des produits Beckhoff Automation permettant le design low-code et la formation de modèles d'IA, et simplifie le déploiement et l'intégration de ces modèles sur des cibles industrielles. En collaboration avec les ingénieurs de MathWorks, nous avons développé ce workflow et l'avons démontré sur un exemple d'application de contrôle qualité impliquant l'inspection visuelle des écrous hexagonaux (Figure 1). Bien que cette application de base classe les écrous hexagonaux comme défectueux ou non, démontrant ainsi un cas d'utilisation simple, les étapes du workflow peuvent être appliquées pour accélérer le développement et le déploiement d'applications beaucoup plus sophistiquées et complexes.
Figure 1. Une application de contrôle qualité dans laquelle des modèles d'IA sont utilisés pour inspecter la qualité des écrous hexagonaux.
Ces étapes sont les suivantes :
- Concevoir, entraîner et optimiser un modèle de Deep Learning dans MATLAB avec Deep Learning Toolbox™— ou en importer un à partir d'un autre framework de Machine Learning comme PyTorch® ou TensorFlow™.
- Créer un objet TwinCAT® compilé à partir du modèle, à l'aide de MATLAB Coder™ et de TwinCAT Target for MATLAB (l'objet TwinCAT compilé peut contenir à la fois du code de pré- et de post-traitement en plus du modèle de Deep Learning).
- Invoquer l'objet TwinCAT dans l’ingénierie TwinCAT 3 pour effectuer des classifications ou faire des prédictions. L’intégrer à d’autres fonctionnalités ou composants exécutés sur le même PLC.
En plus de ces étapes principales, notre workflow de démonstration comprenait deux étapes complémentaires supplémentaires :
- Concevoir un algorithme de contrôle dans Simulink® et Stateflow®. Créer un objet TwinCAT à partir de ce modèle de contrôle à l'aide de Simulink Coder™ et de TwinCAT 3 Target for Simulink.
- Utiliser MATLAB App Designer pour concevoir une interface homme-machine (IHM) qui fait appel à TwinCAT 3 Interface for MATLAB and Simulink pour échanger des données entre MATLAB et l'environnement d'exécution TwinCAT.
Apprentissage par transfert avec un réseau préentraîné
Après avoir collecté et préparé les données à utiliser dans une application de Deep Learning, la première étape du workflow consiste à former un modèle de Deep Learning. Avec MATLAB et Deep Learning Toolbox, il existe plusieurs façons de procéder, notamment en formant un réseau à partir de zéro avec l'application Deep Network Designer, en définissant un modèle de Deep Learning en tant que fonction et en utilisant une boucle d'apprentissage personnalisée, ou en recyclant un modèle préentraîné avec de nouvelles données, méthode également appelé apprentissage par transfert. S'il existe une petite quantité de données anormales, les méthodes de détection d'anomalies telles que FCDD et PatchCore, qui sont incluses dans Automated Visual Inspection Library for Computer Vision Toolbox™, sont également efficaces.
Pour l'exemple d'application de l'écrou hexagonal, nous avons choisi d'utiliser l’apprentissage par transfert, en recyclant les réseaux de neurones à convolution pour classer un ensemble d'images d'écrous hexagonaux. Plus précisément, nous avons chargé des réseaux ResNet-18 et SqueezeNet préentraînés dans MATLAB, puis nous les avons réentraînés pour classer les images d'écrous hexagonaux (Figure 2).
Figure 2. Former un réseau de Deep Learning pour classifier de nouvelles images avec Deep Learning Toolbox.
Bien que le réseau ResNet-18 soit très précis, il était d’un ordre de grandeur plus grand et plus lent que le réseau SqueezeNet, qui était un peu moins précis, mais toujours suffisamment précis pour le cas d’utilisation en question. De plus, compte tenu du budget de synchronisation du PLC de 300 ms, nous pensons que ResNet-18 ne satisferait pas nos exigences, c'est pourquoi nous nous sommes tournés vers SqueezeNet. Nous avons encore amélioré les performances de ce réseau et réduit sa taille en supprimant les filtres des couches de convolution. Cette taille a entraîné une diminution de seulement 7 % de la précision, mais une augmentation de la vitesse par deux. La capacité d’évaluer rapidement différents réseaux et options de compression réseau constitue un avantage significatif pour les équipes qui doivent prendre des décisions de compromis impliquant la précision, la vitesse et la taille.
Création d'un objet TwinCAT compilé et intégration dans TwinCAT 3 Engineering
La création d’un objet TwinCAT à partir d’une fonction MATLAB (dans ce cas, une fonction qui appelle un modèle de Deep Learning) est un processus en deux étapes. La première étape consiste à générer du code C/C++ pour la fonction à l’aide de MATLAB Coder. La deuxième étape consiste à utiliser TwinCAT Target for MATLAB pour compiler le code généré dans un objet TwinCAT. L’écriture d’un script pour exécuter ces deux étapes permet d’automatiser cette partie du workflow (Figure 3). Lorsque des modifications sont apportées au réseau de Deep Learning, l’équipe peut simplement réexécuter ce script et générer immédiatement un objet TwinCAT mis à jour.
Figure 3. Génération de code C/C++ qui sera utilisé pour construire un objet TwinCAT.
Il est important de noter ici qu’il existe une autre voie pour déployer un réseau de Deep Learning dans MATLAB sur un PLC Beckhoff. Avec cette approche, une équipe exporterait un fichier ONNX depuis MATLAB et chargerait ce fichier dans TwinCAT 3, où il pourrait être utilisé avec un moteur d'inférence (Serveur de Machine Learning TwinCAT) pour effectuer des tâches de classification ou de régression, tout en offrant la possibilité de calculer le modèle sur un GPU. L’un des avantages de l’approche de notre workflow (basée sur MATLAB Coder et TwinCAT Target for MATLAB) par rapport à l’alternative est qu’elle peut être utilisée pour inclure des fonctionnalités de prétraitement et de post-traitement supplémentaires implémentées dans MATLAB. Avec l’approche d’exportation ONNX, seul le réseau lui-même est déployé.
Une fois l'objet TwinCAT compilé, il peut être utilisé dans l’ingénierie TwinCAT comme n'importe quel autre objet. Un ingénieur en automatisation peut intégrer le modèle de Deep Learning, désormais implémenté en tant qu’objet TwinCAT, avec d’autres codes PLC, y compris du texte structuré. Dans notre exemple d’application, nous avons écrit du code qui invoquait l’objet compilé, lui passant une image (redimensionnée et convertie en une matrice de pixels) capturée à partir d’un appareil photo. Le code a ensuite traité la sortie du classificateur, qui comprend à la fois le résultat de la prédiction (l'écrou hexagonal est OK ou défectueux) et un score de probabilité qui reflète la confiance dans le résultat (Figure 4).
Design et déploiement du contrôle de mouvement
Afin de compléter notre exemple de design d'application de contrôle qualité, nous avions besoin d'un système de contrôle pour un servomoteur utilisé pour positionner des écrous hexagonaux dans le champ de vision d'une caméra. Bien que nous aurions pu implémenter ce système de contrôle directement dans l'ingénierie TwinCAT, nous avons profité de cette opportunité pour utiliser l’approche Model-Based Design tout en ciblant le même PLC Beckhoff utilisé dans notre déploiement de classificateur. Nous avons commencé par modéliser le contrôleur de mouvement dans Simulink avec Stateflow. Ensuite, après avoir exécuté des simulations pour vérifier le design, nous avons utilisé Simulink Coder pour générer du code C/C++ à partir de notre modèle, puis utilisé TwinCAT 3 Target for Simulink pour compiler le code dans un objet TwinCAT. Nous pouvions ensuite visualiser cet objet dans l’ingénierie TwinCAT et l’intégrer à d’autres éléments de notre design (Figure 5).
Design d’une IHM avec MATLAB App Designer et TwinCAT Interface for MATLAB
Dans la plupart des cas d’utilisation de l’automatisation industrielle, une IHM est fournie pour permettre aux opérateurs de surveiller et de contrôler les équipements, de visualiser les données en temps réel, de recevoir des alertes et de gérer les processus de production. Pour créer l'IHM de notre exemple d'application de contrôle qualité, nous avons commencé par définir le design de l'interface utilisateur à l'aide de MATLAB App Designer. L'opérateur peut contrôler le mouvement des écrous hexagonaux via l'interface, et également visualiser l'écrou hexagonal actuellement positionné sous la caméra, voir les résultats du réseau de Deep Learning (y compris la classification et le score de probabilité) et surveiller les repères, y compris le temps d'exécution du classificateur (Figure 6). Tous les échanges de données entre l'interface utilisateur et l'environnement d'exécution de l'automate sont effectués via TwinCAT 3 Interface for MATLAB and Simulink, qui utilise le protocole de communication Automation Device Specification (ADS).
Itérations futures
L’un des principaux avantages du workflow décrit ici est qu’il permet aux équipes d’évaluer les décisions de compromis via des itérations rapides. Par exemple, dans nos applications de contrôle qualité, nous avons fait un compromis sur la précision de classification pour réduire la taille du réseau et des temps d’exécution. Si les exigences de design impliquaient une latence encore plus faible, nous aurions pu rechercher d'autres améliorations en modifiant le réseau, ou peut-être choisir un PLC avec des composants et des processeurs d'une classe de performance supérieure.
Il est également possible d’étendre ce workflow pour répondre aux exigences spécifiques du projet. Une telle extension consisterait à utiliser le résultat de classification du réseau de neurones profonds pour influencer le système de contrôle. Bien que cela ne soit pas nécessaire dans le démonstrateur de contrôle qualité spécifique que nous avons construit, la capacité d'un système de contrôle à prendre des mesures immédiates en fonction du résultat de la classification est largement applicable à un vaste éventail de cas d'utilisation de l'automatisation industrielle et constituerait une prochaine étape naturelle pour de nombreuses équipes adoptant ce workflow.
Publié en 2024