La tarea 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 capacidades, los modelos y las opciones de configuración de esta tarea, consulta la Descripción general.
Ejemplo de código
En el código de ejemplo del Segmentador de imágenes interactivas, se proporciona una implementación completa de esta tarea en Python para tu referencia. Este código te ayuda a probar esta tarea y comenzar a compilar tu propia aplicación interactiva de segmentación de imágenes. 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 los proyectos de código específicamente a fin de usar el Segmentador de imágenes interactivo. Si deseas obtener información general sobre cómo configurar tu entorno de desarrollo para usar tareas de MediaPipe, incluidos los requisitos de versión de la plataforma, consulta la Guía de configuración de Python. Puedes revisar el código fuente para este ejemplo en GitHub.
Paquetes
La tarea del Segmentador de imágenes interactivo de MediaPipe requiere el paquete mediapipe
. Puedes instalar las dependencias necesarias con el siguiente comando:
$ python -m pip install mediapipe
Importaciones
Importa las siguientes clases para acceder a las funciones de la tarea Segmentador de imágenes interactivo:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Modelo
La tarea Segmentador de imágenes interactivo de MediaPipe requiere un modelo entrenado que sea compatible con esta tarea. Si deseas obtener más información sobre los modelos entrenados disponibles para el Segmentador de imágenes interactivo, consulta la sección Modelos de descripción general de la tarea.
Selecciona y descarga el modelo. Luego, almacénalo en el directorio de tu proyecto:
model_path = '/absolute/path/to/model.tflite'
Especifica la ruta 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 Segmentador de imágenes interactivo de MediaPipe usa la función create_from_options
para configurarla. La función create_from_options
acepta valores para controlar las opciones de configuración. Para obtener más información sobre las opciones de configuración, consulta Opciones de configuración.
En el siguiente código, se muestra la compilación y configuración de 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 incluye 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 configura 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 es parte del objeto ubicado en el área de interés. |
{True, False } |
False |
output_confidence_masks |
Si se configura como True , el resultado incluye una máscara de segmentación como una imagen de valor flotante, en la que cada valor 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 |
Configura 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 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 la 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 deseas 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 las inferencias. Para 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 las salidas del modelo sin procesar a las máscaras segmentadas.
En el siguiente ejemplo de código, se muestra cómo ejecutar el procesamiento con el modelo de tarea.
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 interactivas 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 establezcas 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 es parte del objeto en el área de interés. Índice de categoría reconocido de la imagen de entrada. Si configuras output_confidence_masks
como 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 de una máscara de valor de categoría con un área de punto de interés indicada. Cada píxel es un valor uint8
que indica si el píxel es parte del objeto ubicado en el área de interés. El círculo blanco y negro de la segunda imagen indica el área de interés seleccionada.
Resultado original de la imagen y 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 flotantes entre [0, 1]
para cada canal de entrada de imagen. Los valores más altos indican una mayor confianza en que el píxel de la imagen es parte del objeto ubicado en el área de interés.