Proyecto de Machine Learning aplicado al sector agrícola, que utiliza el dataset Agricultural Pests Image Dataset para entrenar un modelo de clasificación de imágenes capaz de identificar distintas plagas comunes en entornos agrícolas.
Desarrollar un flujo completo de aprendizaje automático para reconocer 12 tipos de plagas a partir de imágenes, aplicando Transfer Learning con la red ResNet-18 preentrenada en ImageNet.
agro-pests/ ├── .devcontainer/ # Configuración del entorno Docker + VS Code ├── data/ │ ├── raw/ # Descarga original del dataset │ ├── pests/ # Dataset organizado por clases │ └── split/ # Conjuntos train / val / test ├── models/ │ └── resnet18.pth # Modelo entrenado ├── src/ │ ├── download_data.py # Descarga y organiza los datos desde Kaggle │ ├── split_data.py # Crea las divisiones train / val / test │ ├── train.py # Entrenamiento del modelo │ └── predict.py # Predicción con el modelo guardado ├── AgroPests_MiniProyecto.ipynb # Notebook principal con todo el flujo ├── requirements.txt └── README.md
Fuente: Kaggle – Agricultural Pests Image Dataset
Contiene 12 clases de plagas, entre ellas: ants, bees, beetle, caterpillar, earwig, earthworms, grasshopper, moth, slug, snail, wasp, weevil.
Todas las imágenes fueron redimensionadas a un máximo de 300×300 px para optimizar el procesamiento.
- Descarga automática del dataset desde Kaggle (requiere
~/.kaggle/kaggle.jsoncon tu API Key) - Descompresión y detección automática de clases
- División del dataset en train / val / test (70 / 15 / 15)
- Entrenamiento con ResNet-18 (Transfer Learning)
- Guardado del modelo entrenado
- Evaluación y predicción de ejemplo
- Abre la carpeta del proyecto en VS Code.
- El contenedor se iniciará automáticamente con todas las dependencias.
- Ejecuta los siguientes comandos en la terminal:
python src/download_data.py # Descarga y organiza los datos
python src/split_data.py # Divide el dataset
WORKERS=0 BATCH=16 EPOCHS=3 python src/train.py # Entrena el modelo
python src/predict.py "data/split/test/wasp/wasp (671).jpg" # Prueba una imagen
Abre y ejecuta AgroPests_MiniProyecto.ipynb celda por celda (Shift + Enter).
Incluye gráficos, ejemplos y explicaciones paso a paso.
- Python ≥ 3.11
- PyTorch, Torchvision, Torchaudio
- tqdm, scikit-learn, pillow, matplotlib
- kaggle, ipykernel
Instalación general: pip install -r requirements.txt
Tras 3 épocas de entrenamiento, el modelo logra una exactitud de validación ≈ 65 %, con capacidad de identificar correctamente clases como wasp, ants o grasshopper en las predicciones Top-1 y Top-5.
Ejemplo de salida:
📄 Imagen: data/split/test/wasp/wasp (671).jpg
✅ Predicción: wasp
🔝 Top-5:
- wasp: 1.000
- grasshopper: 0.000
- bees: 0.000
- beetle: 0.000
- weevil: 0.000
Dataset con licencia de uso académico bajo los términos de Kaggle.
El código fuente se distribuye bajo licencia MIT.
Felipe Valenzuela P.
Ingeniero Agrónomo y Analista Programador