Machine Vision: una facile introduzione

Una premessa su visione umana e grafica digitale:

 “Il Naufragar m’è dolce in questo mare”.

Foto schermo pixel

Perché ho fotografato l’immagine che state visualizzando?

Perché per introdurvi nel mondo della computer vision devo rivelarvi una cosa: l’elettronica usa i vostri limiti per farvi vedere e sentire cose che non esistono.
Si può facilmente vedere come sia già sufficiente una foto scattata con un telefono (di generazione recente, dieci anni fa non era così) per rivelare la natura del digitale, la natura “truffaldina” dei dispositivi elettronici: ovvero allineare in maniera coerente dei mattoncini per sfruttare alcuni limiti degli umani sensi con il fine di ingannare il cervello;

in questo caso i mattoncini sono i pixel del monitor che vengono messi sufficientemente vicini per apparire “continui”.

Per quei pochi di voi che non lo sanno, i vostri occhi sono dei passa-basso e tagliano le alte frequenze, ed è proprio lì che si verifica la “truffa”: entro certi limiti, i vostri occhi si accontentano delle aree omogenee e buttano via i bordi molto bruschi.

Pixel O non pixel?

Tornando alla nostra foto, ho dovuto raggiungere un compromesso: scattare abbastanza vicino al monitor per cogliere i mattoncini, ma non troppo vicino per riuscire a mettere a fuoco (le mie velleità da fotografo le trovate QUI).

Ergo, se qualcuno adesso sta pensando di non riuscire a vedere chiaramente i mattoncini, posto una foto che ho rubato dalla rete per mostrare come apparirebbe la “O” se andassimo abbastanza vicini garantendoci una immagine decente.

Lettera O

Vedete i mattoncini (detti anche pixel)?

Se rimpicciolite adeguatamente questa pagina, ad un certo punto tornerete a vedere un cerchio. Ecco, nell’elettronica e nel digitale funziona tutto così.

HUMAN VISION = COMPUTER VISION?

Facciamo un altro passo. Siccome noi ingegneri non abbiamo inventato nulla che non esista in natura, vi posso rivelare che l’occhio già funzionava più o meno così molto prima dell’elettronica.

La retina, lo sappiamo tutti, fa una cosa che è più o meno il complementare di quello che fa il monitor, ovvero trasforma il segnale luminoso (cioè la luce che entra nell’iride-pupilla) in mattoncini, e lo fa circa 30 volte al secondo.

Tutti avete almeno una volta nella vita riempito con dell’acqua una vaschetta per il ghiaccio: avete fatto quello che fa la luce (che si comporta come l’acqua) con la vostra retina (che si comporta come la vaschetta). Poi, i mattoncini (i cubetti di ghiaccio) vengono inviati al cervello che la “interpreta”, cioè capisce cosa sta avvenendo là fuori.

I “cubetti” hanno natura elettrica, vengono inviati al cervello come correnti.

Per rendere la metafora un po’ più chiara ci spostiamo nel mondo dolciario.

Nel video qui sotto, gli stampi sono la retina, la crema è la luce.

Appena la retina cattura la luce (la crema va nello stampo), la manda al cervello (lo stampo con la crema va nel forno) per elaborarla. Il risultato è un muffin, ovvero ciò che noi vediamo.

Ricapitolando:

  • La luce entra dalla pupilla
  • Viene captata dalla retina 30 volte al secondo
  • Viene convertita in una catena “ordinata” di piccoli mattoncini
  • Inviata al cervello
  • Eseguita elaborazione cognitiva, interpretazione e memorizzazione.

Ecco, questa è la human vision. Se la stessa cosa la fa un computer attraverso una fotocamera, si chiama computer vision, o machine vision.

  • La luce entra dalla pupilla fotocamera
  • Viene captata dalla retina da un sensore 30 da decine a centinaia di volte al secondo
  • Viene convertita in una catena “ordinata” di piccoli mattoncini
  • Inviata al cervello processore
  • Eseguita elaborazione cognitiva, interpretazione e memorizzazione.

La computer vision fa più o meno il contrario di quello che fa un produttore di videogiochi: il secondo produce contenuti digitali per renderli disponibili al mondo fisico, il primo analizza il mondo fisico per trasformare alcune sue parti in contenuti digitali.

C’è da fare un’altra importante considerazione. La computer vision cattura la realtà e la rielabora in digitale, ma la domanda fondamentale è

“Come fa un computer a dirci esattamente cosa c’è nell’immagine che ha elaborato?”

Il cuore di tutto sta nel cercare di riprodurre i meccanismi di “elaborazione cognitiva ed interpretazione” delle capacità umane, in pratica quello che – senza nessuno sforzo – state facendo in questo momento.

Vi posso assicurare che l’interpretazione cognitiva è una cosa molto difficile da “insegnare ad un computer”, soprattutto perché nella computer vision (così come nell’Intelligenza Artificiale di cui è solo una branca) si cerca di emulare la caratteristica dell’intelligenza umana più complicata di tutte: la capacità di astrazione.

UN TRICICLO NON E’ UNA SEDIA.

A suo tempo, facevo sempre questo esempio.

Immaginiamo che un bambino ci chieda “che cos’è una sedia?”.
Voi sapete cos’è una sedia, vero? Sapete riconoscere una sedia, sicuramente.
Adesso vi chiedo di spiegare al bambino cos’è una sedia come fa il vostro cervello a riconoscere una sedia; in altri termini vi chiedo di descrivere una sedia e di darmi una descrizione che valga per tutte le sedie del mondo. “E’ una cosa di legno con quattro gambe, una seduta e uno schienale”. No, le sedie possono essere in ferro, e avere tre gambe. Possono anche non avere uno schienale, nel qual caso si chiamano sgabelli, ma pur sempre nella categoria “sedia” rientrano. Poi ci sono le sedie da ufficio, con un albero centrale e le rotelle. Restano delle sedie.

Il fatto è che il nostro cervello ha la capacità di astrarre, ovvero definire una categoria anche senza aver fatto una specifica esperienza. Infatti, anche se non vi ci siete mai seduti e non le abbiate mai viste prima, sono convinto che non abbiate nessun dubbio nel dire che quelle che seguono sono sedie.  E allora, qual è dunque la caratteristica che le accomuna?

Forse osservandole possiamo provare ad ipotizzare che il nostro cervello abbia in qualche modo fatto la sintesi dell’idea di sedia come
“qualsiasi cosa abbia una superficie piana ad una altezza ragionevole per sedersi”.

Allora anche un triciclo è una sedia?

No, perché ha le ruote. Ma abbiamo appena visto che anche la sedia da ufficio ne ha, pur continuando ad essere una sedia e non un triciclo.

La cosa assolutamente incredibile della mente umana, è che se anche voi non siete in grado di spiegare la bambino cos’è una sedia, dategli qualche mese di tempo e quel bambino riuscirà ad astrarre l’idea di sedia semplicemente dalla sua esperienza: non dovrà sedersi su tutte le sedie del mondo, ma saprà riconoscere tutte le sedie del mondo.

Questa capacità non è data ai computer. Ai computer bisogna dare delle regole affinchè facciano il loro lavoro.

Quindi se volete che un computer riconosca una sedia non potete lasciare che vada in giro per il mondo ad impararlo, ma dovete dirgli come deve fare.

Il punto è:

dovete estrarre una caratteristica principale che abbia un valore universale, in modo tale da dire ad un computer “quando vedi questa cosa allora è una sedia”.

Questa operazione si chiama “feature extraction”, ed è alla base di qualsiasi meccanismo di apprendimento automatico, qualsiasi algoritmo o engine di Intelligenza Artificiale. In realtà, la regola può anche non essere esplicita, ma ricavata attraverso un set di dati di addestramento già pre-categorizzati (prior knowledge), nel qual caso si parla di supervised learning.

In effetti le caratteristiche che possono essere usate sono tantissime, spesso basate su operatori matematici più o meno complessi: forma, vicinanza, colore, comportamento nel tempo, analisi di frequenza, dimensioni.

Tutte queste caratteristiche devono al contempo essere “corrette” in base alla temperatura dell’illuminante, della posizione relativa rispetto al punto di osservazione e della prospettiva.

> Esempio <
La particolare tonalità di rosso molto saturo nel caso dei cartelli stradali li rende molto semplici da identificare in caso di uno stream video realizzato in ambiente stradale di giorno.
Alla stessa maniera, in vari ambiti, esiste un “rettangolo bianco con dei codici alfanumerici” che in condizioni di illuminazione non particolarmente sfavorevoli è piuttosto semplice da interpretare. Vi dice qualcosa?

Vi diamo un aiuto, parliamo di un foglio di carta contenente un qualunque testo.

Sapete che grazie alla computer vision è possibile far riconoscere a un’app o a un computer cosa c’è scritto su quel foglio?

Se la cosa vi incuriosisce ne parleremo in modo più approfondito nel prossimo post, quindi seguiteci sul blog e su Facebook