L'attività MediaPipe Interactive Image Segmenter prende una posizione in un'immagine, stima i confini di un oggetto in quella posizione e restituisce la segmentazione dell'oggetto come dati dell'immagine. Queste istruzioni mostrano come utilizzare lo strumento di segmentazione delle immagini interattivo con il linguaggio Python. Per ulteriori informazioni sulle funzionalità, sui modelli e sulle opzioni di configurazione di questa attività, consulta la Panoramica.
Esempio di codice
Il codice di esempio per lo strumento di segmentazione delle immagini interattive fornisce un'implementazione completa di questa attività in Python per riferimento futuro. Questo codice ti aiuta a testare questa attività e a iniziare a creare la tua applicazione di segmentazione delle immagini interattiva. Puoi visualizzare, eseguire e modificare il codice di esempio di Segmentatore di immagini interattivo utilizzando solo il browser web.
Configurazione
Questa sezione descrive i passaggi chiave per configurare l'ambiente di sviluppo e i progetti di codice specificamente per utilizzare lo strumento di segmentazione delle immagini interattive. Per informazioni generali sulla configurazione dell'ambiente di sviluppo per l'utilizzo delle attività MediaPipe, inclusi i requisiti della versione della piattaforma, consulta la guida alla configurazione per Python. Puoi esaminare il codice sorgente di questo esempio su GitHub
Pacchetti
L'attività MediaPipe Interactive Image Segmenter richiede il pacchetto mediapipe
. Puoi installare le dipendenze obbligatorie con il seguente comando:
$ python -m pip install mediapipe
Importazioni
Importa le seguenti classi per accedere alle funzioni dell'attività di segmentazione delle immagini interattive:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Modello
L'attività di segmentazione delle immagini interattive di MediaPipe richiede un modello addestrato compatibile con questa attività. Per ulteriori informazioni sui modelli addestrati disponibili per lo strumento di segmentazione delle immagini interattive, consulta la sezione Modelli della panoramica dell'attività.
Seleziona e scarica il modello, quindi memorizzalo 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
di seguito:
base_options = BaseOptions(model_asset_path=model_path)
Crea l'attività
L'attività di segmentazione delle immagini interattive di MediaPipe utilizza la funzione create_from_options
per configurare l'attività. La funzione create_from_options
accetta valori per le opzioni di configurazione da gestire. Per ulteriori informazioni sulle opzioni di configurazione, consulta Opzioni di configurazione.
Il codice seguente mostra 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à ha 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 immagine uint8, in cui ogni valore del pixel indica se il pixel fa parte
dell'oggetto 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 float, in cui ogni valore float rappresenta la confidenza
che il pixel fa parte dell'oggetto nell'area di interesse. |
{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 |
Preparazione dei dati
Prepara l'input come file immagine o array numpy, quindi 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)
Per un esempio di codice che mostra la preparazione dei dati per lo strumento di segmentazione delle immagini interattivo, consulta l'esempio di codice.
Esegui l'attività
Lo strumento di segmentazione delle immagini interattivo utilizza la funzione segment
per attivare le inferenze. Per la segmentazione delle immagini, sono inclusi il pre-trattamento dei dati di input, l'esecuzione del modello di segmentazione e la post-elaborazione degli output non elaborati del modello nelle maschere segmentate.
Il seguente esempio di codice mostra come eseguire l'elaborazione con il modello di attività.
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 di esecuzione di inferenze di Interactive Image Segmenter, consulta l'esempio di codice.
Gestire e visualizzare i risultati
I risultati di output di Segmentazione immagini interattiva sono un elenco di dati Image
e possono includere una maschera di categoria, maschere di affidabilità o entrambe, a seconda di ciò che hai impostato quando hai configurato l'attività. Se imposti output_category_mask
su True
, l'output è un elenco contenente una singola maschera segmentata come immagine uint8. Il valore del pixel indica se fa parte dell'oggetto nell'area di interesse. indice di categoria riconosciuto dell'immagine di input. Se impostate output_confidence_masks
su True
, l'output è un elenco di canali contenenti valori di pixel compresi nell'intervallo [0,1]
che rappresentano il punteggio di confidenza del pixel appartenente all'oggetto nell'area di interesse.
Le sezioni seguenti spiegano ulteriormente i dati di output di questa attività:
Maschera delle categorie
Le seguenti immagini mostrano una visualizzazione dell'output dell'attività per una maschera di valore della categoria con un punto di interesse indicato. Ogni pixel è un valore uint8
che indica se il pixel fa parte dell'oggetto situato nell'area di
interesse. Il cerchio bianco e nero nella seconda immagine indica l'area di interesse selezionata.
Output dell'immagine originale e della maschera della categoria. Immagine di origine del set di dati Pascal VOC 2012.
Maschera di confidenza
L'output di una maschera di confidenza contiene valori di tipo float compresi tra [0, 1]
per ogni canale di input dell'immagine. Valori più elevati indicano una maggiore certezza che il pixel dell'immagine faccia parte dell'oggetto nell'area di interesse.