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.