Guida alla segmentazione delle immagini

Esempi affiancati di una fotografia in primo piano di un uomo accanto alla maschera dell'immagine che ne delinea la forma

L'attività MediaPipe Image Segmenter consente di suddividere le immagini in regioni in base a categorie predefinite. Puoi utilizzare questa funzionalità per identificare oggetti o texture specifici e 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 i capelli della persona
  • Capelli, viso, pelle, abbigliamento e accessori di una persona

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

Prova!

Inizia

Per iniziare a utilizzare questa attività, segui una di queste guide all'implementazione per la tua piattaforma di destinazione. Queste guide specifiche per la piattaforma illustrano un'implementazione di base di questa attività, incluso un modello consigliato e 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 delle immagini di input: l'elaborazione include la rotazione, il ridimensionamento, la normalizzazione e la conversione dello spazio colore delle immagini.
Input delle attività Output delle attività
L'input può essere uno dei seguenti tipi di dati:
  • Immagini statiche
  • Fotogrammi video decodificati
  • Feed video in diretta
Image Segmenter genera dati sulle immagini segmentate, che possono includere uno o entrambi i seguenti elementi, a seconda delle opzioni di configurazione impostate:
  • CATEGORY_MASK: un elenco contenente una maschera segmentata come immagine in formato uint8. Ogni valore del 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 dei pixel in formato float32. Ogni valore del pixel indica il livello di certezza che fa parte di una categoria specifica supportata dal modello.

Opzioni di configurazione

Questa attività ha le seguenti opzioni di configurazione:

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

IMMAGINE: la modalità per l'inserimento 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 ascoltatore 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 del pixel indica il valore della categoria migliore. {True, False} False
output_confidence_masks Se impostato su True, l'output include una maschera di segmentazione come immagine del valore float, in cui ogni valore float 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 disponibile. Il valore predefinito è en per l'inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato utilizzando l'API TensorFlow Lite Metadata Writer Codice delle impostazioni internazionali it
result_callback Imposta l'ascoltatore dei risultati in modo da ricevere i risultati della segmentazione in modo asincrono quando lo segmentatore di immagini è in modalità LIVE_STREAM. Può essere utilizzato solo quando la modalità di esecuzione è impostata su LIVE_STREAM N/D N/D

Modelli

Lo strumento di segmentazione delle immagini può essere utilizzato con più di un modello di ML. La maggior parte dei seguenti modelli di segmentazione viene creata e addestrata per eseguire la segmentazione con immagini di persone. Tuttavia, il modello DeepLab-v3 è stato creato come segmentatore di immagini per uso generale. Seleziona il modello più adatto alla tua applicazione.

Modello di segmentazione dei 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 restituisce due categorie: sfondo all'indice 0 e persona all'indice 1. Questo modello ha versioni con forme di input diverse, tra cui una quadrata e una orizzontale, che possono essere più efficienti per le applicazioni in cui l'input è sempre di quella forma, ad esempio le videochiamate.

Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versioni
SelfieSegmenter (quadrato) 256 x 256 float 16 informazioni Ultime notizie
SelfieSegmenter (orizzontale) 144 x 256 float 16 informazioni Ultime notizie

Modello di segmentazione dei capelli

Questo modello acquisisce un'immagine di una persona, individua i capelli sulla sua testa e genera una mappa di segmentazione dell'immagine per i capelli. Puoi utilizzare questo modello per ridipingere i capelli o applicare altri effetti. Il modello genera le seguenti categorie di segmentazione:

0 - background
1 - hair
Nome modello Forma di input Tipo di quantizzazione Scheda del modello Versioni
HairSegmenter 512 x 512 Nessuno (float32) informazioni Ultime notizie

Modello di segmentazione dei selfie multiclasse

Questo modello acquisisce un'immagine di una persona, individua aree per parti diverse come capelli, pelle e abbigliamento 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 genera 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 Versioni
SelfieMulticlass (256 x 256) 256 x 256 Nessuno (float32) informazioni Ultime notizie

Modello DeepLab-v3

Questo modello identifica i segmenti per una serie di categorie, tra cui sfondo, persona, gatto, cane e pianta in vaso. Il modello utilizza la concatenazione piramidale spaziale atrous per acquisire informazioni su un intervallo più lungo. Per ulteriori informazioni, consulta DeepLab-v3.

Nome modello Forma di input Tipo di quantizzazione Versioni
DeepLab-V3 257 x 257 Nessuno (float32) Ultime notizie

Benchmark delle attività

Ecco i benchmark delle attività per l'intera pipeline in base ai modelli preaddestrati sopra indicati. Il risultato della latenza è la latenza media su Pixel 6 che utilizza CPU / GPU.

Nome modello Latenza della CPU Latenza GPU
SelfieSegmenter (quadrato) 33,46 ms 35,15 ms
SelfieSegmenter (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