YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

🦜 Clasificador de Aves del Tolima

Version License TensorFlow Accuracy

Modelos de Deep Learning para la clasificación de 10 especies de aves endémicas del departamento del Tolima, Colombia

🌐 Demo en Vivo | 📂 Repositorio GitHub | 📊 Documentación


📋 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

from huggingface_hub import hf_hub_download

# Descargar DenseNet121 (recomendado)
model_path = hf_hub_download(
    repo_id="AFELIPEY1417/aves-del-tolima",
    filename="modelo_final_densenet.keras"
)

# Descargar VGG16
model_path = hf_hub_download(
    repo_id="AFELIPEY1417/aves-del-tolima",
    filename="modelo_final_vgg16.keras"
)

Inferencia

import tensorflow as tf
from PIL import Image
import numpy as np

# Cargar el modelo
model = tf.keras.models.load_model(model_path)

# Preparar la imagen
img = Image.open("mi_ave.jpg").resize((224, 224))
img_array = np.array(img) / 255.0
img_array = np.expand_dims(img_array, axis=0)

# Realizar predicción
predictions = model.predict(img_array)
class_idx = np.argmax(predictions[0])
confidence = predictions[0][class_idx] * 100

print(f"Especie detectada: {SPECIES_NAMES[class_idx]}")
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

Data Augmentation aplicada durante el entrenamiento:
├─ Rotación: ±20°
├─ Zoom: 0.8x - 1.2x
├─ Desplazamiento horizontal/vertical: ±20%
├─ Volteo horizontal: Aleatorio
└─ 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

Optimizer: Adam
Learning Rate: 0.0001
Batch Size: 32
Epochs: 50 (con Early Stopping)
Loss Function: Categorical Crossentropy
Callbacks:
  - EarlyStopping (patience: 10)
  - ReduceLROnPlateau (factor: 0.5, patience: 5)
  - 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:

# Clonar el repositorio
git clone https://github.com/AndresYule1417/Proyecto_Aves.git
cd Proyecto_Aves/backend

# Instalar dependencias
pip install -r requirements.txt

# Los modelos se descargan automáticamente desde Hugging Face
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:

@misc{yule2025avesdeltolima,
  title={Clasificador de Aves del Tolima: Modelos de Deep Learning},
  author={Yule, Andrés},
  year={2025},
  publisher={Hugging Face},
  howpublished={\url{https://huggingface.co/AFELIPEY1417/aves-del-tolima}}
}

⭐ Si este proyecto te fue útil, considera darle una estrella en GitHub

Downloads last month
5
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Space using AFELIPEY1417/aves-del-tolima 1