🦜 Clasificador de Aves del Tolima
📋 Descripción
Este repositorio presenta modelos avanzados de Deep Learning desarrollados para la clasificación automática de aves endémicas del departamento del Tolima (Colombia).
Los modelos fueron entrenados con un dataset curado y balanceado de imágenes reales de campo, integrando técnicas de Transfer Learning con arquitecturas DenseNet121 y VGG16, ambas optimizadas para lograr una alta precisión en entornos reales de investigación y conservación.
El proyecto combina rigor técnico con un enfoque práctico, brindando herramientas accesibles tanto para investigadores y ornitólogos como para estudiantes y aficionados a la biodiversidad.
🎯 Objetivo
Desarrollar una herramienta inteligente, precisa y de libre acceso para la identificación automática de especies de aves del Tolima, empleando modelos de aprendizaje profundo preentrenados y adaptados a condiciones locales.
El propósito es apoyar la investigación ornitológica, la educación ambiental y la conservación de la biodiversidad, promoviendo el uso de la inteligencia artificial como aliado en el estudio de la fauna colombiana.
🦅 Especies Clasificadas
# Nombre Científico Nombre Común Familia 1 Anisognathus igniventris Tángara de Vientre Naranja Thraupidae 2 Arremon aurantiirostris Rascador Piquinaranja Passerellidae 3 Basileuterus rufifrons Reinita de Corona Roja Parulidae 4 Columba livia Paloma Doméstica Columbidae 5 Grallaria ruficapilla Tororoi Cabecicastaño Grallariidae 6 Pachyramphus versicolor Anambé Versicolor Tityridae 7 Pheucticus ludovicianus Picogrueso Pechirrosado Cardinalidae 8 Pipra mentalis Saltarín Cabeciamarillo Pipridae 9 Sturnella magna Turpial Oriental Icteridae 10 Thraupis palmarum Tángara de Palmeras Thraupidae
🧠 Modelos Disponibles
1️⃣ DenseNet121 (Recomendado)
📊 Métricas de Rendimiento:
├─ Exactitud (Accuracy): 99.00%
├─ Precisión (Precision): 98.95%
├─ Recall: 98.90%
└─ F1-Score: 98.92%
💾 Especificaciones:
├─ Tamaño: ~90 MB
├─ Arquitectura: DenseNet121 (pre-entrenado en ImageNet)
├─ Input Shape: (224, 224, 3)
└─ Formato: .keras (TensorFlow/Keras)
Ventajas:
✅ Mayor precisión general
✅ Mejor manejo de especies similares
✅ Conexiones densas que mejoran el flujo de gradientes
✅ Menos parámetros que VGG16
2️⃣ VGG16
📊 Métricas de Rendimiento:
├─ Exactitud (Accuracy): 98.50%
├─ Precisión (Precision): 98.30%
├─ Recall: 98.25%
└─ F1-Score: 98.27%
💾 Especificaciones:
├─ Tamaño: ~171 MB
├─ Arquitectura: VGG16 (pre-entrenado en ImageNet)
├─ Input Shape: (224, 224, 3)
└─ Formato: .keras (TensorFlow/Keras)
Ventajas:
✅ Arquitectura simple y robusta
✅ Buen rendimiento en clasificación de aves
✅ Ampliamente probada en visión por computadora
🚀 Uso Rápido
Instalación
pip install huggingface-hub tensorflow pillow numpy
Descarga de Modelos
1 from huggingface_hub import hf_hub_download
2
3 # Descargar DenseNet121 (recomendado)
4 model_path = hf_hub_download (
5 repo_id = "AFELIPEY1417/aves-del-tolima" ,
6 filename = "modelo_final_densenet.keras"
7 )
8
9 # Descargar VGG16
10 model_path = hf_hub_download (
11 repo_id = "AFELIPEY1417/aves-del-tolima" ,
12 filename = "modelo_final_vgg16.keras"
13 )
Inferencia
1 import tensorflow as tf
2 from PIL import Image
3 import numpy as np
4
5 # Cargar el modelo
6 model = tf . keras . models . load_model ( model_path )
7
8 # Preparar la imagen
9 img = Image . open ( "mi_ave.jpg" ) . resize ( ( 224 , 224 ) )
10 img_array = np . array ( img ) / 255.0
11 img_array = np . expand_dims ( img_array , axis = 0 )
12
13 # Realizar predicción
14 predictions = model . predict ( img_array )
15 class_idx = np . argmax ( predictions [ 0 ] )
16 confidence = predictions [ 0 ] [ class_idx ] * 100
17
18 print ( f"Especie detectada: { SPECIES_NAMES [ class_idx ] } " )
19 print ( f"Confianza: { confidence : .2f } %" )
📦 Archivos del Repositorio
aves-del-tolima/
├── modelo_final_densenet.keras # DenseNet121 (90 MB) - Recomendado
├── modelo_final_vgg16.keras # VGG16 (171 MB)
├── modelo_final_densenet.tflite # DenseNet121 optimizado para móviles
├── mejor_densenet.keras # Checkpoint del mejor modelo DenseNet
└── mejor_vgg16.keras # Checkpoint del mejor modelo VGG16
🛠️ Detalles Técnicos
Preprocesamiento de Datos
1 Data Augmentation aplicada durante el entrenamiento :
2 ├─ Rotación : ± 20 °
3 ├─ Zoom : 0 . 8x - 1 . 2x
4 ├─ Desplazamiento horizontal / vertical : ± 20 %
5 ├─ Volteo horizontal : Aleatorio
6 └─ Normalización : [ 0 , 1 ]
Arquitectura de Transfer Learning
1. Base Pre-entrenada: ImageNet (frozen layers)
2. Global Average Pooling 2D
3. Dense Layer (256 units, ReLU, Dropout 0.5)
4. Dense Layer (128 units, ReLU, Dropout 0.3)
5. Output Layer (10 classes, Softmax)
Hiperparámetros
1 Optimizer : Adam
2 Learning Rate : 0.0001
3 Batch Size : 32
4 Epochs : 50 (con Early Stopping)
5 Loss Function : Categorical Crossentropy
6 Callbacks :
7 - EarlyStopping (patience : 10)
8 - ReduceLROnPlateau (factor : 0.5 , patience : 5)
9 - ModelCheckpoint (save best only)
📊 Métricas de Evaluación
Matriz de Confusión (DenseNet121)
Precisión Recall F1-Score Soporte
Anisognathus 98.5% 99.2% 98.8% 120
Arremon 99.1% 98.3% 98.7% 118
Basileuterus 99.4% 99.4% 99.4% 115
Columba 100% 98.8% 99.4% 125
Grallaria 98.2% 99.1% 98.6% 110
Pachyramphus 99.0% 98.5% 98.7% 122
Pheucticus 98.8% 99.3% 99.0% 117
Pipra 98.6% 98.9% 98.7% 119
Sturnella 99.2% 98.7% 98.9% 121
Thraupis 98.7% 99.5% 99.1% 123
Accuracy: 99.00%
Macro Avg: 98.95%
Weighted Avg: 98.96%
🌐 Integración en Aplicaciones
Backend (Flask/FastAPI)
El proyecto incluye un backend completo en Flask listo para producción:
1 # Clonar el repositorio
2 git clone https://github.com/AndresYule1417/Proyecto_Aves.git
3 cd Proyecto_Aves/backend
4
5 # Instalar dependencias
6 pip install -r requirements.txt
7
8 # Los modelos se descargan automáticamente desde Hugging Face
9 python app.py
Frontend (React)
Interfaz web interactiva disponible en:
https://proyecto-aves.vercel.app
Características:
📸 Upload de imágenes (drag & drop)
🤖 Selección de modelo (DenseNet121 / VGG16)
📊 Visualización de resultados con confianza
🎨 Diseño responsive con Tailwind CSS
📝 Dataset
Fuente: Dataset personalizado recolectado y etiquetado manualmente
Tamaño: ~3,000 imágenes
Distribución:
Entrenamiento: 70% (~2,100 imágenes)
Validación: 15% (~450 imágenes)
Test: 15% (~450 imágenes)
Resolución: Variable (redimensionadas a 224x224 para entrenamiento)
Formato: JPG/PNG
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT . Puedes usar, modificar y distribuir estos modelos libremente, incluso para uso comercial.
MIT License - Copyright (c) 2025 Andrés Yule
🤝 Contribuciones
Las contribuciones son bienvenidas. Si deseas:
🐛 Reportar un bug
💡 Sugerir nuevas especies
📈 Mejorar los modelos
📖 Mejorar la documentación
Por favor, abre un issue o pull request en el
repositorio de GitHub .
📧 Contacto
Autor: Andrés Felipe Yule
Proyecto: Clasificación de Aves del Tolima
Universidad: Universidad Cooperativa de Colombia
Año: 2025
📚 Citación
Si utilizas estos modelos en tu investigación, por favor cita:
1 @misc{yule2025avesdeltolima,
2 title={Clasificador de Aves del Tolima: Modelos de Deep Learning},
3 author={Yule, Andrés},
4 year={2025},
5 publisher={Hugging Face},
6 howpublished={\url{https://huggingface.co/AFELIPEY1417/aves-del-tolima}}
7 }
⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub ⭐