A tarefa do MediaPipe Interactive Image Segmenter usa um local em uma imagem, estima os limites de um objeto nesse local e retorna a segmentação do objeto como dados de imagem. Estas instruções mostram como usar o Segmentador de imagem interativo com a linguagem Python. Para mais informações sobre os recursos, modelos e opções de configuração desta tarefa, consulte a Visão geral.
Exemplo de código
O código de exemplo do Segmentador de imagem interativo oferece uma implementação completa dessa tarefa em Python para sua referência. Esse código ajuda a testar essa tarefa e a começar a criar seu próprio aplicativo interativo de segmentação de imagens. É possível visualizar, executar e editar o código de exemplo do Segmentador de imagem interativo usando apenas o navegador da Web.
Configuração
Esta seção descreve as principais etapas para configurar seu ambiente de desenvolvimento e projetos de código especificamente para usar o Segmentador de imagem interativo. Para informações gerais sobre como configurar o ambiente de desenvolvimento para usar as tarefas do MediaPipe, incluindo os requisitos da versão da plataforma, consulte o Guia de configuração para Python. Confira o código-fonte deste exemplo no GitHub.
Pacotes
A tarefa do MediaPipe Interactive Image Segmenter requer o pacote mediapipe
. É possível instalar as
dependências necessárias com o seguinte comando:
$ python -m pip install mediapipe
Importações
Importe as classes a seguir para acessar as funções de tarefa do segmentador de imagem interativo:
import mediapipe as mp
from mediapipe.tasks import python
from mediapipe.tasks.python import vision
Modelo
A tarefa do MediaPipe Interactive Image Segmenter requer um modelo treinado compatível com essa tarefa. Para mais informações sobre os modelos treinados disponíveis para o Segmentador de imagem interativo, consulte a seção Modelos da visão geral da tarefa.
Selecione e faça o download do modelo e armazene-o no diretório do projeto:
model_path = '/absolute/path/to/model.tflite'
Especifique o caminho do modelo no parâmetro model_asset_path
, conforme mostrado
abaixo:
base_options = BaseOptions(model_asset_path=model_path)
Criar a tarefa
A tarefa do MediaPipe Interactive Image Segmenter usa a função create_from_options
para
configurar a tarefa. A função create_from_options
aceita valores
para que as opções de configuração sejam processadas. Para mais informações sobre as opções de
configuração, consulte Opções de configuração.
O código a seguir demonstra como criar e configurar essa tarefa.
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
Opções de configuração
Esta tarefa tem as seguintes opções de configuração para aplicativos Python:
Nome da opção | Descrição | Intervalo de valor | Valor padrão |
---|---|---|---|
output_category_mask |
Se definido como True , a saída inclui uma máscara de segmentação
como uma imagem uint8, em que cada valor de pixel indica se o pixel faz parte
do objeto localizado na área de interesse. |
{True, False } |
False |
output_confidence_masks |
Se definido como True , a saída inclui uma máscara de segmentação
como uma imagem de valor flutuante, em que cada valor flutuante representa a confiança
de que o pixel faz parte do objeto localizado na área de interesse. |
{True, False } |
True |
display_names_locale |
Define o idioma dos rótulos a serem usados para os nomes de exibição fornecidos nos metadados do modelo da tarefa, se disponível. O padrão é en para
o inglês. É possível adicionar rótulos localizados aos metadados de um modelo personalizado
usando a API Writer de metadados do TensorFlow Lite.
| Código de localidade | en |
Preparar dados
Prepare a entrada como um arquivo de imagem ou uma matriz NumPy
e converta-a em um 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)
Para conferir um exemplo de código que mostra o preparo de dados para o segmentador de imagens interativo, consulte o exemplo de código.
Executar a tarefa
O Segmentador de imagem interativo usa a função segment
para acionar inferências. Para a segmentação de imagens, isso inclui o pré-processamento de dados de entrada, a execução do modelo de segmentação e o pós-processamento das saídas do modelo bruto para as máscaras segmentadas.
O exemplo de código a seguir mostra como executar o processamento com o modelo de tarefa.
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 conferir um exemplo mais completo de execução de inferências do Segmentador de imagem interativo, consulte o exemplo de código.
Processar e mostrar resultados
Os resultados de saída do Segmentador de imagem interativo são uma lista de dados Image
e podem
incluir uma máscara de categoria, máscaras de confiança ou ambas, dependendo do que você definiu
ao configurar a tarefa. Se você definir
output_category_mask
como True
, a saída será uma lista contendo uma única
máscara segmentada como uma imagem uint8. O valor do pixel indica se ele faz parte do
objeto na área de interesse. índice de categoria reconhecida da imagem de entrada. Se
você definir output_confidence_masks
como True
, a saída será uma lista de canais
que contêm valores de pixel dentro do intervalo [0,1]
, representando o nível de confiança
do pixel pertencente ao objeto na área de interesse.
As seções a seguir explicam melhor os dados de saída desta tarefa:
Máscara de categoria
As imagens a seguir mostram uma visualização da saída da tarefa para uma máscara de valor de categoria com uma área de interesse indicada. Cada pixel é um valor uint8
que indica se o pixel faz parte do objeto localizado na área de
interesse. O círculo preto e branco na segunda imagem indica a área de interesse
selecionada.
Saída da máscara de imagem original e categoria. Imagem de origem do conjunto de dados Pascal VOC 2012.
Máscara de confiança
A saída de uma máscara de confiança contém valores flutuantes entre [0, 1]
para
cada canal de entrada de imagem. Valores mais altos indicam uma confiança maior de que
o pixel da imagem faz parte do objeto localizado na área de interesse.