La tarea de segmentador de imágenes interactivo de MediaPipe toma una ubicación en una imagen, estima los límites de un objeto en esa ubicación y muestra la segmentación del objeto como datos de imagen. En estas instrucciones, se muestra cómo usar el Segmentador de imágenes interactivo con el lenguaje Python. Para obtener más información sobre las funciones, los modelos y las opciones de configuración de esta tarea, consulta la descripción general.
Ejemplo de código
El código de ejemplo de Interactive Image Segmenter proporciona una implementación completa de esta tarea en Python como referencia. Este código te ayuda a probar esta tarea y comenzar a compilar tu propia aplicación de segmentación de imágenes interactivas. Puedes ver, ejecutar y editar el código de ejemplo del Segmentador de imágenes interactivo solo con tu navegador web.
Configuración
En esta sección, se describen los pasos clave para configurar tu entorno de desarrollo y proyectos de código específicamente para usar el Segmentador de imágenes interactivo. Para obtener información general sobre cómo configurar tu entorno de desarrollo para usar tareas de MediaPipe, incluidos los requisitos de la versión de la plataforma, consulta la Guía de configuración para Python. Puedes revisar el código fuente de este ejemplo en GitHub.
Paquetes
La tarea de MediaPipe Interactive Image Segmenter requiere el paquete mediapipe
. Puedes instalar las dependencias requeridas con el siguiente comando:
$ python -m pip install mediapipe
Importaciones
Importa las siguientes clases para acceder a las funciones de tareas del Segmentador de imágenes interactivo:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Modelo
La tarea del segmentador de imágenes interactivo de MediaPipe requiere un modelo entrenado que sea compatible con esta tarea. Para obtener más información sobre los modelos entrenados disponibles para el Segmentador de imágenes interactivo, consulta la sección Modelos de la descripción general de la tarea.
Selecciona y descarga el modelo, y guárdalo en el directorio de tu proyecto:
model_path = '/absolute/path/to/model.tflite'
Especifica la ruta de acceso del modelo dentro del parámetro model_asset_path
, como se muestra a continuación:
base_options = BaseOptions(model_asset_path=model_path)
Crea la tarea
La tarea de MediaPipe Interactive Image Segmenter usa la función create_from_options
para configurar la tarea. La función create_from_options
acepta valores para que las opciones de configuración los controlen. Para obtener más información sobre las opciones de configuración, consulta Opciones de configuración.
En el siguiente código, se muestra cómo compilar y configurar esta tarea.
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
Opciones de configuración
Esta tarea tiene las siguientes opciones de configuración para aplicaciones de Python:
Nombre de la opción | Descripción | Rango de valores | Valor predeterminado |
---|---|---|---|
output_category_mask |
Si se establece en True , el resultado incluye una máscara de segmentación como una imagen uint8, en la que cada valor de píxel indica si el píxel forma parte del objeto ubicado en el área de interés. |
{True, False } |
False |
output_confidence_masks |
Si se establece en True , el resultado incluye una máscara de segmentación como una imagen de valor de punto flotante, en la que cada valor de punto flotante representa la confianza de que el píxel es parte del objeto ubicado en el área de interés. |
{True, False } |
True |
display_names_locale |
Establece el idioma de las etiquetas que se usarán para los nombres visibles proporcionados en los metadatos del modelo de la tarea, si están disponibles. El valor predeterminado es en para el inglés. Puedes agregar etiquetas localizadas a los metadatos de un modelo personalizado con la API de Metadata Writer de TensorFlow Lite.
| Código de configuración regional | en |
Preparar los datos
Prepara tu entrada como un archivo de imagen o un array de numpy y, luego, conviértela en un objeto 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)
Si quieres ver un ejemplo de código que muestra la preparación de datos para el Segmentador de imágenes interactivo, consulta el ejemplo de código.
Ejecuta la tarea
El Segmentador de imágenes interactivo usa la función segment
para activar inferencias. En el caso de la segmentación de imágenes, esto incluye el procesamiento previo de los datos de entrada, la ejecución del modelo de segmentación y el procesamiento posterior de los resultados del modelo sin procesar en las máscaras segmentadas.
En el siguiente ejemplo de código, se muestra cómo ejecutar el procesamiento con el modelo de tareas.
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)
Para ver un ejemplo más completo de cómo ejecutar inferencias del Segmentador de imágenes interactivo, consulta el ejemplo de código.
Cómo controlar y mostrar los resultados
Los resultados de salida del Segmentador de imágenes interactivo son una lista de datos Image
y pueden incluir una máscara de categoría, máscaras de confianza o ambas, según lo que hayas establecido cuando configuraste la tarea. Si configuras output_category_mask
como True
, el resultado es una lista que contiene una máscara segmentada única como una imagen uint8. El valor del píxel indica si forma parte del objeto en el área de interés. índice de categoría reconocida de la imagen de entrada. Si configuras output_confidence_masks
en True
, el resultado es una lista de canales que contienen valores de píxeles dentro del rango [0,1]
que representa la puntuación de confianza del píxel que pertenece al objeto en el área de interés.
En las siguientes secciones, se explican con más detalle los datos de salida de esta tarea:
Máscara de categoría
En las siguientes imágenes, se muestra una visualización del resultado de la tarea para una máscara de valor de categoría con un área de interés de punto indicada. Cada píxel es un valor uint8
que indica si el píxel forma parte del objeto ubicado en el área de interés. El círculo en blanco y negro de la segunda imagen indica el área de interés seleccionada.
Imagen original y resultado de la máscara de categoría. Imagen de origen del conjunto de datos Pascal VOC 2012.
Máscara de confianza
El resultado de una máscara de confianza contiene valores de punto flotante entre [0, 1]
para cada canal de entrada de imagen. Los valores más altos indican una mayor confianza de que el píxel de la imagen forma parte del objeto ubicado en el área de interés.