Segmentação

A segmentação de imagem é o processo de particionar uma imagem digital em vários segmentos (conjuntos de pixels, também conhecidos como objetos de imagem). O objetivo da segmentação é simplificar e/ou alterar a representação de uma imagem em algo mais significativo e mais fácil de analisar.

A imagem a seguir mostra a saída do modelo de segmentação de imagem no Android. O modelo criará uma máscara sobre os objetos alvo com alta precisão.

iniciar

Se você é novo no TensorFlow Lite e está trabalhando com Android ou iOS, é recomendável explorar os aplicativos de exemplo a seguir que podem ajudá-lo a começar.

Você pode aproveitar a API pronta para uso da Biblioteca de tarefas do TensorFlow Lite para integrar modelos de segmentação de imagem em apenas algumas linhas de código. Você também pode integrar o modelo usando a API Java do TensorFlow Lite Interpreter .

O exemplo do Android abaixo demonstra a implementação de ambos os métodos como lib_task_api e lib_interpreter , respectivamente.

Veja o exemplo do Android

Veja o exemplo do iOS

Se você estiver usando uma plataforma diferente do Android ou iOS ou já estiver familiarizado com as APIs do TensorFlow Lite , faça o download do nosso modelo inicial de segmentação de imagens.

Baixe o modelo inicial

Descrição do modelo

O DeepLab é um modelo de aprendizado profundo de última geração para segmentação semântica de imagens, onde o objetivo é atribuir rótulos semânticos (por exemplo, pessoa, cachorro, gato) a cada pixel na imagem de entrada.

Como funciona

A segmentação semântica de imagens prevê se cada pixel de uma imagem está associado a uma determinada classe. Isso contrasta com a detecção de objetos , que detecta objetos em regiões retangulares, e a classificação de imagens, que classifica a imagem geral.

A implementação atual inclui os seguintes recursos:

  1. DeepLabv1: Usamos a convolução atrous para controlar explicitamente a resolução na qual as respostas dos recursos são computadas nas redes neurais convolucionais profundas.
  2. DeepLabv2: Usamos o pooling de pirâmide espacial atrous (ASPP) para segmentar objetos de forma robusta em várias escalas com filtros em várias taxas de amostragem e campos de visão efetivos.
  3. DeepLabv3: Aumentamos o módulo ASPP com recurso de nível de imagem [5, 6] para capturar informações de maior alcance. Também incluímos parâmetros de normalização em lote [7] para facilitar o treinamento. Em particular, aplicamos a convolução atrous para extrair recursos de saída em diferentes passos de saída durante o treinamento e avaliação, o que permite treinar BN com eficiência no passo de saída = 16 e atinge um alto desempenho no passo de saída = 8 durante a avaliação.
  4. DeepLabv3+: Estendemos o DeepLabv3 para incluir um módulo decodificador simples, mas eficaz, para refinar os resultados da segmentação, especialmente ao longo dos limites do objeto. Além disso, nesta estrutura codificador-decodificador pode-se controlar arbitrariamente a resolução dos recursos do codificador extraídos por convolução atrosa para compensar precisão e tempo de execução.

Referências de desempenho

Os números de referência de desempenho são gerados com a ferramenta descrita aqui .

Nome do modelo Tamanho do modelo Dispositivo GPU CPU
Deeplab v3 2,7 MB Pixel 3 (Android 10) 16ms 37ms*
Pixel 4 (Android 10) 20 ms 23ms*
iPhone XS (iOS 12.4.1) 16ms 25ms**

* 4 fios usados.

** 2 threads usadas no iPhone para obter o melhor resultado de desempenho.

Leitura adicional e recursos