Guida interattiva alla segmentazione delle immagini per Python

L'attività Interactive Image Segmenter di MediaPipe prende una posizione in un'immagine, stima i confini di un oggetto in quella posizione e restituisce la segmentazione per l'oggetto come immagine e i dati di Google Cloud. Queste istruzioni mostrano come utilizzare il segmento interattivo di immagini con il linguaggio Python lingua. Per ulteriori informazioni su funzionalità, modelli e configurazione opzioni di questa attività, consulta la Panoramica.

Esempio di codice

Il codice d'esempio del Segmentazione delle immagini interattive fornisce un'implementazione completa un'attività in Python come riferimento. Questo codice ti consente di testare l'attività e ottenere hai iniziato a creare la tua applicazione interattiva di segmentazione delle immagini. Puoi visualizza, esegui e modifica la segmentazione interattiva delle immagini esempio di codice usando solo il browser web.

Configurazione

Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e per i progetti di codice che utilizzano specificatamente la segmentazione delle immagini interattive. Per informazioni generali su configurare l'ambiente di sviluppo per l'utilizzo delle attività di MediaPipe, tra cui: i requisiti di versione della piattaforma, consulta Guida alla configurazione per Python. Puoi rivedere il codice sorgente per questo esempio su GitHub

Pacchetti

L'attività Interactive Image Segmenter di MediaPipe richiede il pacchetto mediapipe. Puoi installare delle dipendenze obbligatorie con il comando seguente:

$ python -m pip install mediapipe

Importazioni

Importa le classi seguenti per accedere alle funzioni dell'attività Segmentazione delle immagini interattive:

import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision

Modello

L'attività Interactive Image Segmenter di MediaPipe richiede un modello addestrato compatibile con questo dell'attività. Per ulteriori informazioni sui modelli addestrati disponibili per la segmentazione interattiva delle immagini, consulta nella sezione Modelli della panoramica dell'attività.

Seleziona e scarica il modello, quindi archivialo nella directory del progetto:

model_path = '/absolute/path/to/model.tflite'

Specifica il percorso del modello all'interno del parametro model_asset_path, come mostrato sotto:

base_options = BaseOptions(model_asset_path=model_path)

Crea l'attività

L'attività di segmentazione interattiva delle immagini di MediaPipe utilizza la funzione create_from_options per configurare l'attività. La funzione create_from_options accetta valori per gestire le opzioni di configurazione. Per ulteriori informazioni sulla configurazione vedi Opzioni di configurazione. Il codice seguente illustra come creare e configurare questa attività.

BaseOptions = mp.tasks.BaseOptions
InteractiveSegmenter = mp.tasks.vision.InteractiveSegmenter
InteractiveSegmenterOptions = mp.tasks.vision.InteractiveSegmenterOptions
VisionRunningMode = mp.tasks.vision.RunningMode

# Create a image segmenter instance with the image mode:
options = InteractiveSegmenterOptions(
    base_options=BaseOptions(model_asset_path='/path/to/model.task'),
    running_mode=VisionRunningMode.IMAGE,
    output_type=InteractiveSegmenterOptions.OutputType.CATEGORY_MASK)
with InteractiveSegmenter.create_from_options(options) as segmenter:
# segmenter is initialized and ready to use

Opzioni di configurazione

Questa attività include le seguenti opzioni di configurazione per le applicazioni Python:

Nome opzione Descrizione Intervallo di valori Valore predefinito
output_category_mask Se impostato su True, l'output include una maschera di segmentazione come un'immagine uint8, dove ogni valore di pixel indica se il pixel fa parte di all'oggetto situato nell'area di interesse. {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 confidenza che il pixel sia parte dell'oggetto che si trova nell'area di interesse. {True, False} True
display_names_locale Imposta la lingua delle etichette da utilizzare per i nomi visualizzati forniti nel metadati del modello dell'attività, se disponibili. Il valore predefinito è en per Inglese. Puoi aggiungere etichette localizzate ai metadati di un modello personalizzato Utilizzando l'API TensorFlow Metadata Writer Codice impostazioni internazionali it

Preparazione dei dati

Prepara l'input come file immagine o array numpy, e poi convertilo in un oggetto mediapipe.Image.

# Load the input image from an image file.
mp_image = mp.Image.create_from_file('/path/to/image')

# Load the input image from a numpy array.
mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=numpy_image)
RegionOfInterest = vision.InteractiveSegmenterRegionOfInterest
# Perform image segmentation on the provided single image.
# The image segmenter must be created with the image mode.
roi = RegionOfInterest(format=RegionOfInterest.Format.KEYPOINT,
                          keypoint=NormalizedKeypoint(x, y))
segmented_masks = segmenter.segment(mp_image, roi)

Per un esempio più completo dell'esecuzione delle inferenze della segmentazione delle immagini interattive, consulta la esempio di codice.

Gestire e visualizzare i risultati

I risultati dello strumento di segmentazione delle immagini interattive sono un elenco di dati Image e potrebbero includi una maschera di categoria, una maschera di confidenza o entrambe, a seconda di ciò che imposti quando hai configurato l'attività. Se imposti Da output_category_mask a True, l'output è un elenco contenente singole come maschera segmentata come immagine uint8. Il valore dei pixel indica se fa parte del oggetto nell'area di interesse. indice di categoria riconosciuto dell'immagine di input. Se imposti output_confidence_masks su True, l'output è un elenco di canali contenente valori di pixel nell'intervallo [0,1] che rappresentano la confidenza del pixel appartenente all'oggetto nell'area di interesse.

Le sezioni seguenti spiegano ulteriormente i dati di output di questa attività:

Maschera categoria

Le seguenti immagini mostrano una visualizzazione dell'output dell'attività per una categoria maschera di valore con un'area del punto di interesse indicata. Ogni pixel è un uint8 che indica se il pixel fa parte dell'oggetto che si trova nell'area interesse. Il cerchio in bianco e nero sulla seconda immagine indica la selezione l'area di interesse.

Output della maschera di categoria e dell'immagine originale. Immagine di origine dalla VOC Pascal 2012 del set di dati.

Maschera di confidenza

L'output per una maschera di confidenza contiene valori in virgola mobile compresi tra [0, 1] per ogni canale di input delle immagini. Valori più alti indicano una maggiore confidenza il pixel immagine è la parte dell'oggetto che si trova nell'area di interesse.