Path: blob/master/site/pt-br/hub/tutorials/tf2_image_retraining.ipynb
25118 views
Copyright 2021 The TensorFlow Hub Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Retreinamento de um classificador de imagem
Introdução
Modelos de classificação de imagem têm milhões de parâmetros, e treiná-los do zero exige muitos dados rotulados e recursos computacionais. O aprendizado por transferência é uma técnica que pega um atalho ao aproveitar um pedaço de um modelo já treinado em uma tarefa relacionada e reutilizá-lo em um novo modelo.
Este Colab demonstra como criar um modelo do Keras para classificar cinco espécies de flores usando um modelo SavedModel pré-treinado do TF2 no TensorFlow Hub para extração de características de imagens, que foi treinado usando-se o dataset ImageNet, que é muito maior e mais generalizado. Opcionalmente, o extrator de características pode ser treinado (passar por ajustes finos) juntamente com o classificador recém-adicionado.
Está procurando uma ferramenta?
Este é um tutorial de programação do TensorFlow. Se você deseja uma ferramenta que crie o modelo do TensorFlow ou TF Lite, confira a ferramenta de linha de comando make_image_classifier, que é instalada pelo pacote PIP tensorflow-hub[make_image_classifier]
, ou confira este Colab do TF Lite.
Configuração
Selecione o módulo SavedModel do TF2 a ser usado
Para começar, use https://tfhub.dev/google/imagenet/mobilenet_v2_100_224/feature_vector/4. A mesma URL pode ser usada no código para identificar o SavedModel e no navegador para mostrar a documentação (atenção: modelos no formato do TF1 Hub não funcionarão aqui).
Confira mais modelos do TF2 que geram vetores de características de imagens aqui.
Existem diversos modelos que podem ser testados, basta selecionar um diferente na célula abaixo e acompanhar o notebook.
Configure o dataset Flowers
As entradas são redimensionadas adequadamente para o módulo selecionado. A ampliação do dataset (por exemplo, distorções aleatórias de uma imagem cada vez que ela é lida) melhora o treinamento, especialmente ao fazer os ajustes finos.
Definição do modelo
Basta colocar um classificador linear por cima do feature_extractor_layer
com o módulo do Hub.
Para ter uma alta velocidade, começamos com um feature_extractor_layer
não treinável, mas você também pode ativar os ajustes finos para aumentar a exatidão.
Treine o modelo
Teste o modelo com uma imagem dos dados de validação:
Por fim, o modelo treinado pode ser salvo para implantação no TF Serving ou TF Lite (em dispositivos móveis) da seguinte forma:
Opcional: desenvolvimento para TensorFlow Lite
Com o TensorFlow Lite, você pode implantar modelos do TensorFlow em dispositivos móveis e IoT. O código abaixo mostra como converter o modelo treinado para o TF Lite e aplicar as ferramentas de pós-treinamento do Toolkit de otimização de modelos do TensorFlow. Por fim, ele o executa no interpretador do TF Lite para avaliar a qualidade resultante.
A conversão sem otimização gera os mesmos resultados que antes (até o erro de arredondamento).
A conversão com otimização sem qualquer dado quantiza os pesos do modelo em 8 bits, mas a inferência ainda usa computação de ponto flutuante para ativações da rede neural, o que reduz o tamanho do modelo em quase quatro vezes e aumenta a latência de CPU em dispositivos móveis.
Além disso, a computação das ativações da rede neural também pode ser quantizada em inteiros de 8 bits, se um pequeno dataset de referência for fornecido para calibrar o intervalo de quantização. Em um dispositivo móvel, isso acelera ainda mais a inferência e permite executar em aceleradores, como o Edge TPU.