Interaktiver Leitfaden zur Bildsegmentierung für Python

Mit der Aufgabe „Interactive Image Segmenter“ von MediaPipe wird eine Position in einem Bild ermittelt, die Begrenzungen an diesem Ort und gibt die Segmentierung für das Objekt als Bild zurück Daten. In dieser Anleitung erfahren Sie, wie Sie den interaktiven Bildsegmentierer mit der Python- Sprache. Weitere Informationen zu Funktionen, Modellen und Konfiguration Weitere Informationen finden Sie in der Übersicht.

Codebeispiel

Der Beispielcode für Interactive Image Segmenter bietet eine vollständige Implementierung dieses in Python. Dieser Code hilft Ihnen, diese Aufgabe zu testen und mit der Entwicklung Ihrer eigenen interaktiven Anwendung zur Bildsegmentierung begonnen. Sie können Interaktive Bildsegmentierung Beispielcode ganz einfach in Ihrem Webbrowser.

Einrichtung

In diesem Abschnitt werden die wichtigsten Schritte zum Einrichten Ihrer Entwicklungsumgebung und Code-Projekte zur Verwendung des interaktiven Image Segmenter erstellen. Allgemeine Informationen zu Einrichten Ihrer Entwicklungsumgebung für die Verwendung von MediaPipe-Aufgaben, einschließlich Plattformversionsanforderungen finden Sie in der Einrichtungsleitfaden für Python Den Quellcode für dieses Beispiel finden Sie GitHub

<ph type="x-smartling-placeholder">

Pakete

Für die Aufgabe „Interactive Image Segmenter“ von MediaPipe ist das Paket mediapipe erforderlich. Sie können die mit dem folgenden Befehl die erforderlichen Abhängigkeiten:

$ python -m pip install mediapipe

Importe

Importieren Sie die folgenden Klassen, um auf die Aufgabenfunktionen "Interactive Image Segmenter" zuzugreifen:

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

Modell

Für die Aufgabe „Interactive Image Segmenter“ von MediaPipe ist ein trainiertes Modell erforderlich, für die Aufgabe. Weitere Informationen zu verfügbaren trainierten Modellen für den Interactive Image Segmenter finden Sie unter den Abschnitt Modelle in der Aufgabenübersicht.

Wählen Sie das Modell aus, laden Sie es herunter und speichern Sie es dann in Ihrem Projektverzeichnis:

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

Geben Sie den Pfad des Modells innerhalb des Parameters model_asset_path wie unten gezeigt an. unten:

base_options = BaseOptions(model_asset_path=model_path)

Aufgabe erstellen

Bei der Aufgabe „Interactive Image Segmenter“ von MediaPipe wird die Funktion create_from_options verwendet, um die Aufgabe eingerichtet haben. Die Funktion create_from_options akzeptiert Werte für die Konfigurationsoptionen. Weitere Informationen zur Konfiguration finden Sie unter Konfigurationsoptionen. Der folgende Code zeigt, wie diese Aufgabe erstellt und konfiguriert wird.

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

Konfigurationsoptionen

Diese Aufgabe bietet die folgenden Konfigurationsoptionen für Python-Anwendungen:

Option Beschreibung Wertebereich Standardwert
output_category_mask Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske Als Uint8-Bild, wobei jeder Pixelwert angibt, ob das Pixel Teil eines das Objekt, das sich im gewünschten Bereich befindet. {True, False} False
output_confidence_masks Wenn True festgelegt ist, enthält die Ausgabe eine Segmentierungsmaske als Gleitkommawert, wobei jeder Gleitkommawert den Konfidenzwert darstellt Das Pixel ist Teil des Objekts, das sich im gewünschten Bereich befindet. {True, False} True
display_names_locale Legt die Sprache der Labels fest, die für Anzeigenamen in der Metadaten des Aufgabenmodells, falls verfügbar. Standardwert ist en für Englisch. Sie können den Metadaten eines benutzerdefinierten Modells lokalisierte Labels hinzufügen mit der TensorFlow Lite Metadata Writer API Gebietsschemacode de

Daten vorbereiten

Bereiten Sie Ihre Eingabe als Bilddatei oder als NumPy-Array vor. Konvertieren Sie es dann in ein mediapipe.Image-Objekt.

# 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)

Ein ausführlicheres Beispiel für die Ausführung von Interactive Image Segmenter-Inferenzen finden Sie auf der Codebeispiel an.

Ergebnisse verarbeiten und anzeigen

Die Ausgabeergebnisse für Interactive Image Segmenter sind eine Liste von Image-Daten und können eine Kategoriemaske, Konfidenzmasken oder beides enthalten, je nachdem, was Sie festgelegt haben bei der Konfiguration der Aufgabe. Wenn Sie output_category_mask bis True, ist die Ausgabe eine Liste mit segmentierten Maske als Uint8-Bild. Der Pixelwert gibt an, ob er Teil des im gewünschten Bereich bewegen. erkannten Kategorieindex des Eingabebilds. Wenn Sie output_confidence_masks auf True setzen, ist die Ausgabe eine Liste mit Kanälen. mit Pixelwerten im Bereich [0,1], der die Konfidenz darstellt Wert des Pixels, das zum Objekt im gewünschten Bereich gehört.

In den folgenden Abschnitten werden die Ausgabedaten dieser Aufgabe näher erläutert:

Kategoriemaske

Die folgenden Bilder zeigen eine Visualisierung der Aufgabenausgabe für eine Kategorie Wertmaske mit einem angegebenen POI. Jedes Pixel ist ein uint8 -Wert, der angibt, ob das Pixel Teil des Objekts ist, das sich im Bereich von Interesse. Der schwarz-weiße Kreis im zweiten Bild steht für die ausgewählte Interessengebiet.

Ausgabe des Originalbilds und der Kategoriemaske. Quell-Image von Pascal VOC 2012 Dataset.

Konfidenzmaske

Die Ausgabe für eine Konfidenzmaske enthält Gleitkommawerte zwischen [0, 1] für für jeden Bildeingabekanal. Höhere Werte deuten auf eine höhere Wahrscheinlichkeit hin, Das Bildpixel ist Teil des Objekts, das sich im gewünschten Bereich befindet.