Segmentazione

La segmentazione dell'immagine è il processo di partizione di un'immagine digitale in più segmenti (insiemi di pixel, noti anche come oggetti immagine). L'obiettivo della segmentazione è semplificare e/o modificare la rappresentazione di un'immagine in qualcosa che sia più significativo e più facile da analizzare.

L'immagine seguente mostra l'output del modello di segmentazione dell'immagine su Android. Il modello creerà una maschera sugli oggetti target con elevata precisione.

Iniziare

Se non conosci TensorFlow Lite e lavori con Android o iOS, ti consigliamo di esplorare le seguenti applicazioni di esempio che possono aiutarti a iniziare.

Puoi sfruttare l'API predefinita dalla libreria di attività di TensorFlow Lite per integrare i modelli di segmentazione delle immagini in poche righe di codice. È inoltre possibile integrare il modello utilizzando l' API Java dell'interprete TensorFlow Lite .

L'esempio Android seguente mostra l'implementazione per entrambi i metodi rispettivamente come lib_task_api e lib_interpreter .

Visualizza esempio Android

Visualizza esempio iOS

Se stai utilizzando una piattaforma diversa da Android o iOS, o hai già familiarità con le API di TensorFlow Lite , puoi scaricare il nostro modello di segmentazione dell'immagine di base.

Scarica il modello di avviamento

Descrizione del Modello

DeepLab è un modello di apprendimento profondo all'avanguardia per la segmentazione semantica dell'immagine, in cui l'obiettivo è assegnare etichette semantiche (ad es. persona, cane, gatto) a ogni pixel dell'immagine di input.

Come funziona

La segmentazione semantica dell'immagine prevede se ogni pixel di un'immagine è associato a una determinata classe. Ciò è in contrasto con il rilevamento degli oggetti , che rileva gli oggetti in regioni rettangolari, e la classificazione delle immagini , che classifica l'immagine complessiva.

L'attuale implementazione include le seguenti funzionalità:

  1. DeepLabv1: Usiamo la convoluzione atrosa per controllare esplicitamente la risoluzione alla quale le risposte delle caratteristiche vengono calcolate all'interno delle reti neurali convoluzionali profonde.
  2. DeepLabv2: utilizziamo il pooling a piramide spaziale atrous (ASPP) per segmentare in modo robusto oggetti su più scale con filtri a più frequenze di campionamento e campi visivi efficaci.
  3. DeepLabv3: abbiamo aumentato il modulo ASPP con la funzione a livello di immagine [5, 6] per acquisire informazioni a lungo raggio. Includiamo anche parametri di normalizzazione batch [7] per facilitare l'addestramento. In particolare, applichiamo la convoluzione atmosferica per estrarre le caratteristiche di output a diversi passi di output durante l'allenamento e la valutazione, che consente in modo efficiente l'allenamento BN con output stride = 16 e raggiunge prestazioni elevate con output stride = 8 durante la valutazione.
  4. DeepLabv3+: estendiamo DeepLabv3 per includere un modulo decodificatore semplice ma efficace per perfezionare i risultati della segmentazione soprattutto lungo i confini degli oggetti. Inoltre, in questa struttura encoder-decodificatore è possibile controllare arbitrariamente la risoluzione delle caratteristiche dell'encoder estratte mediante un'eccessiva convoluzione per compensare precisione e runtime.

Benchmark delle prestazioni

I numeri dei benchmark delle prestazioni vengono generati con lo strumento qui descritto .

Nome del modello Dimensioni del modello Dispositivo GPU processore
Deeplab v3 2,7 Mb Pixel 3 (Android 10) 16 ms 37 ms*
Pixel 4 (Android 10) 20 ms 23 ms*
iPhone XS (iOS 12.4.1) 16 ms 25 ms**

* 4 fili usati.

** 2 thread utilizzati su iPhone per il miglior risultato in termini di prestazioni.

Ulteriori letture e risorse