app / README.md
Carlos012's picture
Update (README): Update README
b0169a1
|
Raw
History Blame Contribute Delete
5.82 kB
---
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
```bash
cd app
```
### 2. Crear entorno virtual (recomendado)
**Windows:**
```bash
python -m venv venv
.\venv\Scripts\activate
```
**Linux/Mac:**
```bash
python3 -m venv venv
source venv/bin/activate
```
### 3. Instalar dependencias
```bash
pip install -r requirements.txt
```
## 🎯 Uso
### Ejecución local
```bash
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`:
```python
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`:
```python
demo.launch(server_port=8080) # Cambiar puerto
```
### Modo desarrollo
```python
demo.launch(debug=True) # Habilitar modo debug
```
### Recursos compartidos
```python
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'"
```bash
pip install gradio --upgrade
```
### Error: Modelo no descarga
1. Verifica conexión a internet
2. Descarga manualmente:
```python
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
```bash
# 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.