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 imagens no Android. O modelo criará uma máscara sobre os objetos alvo com alta precisão.

iniciar

Se você é novo no TensorFlow Lite e trabalha com Android ou iOS, é recomendável explorar os exemplos de aplicativos 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 imagens em apenas algumas linhas de código. Você também pode integrar o modelo usando a API Java do interpretador do TensorFlow Lite .

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

Veja exemplo do Android

Veja exemplo do iOS

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

Baixe o modelo inicial

Descrição do modelo

DeepLab é um modelo de aprendizagem profunda 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 com a classificação de imagens , que classifica a imagem geral.

A implementação atual inclui os seguintes recursos:

  1. DeepLabv1: Usamos convolução atrous para controlar explicitamente a resolução na qual as respostas dos recursos são calculadas em redes neurais convolucionais profundas.
  2. DeepLabv2: Usamos pooling de pirâmide espacial atrous (ASPP) para segmentar objetos de forma robusta em múltiplas escalas com filtros em múltiplas 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 longo alcance. Também incluímos parâmetros de normalização de lote [7] para facilitar o treinamento. Em particular, aplicamos convolução atrosa para extrair características de saída em diferentes passos de saída durante o treinamento e avaliação, o que permite eficientemente 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 codificador-decodificador pode-se controlar arbitrariamente a resolução dos recursos extraídos do codificador por convolução atrosa para compensar precisão e tempo de execução.

Referências de desempenho

Os números de benchmark 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 threads usados ​​no iPhone para melhor resultado de desempenho.

Leitura adicional e recursos