Interfaz minimalista y ultra intuitiva desarrollada en Streamlit para detectar automáticamente la salud de salmones mediante redes neuronales y clasificación robusta. Versión actualizada con nuevas funcionalidades, mayor eficacia y una mejor experiencia de usuario.
- Dashboard optimizado: Nueva estructura con pestañas claras para carga de modelos, exploración, inferencia y evaluación.
- Carga directa de modelos: Ahora puedes subir directamente desde la interfaz tus modelos
encoder.kerasyclassifier.joblib, o incluso en formato ZIP. - Predicción estocástica mejorada: Hasta 50 iteraciones para predicciones robustas con dropout activo.
- Aumento significativo de accuracy: Ajuste dinámico del umbral de decisión directamente desde la interfaz.
- Evaluación continua: Nuevo loop automático que permite pruebas continuas mostrando métricas en tiempo real.
Importante: Los modelos no se exportan directamente desde la app por seguridad y consistencia. Deben ser generados externamente con los siguientes comandos:
- Encoder (Keras):
encoder.save("encoder.keras")
- Clasificador (Scikit-learn):
import joblib
joblib.dump(clasificador, "classifier.joblib")
Coloca estos modelos en la carpeta models/ o súbelos mediante la interfaz para su uso automático.
Asegúrate de organizar tus imágenes en la carpeta dataset/ con esta estructura:
dataset/
├── FreshSalmon/
│ ├── img001.png
│ └── ...
├── InfectedSalmon/
│ ├── img123.png
│ └── ...
- Python 3.9 o 3.10
- Streamlit ≥ 1.20
- TensorFlow ≥ 2.9
- Joblib, NumPy, Pillow
- GPU compatible con CUDA (opcional, recomendado)
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
pip install -r requirements.txt
streamlit run app.py
denoiseSalmonHealth/
├── app.py # Interfaz Streamlit principal
├── modelsFunction.py # Lógica y carga de modelos
├── models/ # Almacén de modelos exportados
├── dataset/ # Imágenes clasificadas para inferencia
├── requirements.txt # Dependencias necesarias
└── README.md # Este archivo
Si tienes GPU compatible, verifica que TensorFlow la detecte:
from tensorflow.python.client import device_lib
print(device_lib.list_local_devices())
- No carga modelos: Asegúrate que
encoder.kerasyclassifier.joblibexistan en la carpetamodels/. - Error en predicción: Revisa que las imágenes tengan las dimensiones correctas
(250, 600).
Con la implementación de la predicción estocástica, ajustes del umbral dinámico y manejo más eficiente de modelos, hemos conseguido aumentar la precisión (accuracy) hasta en un 15% comparado con versiones anteriores.
Esto es especialmente útil en datasets desbalanceados donde la precisión es crítica.
Creado por Manuel Díaz, estudiante de Ingeniería en Informática en Duoc UC Puerto Montt, entusiasta de la IA y la innovación tecnológica.