Spaces:
Sleeping
Sleeping
File size: 5,256 Bytes
baa207a fe07bda baa207a c79348f baa207a c79348f baa207a c79348f baa207a 84aedf8 baa207a 6338fb4 baa207a c79348f 0e217f9 c79348f baa207a c79348f baa207a c79348f baa207a c79348f baa207a c79348f fe07bda baa207a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# Añadir al final del archivo main, después de cargar todos los modelos
# Generar estadísticas del sistema
if loaded_models:
# Contar modelos por tipo
model_types = {}
frameworks = {}
for name, model_data in loaded_models.items():
if model_data.get('type') != 'dummy':
# Contar por tipo
model_type = model_data['config'].get('type', 'unknown')
model_types[model_type] = model_types.get(model_type, 0) + 1
# Contar por framework
framework = model_data.get('framework', 'unknown')
frameworks[framework] = frameworks.get(framework, 0) + 1
# Calcular precisión promedio real (solo modelos cargados)
avg_accuracy = np.mean([
model_data['config'].get('accuracy', 0.8)
for model_data in loaded_models.values()
if model_data.get('type') != 'dummy'
])
# Encontrar modelo con mayor precisión
best_model = max(
loaded_models.items(),
key=lambda x: x[1]['config'].get('accuracy', 0) if x[1].get('type') != 'dummy' else 0
)
print(f"\n{'='*60}")
print(f"🚀 SISTEMA DE ANÁLISIS DE CÁNCER DE PIEL - ESTADO")
print(f"{'='*60}")
print(f"📊 Modelos cargados exitosamente: {len(loaded_models)}")
print(f"🎯 Precisión promedio del sistema: {avg_accuracy:.1%}")
print(f"🏆 Mejor modelo: {best_model[0]} ({best_model[1]['config'].get('accuracy', 0):.1%})")
print(f"\n📦 Distribución por tipo:")
for tipo, count in model_types.items():
print(f" - {tipo}: {count} modelos")
print(f"\n🔧 Distribución por framework:")
for fw, count in frameworks.items():
print(f" - {fw}: {count} modelos")
print(f"\n✅ Estado: OPERATIVO")
print(f"⚠️ ADVERTENCIA: Este sistema es solo para apoyo diagnóstico.")
print(f"{'='*60}\n")
else:
print(f"\n{'='*60}")
print(f"❌ ERROR CRÍTICO: No se pudieron cargar modelos")
print(f"💡 Posibles soluciones:")
print(f" 1. Verificar conexión a internet")
print(f" 2. Configurar HUGGINGFACE_TOKEN si es necesario")
print(f" 3. Instalar dependencias faltantes (timm, tensorflow)")
print(f"{'='*60}\n")
# Actualizar la información en la interfaz de Gradio
def create_interface():
with gr.Blocks(theme=gr.themes.Soft(), title="Análisis de Lesiones Cutáneas") as demo:
gr.Markdown(f"""
# 🏥 Sistema de Análisis de Lesiones Cutáneas - v2.0
**Herramienta de apoyo diagnóstico basada en IA con {len(loaded_models)} modelos especializados**
Carga una imagen dermatoscópica para obtener una evaluación automatizada por consenso de múltiples modelos.
""")
with gr.Row():
with gr.Column(scale=1):
input_img = gr.Image(
type="pil",
label="📷 Imagen Dermatoscópica",
height=400
)
analyze_btn = gr.Button(
"🚀 Analizar Lesión",
variant="primary",
size="lg"
)
gr.Markdown("""
### 📝 Instrucciones:
1. Carga una imagen clara de la lesión
2. La imagen debe estar bien iluminada
3. Enfoque en la lesión cutánea
4. Formatos soportados: JPG, PNG
### 🤖 Modelos disponibles:
""")
# Mostrar lista de modelos cargados
if loaded_models:
models_list = []
for name, data in sorted(loaded_models.items(),
key=lambda x: x[1]['config'].get('accuracy', 0),
reverse=True)[:10]: # Top 10
if data.get('type') != 'dummy':
config = data['config']
models_list.append(
f"{config['emoji']} **{config['name']}** - {config.get('accuracy', 0):.1%}"
)
gr.Markdown("\n".join(models_list))
with gr.Column(scale=2):
output_html = gr.HTML(label="📊 Resultado del Análisis")
analyze_btn.click(
fn=analizar_lesion,
inputs=input_img,
outputs=output_html
)
gr.Markdown(f"""
---
**Estado del Sistema:**
- ✅ Modelos activos: {len([m for m in loaded_models.values() if m.get('type') != 'dummy'])}
- 🎯 Precisión promedio: {avg_accuracy:.1%} (basada en validación científica)
- 🏆 Mejor modelo: {best_model[0]} ({best_model[1]['config'].get('accuracy', 0):.1%})
- ⚠️ **Este sistema es solo para apoyo diagnóstico. Consulte siempre a un profesional médico.**
<small>Versión 2.0 - Actualizada con modelos de última generación incluyendo Vision Transformers,
EfficientNet, ResNet y arquitecturas especializadas en melanoma.</small>
""")
return demo |