CoolFace
Datasetpublic

daiv05/corn-leaf-diseases-pests-and-deficiencies

Corn Leaf Diseases, Pests and Deficiencies Dataset de imágenes de hojas de maíz para la clasificación de enfermedades, plagas y deficiencias nutricionales. Forma parte de Doctor Maíz, un sistema de diagnóstico offline pensado para pequeños agricultores de El Salvador. Sobre este corpus se entrenó el modelo desplegado en la aplicación móvil del proyecto: EfficientNet-Lite0 cuantizado a Int8, de 3.5 MB, con macro-F1 de 0.9468 sobre un conjunto de prueba independiente de 5 015… See the full description on the dataset page: https://huggingface.co/datasets/daiv05/corn-leaf-diseases-pests-and-deficiencies.

sourceHugging Facecc-by-nc-sa-4.0updated 11d agoView on Hugging Face
1likes288downloads
Dataset Card

Corn Leaf Diseases, Pests and Deficiencies

Dataset de imágenes de hojas de maíz para la clasificación de enfermedades, plagas y deficiencias nutricionales. Forma parte de Doctor Maíz, un sistema de diagnóstico offline pensado para pequeños agricultores de El Salvador.

Sobre este corpus se entrenó el modelo desplegado en la aplicación móvil del proyecto: EfficientNet-Lite0 cuantizado a Int8, de 3.5 MB, con macro-F1 de 0.9468 sobre un conjunto de prueba independiente de 5 015 imágenes.

Enlaces

  • —Repositorio del proyecto: https://github.com/daiv05/maize-doctor-classifier
  • —Documentación del dataset y del proyecto (por ahora solo en español): https://doctor-maiz.deras.dev/
  • —Notebook de análisis exploratorio (EDA) completo: `notebooks/01_eda.ipynb`
  • —Dataset de segmentación de instancias de hoja, del mismo proyecto: `daiv05/corn-leaf-instance-segmentation`

Ficha técnica

CampoValor
Total de imágenes33 437
Número de clases9
Entornos de capturalab 3 551 · real 29 886
Duplicados eliminados (pre-limpieza)8 538 imágenes en 8 050 grupos (pHash, imagededup)
FormatoJPEG/JPG mayoritariamente, algunos PNG
ResoluciónHeterogénea — ancho/alto entre 54 px y 5184 px (mediana 640×640 px)
Tamaño total en disco~19 GB

Licencia y procedencia

El corpus no es una obra original: consolida ocho fuentes públicas de imágenes de maíz, cada una con su propia licencia. Tres de ellas —Maize in Field, Maize Diseases (PlantVillage) y CropDG Unified Multidomain— se publican bajo CC BY-NC-SA 4.0. Su cláusula ShareAlike obliga a que cualquier obra derivada mantenga los mismos términos, y su cláusula NonCommercial prohíbe el uso comercial. Por eso el conjunto agregado se publica bajo CC BY-NC-SA 4.0: es la licencia más restrictiva de las fuentes combinadas, y no puede relajarse aguas abajo.

En la práctica esto significa que el dataset puede usarse para investigación, docencia y trabajo académico, con atribución, pero no para productos o servicios comerciales, y que cualquier redistribución o derivado debe conservar la misma licencia.

El código del proyecto que produce y consume este dataset sí es MIT; la licencia del código y la de los datos son independientes. El detalle de licencia por fuente está documentado en la tabla de datasets del repositorio.

Estructura del repositorio

Las imágenes se distribuyen en shards `.tar` (clean-00000.tar … clean-00022.tar, ~800 MB cada uno) en lugar de archivos sueltos: son ~33 k imágenes, y publicarlas como blobs individuales haría que cada descarga completa implicara ~33 k peticiones HTTP.

Dentro de cada shard, las imágenes conservan el árbol <clase>/<entorno>/<archivo>, así que al extraerlos todos sobre un mismo directorio se reconstruye:

<clase>/
├── lab/
└── real/

Se incluye además metadata ligera (sin bytes de imagen):

ArchivoContenido
metadata.csvfile_name, label, environment — una fila por imagen
dataset_infos.jsonEsquema, clases y conteos por clase/entorno

El entorno (lab/real) viaja tanto en la ruta como en metadata.csv, y además está codificado en el nombre de cada archivo (..._lab_... / ..._real_...).

Descarga

python
from huggingface_hub import snapshot_download
import tarfile, pathlib

destino = pathlib.Path("clean")
snapshot_download(
    repo_id="daiv05/corn-leaf-diseases-pests-and-deficiencies",
    repo_type="dataset",
    local_dir=destino,
)
for tar_path in sorted(destino.rglob("*.tar")):
    with tarfile.open(tar_path) as tf:
        tf.extractall(destino, filter="data")
    tar_path.unlink()

En el repositorio del proyecto esto está automatizado en scripts/dataset/download_dataset.py (make download-dataset).

Clases y distribución

ClaseTotalLabReal% lab% del dataset
healthy — hoja sana8 74408 7440 %26.15 %
northern_corn_leaf_blight — tizón foliar norteño6 8308885 94213.0 %20.43 %
lethal_necrosis — necrosis letal del maíz (MLN)6 41506 4150 %19.19 %
fall_armyworm — gusano cogollero4 85704 8570 %14.53 %
common_rust — roya común2 2562 15010695.3 %6.75 %
gray_leaf_spot — mancha gris de la hoja1 9305131 41726.6 %5.77 %
phosphorus_deficiency — deficiencia de fósforo93809380 %2.81 %
nitrogen_deficiency — deficiencia de nitrógeno84608460 %2.53 %
potassium_deficiency — deficiencia de potasio62106210 %1.86 %

El dataset presenta un desbalance severo: healthy supera en ~14.1× a potassium_deficiency. Se recomienda usar muestreo ponderado (WeightedRandomSampler) y/o augmentation adicional para las clases minoritarias en lugar de solo re-ponderar la loss.

Distribución de imágenes por clase

Condiciones de captura (lab vs. real)

ContextoDescripción
labFondo uniforme (negro/blanco/gris), entorno controlado, iluminación artificial, distancia corta y constante. Típico de PlantVillage.
realCampo abierto, fondo natural variable, iluminación solar variable, diversidad de distancias y ángulos.

common_rust es la clase con mayor sesgo de dominio: 95.3 % de sus imágenes provienen de laboratorio, con fondo uniforme. Un modelo entrenado sin cuidado podría aprender a reconocer el fondo en vez de los síntomas foliares reales.

Proporción lab vs real por clase

Sesgo de procedencia: la advertencia importante

El riesgo mayor de este corpus no es el desbalance de clases sino la fuga por procedencia. Las clases provienen de repositorios distintos, y cada repositorio tiene su propia cámara, iluminación y fondo. Una partición estratificada clásica deja imágenes de la misma fuente a ambos lados del split, y el modelo puede resolver la tarea reconociendo el origen de la foto en lugar de la lesión foliar.

En el proyecto esto se midió: con partición estratificada el macro-F1 sobre test es 0.9468, pero al evaluar con leave-one-source-out —entrenando sin una fuente y evaluando sobre ella— cae a 0.6026 ± 0.1240. La diferencia entre ambas formas de partir los datos pesa más de 66 desviaciones estándar, mientras que cualquier ajuste de hiperparámetros mueve entre 1 y 2.

Quien use este dataset debería reportar, junto a su métrica, cómo particionó: una cifra alta bajo partición estratificada no predice el comportamiento en una parcela nueva.

Splits

El dataset se publica sin división train/val/test: los splits se generan de forma reproducible en el proyecto (scripts/pipeline/create_splits.py, semilla 42, estratificación por label + environment, deduplicación por SHA-256). Esto permite regenerarlos con distintos criterios —incluida la partición agrupada por fuente descrita arriba— sin volver a publicar las imágenes.

Resolución de las imágenes

Medido sobre una muestra estratificada de 3 466 imágenes (hasta 400 por clase):

MétricaMínimoMedianaMáximo
Ancho (px)546405 184
Alto (px)546405 184
Megapíxeles0.0030.41020.155
Aspect ratio (w/h)0.341.004.11

Las imágenes de la fuente corn_leaf_roboflow ya vienen fijas a 640×640 px; el resto conserva su resolución original.

Cita

Si usas este dataset, cita el proyecto y respeta además las licencias de las fuentes originales:

bibtex
@misc{doctormaiz2026corn,
  title  = {Corn Leaf Diseases, Pests and Deficiencies},
  author = {Rivas Fuentes, Josias Abner and Deras Cerros, David Alejandro and Rosales Molina, Elmer Edenilson},
  year   = {2026},
  note   = {Universidad de El Salvador},
  howpublished = {\url{https://huggingface.co/datasets/daiv05/corn-leaf-diseases-pests-and-deficiencies}}
}