Задача MediaPipe Interactive Image Segmenter берет местоположение на изображении, оценивает границы объекта в этом месте и возвращает сегментацию объекта в виде данных изображения. Эти инструкции покажут вам, как использовать интерактивный сегментатор изображений с языком Python. Дополнительные сведения о возможностях, моделях и параметрах конфигурации этой задачи см. в разделе Обзор .
Пример кода
В примере кода интерактивного сегментатора изображений представлена полная реализация этой задачи на Python. Этот код поможет вам протестировать эту задачу и приступить к созданию собственного приложения для интерактивной сегментации изображений. Вы можете просматривать, запускать и редактировать пример кода интерактивного сегментатора изображений, используя только веб-браузер.
Настраивать
В этом разделе описаны ключевые шаги по настройке среды разработки и проектов кода специально для использования интерактивного сегментатора изображений. Общие сведения о настройке среды разработки для использования задач MediaPipe, включая требования к версии платформы, см. в руководстве по настройке Python . Вы можете просмотреть исходный код этого примера на GitHub.
Пакеты
Для задачи интерактивного сегментатора изображений MediaPipe требуется пакет mediapipe
. Вы можете установить необходимые зависимости с помощью следующей команды:
$ python -m pip install mediapipe
Импорт
Импортируйте следующие классы, чтобы получить доступ к функциям задачи интерактивного сегментатора изображений:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Модель
Для задачи интерактивного сегментатора изображений MediaPipe требуется обученная модель, совместимая с этой задачей. Дополнительную информацию о доступных обученных моделях для Interactive Image Segmenter см. в разделе «Модели » обзора задач.
Выберите и загрузите модель, а затем сохраните ее в каталоге вашего проекта:
model_path = '/absolute/path/to/model.tflite'
Укажите путь к модели в параметре model_asset_path
, как показано ниже:
base_options = BaseOptions(model_asset_path=model_path)
Создать задачу
Задача MediaPipe Interactive Image Segmenter использует функцию create_from_options
для настройки задачи. Функция create_from_options
принимает значения для обрабатываемых параметров конфигурации. Дополнительные сведения о параметрах конфигурации см. в разделе Параметры конфигурации . Следующий код демонстрирует, как создать и настроить эту задачу.
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
Варианты конфигурации
Эта задача имеет следующие параметры конфигурации для приложений Python:
Название опции | Описание | Диапазон значений | Значение по умолчанию |
---|---|---|---|
output_category_mask | Если установлено значение True , выходные данные включают маску сегментации в виде изображения uint8, где каждое значение пикселя указывает, является ли пиксель частью объекта, расположенного в интересующей области. | { True, False } | False | output_confidence_masks | Если установлено значение True , выходные данные включают маску сегментации в виде изображения с плавающим значением, где каждое значение с плавающей запятой представляет уверенность в том, что пиксель является частью объекта, расположенного в интересующей области. | { True, False } | True |
display_names_locale | Задает язык меток, которые будут использоваться для отображаемых имен, представленных в метаданных модели задачи, если они доступны. По умолчанию en английский язык. Вы можете добавить локализованные метки к метаданным пользовательской модели с помощью API записи метаданных TensorFlow Lite. | Код региона | ru |
Подготовьте данные
Подготовьте входные данные в виде файла изображения или массива numpy, а затем преобразуйте их в объект 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)
Пример кода, показывающий подготовку данных для интерактивного сегментатора изображений, см. в примере кода .
Запустить задачу
Интерактивный сегментатор изображений использует функцию segment
для инициирования выводов. Для сегментации изображения это включает предварительную обработку входных данных, запуск модели сегментации и постобработку необработанных выходных данных модели в сегментированные маски.
В следующем примере кода показано, как выполнить обработку с помощью модели задачи.
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)
Более полный пример выполнения выводов Interactive Image Segmenter см. в примере кода .
Обработка и отображение результатов
Выходные результаты для интерактивного сегментатора изображений представляют собой список данных Image
и могут включать маску категории, маски достоверности или и то, и другое, в зависимости от того, что вы установили при настройке задачи. Если вы установите для output_category_mask
значение True
, выходные данные представляют собой список, содержащий одну сегментированную маску в виде изображения uint8. Значение пикселя указывает, является ли он частью объекта в интересующей области. распознанный индекс категории входного изображения. Если вы установите для output_confidence_masks
значение True
, выходные данные представляют собой список каналов, содержащих значения пикселей в диапазоне [0,1]
, представляющие показатель достоверности пикселя, принадлежащего объекту в интересующей области.
В следующих разделах дополнительно объясняются выходные данные этой задачи:
Маска категории
На следующих изображениях показана визуализация результатов задачи для маски значений категории с указанием интересующей области. Каждый пиксель представляет собой значение uint8
, указывающее, является ли пиксель частью объекта, расположенного в интересующей области. Черно-белый кружок на втором изображении указывает выбранную область интереса.
Вывод исходного изображения и маски категории. Исходное изображение из набора данных Pascal VOC 2012 .
Маска уверенности
Выходные данные маски доверия содержат значения с плавающей запятой между [0, 1]
для каждого входного канала изображения. Более высокие значения указывают на более высокую уверенность в том, что пиксель изображения является частью объекта, расположенного в интересующей области.