Path: blob/master/site/pt-br/hub/tutorials/cropnet_on_device.ipynb
25118 views
Copyright 2021 The TensorFlow Hub Authors.
Licensed under the Apache License, Version 2.0 (the "License");
Ajuste fino de modelos para detecção de doenças em plantas
Este notebook mostra como fazer o ajuste fino de modelos CropNet do TensorFlow Hub para um dataset do TFDS ou seu próprio dataset de detecção de doenças em plantações.
Você vai:
Carregar o dataset cassava do TFDS ou seus próprios dados
Enriquecer os dados com exemplos desconhecidos (negativos) para obter um modelo mais robusto
Aplicar ampliação de imagem aos dados
Carregar e fazer ajustes finos de um modelo CropNet do TF Hub
Exportar um modelo do TF Lite, pronto para ser implantado em seu aplicativo com a Biblioteca Task, o MLKit ou o TF Lite diretamente
Importações e dependências
Antes de começar, você precisará instalar algumas das dependências que serão necessárias, como Model Maker e a última versão do TensorFlow Datasets.
Carregue um dataset do TFDS para fazer os ajustes finos nele
Vamos usar o dataset Cassava Leaf Disease, disponível publicamente no TFDS.
Ou você pode carregar seus próprios dados para fazer o ajuste fino neles
Em vez de usar um dataset do TFDS, você também pode treinar usando seus próprios dados. O trecho de código abaixo mostra como carregar seu próprio dataset personalizado. Confira a estrutura de dados compatível neste link. É fornecido um exemplo aqui usando o dataset Cassava Leaf Disease, disponível publicamente.
Visualize as amostras do dataset de treinamento
Vamos dar uma olhada em alguns exemplos do dataset, incluindo o ID e o nome de classes para as amostras de imagens e seus rótulos.
Adicione imagens a serem usadas como exemplos desconhecidos pelos datasets do TFDS
Adicione exemplos desconhecidos (negativos) extras ao dataset de treinamento e atribua um novo número de rótulo de classe desconhecido a eles. O objetivo é ter um modelo que, ao ser usado na prática (ou seja, em campo), ele tenha a opção de prever "desconhecido" quando observar algo inesperado.
Abaixo você pode ver uma lista de datasets que serão usados para amostrar as imagens desconhecidas adicionais. Ela inclui três datasets totalmente diferentes para aumentar a diversidade. Um deles é um dataset de doenças em folhas de feijão para que o modelo seja exposto a plantas doentes que não sejam mandioca.
Os datasets DESCONHECIDOS também são carregados a partir do TFDS.
Aplique ampliações
Para deixar as imagens mais diversas, você aplicará algumas ampliações a todas elas, como mudanças dos seguintes aspectos:
Brilho
Contraste
Saturação
Matiz
Recorte
Esses tipos de ampliação ajudam a deixar o modelo mais robusto a variações das imagens de entrada.
Para aplicar a ampliação, é utilizado o método map
da classe Dataset.
Encapsule os dados no formato amigável do Model Maker
Para usar esse dataset com o Model Maker, ele precisa estar em uma classe de ImageClassifierDataLoader.
Execute o treinamento
Há diversos modelos disponíveis para aprendizado por transferência no TensorFlow Hub.
Aqui, você pode escolher um e também pode continuar testando outros para tentar alcançar os melhores resultados.
Se você quiser testar ainda mais modelos, pode adicioná-los a partir desta coleção.
Para fazer os ajustes finos do modelo, você usará o Model Maker, o que facilita a solução geral após o treinamento do modelo. Além disso, ele será convertido para o TF Lite.
O Model Maker deixa essa conversão a melhor possível e com todas as informações necessárias para implantar o modelo em dispositivos posteriormente com facilidade.
A especificação do modelo é usada para indicar ao Model Maker qual modelo base você deseja utilizar.
Um detalhe importante é a definição de train_whole_model
, que fará os ajustes finos do modelo base durante o treinamento. Isso deixa o processo mais lento, mas o modelo final terá uma exatidão maior. Definir shuffle
também vai garantir que o modelo observe os dados em uma ordem embaralhada de forma aleatória, que é a prática recomendada em aprendizado de modelos.
Avalie o modelo com o dataset de teste
Para compreender ainda melhor o modelo ajustado, é uma boa ideia analisar a matriz de confusão, que mostrará com que frequência uma classe é prevista como outra.
Avalie o modelo com dados de teste desconhecidos
Nesta avaliação, esperamos que o modelo tenha uma exatidão de quase 1. Todas as imagens usadas para teste do modelo não estão relacionadas ao dataset normal e, portanto, esperamos que o modelo preveja o rótulo de classe "Desconhecido".
Exiba a matriz de confusão via print.
Exporte o modelo como TF Lite e SavedModel
Agora podemos exportar os modelos treinados para os formatos TF Lite e SavedModel para implantação em dispositivos e uso para inferência no TensorFlow.
Próximos passos
O modelo que você acabou de treinar pode ser usado em dispositivos móveis e até mesmo implantado em campo!
Para baixar o modelo, clique no ícone da pasta no menu Arquivos na parte direita do Colab e escolha a opção de download.
A mesma técnica usada aqui poderia ser aplicada a outras tarefas de doenças em plantas que podem ser mais adequadas para seu caso de uso ou para qualquer outro tipo de tarefa de classificação de imagens. Se você quiser se aprofundar e implantar em um aplicativo para Android, confira este Guia de início rápido para Android.