| --- |
| 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. |
|
|