A newer version of the Gradio SDK is available: 6.20.0
title: Clasificador de Calidad de Papas
emoji: 🥔
colorFrom: green
colorTo: yellow
sdk: gradio
app_file: app.py
pinned: false
🥔 Clasificador de tubérculos de papa
Modelo de clasificación de calidad de tubérculos de papa (Chaucha y Chola) usando Vision Transformer (ViT-Base/16) con interfaz desarrollada con la biblioteca de Gradio.
🌟 Características
- Modelo: Vision Transformer (ViT-Base/16) ajustado mediante Transfer Learning y Fine Tuning para clasificación de papa chaucha y chola.
- Interfaz: Desarrollada con la biblioteca de Gradio para una interfaz limpia, intuitiva y fácil de usar.
- Visualización explicable: Mapas de atención Eigen-CAM para interpretar las decisiones del modelo.
- Alto rendimiento: Optimizado para CPU y GPU.
- Métricas en tiempo real: Tiempo de inferencia y confianza por clase.
- Validación: Manejo de errores y validación de entrada.
📋 Requisitos
- Python 3.8 o superior
- CUDA (opcional, para aceleración GPU)
- 4GB RAM mínimo (8GB recomendado)
🚀 Instalación
1. Clonar o descargar el repositorio
cd app
2. Crear entorno virtual (recomendado)
Windows:
python -m venv venv
.\venv\Scripts\activate
Linux/Mac:
python3 -m venv venv
source venv/bin/activate
3. Instalar dependencias
pip install -r requirements.txt
🎯 Uso
Ejecución local
python app.py
La aplicación se abrirá automáticamente en tu navegador en:
http://localhost:7860
Ejecución con compartir (público temporalmente)
Modifica demo.launch() en app.py:
demo.launch(share=True) # Genera una URL pública temporal
📊 Clases de Clasificación
| Clase | Descripción |
|---|---|
| Buen estado | Tubérculo de papa sin defectos visibles, apta para comercialización. |
| Defectuoso | Tubérculo de papa con brotes, cortes o pudrición, no apta para comercialización. |
🎨 Características de la Interfaz
Panel de Entrada
- Arrastrar y soltar imágenes
- Formatos soportados: PNG, JPG, JPEG
- Tamaño máximo: 20 MB
- Vista previa en tiempo real
Panel de Resultados
- Predicción principal: Clase y confianza
- Gráficos de confianza: Barras de progreso por cada clase
- Mapa de atención: Visualización Eigen-CAM de regiones importantes
- Métricas de rendimiento: Tiempo de procesamiento y dispositivo usado
🧠 Arquitectura del Modelo
Input Image (224×224×3)
↓
Vision Transformer Base
├─ Patch Embedding (16×16)
├─ 12 Transformer Blocks
└─ Classification Head
↓
Output (2 clases)
Especificaciones Técnicas
- Arquitectura: ViT
- Parámetros: ~86M
- Input: 224×224 píxeles RGB
- Output: 2 clases (Buen estado y Defectuoso)
- Normalización: ImageNet (Media, Desviación estándar)
- Framework: PyTorch
📈 Interpretación del Mapa de Atención
El mapa Eigen-CAM muestra en rojo intenso las áreas que más influyeron en la decisión:
- 🔴 Rojo: Alta importancia (defectos detectados)
- 🟡 Amarillo: Importancia media
- 🔵 Azul: Baja importancia
🔧 Configuración Avanzada
Cambiar puerto
En app.py:
demo.launch(server_port=8080) # Cambiar puerto
Modo desarrollo
demo.launch(debug=True) # Habilitar modo debug
Recursos compartidos
demo.launch(
server_name="0.0.0.0", # Accesible desde la red local
share=True, # Generar link público
auth=("usuario", "clave") # Agregar autenticación
)
🐛 Solución de Problemas
Error: "No module named 'gradio'"
pip install gradio --upgrade
Error: Modelo no descarga
- Verifica conexión a internet
- Descarga manualmente:
from huggingface_hub import hf_hub_download
hf_hub_download(
repo_id="Carlos012/vit_papas",
filename="modelo_v3_hibrido/hibrido_v2/fine_tuning_parcial/vit_papas_pesos_ftp.pt",
repo_type="model",
)
Error: CUDA out of memory
- Usa CPU en lugar de GPU
- Reduce el tamaño de las imágenes antes de subirlas
La interfaz no carga
# Verificar puerto en uso
netstat -an | findstr :7860
# Cambiar puerto en app.py
demo.launch(server_port=7861)
📦 Estructura del Proyecto
app/
├── app.py # Aplicación desarrollada con Gradio
├── Dockerfile # Archivo para desplegar en contenedor Docker
├── requirements.txt # Dependencias Gradio
└── README.md # Este archivo
📝 Licencia
Esta interfaz es parte de un trabajo de investigación curricular.
👨💻 Autor
Cristian Armijos-Sarango
🙏 Agradecimientos
- timm (PyTorch Image Models): Librería para implementación de la arquitectura ViT.
- Gradio: Librería utilizada para desarrollar la interfaz.
- Hugging Face Hub: Plataforma de almacenamiento del modelo.
- pytorch-grad-cam: Librería de visualización de mapas de interpretabilidad.
📧 Contacto
Para preguntas, sugerencias o reportar problemas, abre un issue en el repositorio o contacta al autor del proyecto a través del siguiente correo electrónico (cristian.e.armijos@unl.edu.ec).
⚠️ Nota Importante: Esta interfaz es una herramienta de apoyo para la clasificación de tubérculos de papa. Para decisiones críticas de calidad en contextos comerciales, se recomienda consultar con especialistas en agronomía e inspección de calidad de alimentos.