Guida alla segmentazione delle immagini

L'attività Segmenter di immagini MediaPipe consente di suddividere le immagini in regioni in base a categorie predefinite. Puoi utilizzare questa funzionalità per identificare oggetti o texture specifici, quindi applicare effetti visivi come la sfocatura dello sfondo. Questa attività include diversi modelli addestrati specificamente per segmentare le persone e le loro caratteristiche all'interno dei dati delle immagini, tra cui:

  • Persona e sfondo
  • Solo capelli delle persone
  • Capelli, viso, pelle, abiti e accessori di una persona

Questa attività opera sui dati di immagine con un modello di machine learning (ML) con immagini singole o uno stream video continuo. Restituisce un elenco di regioni segmentate, che rappresentano oggetti o aree in un'immagine, a seconda del model scelto.

Prova!

Inizia

Inizia a utilizzare questa attività seguendo una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per piattaforma illustrano un'implementazione di base di questa attività, inclusi un modello consigliato ed un esempio di codice con le opzioni di configurazione consigliate:

Dettagli attività

Questa sezione descrive le funzionalità, gli input, gli output e le opzioni di configurazione di questa attività.

Funzionalità

  • Elaborazione dell'immagine in input: l'elaborazione include la rotazione, il ridimensionamento, la normalizzazione e la conversione dello spazio colore delle immagini.
Input attività Output attività
L'input può essere uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Il segmento di immagini restituisce dati di immagine segmentati, che possono includere uno dei seguenti elementi o entrambi, a seconda delle opzioni di configurazione impostate:
  • CATEGORY_MASK: un elenco contenente una maschera segmentata come immagine in formato uint8. Ogni valore di pixel indica se fa parte di una categoria di segmento specifica supportata dal modello.
  • CONFIDENCE_MASK: un elenco di canali contenenti una maschera segmentata con valori di pixel in formato float32. Ogni valore di pixel indica il livello di confidenza che fa parte di una categoria specifica supportata dal modello.

Opzioni di configurazione

Questa attività prevede le seguenti opzioni di configurazione:

Nome opzione Descrizione Intervallo di valori Valore predefinito
running_mode Imposta la modalità di esecuzione per l'attività. Esistono tre modalità:

IMAGE: la modalità per gli input di singole immagini.

VIDEO: la modalità per i fotogrammi decodificati di un video.

LIVE_STREAM: la modalità per un live streaming di dati di input, ad esempio da una videocamera. In questa modalità, resultListener deve essere chiamato per configurare un listener per ricevere i risultati in modo asincrono.
{IMAGE, VIDEO, LIVE_STREAM} IMAGE
output_category_mask Se impostato su True, l'output include una maschera di segmentazione come immagine uint8, in cui ogni valore di pixel indica il valore della categoria vincente. {True, False} False
output_confidence_masks Se impostato su True, l'output include una maschera di segmentazione come immagine con valore in virgola mobile, in cui ogni valore in virgola mobile rappresenta la mappa del punteggio di confidenza della categoria. {True, False} True
display_names_locale Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nei metadati del modello dell'attività, se disponibili. Il valore predefinito è en per l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato utilizzando l'API Metadata Writer di TensorFlow Lite Codice impostazioni internazionali it
result_callback Imposta il listener dei risultati per ricevere i risultati di segmentazione in modo asincrono quando il segmenter di immagini è in modalità live streaming. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM N/A N/A

ottimizzabili

Il segmento di immagini può essere utilizzato con più modelli ML. La maggior parte dei seguenti modelli di segmentazione è creata e addestrata per eseguire la segmentazione con immagini di persone. Tuttavia, il modello DeepLab-v3 è stato creato come segmenter di immagini per uso generico. Seleziona il modello più adatto alla tua applicazione.

Modello di segmentazione selfie

Questo modello può segmentare il ritratto di una persona e può essere utilizzato per sostituire o modificare lo sfondo di un'immagine. Il modello produce due categorie: sfondo all'indice 0 e persona all'indice 1. Questo modello ha versioni con diverse forme di input, tra cui la versione quadrata e una versione orizzontale, il che potrebbe essere più efficiente per le applicazioni in cui l'input è sempre questa forma, ad esempio le videochiamate.

Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versions
Segmento per selfie (quadrato) 256 x 256 numero in virgola mobile 16 informazioni Più recente
Segmento per selfie (orizzontale) 144 x 256 numero in virgola mobile 16 informazioni Più recente

Modello di segmentazione dei capelli

Questo modello prende l'immagine di una persona, individua i capelli sulla testa e genera una mappa di segmentazione dell'immagine per i capelli. Puoi usare questo modello per ricolorare i capelli o applicare altri effetti. Il modello restituisce le seguenti categorie di segmentazione:

0 - background
1 - hair
Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versions
HairSegmenter 512 x 512 Nessuna (float32) informazioni Più recente

Modello di segmentazione per selfie multiclasse

Questo modello scatta l'immagine di una persona, individua aree per diverse aree come capelli, pelle e indumenti, e genera una mappa di segmentazione dell'immagine per questi elementi. Puoi utilizzare questo modello per applicare vari effetti alle persone nelle immagini o nei video. Il modello restituisce le seguenti categorie di segmentazione:

0 - background
1 - hair
2 - body-skin
3 - face-skin
4 - clothes
5 - others (accessories)
Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versions
SelfieMulticlass (256 x 256) 256 x 256 Nessuna (float32) informazioni Più recente

Modello DeepLab-v3

Questo modello identifica i segmenti per varie categorie, tra cui sfondo, persona, gatto, cane e pianta in vaso. Il modello usa il pooling atroso delle piramidi spaziali per acquisire informazioni su intervalli più lunghi. Per maggiori informazioni, consulta DeepLab-v3.

Nome modello Forma di input Tipo di quantizzazione Versions
DeepLab-V3 257 x 257 Nessuna (float32) Più recente

Benchmark attività

Ecco i benchmark delle attività per l'intera pipeline basati sui modelli preaddestrati precedenti. Il risultato della latenza è la latenza media su Pixel 6 con CPU / GPU.

Nome modello Latenza CPU Latenza GPU
Segmento per selfie (quadrato) 33,46 ms 35,15 ms
Segmento per selfie (orizzontale) 34,19 ms 33,55 ms
HairSegmenter 57,90 ms 52,14 ms
SelfieMulticlass (256 x 256) 217,76 ms 71,24 ms
DeepLab V3 123,93 ms 103,30 ms