Migliore controllo di qualità con il Machine Learning - MATLAB & Simulink

Articolo tecnico

Implementazione di un workflow per la distribuzione e l'integrazione di reti di Deep Learning su PLC per l'automazione industriale

Dr. Fabian Bause e Nicolas Camargo Torres, Beckhoff Automation GmbH & Co. KG


“Un vantaggio fondamentale del workflow qui descritto è che consente ai team di valutare le decisioni di compromesso tramite rapide iterazioni. Ad esempio, nelle nostre applicazioni di controllo qualità abbiamo barattato una certa accuratezza di classificazione con una riduzione delle dimensioni della rete e dei tempi di esecuzione.”

Nell'automazione industriale, il Machine Learning ha numerose potenziali applicazioni. Ad esempio, un classificatore basato sulla visione può valutare la qualità dei prodotti finiti, identificare componenti potenzialmente difettosi prima che vengano aggiunti a un assemblaggio o selezionare frutta e verdura che tendono a presentare variazioni naturali significative. Sebbene sia possibile realizzare alcune di queste applicazioni con tecniche tradizionali di computer vision, l'avvento dell'intelligenza artificiale, come il Deep Learning, sta guidando l'automazione dell'ispezione visiva.

Tuttavia, i team di ingegneria incontrano spesso difficoltà nell'implementare modelli AI su un PLC o un PC industriale. Quindi, invece di integrare algoritmi di controllo e Deep Learning in un singolo sistema, utilizzano sistemi separati, il che comporta una latenza più elevata e costi di distribuzione e manutenzione. Un'altra sfida che i team incontrano deriva dalle diverse competenze richieste: Finora, la scienza dei dati e i workflow di controllo industriale hanno avuto relativamente pochi punti in comune.

Il nostro team di Beckhoff Automation ha implementato un nuovo workflow che combina strumenti MATLAB® e prodotti Beckhoff Automation per abilitare la progettazione low-code e la formazione di modelli di intelligenza artificiale, semplificando l'implementazione e l'integrazione di tali modelli su target industriali. In collaborazione con gli ingegneri MathWorks , abbiamo sviluppato questo workflow e lo abbiamo dimostrato in un'applicazione di controllo qualità di esempio che prevedeva l'ispezione visiva di dadi esagonali (Figura 1). Sebbene questa semplice applicazione classifichi i dadi esagonali come difettosi o meno, dimostrando un caso d'uso semplice, i passaggi del workflow possono essere applicati per accelerare lo sviluppo e l'implementazione di applicazioni molto più sofisticate e complesse.

Lettore video in fase di caricamento.
Orario attuale 0:00
Durata 0:00
Caricato: 0%
Tipo di streaming LIVE
Tempo rimanente 0:00
 
1x
  • Capitolo
  • Descrizioni disattivate, selezionato
  • Senza sottotitoli, selezionato
      Il video dura 0:22

      Figura 1. Un'applicazione di controllo qualità in cui vengono utilizzati modelli di intelligenza artificiale per ispezionare la qualità dei dadi esagonali. 

      Questi passaggi sono:

      1. Progettazione, addestramento e ottimizzazione di un modello di Deep Learning in MATLAB con Deep Learning Toolbox™, oppure importane uno da un altro framework di Machine Learning come PyTorch® o TensorFlow™.
      2. Creazione di un oggetto TwinCAT® compilato dal modello utilizzando MATLAB Coder™ e TwinCAT Target for MATLAB (l'oggetto TwinCAT compilato può contenere sia codice di pre-elaborazione che di post-elaborazione oltre al modello di Deep Learning).
      3. Richiamo dell'oggetto TwinCAT in TwinCAT 3 engineering per effettuare classificazioni o fare previsioni. Integrazione con altre funzionalità o componenti in esecuzione sullo stesso PLC.

      Oltre a questi passaggi fondamentali, il nostro workflow dimostrativo includeva due ulteriori passaggi complementari:

      1. Progettazione di un algoritmo di controllo in Simulink® e Stateflow®. Creazione di un oggetto TwinCAT da questo modello di controllo utilizzando Simulink Coder™ e TwinCAT 3 Target for Simulink.
      2. Uso di MATLAB App Designer per progettare un'interfaccia uomo-macchina (HMI) che utilizza TwinCAT 3 Interface for MATLAB and Simulink per scambiare dati tra MATLAB e l'ambiente di esecuzione TwinCAT.

      Transfer Learning con una rete pre-addestrata

      Dopo aver raccolto e preparato i dati da utilizzare in un'applicazione di Deep Learning, il primo passaggio del workflow è l'addestramento di un modello di Deep Learning. Con MATLAB e Deep Learning Toolbox, ci sono diversi modi per farlo, tra cui addestrare una rete da zero con l'app Deep Network Designer, definire un modello di Deep Learning come una funzione e utilizzare un ciclo di addestramento personalizzato o riaddestrare un modello pre-addestrato con nuovi dati, noto anche come transfer learning. Se è presente una piccola quantità di dati anomali, risultano efficaci anche metodi di rilevamento delle anomalie quali FCDD e PatchCore, inclusi nella Automated Visual Inspection Library per Computer Vision Toolbox™.

      Per l'applicazione di esempio del dado esagonale, abbiamo scelto di utilizzare trasfer learning, riqualificando le reti neurali convoluzionali per classificare un insieme di immagini di dadi esagonali. Nello specifico, abbiamo caricato le reti ResNet-18 e SqueezeNet preaddestrate in MATLAB e poi le abbiamo riaddestrate per classificare le immagini dei dadi esagonali (Figura 2).

      Lettore video in fase di caricamento.
      Orario attuale 0:00
      Durata 0:00
      Caricato: 0%
      Tipo di streaming LIVE
      Tempo rimanente 0:00
       
      1x
      • Capitolo
      • Descrizioni disattivate, selezionato
      • Senza sottotitoli, selezionato
          Il video dura 1:33

          Figura 2. Addestramento di una rete di Deep Learning per classificare nuove immagini con Deep Learning Toolbox.

          Sebbene la rete ResNet-18 fosse altamente accurata, era di un ordine di grandezza più grande e più lenta della rete SqueezeNet, che era leggermente meno accurata, ma comunque sufficientemente accurata per il caso d'uso in questione. Inoltre, dato il budget di temporizzazione del PLC di 300 ms, riteniamo che ResNet-18 non soddisferebbe i nostri requisiti, pertanto siamo passati a SqueezeNet. Abbiamo ulteriormente migliorato le prestazioni di questa rete, riducendone anche le dimensioni, eliminando i filtri degli strati di convoluzione. Questa riduzione ha comportato solo una diminuzione del 7% della precisione, ma un aumento doppio della velocità. La capacità di valutare rapidamente diverse reti e opzioni di compressione di rete rappresenta un vantaggio significativo per i team che devono prendere decisioni di tradeoff tra accuratezza, velocità e dimensioni.

          Creazione di un oggetto TwinCAT compilato e integrazione in TwinCAT 3 Engineering

          La creazione di un oggetto TwinCAT da una funzione MATLAB (in questo caso una funzione che richiama un modello di Deep Learning) è un processo in due fasi. Il primo passo consiste nel generare il codice C/C++ per la funzione utilizzando MATLAB Coder. Il secondo passaggio consiste nell'utilizzare TwinCAT Target per MATLAB per compilare il codice generato in un oggetto TwinCAT. Scrivendo uno script per eseguire questi due passaggi è possibile automatizzare questa parte del workflow (Figura 3). Quando vengono apportate modifiche alla rete di Deep Learning, il team può semplicemente rieseguire questo script e generare immediatamente un oggetto TwinCAT aggiornato.

          Lettore video in fase di caricamento.
          Orario attuale 0:00
          Durata 0:00
          Caricato: 0%
          Tipo di streaming LIVE
          Tempo rimanente 0:00
           
          1x
          • Capitolo
          • Descrizioni disattivate, selezionato
          • Senza sottotitoli, selezionato
              Il video dura 0:20

              Figura 3. Generazione del codice C/C++ che verrà utilizzato per creare un oggetto TwinCAT.

              È importante notare che esiste un'altra strada per implementare una rete di Deep Learning in MATLAB su un PLC Beckhoff. Con questo approccio, un team esporterebbe un file ONNX da MATLAB e lo caricherebbe in TwinCAT 3, dove può essere utilizzato con un motore di inferenza (Server di Machine Learning TwinCAT ) per eseguire attività di classificazione o regressione, anche con la possibilità di elaborare il modello su una GPU. Un vantaggio dell'approccio del nostro workflow (basato su MATLAB Coder and TwinCAT Target for MATLAB) rispetto all'alternativa è che può essere utilizzato per includere funzionalità aggiuntive di pre-elaborazione e post-elaborazione implementate in MATLAB. Con l'approccio di esportazione ONNX, viene distribuita solo la rete stessa.

              Una volta compilato, l'oggetto TwinCAT può essere utilizzato nell'ingegneria TwinCAT come qualsiasi altro oggetto. Un tecnico dell'automazione può integrare il modello di Deep Learning, ora implementato come oggetto TwinCAT, con altro codice PLC, incluso il testo strutturato. Nella nostra applicazione di esempio, ad esempio, abbiamo scritto un codice che richiamava l'oggetto compilato, passandogli un'immagine (ridimensionata e convertita in una matrice di pixel) catturata da una fotocamera. Il codice ha quindi elaborato l'output del classificatore, che include sia il risultato della previsione (il dado esagonale è a posto o difettoso) sia un punteggio di probabilità che riflette l'affidabilità del risultato (Figura 4).

              Uno screenshot che mostra l'integrazione di sistema di un modello di Deep Learning con TwinCAT Vision.

              Figura 4. Integrazione di sistema di un modello di Deep Learning con TwinCAT Vision.

              Progettazione e distribuzione del controllo del movimento

              Per completare il nostro esempio di progettazione di un'applicazione di controllo qualità, avevamo bisogno di un sistema di controllo per un servomotore utilizzato per posizionare i dadi esagonali all'interno del campo visivo di una telecamera. Sebbene avremmo potuto implementare questo sistema di controllo direttamente nell'ingegneria TwinCAT, abbiamo colto l'occasione per utilizzare la progettazione Model-ased prendendo di mira lo stesso PLC Beckhoff impiegato nella distribuzione del nostro classificatore. Abbiamo iniziato modellando il motion controller in Simulink con Stateflow. Successivamente, dopo aver eseguito delle simulazioni per verificare la progettazione, abbiamo utilizzato Simulink Coder per generare il codice C/C++ dal nostro modello e poi abbiamo utilizzato TwinCAT 3 Target for Simulink per compilare il codice in un oggetto TwinCAT. Potremmo quindi visualizzare questo oggetto nell'ingegneria TwinCAT e integrarlo con altri elementi del nostro progetto (Figura 5).

              Un modello Simulink che mostra un sistema di controllo del movimento con ingressi, porte logiche e uscite per il controllo dell'azionamento e il feedback della posizione.

              Figura 5. Un modello Simulink per il controllo del movimento.

              Progettazione HMI con MATLAB App Designer e TwinCAT Interface for MATLAB

              Nella maggior parte dei casi di utilizzo nell'automazione industriale, viene fornita un'interfaccia uomo-macchina (HMI) per consentire agli operatori di monitorare e controllare le apparecchiature, visualizzare dati in tempo reale, ricevere avvisi e gestire i processi di produzione. Per creare l'HMI per la nostra applicazione di controllo qualità di esempio, abbiamo iniziato definendo il design dell'interfaccia utente utilizzando MATLAB App Designer. L'operatore può controllare il movimento dei dadi esagonali tramite l'interfaccia, nonché visualizzare il dado esagonale attualmente posizionato sotto la telecamera, vedere i risultati della rete di Deep Learning (inclusa la classificazione e il punteggio di probabilità) e monitorare i benchmark, incluso il tempo di esecuzione del classificatore (Figura 6). Tutto lo scambio di dati tra l'interfaccia utente e l'ambiente di runtime del PLC avviene tramite TwinCAT Interface for MATLAB and Simulink, che utilizza il protocollo di comunicazione Automation Device Specification (ADS).

              Uno screenshot che mostra l'HMI del controllo qualità del dado esagonale.

              Figura 6. L'HMI per il controllo qualità dei dadi esagonali è realizzata con MATLAB App Designer e TwinCAT Interface for MATLAB and Simulink.

              Iterazioni future

              Uno dei principali vantaggi del workflow qui descritto è che consente ai team di valutare le decisioni di compromesso tramite rapide iterazioni. Ad esempio, nelle nostre applicazioni di controllo qualità abbiamo rinunciato a una certa accuratezza della classificazione in cambio di una riduzione delle dimensioni della rete e dei tempi di esecuzione. Se i requisiti di progettazione richiedessero una latenza ancora più bassa, avremmo potuto cercare ulteriori miglioramenti modificando la rete o magari scegliere un PLC con componenti e processori di una classe di prestazioni più elevata.

              È anche possibile estendere questo workflow per soddisfare requisiti specifici del progetto. Una di queste estensioni sarebbe quella di utilizzare il risultato della classificazione della rete neurale profonda per influenzare il sistema di controllo. Sebbene non sia necessaria nello specifico dimostratore di controllo qualità da noi realizzato, la capacità di un sistema di controllo di intraprendere un'azione immediata, in base al risultato della classificazione, è ampiamente applicabile a un'ampia gamma di casi d'uso di automazione industriale e rappresenterebbe un naturale passo successivo per molti team che adottano questo workflow.

              Pubblicato nel 2024