Interaktywny przewodnik po segmentacji obrazów w Pythonie

Zadanie MediaPipe Interactive Image segmenter pobiera lokalizację na obrazie i określa granice obiekt w tym miejscu i zwraca jego podział na segmenty jako obraz. i skalowalnych danych. Te instrukcje pokazują, jak korzystać z interaktywnego segmentowania obrazów w Pythonie język. Więcej informacji o możliwościach, modelach i konfiguracji opcji tego zadania znajdziesz w artykule Omówienie.

Przykładowy kod

Przykładowy kod Interactive Image Segmenter zapewnia pełną implementację tego parametru w Pythonie. Ten kod pomoże Ci przetestować to zadanie i uzyskać rozpoczął tworzenie własnej aplikacji do segmentowania obrazów. Dostępne opcje wyświetlanie, uruchamianie i edytowanie interaktywnego segmentowania obrazów przykładowy kod tylko za pomocą przeglądarki.

Konfiguracja

W tej sekcji opisujemy najważniejsze czynności związane z konfigurowaniem środowiska programistycznego oraz w projektach kodu, w których wykorzystano Interactive Image segmenter. Ogólne informacje na temat: skonfigurować środowisko programistyczne do korzystania z zadań MediaPipe, w tym wymagań wersji platformy, patrz Przewodnik po konfiguracji Pythona Kod źródłowy tego przykładu znajdziesz na stronie GitHub

Pakiety

Zadanie MediaPipe Interactive Image segmenter wymaga pakietu mediapipe. Możesz zainstalować wymagane zależności za pomocą tego polecenia:

$ python -m pip install mediapipe

Importy

Aby uzyskać dostęp do funkcji zadania Interactive Image segmenter, zaimportuj te klasy:

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

Model

Zadanie MediaPipe Interactive Image segmenter wymaga wytrenowanego modelu zgodnego z tym zadanie. Więcej informacji o dostępnych wytrenowanych modelach na potrzeby interaktywnego segmentowania obrazów znajdziesz w artykule zapoznaj się z omówieniem zadania Modele.

Wybierz i pobierz model, a następnie zapisz go w katalogu projektu:

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

Określ ścieżkę modelu w parametrze model_asset_path, jak pokazano na obrazku poniżej:

base_options = BaseOptions(model_asset_path=model_path)

Tworzenie zadania

Zadanie MediaPipe Interactive Image segmenter używa funkcji create_from_options do: skonfigurować zadanie. Funkcja create_from_options akceptuje wartości obsługi opcji konfiguracyjnych. Więcej informacji o konfiguracji Więcej informacji znajdziesz w sekcji Opcje konfiguracji. Poniższy kod pokazuje, jak skompilować i skonfigurować to zadanie.

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

Opcje konfiguracji

To zadanie zawiera te opcje konfiguracji aplikacji w Pythonie:

Nazwa opcji Opis Zakres wartości Wartość domyślna
output_category_mask Jeśli ma wartość True, dane wyjściowe będą zawierały maskę podziału na segmenty. jako obraz uint8, gdzie każda wartość w pikselach wskazuje, czy piksel jest częścią i znajdź obiekt na danym obszarze. {True, False} False
output_confidence_masks Jeśli ma wartość True, dane wyjściowe będą zawierały maskę podziału na segmenty. jako obraz wartości zmiennoprzecinkowej, gdzie każda wartość zmiennoprzecinkowa odzwierciedla poziom ufności że piksel jest częścią obiektu znajdującego się na danym obszarze. {True, False} True
display_names_locale Ustawia język etykiet, które mają być używane w przypadku nazw wyświetlanych w kolumnie metadane modelu zadania, jeśli są dostępne. Wartość domyślna to en dla Angielski. Do metadanych modelu niestandardowego możesz dodać zlokalizowane etykiety za pomocą interfejsu TensorFlow Lite Metadata Writer API. Kod języka en

Przygotuj dane

Przygotuj dane wejściowe jako plik obrazu lub tablicę numpy, a potem przekonwertować go na obiekt 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)

Bardziej szczegółowy przykład wnioskowania z wykorzystaniem narzędzia Interactive Image segmenter znajdziesz w artykule przykładowego kodu.

Obsługa i wyświetlanie wyników

Wynikiem działania narzędzia Interactive Image segmenter jest lista danych Image i mogą być możesz dodać maskę kategorii, maski ufności lub obie te wartości, w zależności od wybranych ustawień. podczas konfigurowania zadania. Jeśli ustawisz Od output_category_mask do True wyniki to lista zawierająca pojedyncze podzieloną na segmenty maską w postaci obrazu uint8. Wartość w pikselach wskazuje, czy jest częścią na wybranym obszarze. rozpoznany indeks kategorii obrazu wejściowego. Jeśli ustaw wartość True na output_confidence_masks, wyniki to lista kanałów, zawierające wartości pikseli w zakresie [0,1] odzwierciedlające poziom ufności wynik piksela należącego do obiektu na wybranym obszarze.

W sekcjach poniżej objaśniamy dane wyjściowe tego zadania:

Maska kategorii

Te obrazy przedstawiają wizualizację danych wyjściowych zadania dla kategorii maska wartości ze wskazanym obszarem zainteresowania. Każdy piksel to uint8 wartość wskazująca, czy piksel jest częścią obiektu znajdującego się na obszarze a interesem publicznym. Czarno-białe kółko na drugim obrazie wskazuje wybrane elementy obszar zainteresowań.

Oryginalny obraz i maska kategorii. Obraz źródłowy z Pascal VOC 2012 w zbiorze danych.

Maska ufności

Wynikiem maski ufności zawierają wartości zmiennoprzecinkowe między [0, 1] dla dla każdego kanału wejściowego obrazu. Wyższe wartości oznaczają wyższy poziom ufności, że piksel obrazu jest częścią obiektu znajdującego się na danym obszarze.