Rilevamento di anomalie basato sulla visione artificiale tramite Amazon Lookout for Vision e AWS Panorama

Nodo di origine: 1884898

Questo è il secondo post della serie in due parti su come Tyson Foods Inc. utilizza le applicazioni di visione artificiale all'edge per automatizzare i processi industriali all'interno dei propri impianti di lavorazione della carne. In Parte 1, abbiamo discusso di un'applicazione di conteggio dell'inventario presso le linee di confezionamento realizzate con Amazon Sage Maker ed Panorama AWS . In questo post, discutiamo di una soluzione di rilevamento delle anomalie basata sulla visione all'edge per la manutenzione predittiva delle apparecchiature industriali.

L'eccellenza operativa è una priorità fondamentale per Tyson Foods. La manutenzione predittiva è una risorsa essenziale per raggiungere questo obiettivo migliorando continuamente l'efficacia complessiva delle apparecchiature (OEE). Nel 2021, Tyson Foods ha lanciato un progetto di visione artificiale basato sull'apprendimento automatico (ML) per identificare i supporti dei prodotti difettosi durante la produzione per evitare che incidano sulla sicurezza, sulle operazioni o sulla qualità del prodotto dei membri del team. Quando un supporto per prodotti si rompe o si sposta nella posizione sbagliata, la produzione deve essere interrotta. Se non viene rilevato in tempo, rappresenta una minaccia per la sicurezza e i macchinari dei membri del team. Con un metodo di ispezione manuale, un operatore ispeziona 8,000 pin per linea. Questo è un compito lento e impegnativo perché l'attenzione ai dettagli è fondamentale. I professionisti del machine learning di Tyson Foods hanno creato modelli di visione artificiale per automatizzare il processo di ispezione e rilevare continuamente le anomalie. Questo processo può consentire al team di manutenzione di ridurre il tempo di ciclo e migliorare l'affidabilità dell'ispezione di 8,000 pin.

Lo sviluppo di un modello ML personalizzato per analizzare le immagini e rilevare le anomalie e far funzionare questi modelli in modo efficiente all'edge è un compito impegnativo. Ciò richiede competenze specializzate, tempo e risorse. L'intero ciclo di sviluppo può richiedere mesi per essere completato. Con gli approcci menzionati nella Parte 1 di questa serie, abbiamo completato il progetto per il monitoraggio delle condizioni dei trasportatori di prodotti presso Tyson Foods in tempi record utilizzando AWS Managed Services come Amazon Lookout per la visione.

Panoramica della soluzione

I modelli, il codice e l'infrastruttura progettati per il caso d'uso del conteggio dei vassoi nella Parte 1 sono stati prontamente replicati nel progetto del supporto del prodotto. Sebbene a prima vista questi progetti possano sembrare molto diversi, in fondo sono costituiti dagli stessi cinque componenti: acquisizione di immagini, etichettatura, addestramento del modello, deduplicazione dei frame e inferenza.

Questo post mostra come configurare una soluzione di rilevamento delle anomalie basata sulla visione artificiale per i supporti dei prodotti difettosi (o un assemblaggio di una linea di produzione simile) utilizzando AWS Panorama e Lookout for Vision. Il flusso di lavoro inizia con l'inferenza tramite un modello di rilevamento degli oggetti su un dispositivo AWS Panorama all'edge. Il modello di rilevamento degli oggetti ritaglia l'immagine e passa il risultato al modello di rilevamento delle anomalie di Lookout for Vision che classifica le immagini pin. Le immagini dei pin anomali e i risultati del modello vengono inviati al cloud e disponibili per un'ulteriore elaborazione.

Il diagramma seguente illustra questa architettura.

Prerequisiti

Per seguire questo post, è necessario quanto segue:

Addestra un modello di rilevamento degli oggetti

La prima fase del nostro progetto di inferenza multi-modello è un modello di rilevamento degli oggetti SSD addestrato per rilevare i vettori e i contrassegni del prodotto. I pin vengono usati per addestrare il modello di classificazione delle anomalie usando Lookout for Vision. Il contrassegno, che fa riferimento all'inizio della linea di supporto del prodotto, ci aiuta a tenere traccia di ogni ciclo di loop e a deduplicare i rilevamenti di anomalie.

L'immagine seguente è un esempio di risultato dell'inferenza dal modello SSD di rilevamento dei pin.

Addestra un modello di classificazione delle anomalie utilizzando Lookout for Vision

Lookout for Vision è un servizio ML completamente gestito che utilizza la visione artificiale per aiutare a identificare i difetti visivi negli oggetti. Consente di creare rapidamente un modello di rilevamento delle anomalie con poco o nessun codice e richiede pochissimi dati per l'avvio (minimo 20 immagini normali e 10 immagini di anomalie). La formazione di un modello Lookout for Vision segue un processo in quattro fasi:

  1. Crea un progetto Lookout for Vision.
  2. Crea un set di dati del vettore del prodotto.
  3. Addestrare e mettere a punto il modello Lookout for Vision.
  4. Esporta il modello Lookout for Vision per l'inferenza.

In questa sezione, ti guidiamo attraverso i passaggi 1–3.

Crea un progetto Lookout for Vision

Per istruzioni sulla creazione di un progetto Lookout for Vision, vedere Creare il tuo progetto.

Crea un set di dati del vettore del prodotto

Il set di dati per Lookout for Vision deve essere costituito da immagini quadrate, formato JPG o PNG, dimensione minima in pixel di 64 x 64 e dimensione massima in pixel di 4096 x 4096. Per generare un set di dati che soddisfi i requisiti, abbiamo dovuto ritagliare ogni riquadro di delimitazione e ridimensionali preservando le proporzioni originali usando il seguente codice Python. Aggiungiamo questo codice alla pipeline di acquisizione delle immagini descritta nella Parte 1 per generare le immagini finali da 150 x 150 pixel per Lookout for Vision.

def crop_n_resize_image(self, img, bbox, size, padColor=0): # crop images ============================== crop = img[bbox[1]:bbox[3],bbox[0]:bbox[2]].copy() # cropped image size h, w = crop.shape[:2] # designed crop image sizes sh, sw = size # interpolation method if h > sh or w > sw: # shrinking image interp = cv2.INTER_AREA else: # stretching image interp = cv2.INTER_CUBIC # aspect ratio of image aspect = w/h # compute scaling and pad sizing if aspect > 1: # horizontal image new_w = sw new_h = np.round(new_w/aspect).astype(int) pad_vert = (sh-new_h)/2 pad_top, pad_bot = np.floor(pad_vert).astype(int), np.ceil(pad_vert).astype(int) pad_left, pad_right = 0, 0 elif aspect < 1: # vertical image new_h = sh new_w = np.round(new_h*aspect).astype(int) pad_horz = (sw-new_w)/2 pad_left, pad_right = np.floor(pad_horz).astype(int), np.ceil(pad_horz).astype(int) pad_top, pad_bot = 0, 0 else: # square image new_h, new_w = sh, sw pad_left, pad_right, pad_top, pad_bot = 0, 0, 0, 0 # set pad color if len(img.shape) is 3 and not isinstance(padColor, (list, tuple, np.ndarray)): # color image but only one color provided padColor = [padColor]*3 # scale and pad scaled_img = cv2.resize(crop, (new_w, new_h), interpolation=interp) scaled_img = cv2.copyMakeBorder(scaled_img, pad_top, pad_bot, pad_left, pad_right, borderType=cv2.BORDER_CONSTANT, value=padColor) return scaled_img

Di seguito sono riportati esempi di immagini del supporto del prodotto elaborato.

Etichettiamo le immagini Amazon SageMaker verità fondamentale, che restituisce un file manifest dell'etichetta. Questo file viene importato in Lookout for Vision per creare il set di dati di rilevamento delle anomalie. Puoi etichettare le immagini all'interno della piattaforma Lookout for Vision, ma non abbiamo utilizzato questo approccio in questo progetto. Lo screenshot seguente mostra il set di dati con etichetta nella console Lookout for Vision.

Addestrare e mettere a punto il modello Lookout for Vision

Addestrare un modello di rilevamento delle anomalie in Lookout for Vision è semplice come fare clic su un pulsante. Lookout for Vision trattiene automaticamente il 20% dei dati come set di test per convalidare le prestazioni del modello. La chiave per generare buoni risultati del modello è concentrarsi sull'etichettatura e sulla qualità dell'immagine. La dimensione iniziale dell'immagine utilizzata era troppo piccola e i dettagli critici sono stati persi a causa della risoluzione. L'aumento della risoluzione da 64 x 64 a 150 x 150 ha comportato un salto significativo nella precisione del modello. Per mettere a punto le etichette, il team di sviluppo ha trascorso una notevole quantità di tempo con gli esperti in materia dello stabilimento per utilizzare le loro conoscenze nella progettazione delle definizioni per ciascuna classe. Era imperativo che queste definizioni di classe fossero molto chiare e ci sono volute alcune iterazioni per renderle perfette. Lo screenshot seguente mostra i risultati ottenuti con definizioni di classe consolidate.

Sviluppa l'applicazione AWS Panorama

L'applicazione AWS Panorama è un contenitore di inferenza distribuito nell'appliance AWS Panorama per elaborare flussi video di input, eseguire inferenze e produrre risultati video utilizzando l'SDK AWS Panorama. La maggior parte del codice di inferenza è lo stesso della Parte 1; le seguenti funzionalità sono state aggiunte specificamente per questo caso d'uso del supporto del prodotto:

  • Costruisci un trigger di inferenza del fotogramma
  • Esegui Lookout per l'inferenza visiva
  • Deduplica e isola la posizione dei pin

Costruisci un trigger di inferenza del fotogramma

Per questo caso d'uso, i nostri supporti dei prodotti si muovono continuamente attraverso il fotogramma video e gli stessi pin possono essere rilevati ripetutamente fino a quando non si allontanano dalla vista della videocamera. Per evitare di inviare pin duplicati al modello Lookout for Vision per la classificazione delle anomalie e sprecare risorse di calcolo, abbiamo sviluppato un trigger software nel nostro codice di inferenza per eseguire il downsampling dei frame e ridurre il numero di pin duplicati per l'inferenza. Nello screenshot seguente, il numero minimo di pin rilevati è 8 e il numero massimo di pin rilevati è 10.

La logica determina l'attivatore utilizzando gli ID del vettore del prodotto, che è un contatore per il numero di nuovi vettori del prodotto che si spostano nella vista della videocamera. Lo otteniamo determinando quando il numero di riquadri di delimitazione in un fotogramma raggiunge il valore massimo. Come mostrato nella figura precedente, in un dato momento è possibile rilevare un limite minimo e massimo di riquadri di delimitazione. Il conteggio oscilla tra il valore minimo e massimo, che corrisponde a un nuovo carrello del prodotto che si sposta nella vista della telecamera. La figura seguente illustra il modello di oscillazione. Poiché un fotogramma della fotocamera può contenere solo sei supporti del prodotto, sappiamo che un intero fotogramma viene spostato quando l'ID del supporto del prodotto viene incrementato di 6.

Esegui Lookout per l'inferenza visiva

Ritagliamo i riquadri di delimitazione dall'immagine del fotogramma e li elaboriamo utilizzando la stessa funzione di ridimensionamento descritta in precedenza, quindi inoltriamo queste immagini al modello Lookout for Vision per la classificazione delle anomalie. In risposta, il modello Lookout for Vision produce un'etichetta (normal or anomaly) e punteggio di affidabilità.

Isola le posizioni dei pin e deduplica i rilevamenti delle anomalie

Infine, per questo caso d'uso, era importante identificare la posizione relativa dei supporti dei prodotti e generare solo una voce per pin difettoso per evitare duplicazioni. Per tracciare la posizione del pin, è stato scritto un codice di inferenza per utilizzare il flag come punto di riferimento e contare l'ID del corriere del prodotto. Quando viene rilevata un'anomalia, l'ID del trasportatore del prodotto viene registrato con l'immagine del pin per fornire il riferimento di posizione relativo alla bandiera. Utilizziamo questo flag anche per aiutarci a deduplicare i rilevamenti di anomalie e tenere traccia del passaggio di un'intera linea di portatori di prodotti. Esiste un parametro ID ciclo che viene incrementato ogni volta che viene visualizzato il flag e tutti i parametri come l'ID del corriere del prodotto vengono reimpostati su 0 per avviare un nuovo ciclo.

Distribuisci modelli all'edge con AWS Panorama

Quando abbiamo i modelli e il codice di inferenza pronti, confezioniamo il modello di rilevamento degli oggetti, il codice di inferenza e il flusso della telecamera in un contenitore e li distribuiamo in AWS Panorama utilizzando lo stesso modello di distribuzione descritto nella Parte 1.

Avvisi e-mail

Ogni volta che il sistema rileva un'anomalia, l'immagine contenente il pin difettoso viene inviata ad Amazon S3 per l'archiviazione e i metadati ad essa associati vengono inviati a AWS IoT SiteWise. Alla fine di ogni turno, an Evento Bridge L'evento attiva una funzione Lambda, che utilizza le immagini e i metadati per inviare un'e-mail di riepilogo al personale dell'impianto. Il personale dell'impianto utilizza queste informazioni durante le riparazioni durante il cambio di turno.

Conclusione

In questo post, abbiamo dimostrato come configurare un sistema di rilevamento delle anomalie basato sulla visione in un ambiente di produzione utilizzando Lookout for Vision e AWS Panorama. Con questa soluzione, gli stabilimenti possono risparmiare 1 ora di tempo dei membri del team al giorno per linea. Questo farebbe risparmiare a questo impianto da solo circa 15,000 ore di manodopera qualificata all'anno. Ciò libererebbe il tempo dei preziosi membri del team Tyson per completare altri compiti più complessi.

I modelli addestrati in questo processo hanno funzionato bene. Il modello di rilevamento dei pin SSD ha raggiunto una precisione del 95% in entrambe le classi. Il modello Lookout for Vision è stato ottimizzato per funzionare con una precisione del 99.1% in caso di mancato rilevamento dei pin. Nonostante i due modelli utilizzati in questo progetto, il codice di inferenza è stato facilmente in grado di tenere il passo con la velocità della linea, girando a circa 10 FPS.

Il risultato di gran lunga più entusiasmante di questo progetto è stato l'accelerazione dei tempi di sviluppo. Sebbene questo progetto utilizzi due modelli e un codice dell'applicazione più complesso rispetto al progetto della Parte 1, il completamento ha richiesto il 12% di tempo in meno per gli sviluppatori. Questa agilità è possibile solo grazie ai modelli ripetibili stabiliti nella Parte 1 e utilizzando i servizi gestiti da AWS. Questa combinazione ha reso le nostre soluzioni finali più veloci da scalare e pronte per l'industria. Scopri di più su Amazon Lookout for Vision visitando il Amazon Lookout per le risorse di visione pagina. Puoi anche visualizzare altri esempi di AWS Panorama in azione visitando il Repository GitHub.


Informazioni sugli autori

Audrey Timmermann è uno sviluppatore di applicazioni Sr presso Tyson Foods. Si è laureata in ingegneria informatica presso l'Università dell'Arkansas e fa parte del team Emerging Technology di Tyson Foods da 2 anni. Ha un interesse per la visione artificiale, l'apprendimento automatico e le applicazioni IoT.

Giacomo Wu è Senior Customer Solutions Manager presso AWS, con sede a Dallas, Texas. Collabora con i clienti per accelerare il loro percorso verso il cloud e velocizzare la realizzazione del loro valore aziendale. Oltre a ciò, James è anche appassionato di sviluppo e scalabilità di grandi soluzioni AI/ML in vari domini. Prima di entrare in AWS, ha guidato un team tecnologico di innovazione multidisciplinare con ingegneri ML e sviluppatori di software per una delle principali aziende globali nel settore del mercato e della pubblicità.

Farooq Sabir è Senior AI/ML Specialist Solutions Architect presso AWS. Ha conseguito un dottorato di ricerca in ingegneria elettrica presso l'Università del Texas ad Austin. Aiuta i clienti a risolvere i loro problemi aziendali utilizzando data science, machine learning, intelligenza artificiale e ottimizzazione numerica.

Elisabetta Samara Rubio è uno specialista principale nel WWSO presso Amazon Web Services, guidando nuove soluzioni AI/ML e visione artificiale in tutti i settori, compresi i settori industriale e manifatturiero. Prima di entrare in Amazon, Elizabeth è stata amministratore delegato di Accenture, responsabile della crescita e della strategia dell'Industria X per il Nord America, Vicepresidente di divisione di AMETEK e Business Unit Manager di Cognex.

Shreyas Subramaniano è un Solutions Architect specializzato in AI/ML e aiuta i clienti utilizzando Machine Learning per risolvere le loro sfide aziendali sul cloud AWS.

Fonte: https://aws.amazon.com/blogs/machine-learning/computer-vision-based-anomaly-detection-using-amazon-lookout-for-vision-and-aws-panorama/

Timestamp:

Di più da Blog di apprendimento automatico AWS