Corn Disease Detector (CDD): Aplicación de detección de enfermedades del maíz mediante redes neuronales convolucionales

Juan Esteban Zurita
9 min readAug 11, 2021
Logotipo de Corn Disease Detector (CDD).

Contexto

Los cultivos agrícolas son de alta importancia para la alimentación de la población en todo el mundo. De acuerdo a datos de la FAO, en 2021 cerca de 45 países necesitan ayuda externa para suplir su demanda interna de alimentos, incluyendo 34 en África, 9 en Asia y 2 en América Latina y El Caribe. La interrupción del abastecimiento de alimentos puede ocurrir por varias razones, como el confinamiento de un país, accidentes en los puntos de distribución, catástrofes naturales, el clima o plagas. Las plagas de los cultivos pueden afectar gravemente a la economía y la seguridad alimentaria de las personas. Según datos de la FAO del 2019, en el Ecuador se ha reportado que las plagas son la causa más importante de pérdidas de cultivos como la papa en la etapa de precosecha (Figura 1).

Figura 1. Causas de las pérdidas de cultivos básicos en la explotación agrícola declaradas por los agricultores (FAO, 2019)

Entonces, una de las estrategias más inteligentes es la prevención de la diseminación de las plagas. Esto se logra durante las etapas tempranas, sólo cuando los focos de infección se identifican correctamente y las plantas infectadas se aíslan, de tal manera que ningún canal de procesamiento y distribución del alimento disemina la plaga en lugares libres de la enfermedad. Además, es importante proteger las plantas que tienen mayor importancia en la economía de un país, porque son estas las que más ayudarán a la población a resistir crisis y a alimentarse.

Los métodos tradicionales de detección de enfermedades están ligados a expertos en el área, o a su vez, por conocimiento empírico de los agricultores. Si bien estas formas funcionan, pueden tener errores que las computadoras minimizan. Por lo tanto es necesaria la automatización de la detección de enfermedades en la industria agrícola, basada en datos y modelos de inteligencia artificial.

Corn Disease Detector (CDD) es un proyecto que utiliza redes neuronales convolucionales para automatizar el proceso de detección temprana de enfermedades del maíz mediante el análisis automatizado de imágenes, a través de una aplicación web de uso amigable.

¿Por qué hacer un modelo que detecte enfermedades del maíz?

Hoy en día existen muchas bases de datos con fotografías de las enfermedades de las plantas, y estas se pueden utilizar para generar modelos de inteligencia artificial que reconozcan imágenes con plantas enfermas y las discriminen de las sanas. Ecuador, por su posición geográfica, es un país agrícola donde se siembra banano, cacao, quinua, papa, entre otros productos. El maíz, mayoritariamente producido en la costa (Figura 2), es uno de los productos con mayor aportación al PIB de Ecuador, con aproximadamente 1.2% (Cepeda, 2019).

Lamentablemente, varios de los productos de exportación más importantes del país no tienen una documentación fotográfica de sus enfermedades tan extensa como otras plantas más ubicuas. El maíz es uno de los productos agrícolas más populares del mundo, no solo por su fuente de alimento, sino por ser una potencial fuente de combustible y varias otras razones académicas. Por esto, existen bases de datos que documentan con imágenes las enfermedades del maíz, y pueden ser utilizadas para generar modelos de reconocimiento de imágenes por métodos de inteligencia artificial.

Figura 2. Superficie, producción y ventas del maíz (Lizarzaburo, 2021).

Entonces, el maíz es un buen candidato para empezar un proyecto piloto de detección de enfermedades de plantas a través de imágenes. A futuro, estrategias que funcionen bien para esta planta pueden extenderse a otras especies de importancia para el país. Lo importante es ayudar a tecnificar la industria agrícola ecuatoriana, potencialmente con beneficios a nivel de retribución económica, ahorro de recursos, reducción de impacto ambiental y acogida de nuevos clientes.

El Problema

¿Hay alguna manera de adaptar la inteligencia artificial (IA) como una tecnología para la detección temprana de enfermedades en el cultivo del maíz?

Las redes neuronales convolucionales son efectivas para la realización de diferentes tareas de visión por computador, como la detección de plagas usando hojas de plantas. Entonces, gracias a esta herramienta se pueden detectar enfermedades del maíz como manchas foliares, rayado fino de maíz, pudrición del tallo, entre otras, en la fase temprana del cultivo. El presente artículo detalla cómo se puede detectar la roya (common rust) y la mancha foliar (northern leaf blight), enfermedades comunes en el cultivo de maíz en nuestro país (Figura 3).

Figura 3. Ejemplo de hoja de maíz sana (izquierda), hoja con roya común (centro) y hoja con mancha foliar (derecha) (J & Gopal, 2019).

Es por ello que presentamos como solución al modelo Corn Disease Detector (CDD), una aplicación web que permite a sus usuarios identificar si una planta de maíz está enferma mediante fotografías de sus hojas. Nuestra propuesta utiliza un modelo de inteligencia artificial basado en redes neuronales convolucionales, para procesar un conjunto de datos con imágenes de hojas de maíz sanas, y con las dos enfermedades mencionadas, para clasificarlas de forma correcta.

CDD es un proyecto novedoso, que tendría el potencial de tecnificar la agricultura y ayudaría a incrementar la transferencia de tecnología hacia los sectores agrícolas y rurales del país. Además, una vez bien establecido, puede extrapolarse a más cultivos de alta importancia para el Ecuador.

Dataset

Las imágenes se tomaron del sitio Mendeley Data, de la base de datos Identification of Plant Leaf Diseases Using a 9-layer Deep Convolutional Neural Network (J & Gopal, 2019). Se utilizaron alrededor de 1150 imágenes para cada categoría y se repartió en 3 conjuntos de datos, una para cada categoría: validación, prueba y entrenamiento (Figura 4), que se pueden encontrar en el siguiente link. Se hizo de esta manera para facilitar la integración de la data con la librería Pytorch. Solamente se utilizó la data asociada al maíz, ya que esta base de datos posee fotografías de muchas especies de importancia agrícola.

Modelo

El presente modelo utiliza una arquitectura RestNet50 porque estudios previos de visión por computador aplicada a la agricultura han mostrado que ResNet50 genera modelos más precisos, a comparación de otras arquitecturas (Selvaraj et al., 2019). Nuestro código se basó en las publicaciones de Will Koehrsen (Koehrsen, 2018) y en el libro Deep Learning with PyTorch por Stevens et al., 2020.

Figura 4. Número de imágenes del train-dataset.

Nuestro modelo se implementó en Google Colab, y se encuentra en el siguiente Jupyter Notebook. Ahora, describimos el procedimiento utilizado para generar el modelo. El procesamiento de datos se inició con la importación de librerías necesarias para el correcto funcionamiento de las funciones requeridas. Después, se continuó con la declaración de parámetros, como directorios, establecer si se utiliza GPUs y algunas variables globales, además de cargar la base de datos con objetos torch.utils.data.DataLoader. Luego, se procedió con una exploración del dataset, donde se obtuvo el número de imágenes por cada categoría (Figura 4) y se generó una estadística que describe las dimensiones de las imágenes. Se estandarizó el tamaño de las imágenes a 224 x 224. Seguido, se realizó una aumentación de la data, en donde se rotaron las imágenes para generar diversidad en el conjunto de datos. De esa manera se trató de mejorar la precisión y disminuir el sobreajuste del modelo final. Finalmente, se obtuvo la media y desviación estándar de cada categoría dentro del conjunto de entrenamiento y se normalizaron las imágenes.

Para entrenar el modelo utilizamos la estrategia de Transfer Learning. El Transfer Learning es la mejora del aprendizaje de una nueva tarea, como identificar enfermedades del maíz, a través de la transferencia de conocimientos de una tarea relacionada que ya se ha entrenado antes. Esta estrategia es de utilidad cuando se posee una cantidad de datos reducida para la nueva tarea, pero se ha entrenado la tarea relacionada con una cantidad de datos suficientes para obtener una red neuronal muy eficiente. Escogimos trabajar con la arquitectura de red neuronal ResNet50 pre entrenada con el dataset ImageNet, ya que este posee suficiente información como para darle a nuestro modelo la capacidad de encontrar patrones generales de imágenes en nuestra base de datos del maíz.

Se agregó al final de la red neuronal pre entrenada con ImageNet varias capas para la clasificación de las imágenes, con la siguiente secuencia de transformaciones de la clase torch.nn: Linear, ReLU, Dropout, Linear, y LogSoftmax. El modelo se optimizó con una función de pérdida de LogLikelihood Negativo, torch.nn.NLLLoss, mediante el método de minimización de tasa de aprendizaje adaptativa de Adam, torch.optim.Adam. El modelo se entrenó por 30 épocas como máximo. Las curvas de la función de minimización y precisión en cada época, para el subconjunto de datos de entrenamiento y validación se muestran en la Figura 5.

Figura 5. Curvas de la función de minimización y precisión por época para imágenes de entrenamiento y validación

Como se puede ver, la pérdida disminuyó y la precisión aumentó a lo largo de las épocas de entrenamiento, como se espera en este tipo de modelos. Además, el error producido al usar el modelo con el conjunto de validación fueron menores que los errores generados durante el entrenamiento. La precisión tuvo el comportamiento opuesto. Esto significa que nuestro modelo no está sobreajustado, es decir que hace buenas predicciones sobre las enfermedades cuando se lo prueba con nuevas imágenes.

Figura 6. Matriz de confusión

Para entender mejor el rendimiento de nuestro modelo, calculamos algunas medidas de eficiencia en un conjunto de datos de prueba. Entre estas medidas tenemos la matriz de confusión (Figura 6), la precisión, el recall, y la puntuación F1 (Tabla 1).

Tabla 1. Precisión, recall y puntuación F1 del modelo

Como se puede ver, todos los coeficientes son muy cercanos a 1, lo que confirma la eficiencia de nuestro modelo.

Aplicación Web

Nuestra aplicación web se realizó con ayuda del módulo de código abierto Streamlit de Python, y también fue desplegada en su página web. La aplicación es sencilla, ya que pide a sus usuarios ingresar una imagen de maíz, para predecir una de las tres categorías para las que fue entrenado: sano, roya o mancha foliar. La Figura 7 tiene una vista de la interfaz web de CDD. El link donde puedes acceder a la aplicación es https://share.streamlit.io/jezur/corndiseasedetector.github.io/main/webapp.py. Una imagen de prueba que puedes usar se encuentra aquí.

Figura 7. Vistazo de CDD desde streamlit.io

Información adicional

Puedes encontrar información adicional sobre el modelo en nuestra página de GitHub.

Pasos futuros para este proyecto

Se espera agregar una amplia variedad de cultivos agrícolas para introducir esta tecnología de detección a cultivos de otras especies sensibles a las pestes de microorganismos como el banano y la papa. Además, queremos aumentar el tamaño y la diversidad del dataset para cada categoría existente, así como aumentar el número de enfermedades que se pueden detectar. Finalmente, queremos desarrollar una aplicación que se pueda integrar a dispositivos móviles como celulares, tablets y dispositivos de IoT.

El equipo

Somos un grupo interdisciplinario de jóvenes y profesionales de varias ramas, con muchas ganas por aplicar lo aprendido en los talleres de Saturdays AI. Ximena y Paul son ingenieros en computación, Gilberto es ingeniero matemático, Sebas y Juan son ingenieros en biotecnología. Agradecemos profundamente la oportunidad que nos han brindado.

Bibliografía

--

--

Juan Esteban Zurita

Biotechnology and Physics student living in Ecuador. I share interesting things I learn and live.