Cos’è l’Image segmentation? La segmentazione di immagini è il processo applicato alle immagini per la classificazione di ogni pixel in una specifica classe, o label.
Ecco a te un semplice esempio.
Consideriamo un’immagine con due Ferrari verde, sullo sfondo delle autunnali colline toscane.
La segmentazione semantica classificherà allora ogni pixel di entrambe le auto come appartenenti alla medesima classe, lo stesso per l’aquila reale in picchiata sulla preda, nell’angolo in alto a destra della foto.
In questo caso avremo solo una classe differente.
Ora dimmi: in quali altri blog di machine learning e data science puoi trovare delle descrizioni così vivide?
Tra i problemi più annosi da affrontare nella computer vision troviamo:
- image classification, la classificazione delle immagini vecchio stile perché interessati alla sola classe degli elementi in esse contenuti.
- object detection, l’identificazione degli oggetti in un’immagine con l’aggiunta di rettangoli di selezione (bounding box) che ne individuano la posizione
- object segmentation, la distinzione degli oggetti dallo sfondo tramite l’identificazione dei loro bordi. Questa categoria si suddivide ulteriormente in Semantic Segmentation e Instance Segmentation
Ecco un’immagine riassuntiva:
Questi task, riportati in ordine, dal meno al più complesso, sono oggi completati dalle reti neurali profonde, che funzionano così, molte delle quali impiegano reti neurali convoluzionali.
Vedi, questi tre problemi hanno delle sottili differenze che è fondamentale conoscere.
Al di là di questo, oggi esaminiamo alcune operazioni più sottili e raffinate.
Seguimi: ti spiegherò cos’è la segmentazione semantica e delle istanze, senza troppe parole complicate.
Continua a leggere…
Image Segmentation | Segmentazione semantica e delle istanze
Devo spiegarti un concetto in realtà banale, e lo faccio collegandomi a un’informazione che certamente possiedi.
Ricorderai che fino a pochi anni fa, quando acquistavi uno smartphone era caccia al modello con il sensore fotografico dalla più alta risoluzione, misurata in un’unità di misura nota come MegaPixel.
Una sensore ottico da 12 MP è capace di catturare immagini aventi al massimo 12 milioni di pixel.
Un pixel è banalmente un piccolo punto colorato.
Lasciando tecnicismi da parte, devi sapere una sola cosa.
Per le immagini a colori, un pixel è digitalmente codificato da un terna di valori, uno per ciascun colore primario: rosso, verde e blu.
Il fatto che un’immagine si riduca a numeri è il concetto, spesso sottinteso, per mezzo del quale le reti neurali possono essere usare nella computer vision.
L’Image segmentation è allora il processo di classificazione di ciascun pixel dell’immagine a una classe.
Ora, devi sapere che esistono due grandi tecniche di segmentazione:
- Semantic Segmentation, o segmentazione semantica
- Instance Segmentation, o segmentazione delle istanze
Esploriamole una alla volta!
Semantic Segmentation
Cos’è la Semantic Segmentation (segmentazione semantica)?
La semantic segmentation è il processo di classificare ciascun pixel determinandone l’appartenenza a una specifica label.
Questo processo non distingue diverse istanze dello stesso oggetto.
Rileggi l’ultima frase: è la chiave per distinguere le due tipologie di image segmentation.
Possiamo allora dire che, considerando l’immagine di due ricci africani, la semantic segmentation assegnerà la stessa label (i.e. Hedgehog) a tutti i pixel di entrambi gli animali.
La semantica è per definizione quella parte della linguistica che studia il significato delle parole.
Per cui due ricci, sono semplicemente due ricci.
La segmentazione delle istanze opera a un livello più profondo.
Instance Segmentation
Cos’è l’instance segmentation (segmentazione delle istanze)?
L’instance segmentation differisce dalla semantic segmentation perché conferisce una label unica a ciascuna istanza di un particolare oggetto nell’immagine.
Il che equivale a dire, considerando la stessa immagine fittizia di cui sopra, l’instance segmentation riconosce i due ricci come entità differenti.
Ottimo.
Ecco allora un’immagine riassuntive delle due tecniche a confronto:
Solo una cosa potrebbe sfuggirci: quando?
Quando usare la semantic segmentation e l’instance segmentation?
Facciamo degli esempi di Image Segmentation.
Use-Cases of Image Segmentation
Oggi, la segmentazione di immagini è usata in molti ambiti.
Ecco gli use-cases of image segmentation (image segmentation examples):
- Riconoscimento scrittura (handwritten recognition), in questo articolo accademico è stato dimostrato come sia possibile estrarre parole e frasi da documenti scritti a mano attraverso la segmentazione semantica.
- Sfocatura sfondo (blurred background), l’AI in uno smarpthone? Sì, una rete neurale che separa i soggetti in primo piano dallo sfondo, sfocandolo per ottenere un effetto denominato Bokeh che di norma richiede costose ottiche (i.e. obiettivi della fotocamera). Lo usano pressoché tutte le aziende produttrici di smartphone. Ed è AI.
- Sostituzione sfondo (background customization), una tecnica che in questo periodo è divenuta nota grazie alla diffusione dei sistemi di teleconferenza e che si basa sullo stesso principio di cui sopra.
- Realtà aumentata (augmented reality), con applicazioni concrete nei flussi di acquisto di e-commerce. Per esempio Virtual Make-up con l’applicazione del rossetto sulle labbra dei clienti o Virtual try-on, per la prova virtuale dei vestiti grazie all’image segmentation.
- Auto a guida autonoma (self-driving cars) devono poter comprendere l’ambiente che le circonda. Per questo usando la segmentazione di imamgini per identificare linee, strade e altre informazioni essenziali.
Con quest’ultimo caso, concludiamo la lista di image segmentation use cases.
A questo link puoi invece trovare una moltitudine di risorse sulla segmentazione di immagini.
Per il momento è tutto.
Per aspera, ad astra.
Un caldo abbraccio, Andrea