Computer Vision

Nell’articolo di oggi parliamo di Computer Vision: vediamo cos’è, come funziona, quali sono i suoi principali algoritmi e task.

computer vision
Immagine di Pixabay

In questo blog ho spesso parlato di NLP, per una vicinanza di interessi e di attività professionali.

Il Natural Language Processing non è però l’unico ambito in cui poter applicare il Machine Learning e in particolare il Deep Learning, anzi. Ne esistono molti altri, tra cui la Computer Vision, che si occupa del processamento delle immagini.

Oggi parliamo di Computer Vision e lo facciamo cercando di spiegare cos’è, come funziona, quali sono i suoi principali algoritmi e task.

  • Computer Vision: cos’è
  • Come funziona
  • Algoritmi di Computer Vision: CNN
  • Principali task della Computer Vision:
    • Image Classification
    • Object Detection
    • Image Segmentation
  • AI Generativa

Computer Vision: cos’è

La Computer Vision è uno specifico campo dell’intelligenza artificiale che si occupa di processare le immagini.

La Computer Vision si basa infatti sullo sviluppo di algoritmi e modelli che consentono alle macchine di analizzare e interpretare le immagini in modo simile alla percezione umana. Ciò significa non solo riconoscere oggetti, persone o luoghi, ma anche comprendere contesti, movimenti e dettagli visivi complessi.

Una citazione che ho sempre trovato interessante per descriverla è la seguente:

Computer vision is concerned with the automatic extraction, analysis and understanding of useful
information from a single image or a sequence of images. It involves the development of a theoretical
and algorithmic basis to achieve automatic visual understanding.

The British Machine Vision Association and Society for Pattern Recognition Retrieved February 20, 2017

Il suo obiettivo principale è quindi quello di estrarre informazioni importanti ed utili dalle immagini.

Come funziona

Non è banale rispondere alla domanda come funziona la Computer Vision, ma possiamo provare a dare qualche riferimento.

In prima istanza, si può cercare di spiegare come fa una macchina a “vedere”.

Un’immagine digitale per il computer altro non è che una griglia di numeri in cui in ogni cella della griglia avremo numeri che variano da 0 a 255 in base alle scale di grigio presenti nell’immagine. Questi numeri sono i pixel dell’immagine.

Così appare il modo in cui il computer “vede” l’immagine:

computer vision

Nel caso di un’immagine in bianco e nero, avremo una matrice di pixel. Nel caso invece di un’immagine a colori, avremo un tensore, ovvero una lista di matrici che hanno lo stesso numero di righe e di colonne. I tensori sono infatti matrici di terzo ordine, poiché fanno riferimento ai tre canali di colore (RGB: red, green e blue).

Algoritmi di Computer Vision: CNN

Ora che sappiamo cos’è la Computer Vision e abbiamo un’idea di come possa “vedere” un’immagine la macchina, possiamo iniziare a ragionare su quali algoritmi possa utilizzare per svolgere analisi sulle immagini.

Lavorando con matrici o con tensori (che abbiamo visto essere un tipo particolare di matrice), possiamo lavorare sia nell’ambito del Machine Learning, sia nell’ambito del Deep Learning.

Del resto, i casi che abbiamo fin qui analizzato, come per esempio quello del Churn, non lavorano sempre su matrici?

La classica tabella pandas o il file csv altro non sono che matrici di numeri, su cui possiamo applicare algoritmi come Alberi Decisionali, Random Forest o Naive Bayes.

Con le immagini però conviene utilizzare altri tipi di algoritmi, che provengono dal Deep Learning.

In particolare, le reti neurali utilizzate per questi task sono le CNN, ovvero Convolutional Neural Network.

Queste reti particolari sono state sviluppate nel 1980 da Kunihiko Fukushima, e presentano tre strati:

Strato Convolutivo

Questo strato non è altro che un filtro che viene applicato ad un’immagine, viene applicato a delle porzioni di immagine fino a coprire tutta la sua superficie, spostandosi come se fosse una finestra.

I filtri scansionano l’immagine, eseguendo operazioni di convoluzione che rilevano bordi, texture e altre caratteristiche.

Strato Convolutivo

Questi strati riducono la dimensione spaziale dell’output dalla convoluzione, mantenendo le caratteristiche salienti. Il pooling può essere eseguito attraverso operazioni come il max pooling, che prende il valore massimo in una determinata finestra dell’immagine, riducendone la dimensione.

Strati completamente connessi

Questi strati agiscono come un classificatore finale, processando le caratteristiche estratte dalle fasi precedenti per fare la classificazione delle immagini.

E’ questo lo strato di inferenza, che utilizza tutto ciò che è stato precedentemente elaborato per realizzare la predizione.

Principali task della Computer Vision

Ci sono molti task che possono essere eseguiti in ambito computer vision, anche se ce ne sono alcuni che sono più utilizzati e celebri di altri.

Vediamo quali sono i più utilizzati e cerchiamo di descriverli brevemente.

image classification

Per Image Classification si intende la capacità di un determinato algoritmo di assegnare ad un’immagine data un’etichetta che classifichi quell’immagine.

Il caso più sdoganato e quello di “cani e gatti”. Do al programma un’immagine di un cane e mi aspetto che il programma riconosca che è un cane e non un gatto.

L’Image Classification, come si evince facilmente dalla seconda parte del nome, è un “semplice” caso di classificazione. L’algoritmo deve essere addestrato dando immagini per il training e associando ad ogni immagine l’etichetta corretta, esattamente come faremo per un normale caso di classificazione nel Machine Learning.

Object detection

L’Object Detection assegna molteplici classificazioni nell’immagine, localizzando l’oggetto di interesse.

Nel caso di un’immagine contenente un cane e un gatto per esempio, un algoritmo di OD sarebbe in grado di classificare i pixel che hanno il gatto come “gatto” e quelli del cane come “cane”, localizzando la predizione non a tutta l’immagine ma solo ai pixel realmente interessati dalle classi.

L’output di un algoritmo di Object Detection è una delle buzz word dell’AI: bounding box. Questi rettangoli altro non sono che il contorno (sotto forma di rettangolo) dell’oggetto trovato all’interno dell’immagine.

Image Segmentation

L’Image Segmentation si occupa di ricostruire le forme degli oggetti riconosciuti.

Mentre nell’Object Detection si estraggono i bounding box degli oggetti, nell’Image Segmentation si estrae la sagoma dell’oggetto estratto, che permette di compiere operazioni molto più precise e sofisticate.

Esistono tre diversi tipi di segmentation: semantic, istance e panoptic.

AI Generativa

Nell’ultimo anno si è parlato molto di AI Generativa, soprattutto grazie all’esplosione degli LLM ma non solo.

Anche la computer vision è stata infatti interessata da questo evento, con la generazione di immagini sempre più realistiche.

In particolare, si sono costruito modelli di tipo text-to-image che, a partire da un promt, sono in grado di generare immagini che seguano le indicazioni fornite.

I modelli più famosi sono Midjourney, DALL-E e Stable Diffusion.

Alla base di questi modelli ci sono le reti GAN, ovvero le in cui due reti neurali vengono addestrate in maniera competitiva. Questo tipo di framework permette alla rete neurale di apprendere come generare nuovi dati aventi la stessa distribuzione dei dati usati in fase di addestramento.

Se trovi questi articoli interessanti, seguimi anche sui social –> Davide Nardini