Computer Vision: uno sguardo attraverso l’Occhio Digitale

Computer vision

La Computer Vision è un campo dell’Intelligenza Artificiale (AI) che cerca di imitare l’innata capacità dell’occhio umano di riconoscere patterns.

Negli ultimi anni è diventata un’importante tecnologia abilitante al servizio delle big companies ed in alcuni casi essenziale al loro core business.

 

È il caso ad esempio di Tesla, proiettata a chiudere il 2020 con un guadagno di oltre 2 miliardi di dollari derivante dalla vendita del suo software di guida autonoma (fonte Trefis).

Grazie ad importanti  sviluppi delle Neural Networks e dei frameworks dedicati al Deep Learning, l’utilizzo della Computer Vision apre nuove prospettive anche per aziende di piccole e medie dimensioni. Esistono infatti diverse soluzioni che permettono di utilizzare sistemi già sviluppati.

La sfida principale della Computer Vision è lo sviluppo di algoritmi in grado di riconescere forme e oggetti in singole immagini o in alternativa su sequenze di “frames” (ad esempio registrazioni video). Lo sviluppo di tali sistemi si concentra principalmente in due fasi:

  1. La raccolta/preparazione dei dati;
  2. Il training dell’algoritmo.

 

Raccolta dati

La prima fase di sviluppo consiste nella raccolta e preparazione di quello che viene chiamato dataset.  Nel nostro caso una grande quantita di immagini. Gli algoritmi di Computer Vision, come ogni altro sistema digitale, operano su sequenze di bits (zero e uno).

Le immagini vengono salvate come matrici di pixels, ogni cella della matrice corrisponde ad un diverso pixel. Il valore da 0 a 255 salvato al suo interno indica il colore assegnato a quel determinato pixel. Questa rappresentazione è sufficiente per le immagini in scala di grigi. Per quanto riguarda quelle a colori, è necessario utilizzare tre matrici analoghe per ogni immagine: una per il rosso, una per il verde e una per il blu (RGB).

Spesso vengono applicate particolari trasformazioni alle immagini sia per ridurne la dimesione che per facilitare il processo di training successivo.

Come un’immagine è salvata in memoria

Training

Successivamente all’acquisizione, avviene il training dell’algoritmo. Le architetture più utilizzate ad oggi sono le Convolutional Neural Networks.

Durante questa fase la rete “impara” a riconoscere patterns ricorrenti all’interno delle immagini. Differenti oggetti avranno differenti caratterestiche uniche che verranno utilizzate per riconoscerli. In linea di principio questo meccanismo è analogo a quello dell’occhio umano, che riesce a distinguere varie forme concentrandosi su dettagli particolari.

Alla rete sono dati in input batch di immagini differenti che essa utilizza per affinare sempre di più le capacità di riconoscimento, questo processo iterativo può durare molto tempo e richiedere enormi capacità di calcolo.

A training concluso, è possibile avere un’idea di ciò che l’algoritmo  “sta guardando” quando riconosce un’immagine mediante l’utlizzo delle Heat maps. è essenziale verificare le capacità dell’algoritmo servendosi di diverse metriche. Ottenere ottimi risultati sulle immagini usate per il training non garantisce infatti che esso sia in grado di generalizzare  e raggiungere le stesse performances nel mondo reale (overfitting).

Heat map generata per un classificatore che distingue tra diverse razze canine

 

Applicazioni

Le applicazione della Computer Vision sono innumerevoli. Analisi diagnostica in campo medico, manutenzione predittiva, controllo dei processi produttivi e realtà aumentata sono solo alcune delle possibilità. Gli algoritmi si dividono in  3 principali classi in base al tipo di problema che cercano di risolvere.

Classification

Dato un insieme d’immagini, ognuna appartenente a una singola categoria, lo scopo è quello di predire la categoria d’immagini mai viste prima. Questi algoritmi vengono anche chiamati classificatori. Un esempio classico è un algoritmo che riconosce se l’immagine in ingresso rappresenta un cane o un gatto.

Segmentation

Mentre nella classificazione l’output è la “probabilità di appartenere a una classe”. Nella Segmentation l’obiettivo è raggruppare tutti i pixels che corrispondono a una particolare figura. Un’applicazione tipica è il riconoscimento di edifici e strade dalle immagini aeree/satellitari.

Object Detection

In questo caso l’algoritmo cerca di “catturare” tutti gli oggetti che riconosce all’interno di un’immagine incorniciandoli all’interno di un rettangolo etichettato con il nome della classe a cui appartiene l’oggetto. Il problema si sposta da “chi è il soggetto” nell’immagine a “dove si trova”.

Classification, Object Detection e Segmentation a confronto

 

Uno sguardo al futuro

In futuro vedremo una crescita esponenziale di sistemi che intersecano diversi campi dell’intelligenza artificiale e consento applicazioni più complesse.è il caso ad esempio del Visual Question Answering che combina la Computer Vision con il NLP (natural language processing).

Nonostante l’entusiasmo giustificato degli addetti ai lavori, c’è ancora molto lavoro da fare soprattuto nella comprensione e interpretazione dei risultati forniti da questi sistemi.

La sfida più grande per il futuro della Computer Vision e del Deep Learning è senza dubbio demistificare il principio della Black Box. Nonostante i risultati senza precedenti, la nostra capacità di comprendere come questi sistemi arrivino a fornire determinate risposte è ancora limitata.

Articolo a cura di Sergio Placanica del VGen Hub Polimi