Path: blob/master/site/pt-br/lite/models/segmentation/overview.md
25118 views
Segmentação
A segmentação de imagens é o processo de particionar uma imagem digital em diversos segmentos (conjuntos de pixels, também conhecidos como objetos da imagem). O objetivo da segmentação é simplificar e/ou alterar a representação de uma imagem em algo que tenha mais significado e seja mais fácil de analisar.
A imagem abaixo mostra a saída do modelo de segmentação de imagens no Android. O modelo cria uma máscara sobre os objetos-alvo com alta exatidão.
Observação, para integrar com um modelo existente, experimente a TensorFlow Lite Task Library (biblioteca de tarefas do TensorFlow Lite).
Como começar
Se você estiver apenas começando a usar o TensorFlow Lite e estiver trabalhando com Android ou iOS, recomendamos conferir os exemplos de aplicativo abaixo que podem te ajudar a começar.
Você pode usar a API integrada da TensorFlow Lite Task Library para integrar modelos de segmentação de imagens com somente algumas linhas de código. Além disso, pode integrar o modelo usando a TensorFlow Lite Interpreter Java API (API Java Interpreter do TensorFlow Lite).
O exemplo do Android abaixo demonstra a implementação dos dois métodos como a lib_task_api e a lib_interpreter, respectivamente.
Se você estiver usando outra plataforma que não o Android ou iOS ou se já conhecer bem as APIs do TensorFlow Lite, pode baixar nosso modelo inicial de segmentação de imagens.
Descrição do modelo
O DeepLab é um modelo moderno de aprendizado profundo para segmentação semântica de imagens, em que o objetivo é atribuir rótulos semânticos (como pessoa, cachorro e gato) a cada pixel da 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 é diferente da detecção de objetos, que detecta objetos em regiões retangulares, e da classificação de imagens, que classifica a imagem de forma geral.
A implementação atual inclui os seguintes recursos:
- DeepLabv1: usamos convolução atrous (dilatada) para controlar explicitamente a resolução de computação das respostas de características em redes neurais convolucionais profundas.
- DeepLabv2: usamos Atrous Spatial Pyramid Pooling (ASPP) para segmentar de forma robusta os objetos em diversas escalas com filtros com diversas taxas de amostragem e campos de visão efetivos.
- DeepLabv3: ampliamos o módulo ASPP com característica no nível de imagem [5, 6] para capturar informações de alcance maior. Além disso, incluímos a normalização de parâmetros [7] para realizar o treinamento. Especificamente, aplicamos a convolução atrous para extrair características de saídas em diferentes strides de saída durante o treinamento e a avaliação, o que permite treinar a normalização de lotes com stride de saída = 16 e manter o desempenho alto com stride 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 das fronteiras entre objetos. Além disso, nessa estrutura encoder-decoder, é possível controlar arbitrariamente a resolução das características extraídas pelo encoder por meio de convolução atrous para fazer uma contrapartida entre runtime e precisão.
Referenciais de desempenho
Os referenciais 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) | 16 ms | 37 ms* |
Pixel 4 (Android 10) | 20 ms | 23 ms* | ||
iPhone XS (iOS 12.4.1) | 16 ms | 25 ms** |
4 threads usados.
** 2 threads usados no iPhone para o resultado com maior desempenho.