app / README.md
Carlos012's picture
Update (README): Update README
b0169a1
|
Raw
History Blame Contribute Delete
5.82 kB

A newer version of the Gradio SDK is available: 6.20.0

Upgrade
metadata
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

  1. Verifica conexión a internet
  2. 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.