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 delle immagini 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 pronta all'uso della libreria attività TensorFlow Lite per integrare modelli di segmentazione delle immagini in poche righe di codice. Puoi anche integrare il modello utilizzando l' API Java dell'interprete TensorFlow Lite .

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

Visualizza l'esempio di Android

Visualizza l'esempio iOS

Se utilizzi una piattaforma diversa da Android o iOS o hai già familiarità con le API TensorFlow Lite , puoi scaricare il nostro modello di segmentazione delle immagini iniziali.

Scarica il modello iniziale

Descrizione del Modello

DeepLab è un modello di deep learning all'avanguardia per la segmentazione semantica delle immagini, in cui l'obiettivo è assegnare etichette semantiche (ad esempio persona, cane, gatto) a ogni pixel nell'immagine di input.

Come funziona

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

L'attuale implementazione include le seguenti funzionalità:

  1. DeepLabv1: utilizziamo la convoluzione atrous per controllare esplicitamente la risoluzione con cui le risposte delle caratteristiche vengono calcolate all'interno delle reti neurali convoluzionali profonde.
  2. DeepLabv2: Utilizziamo il pooling piramidale spaziale atroso (ASPP) per segmentare in modo robusto oggetti su più scale con filtri a frequenze di campionamento multiple e campi di vista efficaci.
  3. DeepLabv3: potenziamo il modulo ASPP con funzionalità a livello di immagine [5, 6] per acquisire informazioni a lungo raggio. Includiamo anche parametri di normalizzazione batch [7] per facilitare la formazione. In particolare, applichiamo la convoluzione atrosa per estrarre le caratteristiche di output a diversi passi di uscita durante l'allenamento e la valutazione, che consente in modo efficiente l'allenamento BN al passo di uscita = 16 e raggiunge prestazioni elevate al passo di uscita = 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 codificatore-decodificatore è possibile controllare arbitrariamente la risoluzione delle caratteristiche del codificatore estratte mediante una convoluzione atroce per bilanciare precisione e tempo di esecuzione.

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 25ms**

* 4 fili utilizzati.

** 2 thread utilizzati su iPhone per il miglior risultato prestazionale.

Ulteriori letture e risorse