Sistema de detección automática de vocalizaciones de ranas utilizando Variational Autoencoders (VAE) y clasificación supervisada.
| Modelo | Recall | Precisión | F1-Score |
|---|---|---|---|
| VAE (40 muestras) | 90.00% | 36.73% | 52.17% |
| VAE (328 muestras) | 90.43% | 84.57% | 87.40% |
| VAE + Clasificador | 92.41% | 94.92% | 93.65% ✨ |
El sistema combina dos enfoques:
- VAE (Variational Autoencoder): Compresión no supervisada del espectrograma a espacio latente de 16 dimensiones
- Clasificador MLP: Red neuronal supervisada para clasificación binaria (rana/no-rana)
Audio → Mel-Spectrogram → VAE Encoder → Espacio Latente (16D) → MLP → Predicción
- Python 3.8+
- PyTorch 2.0+
- librosa
- numpy
- matplotlib
- scikit-learn
# Clonar repositorio
git clone https://github.com/robleaustral/frog-vae-detector.git
cd frog-vae-detector
# Crear entorno virtual
python -m venv venv
source venv/bin/activate # En Windows: venv\Scripts\activate
# Instalar dependencias
pip install -r requirements.txtfrog-vae-detector/
├── models/
│ ├── vae_model.py # Arquitectura del VAE
│ ├── audio_processor.py # Preprocesamiento de audio
│ └── detector.py # Sistema de detección
├── scripts/
│ ├── train_vae.py # Entrenamiento del VAE
│ ├── train_classifier.py # Entrenamiento del clasificador
│ ├── evaluate_model.py # Evaluación de modelos
│ └── visualize_latent_space.py # Visualizaciones
├── notebooks/
│ └── evaluation_notebook.ipynb # Análisis interactivo
├── figures/ # Figuras del paper
├── results/ # Métricas y resultados
├── requirements.txt
└── README.md
python audio_preprocessor.py \
-i ./data/raw \
-o ./data/processedpython scripts/train_vae.py \
--data-dir ./data/processed \
--output-dir ./trained_models \
--epochs 100 \
--latent-dim 16python scripts/train_classifier.pypython scripts/evaluate_model.py \
--model-path ./trained_models/best_model.pth \
--config-path ./trained_models/detector_config.json \
--frog-data ./data/processed \
--non-frog-data ./data/other_sounds_processedEl sistema fue evaluado con:
- Ranas: 328 segmentos de 5 segundos
- 40 del dataset ESC-50
- 288 de grabaciones de campo (12 audios de ~60 seg c/u)
- No-ranas: 120 segmentos (perros, gatos, aves del ESC-50)
- Encoder: Capas convolucionales que comprimen espectrograma (128×216) a 16 dimensiones
- Decoder: Reconstruye el espectrograma original
- Detección: Distancia euclidiana al centroide del espacio latente
- Arquitectura: MLP (16 → 32 → 16 → 1)
- Regularización: Dropout 30%
- Optimizador: Adam (lr=0.001)
- Función de pérdida: Binary Cross-Entropy
Si utilizas este código en tu investigación, por favor cita:
@article{frog_vae_2025,
title={Efficient Frog Vocalization Detection using Variational Autoencoders},
author={Luis Veas-Castillo},
journal={[JOURNAL]},
year={2025}
}Las contribuciones son bienvenidas. Por favor:
- Fork el proyecto
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature) - Commit tus cambios (
git commit -m 'Add some AmazingFeature') - Push a la rama (
git push origin feature/AmazingFeature) - Abre un Pull Request
Este proyecto está bajo la Licencia MIT - ver el archivo LICENSE para detalles.
- Luis Veas-Castillo - Trabajo inicial - GitHub
- Dataset ESC-50: Karol J. Piczak
- Comunidad de PyTorch
- [Otras instituciones/personas]
Para preguntas o colaboraciones: [luis.veasc@inf.uach.cl]
Roble Austral Organization - GitHub
Luis Veas-Castillo
- Instituto de Informática
- Universidad Austral de Chile
- Valdivia, Chile
- 📧 luis.veasc@inf.uach.cl


