O Dia da Comunidade de ML é dia 9 de novembro! Junte-nos para atualização de TensorFlow, JAX, e mais Saiba mais

Segmentação

A segmentação de imagens é 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 transformar a representação de uma imagem em algo mais significativo e 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 seguintes aplicativos de exemplo 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 TensorFlow Lite Interpreter Java .

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

Veja um exemplo de Android

Veja um exemplo de iOS

Se você estiver usando uma plataforma diferente de Android ou iOS, ou se já estiver familiarizado com as APIs TensorFlow Lite , você pode baixar nosso modelo de segmentação de imagem inicial.

Baixe o modelo inicial

Descrição do modelo

DeepLab é um modelo de aprendizado profundo de última geração para segmentação semântica de imagens, em que 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 da imagem 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 atrosa para controlar explicitamente a resolução na qual as respostas do recurso são calculadas nas Redes Neurais de Convoluções Profundas.
  2. DeepLabv2: Usamos um pooling de pirâmide espacial (ASPP) para segmentar objetos de forma robusta em várias escalas com filtros em várias taxas de amostragem e campos de visão eficazes.
  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 atrosa para extrair recursos de saída em diferentes passadas de saída durante o treinamento e avaliação, o que habilita o treinamento de BN na passada de saída = 16 e atinge um alto desempenho na passada 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 de codificador-decodificador, pode-se controlar arbitrariamente a resolução dos recursos do codificador extraídos por meio de convolução de átrio para compensar a precisão e o tempo de execução.

Benchmarks 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) 20ms 23ms *
iPhone XS (iOS 12.4.1) 16ms 25ms **

* 4 fios usados.

** 2 fios usados ​​no iPhone para o melhor resultado de desempenho.

Leitura adicional e recursos