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.
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.
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:
- 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.
- 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.
- 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.
- 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.