07/10/2019

AISeries - Machine Vision 1

Benvenuti al primo articolo di una serie relativo all’analisi dell’immagine. Quando si pensa ad elaborazione di immagine, sono diverse le parole che vengono in mente: Computer Vision, Machine Vision,…

I concetti sono similari, ma vi sono delle differenze che possiamo così elencare:

  • Computer Vision: è considerato un ambito più informatico, in cui si cerca di far compiere al computer un task normalmente effettuato da un uomo, come contare il numero di persone in una immagine o verificare il passaggio di una auto in una zona non permessa.

  • Machine Vision: è un campo più legato alla system engineering, in cui si integrano le tecniche di visione artificiale con altre tecnologie al fine di implementare soluzioni di ispezione automatica di pezzi, guida autonoma o controllo di processo, prevalentemente nel settore industriale

  • Image Processing: è un processo nel quale l’immagine viene processata con l’obbiettivo di rendere l’informazione più visibile. Può essere considerata come una fase di filtraggio del dato che non prevede l’estrazione di una informazione di alto livello.

Affrontare un problema di Visione Artificiale prevede affrontare una serie di tematiche spesso anche molto distanti dal mondo dell’informatica e/o dell’ingegneria, come visibile nell’immagine in Figura 1.

Figura 1: Tematiche coinvolte in un progetto di Visione Artificiale
Figura 1: Tematiche coinvolte in un progetto di Visione Artificiale

La Visione Artificiale nasce negli anni ’60, quando Lawrence Roberts pubblicò l’articolo “Machine Perception Of Three-Dimensional Solids” , in cui investigò le modalità per estrarre informazioni su oggetti 3D da immagini 2D.
Sempre in quegli anni, ed in particolare nel 1966, Seymour Papert organizzò il famoso “The Summer Vision Project” al MIT, in cui assegnò a degli studenti il compito di lavorare sulla segmentazione di background/foreground e degli oggetti presenti nell’immagine.

Quindi, pur non essendo un campo di lavoro recente, come mai negli ultimi anni, soprattutto in campo industriale, tutti parlano di Visione Artificiale, stiamo forse vivendo un Hype tecnologico? Per rispondere a questa domanda ci avvaliamo di un challenge disponibile online, detto ImageNet (http://www.image-net.org/). ImageNet è un dataset fornito dall’università di Princeton in cui sono presenti circa 1.5 milioni di fotografie contenenti circa 1000 classi di oggetto. L’obbiettivo è quindi quello di creare un algoritmo che sia in grado di osservare l’immagine e di fornire in output le classi di oggetto presenti nell’immagine. Questo dataset è stato utilizzato come benchmark per testare le performance dei migliori algoritmi di classificazione realizzati nel mondo.


Figura 2: Risultati competizione ImageNet
Figura 2: Risultati competizione ImageNet

Nell’immagine in Figura 2 possiamo osservare le performance ottenute dal 2010 al 2015. Osservando da destra a sinistra la nostra immagine, notiamo come l’errore di classificazione (l’errore commesso dall’algoritmo) sia notevolmente diminuito negli ultimi anni. Curioso anche notare come le performance nel 2015 sono scese al di sotto delle performance medie di un umano, con solo il 3.57% di errore. Ma cosa è successo nel 2012 che ha portato ad avere un brusco calo, dal 25.8% al 16.4%?

Quello che è successo è stato l’avvento di due nuove tecnologie, una hardware ed una software:

  1. GPU

  2. Convolutional Neural Network

In realtà, delle due, la più importante è stato l’avvento delle GPU, che hanno abilitato la possibilità di allenare reti neurali più complicate e deep permettendo il raggiungimento di performance migliori. Le CNN, sono particolari tipi di reti neurali, che han permesso di raggiungere risultati ben al di sopra delle performance precedenti in numerosi compiti di Visione Artificiale. Anche se scoperte negli anni ‘90, solo recentemente, grazie anche a progressi della ricerca nel campo dell’ottimizzazione, è stato possibile utlizzare tali reti su una vasta gamma di problemi.

Quali sono dunque, i task che han beneficiato dell’avvento delle GPU e delle CNN?

  • Object Classification: che tipi di oggetti sono presenti nell’immagine?

  • Object Detection: quali oggetti sono presenti nella foto e dove sono localizzati?

  • Object Segmentation: quali pixel corrispondono a determinati oggetti?

  • Image Captioning: come possiamo descrivere l’immagine?

Queste differenti task sono visualizzati nell’immagine in Figura 3. Questi sono i primi ed i principali task che han beneficiato delle innovazioni nell’ambito della visione artificiale. Ne esistono poi numerosi altri, che verranno descritti negli ultimi articoli di questa serie.

Figura 3: Differenti task di analisi dell’immagine
Figura 3: Differenti task di analisi dell’immagine

Nella prossimo articolo, inizieremo ad affrontare la tematica relativa alla rappresentazione digitale dell’immagine e le prime elaborazioni necessarie ad affrontare un problema di machine vision. Successivamente verranno descritte alcune tecniche classiche che mostrano come veniva fatta visione artificiale fino al 2012 per poi passare alle tecniche attualmente stato dell’arte.