Image Classification nella Computer Vision

In questo articolo parliamo dell’Image Classification nell’ambito della computer vision. Vediamo di che task si tratta e come funziona.

Image Classification
Foto di Pixabay

La Computer Vision è quella branca dell’AI che si occupa del processamento e dell’analisi delle immagini.

Si occupa di moltissimi task che hanno tra di loro analogie e differenze.

Tra i task più importanti e comuni c’è quello dell’Image Classification, che oggi andiamo a spiegare e di cui cercheremo di mettere in risalto le analogie e differenze soprattutto con l’Object Detection.

Computer Vision

Prima di iniziare a parlare di Image Classification, facciamo una piccola introduzione sulla Computer Vision.

Per Computer Vision si intende un campo di studi interdisciplinare che studia algoritmi e tecniche per permettere ai computer di riprodurre funzioni e processi dell’apparato visivo umano.

E’ un po’ l’analogo dell’NLP in ambito visione.

Naturalmente non si tratta solo di riuscire a riconoscere oggetti, persone o animali all’interno di un’immagine o magari da un video (che è già di per sé un task non semplicissimo), ma soprattutto di estrarre informazioni utili per la loro elaborazione. In alcuni casi infatti lo sforzo maggiore è quello di ricostruire il contesto in cui l’immagine è calata.

Image Classification

L’Image Classification è la capacità di un algoritmo di Intelligenza Artificiale di classificare un’immagine tramite un set di etichette predefinite, chiamate “classi”.

Il caso più comune di Image Classification nel Machine Learning e quello di riconoscere immagini di cani e gatti o di riconoscere dei numeri scritti a mano, famoso con il nome di Digit Recognizer.

L’Image Classification è quindi un esempio di classificazione, dove l’obiettivo è quello di classificare un’immagine. Tale classificazione può essere binaria o multiclasse, a seconda del compito che dobbiamo svolgere.

Nel caso dei cani e gatti per esempio è una classificazione binaria (cane o gatto appunto), nel caso dei digit invece è multiclasse (dal numero 0 al numero 9).

Image Classification

Algoritmi di Image Classification

Per svolgere algoritmi di Image Classification possono essere usati molti algoritmi differenti.

Tra i notebook delle competition di Kaggle che si occupano di questo task infatti potrete trovare molte implementazioni di algoritmi come gli Alberi DecisionaliRandom Forest o Naive Bayes.

Solitamente però gli algoritmi più usati per Image Classification, quelli che poi risultano anche più performanti, sono le reti neurali convolutive o convoluzionali, abbreviate a CNN.

Questo tipo di algoritmo di Deep Learning offre ottime performance quando si trova a lavorare con le immagini. Se vuoi approfondirne il funzionamento, ti consiglio di leggere l’articolo sopracitato sulla Computer Vision, in cui spiego il funzionamento di una CNN.

Applicazioni

Sono molti i campi di applicazione dell’Image Classification. Alcuni dei più interessanti possono essere i seguenti.

Agricoltura

Grazie all’Image Classification posso per esempio fotografare la foglia di una pianta e riconoscere quale malattia abbia, oppure monitorare tramite telecamere e droni lo stato di salute delle piante, creandone statistiche e analisi avanzate.

Medicina

Esiste un’intero settore della medicina chiamato “diagnostica per immagini” che si occupa di svolgere diagnosi attraverso l’utilizzo delle immagini.

In questo settore l’Image Classification potrebbe apportare un contributo fondamentale, riconoscendo per esempio una malattia da una lastra.

Sicurezza

Il riconoscimento di un rogo per esempio da un’immagine satellitare potrebbe permettere un tempestivo intervento da parte delle autorità che potrebbe risultare fondamentale per la sicurezza delle persone e dell’ambiente.

Image Classification VS Object Detection

L’Image Classification è sicuramente un task molto utile ed interessante, ma non è esente da limitazioni e bisogna imparare a distinguerlo da ciò che non è, come per esempio l’Object Detection.

Per esempio, se nell’immagine che mostro all’algoritmo ci sono sia un cane che un gatto?
E se invece c’è una parmigiana di melanzane?

L’algoritmo risponderà solo per le classi addestrate, senza “segmentare” l’immagine o riconoscere più oggetti. L’Image Classification infatti assegna una sola classe a tutta l’immagine.

Il task che si occupa di assegnare una classe solo a porzioni di immagine è l’Object Detection, che riesce a riconoscere oggetti nella figura.

Image Classification vs Object Detection

L’Object Detection restituisce una lista di oggetti che riconosce all’interno di un’immagine, mentre nel caso di classificazione dell’immagine (lo ripetiamo) una classe per tutta l’immagine.

Tramite algoritmi di Object Detection possiamo per esempio identificare e separare oggetti uguali o diversi, contandoli e separandoli dall’ambiente.