Come riconosciamo le immagini?
Ma noi come riconosciamo le immagini? Ve lo siete mai chiesto?
Ad esempio, quando vedo una macchina, so che è una macchina e non uno struzzo perché la mia corteccia visiva elabora la forma dell’auto e la confronta con altre auto. La forma dell’auto in particolare è definita grazie al contrasto, i colori, le ombre e le parti illuminate e così via. La relazione tra tutti questi elementi è caratteristica per le auto, e le differenzia dagli struzzi, gli alberi o i satelliti artificiali.
La cosa interessante è che non ci serve recepire tutti i minimi dettagli di un’oggetto per riconoscerlo, ci basta intuire la forma, lo spazio che occupa e i colori per riuscire già a riconoscere un oggetto con precisione. Se vi chiedessi se quella parcheggiata di sotto è un’auto o una bici, sapreste rispondere con uno sguardo. Se vi chiedessi che numero di targa ha, dovreste soffermarvi su un dettaglio che in prima battuta non vi è servito.
L’AI ci copia
Tanto per cambiare, i modelli che fanno riconoscimento immagini (le reti convoluzionali) sono ispirate al funzionamento del cervello animale. Infatti funzionano in modo simile alla nostra corteccia visiva: come a noi non servono tutti i dettagli per riconoscere un oggetto, anche loro operano una sintesi sulle immagini per riconoscerne l’essenza. Un’essenza di automobile.
Come tutte le reti neurali, anche la rete convoluzionale è fatta di strati. Per estrarre l’essenza di un qualcosa, la nostra rete convoluzionale utilizza tre tipi di strato: lo strato convoluzionale (convolutional layer), lo strato di pooling e lo strato feedforward. Questi strati elaborano l’immagine per comprenderla e riconoscerla.
La rete convoluzionale
Gli strati di convoluzione e pooling si alternano, finché non si arriva a un dataset talmente ridotto da poter essere elaborato da un semplice strato feedforward.
Ogni strato si occupa di semplificare un po’ l’immagine, estraendone le caratteristciche o sintetizzandola.
L’ultimo strato denso e feedforward è a tutti gli effetti un classificatore, che associa i pixel trasformati e sintetizzati ad un’etichetta fornita in fase di allenamento. Una delle cose pià noiose da fare quando si allena un sistema di image recognition infatti è l’etichettatura manuale di un numero sufficiente di immagini. Vi siete mai chiesti come mai i test Non cono un robot ci chiedono di selezionare le immagini in cui c’è un semaforo o una bicicletta?
Riconoscere le caratteristiche importanti
Il primo strato, che da il nome la rete, è il più importante. Grazie all’elaborazione degli strati convoluzionali, l’algoritmo comprende le caratteristiche dell’immagine, guardandola pochi pixel alla volta.
In particolare, lo strato convoluzionale è in grado di filtrare NxM pixel attraverso una funzione di kernel che modifica leggermente le caratteristiche dei pixel stessi, ad esempio sottolineando i bordi, o aumentando la luminosità dell’immagine.
Su questo tool online è possibile fare esperienza in prima persona per capire cosa significa trasformare l’immagine attraverso le funzioni di kernel, nell’immagine di seguito un esempio costruito a partire da quanto fornito dal sito.
Fare sintesi
Il secondo strato è detto pooling layer, ed è uno strato che riduce la dimensione dell’immagine trasformata mantenendone le informazioni principali. Ad esempio, il pooling layer potrebbe essere studiato per guardare aree di 3×3 pixel, e salvare solo il pixel con il valore più alto tra i 9, oppure facendo una media, o prendendo il minimo.
Rispetto allo strato convoluzionale, lo strato di pooling genera immagini molto più ridotte. Il passo a cui la maschera si muove è configurabile.
Da immagine a dataset
Ma in tutto ciò, come si traduce un’immagine in un dataset? L’immagine è un’insieme di pixel, ognuno dei quali ha un’intensità per ognuno dei colori RGB. Quindi ogni pixel può essere rappresentanto da almeno 3 numerelli, posizionati sulle due dimensioni lenght e width dell’immagine.
Questi numeri diventano il nostro dataset, che avrà quindi dimensioni Lenght x Width x 3. Con il dataset a disposizione, è possibile iniziare con il riconoscimento.
Il riconoscimento di immagini in industria
Nel settore industriale il riconoscimento immagini è largamente utilizzato nelle procedure di ispezione automatica e controllo qualità, ma non è l’unico esempio interessante. Proviamo a racchiudere in una lista non esaustiva tutte le potenziali applicazioni del riconoscimento di immagini a partire dai processi:
- Auto a guida autonoma: ovviamente, le nostre adorate automobili a guida autonoma sono equipaggiate da sistemi di riconoscimento immagini che elaborano tutto l’ambiente circostante per interpretare cartelli, pedoni, segnaletica e quant’altro ed evitare di ucciderci tutti.
- Controllo qualità: telecamere fisse in grado di riconoscere difetti superficiali da ispezione visiva, elaborando centinaia di pezzi al minuto. E’ utilizzata ampiamente nelle industrie in cui i pezzi in ingresso sono di dimensioni ridotte (come possono esserlo le nocciole!) oppure quando il prodotto è minuteria (bulloni, viti e simili).
- Smistamento di materiale: gli algoritmi di riconoscimento immagine sono in studio nel settore del ricilo, per ottimizzare la filiera dello smaltimento dei rifiuti. Nello specifico, i sistemi di image recognition sono stati allenati per riconoscere le diverse tipologie di spazzatura e smistarle nel modo più preciso possibile, per evitare che finisca tutto nel termovalorizzatore. Questo approccio può essere utilizzato anche nello smistamento di altri tipi di materiale.
- Mappatura degli asset: è in studio presso diversi gestori di asset distribuiti la possibilità di equipaggiare auto o altri mezzi con telecamere geolocalizzate che siano in grado di riconoscere gli asset e verificarne la presenza nei software gestionali
- Ispezioni automatiche: immaginate un drone che porta a bordo un algoritmo in grado di riconoscere tutti i difetti nelle tubature o nei pannelli fotovoltaici che si possono intercettare solo tramite ispezione visiva. Ci sono startup che si occupano proprio di questo, sfruttando algoritmi di vision.
- Analisi termografiche automatizzate: per processi critici in cui una differenza di temperatura può causare un aumento di scarti, avere a disposizione una termocamera che si accorge in autonomia se ci sono deviazioni nella distribuzione di temperatura può far risparmiare molti soldi. Ad esempio, intercettare il guasto nella specifica resistenza in una termopressa facilita molto la manutenzione e minimizza il rischio di scarto.
- Analisi di efficienza in base agli spostamenti delle persone: questa è rischiosa, perché bisogna riuscire ad anonimizzare completamente l’immagine della persona. Esistono start up che si occupano proprio di questo, e sono in grado a partire da algoritmi di image recognition di ricostruire i movimenti delle persone, le distanze e le tempistiche, per intercettare ad esempio processi particolarmente laboriosi o colli di bottiglia. Questo tipo di sviluppi però potrebbe essere limitato dal nuovo AI Act, visto l’uso di controllo che se ne potrebbe fare.
- Raccolta automatica di dati geometrici: sistemi che a partire da un’immagine sono in grado di interpretarne le dimensioni, in modo da poterle integrare con sistemi terzi per simulazioni o mappatura.
- Integrazione dei dati meteo: i dati meteo basati sui principali modelli metereologici come Cosmo1 e Cosmo2 sono forniti su N griglie di valori, quelle che poi vengono interpretate con i colori che siamo abituati a vedere. I sistemi di riconoscimento immagini possono interpretare contemporaneamente tutte le distribuzioni con le relative probabilità e prevedere fenomeni specifici come l’aumento della portata di un bacino o il rischio idrogeologico.
Image recognition
Quindi, le reti convoluzionali sono in grado di classificare le immagini in base ai colori RGB presenti nei pixel e al loro ordine. Con sufficienti immagini l’algoritmo riesce a riconoscere con alta precisione immagini diverse, e può essere largamente utilizzato in industria in diversi settori e per diverse applicazioni.
E poi, il riconoscimento immagini quando sbaglia è più divertente degli altri da guardare.