E tu lo vuoi un palloncino sintetico?

L’altro giorno parlavo di Machine Learning con un collega, e in particolare di una delle sue applicazioni classiche: il riconoscimento del soggetto in un’immagine. Si tratta della cosiddetta Image Recognition, uno dei possibili compiti nell’ambito della cosiddetta Computer Vision, ed è alla portata di tutti da ormai svariati anni. Date a uno sviluppatore una quantità […]

L’altro giorno parlavo di Machine Learning con un collega, e in particolare di una delle sue applicazioni classiche: il riconoscimento del soggetto in un’immagine. Si tratta della cosiddetta Image Recognition, uno dei possibili compiti nell’ambito della cosiddetta Computer Vision, ed è alla portata di tutti da ormai svariati anni. Date a uno sviluppatore una quantità sufficiente di immagini di scatoloni e un altrettanto esteso set di immagini di gattini, e lui sarà in grado di addestrare la macchina a distinguere una scatola da un gattino.

Per lo meno fino a quando non gli mostrate questo.

Se vi interessa la differenza tra i diversi modi che la Computer Vision ha di gestire le immagini, vi consiglio di dare un’occhiata qui.

Questi sistemi di riconoscimento immagini hanno molteplici applicazioni pratiche, al contrario delle apparenze, e possono ad esempio essere utilizzate all’arrivo dei materiali in cantiere per supportare nell’individuazione di danni e difetti, oppure direttamente nelle industrie manifatturiere per impedire che oggetti con tali difetti vengano trascurati e mandati nel mio cantiere costringendo la mia Direzione Lavori ad emettere dei rapporti di non conformità.

Ma allora perché non vengono utilizzati da tutti dappertutto?

Il problema, come sa bene chiunque abbia provato ad implementare questo tipo di tecnologie all’interno di industrie tangenti a quella delle costruzioni, è sempre la scarsa disponibilità di dati.
Al nostro settore i dati non piacciono.
Le foto di cantiere vengono mandate via Whatsapp, archiviate in una cartella “fuffa” sul desktop del supervisore, e poi rovesciate sul server in una cartella che nessuno guarderà mai più oppure direttamente cancellate.
Quelli veramente bravi organizzano le foto che catturano i successi. Ma solo per farsi il portfolio. Le foto che catturano i fallimenti sono molto di rado categorizzate e correttamente archiviate.

Cosa c’entra tutto questo con il riconoscimento immagini e, soprattutto, con i palloncini?

Datemi un attimo.

Se anche voi, come Winnie the Pooh, siete convinti che nessuno possa essere infelice con un palloncino, sappiate che sto per farvi cambiare idea.

Facciamo un esempio

Ipotizziamo che voi siate un’azienda che produce palloncini colorati e, siccome credete fermamente che la specializzazione sia la chiave per il successo, voi producete solo palloncini blu. Pantone 19-3832 TCX. Cioé Blu Navy.

Questo.

Ora, facciamo finta che per ottenere quella specifica tinta di blu sia necessario aggiungere alla mistura un pochino di rosso.
Il problema è che ogni tanto il macchinario deputato a miscelare i colori si incastra e quindi, una volta ogni non sappiamo nemmeno noi quanti palloncini, anziché uscire tutti Navy ne esce uno Rosso. E questo è inaccettabile per la nostra qualità.

Il problema è che produciamo migliaia di palloncini per volta, e vengono spediti all’interno di scatoloni da 100 palloncini l’uno.
Impossibile pensare di poter fare uno screening manuale dei palloncini rossi: rallenterebbe troppo la produzione.

E allora come fare a individuare il bastardo?

Enters Image Recognition

La risposta sembra essere semplice: addestriamo un sistema di riconoscimento immagine, collegato a delle telecamere messe sui nastri trasportatori dei nostri palloncini, in modo che sia il sistema ad allertarci ogni volta che vede un palloncino rosso.

Dovrebbe essere semplice.
E infatti lo è.

Se non fosse che…

…vi ricordate quello che ho detto riguardo ai dati, alle foto dei difetti e alla mancanza di sufficiente materiale nella nostra industria?

Il problema è proprio quello.

Andrew Ng è uno dei massimi esperti di machine learning applicato al comparto industriale, nonché co-founder di Google Brain, e la sua prospettiva è citata da Cosimo Accoto nel suo meraviglioso Il mondo in sintesi del 2022 (ultimo volume di quella che lui stesso definisce una “trilogia dedicata alla cultura delle tecnologie contemporanee”).

Un libro assolutamente da divorare, come i precedenti.

«…ho costruito un sistema di riconoscimento facciale usando circa 350 milioni di immagini ma quando ho chiesto alle persone dell’industria manifatturiera quante immagini avevano di ogni difetto che volevano riconoscere (nei loro prodotti), 50 o meno è stata la risposta più comune. Le tecniche sviluppate per imparare da centinaia di milioni di esempi faranno fatica a funzionare con solo 50.»

Il problema si è recentemente posto in modo simile su un mio cantiere: messi di fronte alla necessità di progettare delle sigillature per far fronte ad alcuni danni risultati dalla loro mancanza in altri siti simili, è stato impossibile ricevere anche solo una singola fotografia del danno di riferimento.

E se non ne abbiamo una, come possiamo averne le centinaia necessarie?

Pensa, piccolo Pooh, pensa!

“Ho la soluzione”, disse Pooh

Se siete caotici malvagi, oppure se avete già letto il libro di Accoto, avete già intuito la naturale conclusione di questo ragionamento.

Dato che:

  1. per addestrare un sistema di riconoscimento immagini servono più fotografie di difetti di quanti noi ne sappia contare (o, probabilmente, di quanto il nostro processo ne possa sostenere prima che qualcuno ci faccia causa);
  2. non siamo in possesso di una tale quantità di fotografie né presumibilmente lo saremo in tempi ragionevoli;
  3. siamo in possesso di tecnologie in grado di generare immagini a comando.

Pop goes the Weasel.

Hey, Stable Diffusion, mi crei per favore un’immagine dove tanti palloncini rossi provano a nascondersi in una moltitudine di palloncini Blue Navy?

Qualità, Riconoscimento Immagini e Dati Sintetici

La prospettiva di utilizzare immagini generate da un’intelligenza artificiale per addestrare un sistema di machine learning a riconoscere situazioni simili nel mondo reale può fare girare un poco la testa ma in verità non fa che aggiungere una componente “visuale” all’interno di una dinamica già esistente: quella dei dati sintetici.

«…dati simulati, creati e sintetizzati in maniere diverse e per contesti vari, che approssimano e sostituiscono i dati reali.»
– Cosimo Accoto, Il mondo in sintesi: Cinque brevi lezioni di filosofia della simulazione (2022)

I motivi per cui si sintetizzano i dati anziché infilarsi un paio di scarpe comode e andarli a raccogliere sul campo possono essere molteplici e sono spesso estremamente validi:

  • non abbiamo accesso a campi di raccolta simili al nostro e, purtroppo, nel nostro campo ne esistono troppo pochi: pensando alla nostra industria di palloncini, non ho dubbi che altre aziende abbiano problemi similari, ma il giorno in cui gli industriali si consoceranno condividendo i dati per un (loro) bene comune sarà il giorno in cui inizieranno a piovere rane dal cielo.
  • raccogliere quei dati risulterebbe troppo costoso dal punto di vista economico, ovvero saremmo costretti a produrre di proposito centinaia di palloncini del colore sbagliato solo per fare in modo di riuscire a individuare il difetto quando questo accade per sbaglio;
  • raccogliere una quantità sufficiente di dati risulterebbe troppo dispendioso in termini di tempo, ovvero dovremmo rimanere appollaiato sulla catena di montaggio così a lungo da risvegliarci in un mondo dove la gente usa i droni anziché i palloncini, e fanno anche il caffè;
  • raccogliere quei dati è illegale, perché è stata recentemente emanata una legge sulla privacy dei palloncini rossi e non possiamo metterci a fotografarli senza aver raccolto singolarmente il loro esplicito consenso;
  • raccogliere quei dati è insicuro per gli operatori oppure per i nostri macchinari, che sono fotosensibili e si emozionano quando vengono fotografati;
  • raccogliere quei dati è rischioso perché, oltre alle fotografie dei palloncini rossi, diffondiamo anche scorci sui segretissimi macchinari che utilizziamo nella nostra azienda e non possiamo permetterci fuoriuscite di segreti industriali;
  • sempre rubando le parole di Accoto, “non esiste alcuna entità fisica in forma diretta da usare come originale” e quindi i dati non esistono, ovvero siamo nell’ambito della simulazione di mondi possibili e/o non ancora verificatisi oppure, nei casi più estremi, di mondi paralleli e autonomi.
Creiamo quindi i nostri palloncini digitali: cosa potrà mai andare storto?

Dati sintetici: due approcci possibili

Uno dei testi di riferimento in relazione alla creazione di modelli che generino dati sintetici è Practical Synthetic Data Generation: Balancing Privacy and the Broad Availability of Data, di Khaled El Emam, Lucy Mosquera e Richard Hoptroff che sul tema hanno sempre dimostrato, anche e soprattutto nella generazione dei dati in ambito medico-scientifico, una grande attenzione ai temi etici. Nel loro libro, gli studiosi ben riassumono i due possibili approcci alla creazione di dati sintetici.

  1. i dati reali costituiscono la partenza del modello, viene costruito un sistema che individui le caratteristiche di quei dati in termini di struttura e distribuzione, vengono generati nuovi dati che l’analista seleziona e campiona e, laddove i dati sintetici si rivelino coerenti alle caratteristiche individuate nei dati reali dal punto di vista statistico, possiamo considerarci soddisfatti;
  2. non si parte da dati reali, ma da modelli che possono essere digitali oppure concettuali.

In altre parole, pensando ai nostri palloncini, le alternative potrebbero essere due. Da un lato, prendiamo tutte le (poche) fotografie disponibili di palloncini erroneamente rossi e, dopo averle utilizzate come dataset di partenza per un sistema di generazione immagini, chiedo al sistema stesso di generarmi le centina di migliaia di immagini necessarie per individuare il palloncino rosso che prova a nascondersi sul nastro trasportatore.

L’alternativa è un pochino più interessante.

Potremmo partire modellando il nastro trasportatore in movimento e il singolo palloncino all’interno di un sistema che recepisce la fisica del mondo reale. I simulatori di fisica più accessibili a nostra disposizione sono, come sempre, i game engine.
A quel piunto, la generazione di dati sintetici (le immagini di un singolo palloncino rosso che cerca di nascondersi tra i palloncini blu sul nostro nastro trasportatore) passa attraverso una scena simulata, e quindi sintetica, ma modellata secondo delle regole e dei margini che sono stati codificati all’interno del sistema direttamente dall’analista. La generazione delle scene dovrà necessariamente avvalersi di una automazione generativa che incorpori elementi di semi-casualità, altrimenti nessuno uscirà vivo dal processo, ma stiamo a tutti gli effetti simulando delle situazioni all’interno di un ambiente che siamo stati noi a creare.

Da una parte potremo dire di avere una generazione nella simulazione, mentre il primo caso vedeva la generazione di una simulazione.

Detto meglio, il primo metodo si basa sulla distribuzione statistica, mentre il secondo si basa sulla modellazione di agenti.

Lo so, Pooh, lo so: la faccenda si è fatta complicata.

Quale dei due è meglio?

Bella domanda, ma a questo punto forse varrebbe la pena domandarsi quale dei tre sia meglio, tra dati reali, dati sintetici derivati da statistica e dati sintetici da agent-based modelling.

Secondo i teorici del dato sintetico, esso è spesso da preferire rispetto al dato fisico perché.

  • è personalizzabile: posso costruire dati sintetici che meglio rispondono alle mie esigenze (le fotografie dei miei palloncini rossi potrebbero avere problemi di angolo e luminosità, mentre le mie fotografie “sintetiche” non confonderanno mai il mio sistema con questo tipo di disturbi);
  • è efficace dal punto di vista dei costi perché più sostenibile sia da produrre che da anlizzare: secondo Gerard Andrews che a sua volta cita Paul Walborsky in questo articolo, l’etichettatura di un’immagine reale per addestrare un sistema al riconoscimento di elementi in essa contenuti costa circa 6$ per ogni immagine mentre il costo nel caso di un’immagine sintetica scende a 6 centesimi di dollaro;
  • come si è visto può facilmente rispondere a preoccupazioni relative all’anonimizzazione dei dati e alla privacy;
  • è possibile introdurre di proposito corner cases, ovvero casi che si verificano solo al di fuori dei normali parametri operativi, in particolare quando più variabili o condizioni ambientali si trovano contemporaneamente a livelli estremi anche se ogni parametro rientra nell’intervallo di sicurezza specificato (la cosiddetta congiuntura di cause che spesso è la causa dei disastri industriali);
  • è facilmente scalabile perché sullo stesso modello io posso simulare l’individuazione di un palloncino rosso tra centinaia, migliaia e milioni di palloncini blu.

Per rubare nuovamente le parole di Cosimo Accoto, tuttavia, rimane aperta una vulnerabilità epistemologica che però è anche operativa ovvero quella relativa al realismo dei dati che stiamo sintetizzando. E non si tratta questa volta di un realismo che ci consenta di evitare effetti perturbanti nell’osservatore, ma di trovare un framework di definizione che ci consenta di valutare se il dato sintetico sia vicino al dato reale o possibile nella realtà con un buon grado di approssimazione. La cattiva notizia è che:

« …non esiste un metodo condiviso e standard per arrivare a convalidare il realismo.»

In tanti hanno provato a sviluppare framework e teorie di valutazione per l’affidabilità dei dati sintetici, tra cui ad esempio la Cornell University con il loro “An evaluation framework for synthetic data generation models” disponibile qui e il cui risultato è questo:

Dai, è semplice.

È importante sottolineare però che in questi casi si parla (quasi) sempre di dati in formato tabulare. Come valutare l’affidabilità di un’immagine, che per sua natura appare come un fattore squisitamente qualitativo?
Come potete immaginare, i settori all’avanguardia in questo tipo di ragionamenti non sono le industrie di produzione dei palloncini, ma quelle che si occupano delle analisi in ambito medico-scientifico. Contributi come questo paper propongono di utilizzare sistemi di Deep Learning per la valutazione delle immagini generate. Per coordinare due macchine, quindi, come spesso accade ci troveremmo a dover introdurre una terza macchina chiamata discriminatore.
Se avete mai sentito parlare di Generative Adversarial Networks (GANs), si sta parlando di questo, ovvero di processi che “fanno le pulci” all’operato dei modelli di Deep Learning generativo e vanno a verificare, tramite il confronto con una base solida di esempi reali, se quanto generato può essere adeguato rispetto a una serie di parametri.

Ed ecco che il problema è sempre lo stesso: analizzare il nostro processo per individuare i parametri.

E quindi?

E quindi tutto questo per dire due cose.

  1. Non è impossibile che, nell’immediato futuro, si possa proporre sistemi di controllo qualità basati sul riconoscimento immagini anche in circostanze in cui precedentemente la base dati non ci consentiva di addestrarli in modo efficiente;
  2. Se siete i titolari dell’azienda di palloncini, avete due immagini in croce da fornire allo sviluppatore, ma vi viene offerto ugualmente questo tipo di servizio, ricordatevi di fare le domande giuste. Chiedete quale sarà l’utilizzo di dati sintetici, perché saranno necessariamente in gioco, quale sarà il metodo della loro sintesi e, soprattutto, quale il meccanismo per la loro verifica e validazione.

D’altronde, lo sappiamo, il problema non è quasi mai il palloncino. Il problema è sempre chi lo offre.

E tu lo vuoi un palloncino?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.