Path: blob/master/site/es-419/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 detección de enfermedades en plantas
En estas anotaciones se muestra cómo realizar el ajuste fino de modelos CropNet de TensorFlow Hub en un conjunto de datos de TFDS o en el propio conjunto de datos de detección de enfermedades agrícolas.
Haremos lo siguiente:
Cargar el conjunto de datos de mandioca de TFDS o un conjunto de datos propio.
Enriquecer los datos con ejemplos desconocidos (negativos) para obtener un modelo más sólido.
Aplicar los aumentos de imágenes a los datos.
Cargar y realizarle el ajuste fino al modelo CropNet de TF Hub.
Exportar un modelo TFLite, listo para ser implementado directamente en la aplicación con la biblioteca de tareas, MLKit o TFLite.
Importaciones y dependencias
Antes de empezar, deberemos instalar algunas de las dependencias que necesitaremos, como un Model Maker y la última versión del conjunto de datos de TensorFlow.
Carga de un conjunto de datos de TFDS para realizarle el ajuste fino
Utilicemos el conjunto de datos de enfermedades de hoja de la mandioca que está disponible en TFDS.
Como alternativa, la carga de los datos propios para el ajuste fino
En vez de usar un conjunto de datos de TFDS, puede entrenar su propio conjunto de datos. En este fragmento de código mostramos cómo cargar el propio conjunto de datos personalizado. Para saber más acerca de las estructuras de datos posibles, consulte este enlace. A continuación, usamos el ejemplo del conjunto de datos sobre enfermedades de hoja de la mandioca, que es de acceso público.
Visualización de muestras de una división de entrenamiento
Echemos un vistazo a algunos ejemplos del conjunto de datos que incluyen el ID y el nombre de la clase para las muestras de imágenes y sus etiquetas.
Imágenes agregadas para ser usadas como ejemplos desconocidos de conjuntos de datos de TFDS
Agreguemos más ejemplos desconocidos (negativos) al conjunto de datos de entrenamiento y asignémosle un nuevo número de etiqueta de clase desconocida. El objetivo es tener un modelo que, puesto en práctica, tenga la opción de predecir lo "desconocido" cuando nota algo inesperado.
A continuación, podremos ver una lista de conjuntos de datos que se usará como muestra para el resto de las imágenes desconocidas. Incluye 3 conjuntos diferentes de datos para aumentar la diversidad. Uno de ellos es un conjunto de datos de enfermedades de hoja en frijoles, para que el modelo esté expuesto a otras plantas con enfermedades que no sean la mandioca.
Los conjuntos de datos DESCONOCIDOS (UNKNOWN) también se cargan desde TFDS.
Aplicación de aumentos
En todas las imágenes, para hacerlas más diversas, aplicaremos algo de aumento. Como cambios en lo siguiente:
Brillo
Contraste
Saturación
Tonalidad
Recorte
Estos tipos de "aumentos" ayudan a hacer al modelo más sólido para las variaciones en entradas de imágenes.
Para aplicar el aumento, se usa el método map
de la clase del conjunto de datos.
Encapsulamiento de los datos en un formato adecuado para Model Maker
Para usar estos conjuntos de datos con Model Maker, deben estar en una clase ImageClassifierDataLoader.
Ejecución del entrenamiento
TensorFlow Hub tiene varios modelos disponibles para aprendizaje por transferencia.
Puede elegir uno solo o varios para experimentar con otros e intentar obtener mejores resultados.
Si quiere incluso más modelos para probar, puede agregarlos desde esta colección.
Para efectuar el ajuste fino del modelo, usaremos Model Maker. La solución general resulta más fácil porque después de entrenar el modelo, lo convierte para TFLite.
Model Maker hace que esta conversión sea la mejor posible y que tenga además toda la información necesaria para implementar sin problemas el modelo en dispositivos, más adelante.
Las especificaciones del modelo indican cómo decirle a Model Maker qué modelo base le gustaría usar.
Un detalle importante reside en la configuración del train_whole_model
que realizará el ajuste fino del modelo base durante el entrenamiento. De este modo, el proceso se vuelve más lento, pero el modelo final tiene mayor exactitud. Con la definición de shuffle
se garantizará que el modelo verá los datos en orden aleatorio, una buena práctica para el aprendizaje con modelos.
Evaluación del modelo en una división de prueba
Para entender mejor un modelo al que se le ha realizado el ajuste fino, nos convendrá analizar la matriz de confusión. Esto nos permitirá ver con qué frecuencia se puede predecir una clase con otra.
Evaluación del modelo con datos de prueba desconocidos
En esta evaluación esperamos que el modelo tenga una precisión de al menos 1. Ninguna de las imágenes con las que se prueba el modelo está relacionada con el conjunto de datos normal y, por lo tanto, esperamos que el modelo prediga una etiqueta de clase "desconocida".
Imprimimos la matriz de confusión.
Exportación del modelo como TFLite y SavedModel
Ahora podemos exportar los modelos entrenados en formatos TFLite y SavedModel para su implementación en dispositivos y, además, podemos usarlos para inferencias en TensorFlow.
Próximos pasos
El modelo que acabamos de entrenar se puede usar en dispositivos móviles (¡incluso en el campo mismo!).
Descargue el modelo, haga clic en el ícono de la carpeta del menú de archivos (Files) a la izquierda en Colab y elija la opción a descargar.
La misma técnica que aquí usamos se podría aplicar a otras tareas de enfermedades de plantas que podrían ser más adecuadas para sus casos de uso o para cualquier otro tipo de tarea de clasificación de imágenes. Si desea continuar con lo que hicimos y realizar una implementación con una aplicación Android, puede seguir leyendo la guía de inicio rápido para Android.