La computer vision, o visione artificiale, è un campo dell’AI che studia algoritmi e tecniche per permettere ai computer di ricavare informazioni da immagini, video e altri tipi di dati, al fine di estrarre particolari informazioni di natura semantica.
In particolare, la computer vision trova una concreta e sempre più diffusa applicazione nella manutenzione predittiva, in cui si monitorano i sistemi tramite delle fotografie o delle riprese al fine di individuare potenziali anomalie o segnali di potenziali guasti e, quindi, di intervenire tempestivamente.
Si pensi soprattutto a grandi infrastrutture quali le ferrovie o la rete di distribuzione elettrica; si tratta di sistemi complessi composti da diversi elementi che interagiscono tra di loro per il corretto funzionamento, ma che allo stesso tempo sono soggetti ad ammaloramenti riferiti ad eventi di arrugginimento, corrosione, degrado, rottura, presenza di corpi estranei.
Si rende pertanto necessaria un’opera di verifica costante sullo stato di salute delle componenti infrastrutturali al fine di individuare situazioni di degrado e prevenire possibili guasti e conseguentemente disservizi.
Poiché tali componenti sono spesso difficili da raggiungere e si distribuiscono su aree geografiche molto vaste, l’ispezione manuale presenta difficoltà operative e costi elevati, che possono essere drasticamente ridotti grazie a tecniche di machine learning, deep learning e computer vision per il riconoscimento automatico delle failure infrastrutturali che affiancano ed assistono gli operatori del committente nelle attività di ispezione.
Automatic Failure Detection nella Computer Vision
L’automatic failure detection, nell’ingegneria del software, si riferisce alla capacità di un sistema di rilevare automaticamente un guasto o un malfunzionamento senza l’intervento umano diretto. Questa funzionalità è fondamentale per garantire l’affidabilità e la disponibilità dei sistemi, specialmente in ambienti critici come i data center, le reti di comunicazione e le infrastrutture cloud.
Le tecniche di rilevamento automatico dei guasti possono variare a seconda del tipo di sistema e dei requisiti specifici.
Alcuni approcci comuni includono:
- Monitoraggio continuo: Utilizzo di strumenti di monitoraggio che monitorano costantemente le metriche di prestazione e di stato del sistema, come il carico della CPU, l’utilizzo della memoria, il traffico di rete, ecc. Il superamento di determinati limiti o l’osservazione di anomalie può indicare la presenza di un guasto.
- Test di integrità: Esecuzione di test periodici o continui per verificare lo stato operativo del sistema. Questi test possono includere il controllo di integrità dei dati, il controllo della disponibilità dei servizi, il test di connettività di rete, ecc.
- Rilevamento degli errori nei log: Analisi dei log di sistema alla ricerca di errori, warning o segnalazioni anomale che possono indicare un guasto imminente o in corso.
- Tecniche di rilevamento di pattern: Utilizzo di algoritmi e modelli di machine learning per riconoscere pattern o comportamenti anomali nei dati di monitoraggio, segnalando potenziali guasti o malfunzionamenti.
Una volta rilevato un guasto o un malfunzionamento, il sistema di automatic failure detection può attivare automaticamente procedure di risoluzione dei problemi, quali il ripristino automatico dei servizi, l’avvio di processi di diagnostica o l’allerta degli amministratori di sistema per un intervento manuale.
Metodologia di analisi
Revelis utilizza, per l’analisi dei dati e l’addestramento dei modelli di Machine Learning, la metodologia Cross-Industry Standard Process for Data Mining; si tratta di un metodo standard per l’esecuzione interattiva ed iterativa di processi di data mining e analysis caratterizzato da 6 attività come illustrato nella figura seguente.
Fase 1
La fase di valutazione preliminare delle esigenze ha l’obiettivo di affiancare il cliente nella stima, valutazione e progettazione della soluzione di analisi dei dati.
Nell’ambito di questa fase rientrano le seguenti attività:
- Business Understanding. È finalizzata all’analisi degli obiettivi applicativi da parte del cliente, sulla base dei seguenti task: analisi dello scenario “as-is; definizione dei risultati attesi, definiti dai decision maker del cliente; definizione dei criteri utilizzati per determinare l’esito del processo di analisi dei dati;
- Data Understanding. È finalizzata alla comprensione dei dati ed è fondamentale per evitare problemi imprevisti durante la fase di Data Preparation. Nell’ambito di questa attività sono eseguiti i seguenti task: individuazione delle sorgenti interne/esterne; individuazione delle entità e degli attributi significativi per l’analisi; analisi descrittiva dei dati messi a disposizione, tramite valutazione di funzioni statistiche di base e/o l’utilizzo di grafici ed aggregazioni; valutazione della qualità dei dati, individuando eventuali problemi collegati ad errori di formato e/o di rappresentazione delle informazioni.
Fase 2
La fase 2 prevede l’attività di “Data Acquisition and Preparation” ed è funzionale alla connessione alle sorgenti informative individuate nella fase 1, nonché alla preparazione e cleaning dei dati acquisiti.
In questa fase sono eseguiti i seguenti task:
- Filtraggio dei dati: Questo task ha l’obiettivo di selezionare i dati pertinenti al raggiungimento degli obiettivi del cliente. A tal fine si procede al “filtraggio” dei dati e degli attributi tramite tecniche di campionamento e/o rimozione dei dati “sporchi”;
- Cleaning: Nell’ambito di questo task sono applicate tecniche statistiche per ricostruire i dati mancanti, gestire gli errori sui dati, sistemare gli errori di misurazione, gestire i dati sparsi;
- Creazione di dati sintetici: Spesso i dati grezzi non sono sufficienti per effettuare in maniera efficace l’analisi prefissata. In questi casi si può procedere alla creazione di nuovi dati “verosimili” a partire da quelli esistenti, tramite tecniche per derivazione la di attributi o per la generazione di record;
- Integrazione dei dati: I dati provenienti da sorgenti diverse e che sono riferiti alle medesime entità possono essere integrati per “merge” (ovvero arricchimento dell’entità tramite un maggior numero di attributi) o “unione” (arricchimento del numero di entità disponibili).
Fase 3
La Fase 3 prevede due distinti macro-step di processo:
-
Formulazione e implementazione del modello di analisi: Tale fase ha l’obiettivo di definire (tramite tecniche statistiche induttive) e valutare (tramite metriche standard) uno o più modelli di data mining, e prevede le seguenti attività:
- Sviluppo di connettori: I connettori sono interfacce software che permettono l’import dai sistemi esterni dei dati da sottoporre agli algoritmi di Data-Mining o l’export dei risultati verso sistemi/piattaforme esterne.
- Modeling: Consiste nell’applicazione di algoritmi ad un opportuno subset dei dati disponibili detto training set. I dati del training set verranno sottoposti ad opportune attività di preprocessing per consentire l’elaborazione da parte degli algoritmi statistici. Il risultato è un modello di supporto alle decisioni, che può essere finalizzato a scopi di: (i) Classificazione; (ii) Regressione; (iii) Segmentazione; (iv) Sommarizzazione; (v) Analisi dei legami o associazione; (vi) Analisi delle sequenze. Gli algoritmi sono basati su tecniche di machine learning e deep learning.
- Evaluation: Questa attività verte sulla misurazione delle performance del modello tramite opportune metriche tra quelle definite nella letteratura scientifica. In tal modo è possibile valutare in maniera oggettiva la bontà dei modelli indotti, e conseguentemente verificare il soddisfacimento degli obiettivi di business definiti. La valutazione delle performance avviene su un opportuno subset dei dati disponibili detto test set, disgiunto rispetto al training set usato nella fase di addestramento del modello.
- Conduzione della soluzione di analisi: Tale prevede l’attività di “Deployment”, ovvero di implementazione di una versione eseguibile del modello indotto, che possa essere utilizzata presso l’infrastruttura applicativa del cliente.
Applicazione della metodologia CRISP-DM per la Failure detection su tecnologia AWS
La metodologia descritta è agnostica rispetto agli strumenti software utilizzati. In questo articolo mostreremo come utilizzare la tecnologia AWS SageMaker per lo sviluppo di soluzioni di machine learning.
AWS SageMaker è un servizio fully-managed per il machine learning che consente di realizzare e deployare modelli di machine learning in un ambiente scalabile e sicuro.
AWS SageMaker implementa un processo di modellazione a tre fasi:
- Acquisizione e preparazione dei dati
- Addestramento e tuning dei modelli
- Deploy e monitoraggio dei modelli
Gestione dei dati
Il primo passo nel machine learning è generare un dataset che sia rappresentativo del contesto operativo, fondamentale per addestrare un modello ML. I data scientist dedicano tempo ed energia all’esplorazione e alla preparazione di tali dati. I data sources sono gli oggetti che permettono la memorizzazione dei dati e dei metadati ad essi correlati.
SageMaker utilizza Amazon S3 per memorizzare i dati. S3 è il cloud object storage di AWS, con object storage si intende un tipo di archiviazione dei dati in cui i dati vengono archiviati come oggetti, anziché come file o blocchi. In un sistema di object storage, ogni oggetto è composto da tre componenti principali: i dati, un identificatore univoco e metadati. In S3 gli oggetti vengono memorizzati all’interno di contenitori logici detti bucket.
In una applicazione di anomaly detection, le immagini ad alta risoluzione dell’infrastruttura
vengono acquisite tramite sorvoli aerei. I dati fotografici ed i dati georeferenziati degli asset vengono caricati su S3.
Le immagini vengono successivamente pre-processate per le successive fasi di elaborazione tramite dei job AWS Batch.
AWS Batch è il servizio AWS che consente di eseguire rapidamente ed efficientemente centinaia batch job su AWS. Un batch job è un task di elaborazione che viene eseguito fino a quando il compito non viene completato con successo o fallisce. AWS Batch provvede dinamicamente alla quantità ottimale di risorse di calcolo in base al volume e ai requisiti specifici delle risorse dei batch job sottomessi.
Addestramento dei modelli
In questa fase vengono addestrati i modelli alla ricerca di pattern all’interno dei dati.
AWS SageMaker fornisce istanze di notebook Jupyter con le quali è possibile accedere facilmente alle sorgenti dei dati per svolgere analisi esplorative.
Consente di predisporre delle pipeline di inferenza combinando task di preprocessing, predizione e post-processing dei dati buildati in container Docker.
Nella nostra applicazione di anomaly detection le immagini preprocessate possono essere utilizzate per addestrare:
- modelli di object detection, che si occupano dell’individuazione degli oggetti presenti all’interno dell’immagine; le informazioni ricercate sono, quindi, sia la categoria di appartenenza dell’oggetto (ve ne possono essere più di uno nell’immagine) sia la regione rettangolare (detta bounding box) che lo contiene.
- modelli di classificazione, che hanno il compito di classificare le bounding box identificate dai task di object detection in base alla presenza o meno di una specifica anomalia
La valutazione online dei modelli addestrati permette di valutarne l’accuratezza.
Deploy dei modelli
Al termine della fase di addestramento, i modelli sono pronti per essere deployati ed essere utilizzati nei processi di inferenza sui nuovi dati.
AWS SageMaker permette di creare degli inference job in due modalità diverse
- batch, indicati per le applicazioni di analisi predittiva che non hanno requisiti di tempo reale e/o che devono essere applicate su blocchi di dati;
- real-time, per quelle applicazioni che necessitano di elaborazioni in tempo reale, su singoli dati. In questo caso il job di inferenza viene pubblicato come servizio rest che può essere invocato all’occorrenza
La realizzazione di modelli di machine learning è un processo continuo che coinvolge il deployment del modello, il monitoraggio delle inferenze e la valutazione del modello per identificare derive delle performance. Per aumentare l’accuratezza dei modelli si rende necessario un periodico ri-addestramento degli stessi sui nuovi dati che si renderanno disponibili nel tempo.
Orchestrazione dei modelli
L’intera pipeline di inferenza può essere orchestrata tramite AWS Step Functions. AWS Step Functions è un servizio di orchestrazione che consente di creare e gestire workflow in cloud che combina i vari servizi AWS e si basa su macchine a stati e task.
Una macchina a stati, non è altro che un workflow, ovvero una serie di passaggi basati su eventi. Ogni passo in un workflow è chiamato stato.
Uno stato di tipo Task rappresenta un’unità di lavoro eseguita da un altro servizio AWS, come AWS Lambda. Uno stato di tipo Task può chiamare qualsiasi servizio o API AWS.
Attraverso la dashboard di gestione e monitoraggio delle Step Function è possibile seguirne l’esecuzione in tempo reale nonché raccoglierne le statistiche al suo completamento.
Autore: Achille Abritta