import gradio as gr from transformers import ViTFeatureExtractor, ViTForImageClassification from PIL import Image import torch # Cargar modelo y extractor model = ViTForImageClassification.from_pretrained("akahana/vit-base-cats-vs-dogs") feature_extractor = ViTFeatureExtractor.from_pretrained("google/vit-base-patch16-224-in21k") # Función de predicción def classify_image(image): inputs = feature_extractor(images=image, return_tensors="pt") outputs = model(**inputs) logits = outputs.logits predicted_class_idx = logits.argmax(-1).item() predicted_class = model.config.id2label[predicted_class_idx] return predicted_class # Interfaz mejorada with gr.Blocks() as demo: gr.Markdown("# 🐱🐶 Clasificador de Gatos vs Perros") gr.Markdown("Sube una imagen de un gato o un perro. Este modelo basado en Vision Transformer (ViT) te dirá cuál es.") with gr.Row(): with gr.Column(): image_input = gr.Image(label="📷 Sube tu imagen", type="pil") submit_btn = gr.Button("🔍 Clasificar") with gr.Column(): output_label = gr.Textbox(label="🔎 Resultado", interactive=False) submit_btn.click(fn=classify_image, inputs=image_input, outputs=output_label) demo.launch()