Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from transformers import AutoImageProcessor, AutoModelForImageClassification | |
| from PIL import Image | |
| import torch | |
| MODEL_ID = "enoch-alterego/anime-character-classifier" | |
| # Load model once when the app starts | |
| print("Loading model...") | |
| proc = AutoImageProcessor.from_pretrained(MODEL_ID) | |
| model = AutoModelForImageClassification.from_pretrained(MODEL_ID) | |
| model.eval() | |
| print("Model loaded!") | |
| def predict(image): | |
| if image is None: | |
| return {} | |
| # Convert and run prediction | |
| inputs = proc(images=image.convert("RGB"), return_tensors="pt") | |
| with torch.no_grad(): | |
| logits = model(**inputs).logits | |
| probs = torch.softmax(logits, dim=-1)[0] | |
| topk = torch.topk(probs, k=5) | |
| # Return top 5 results | |
| return { | |
| model.config.id2label[idx.item()]: float(score.item()) | |
| for score, idx in zip(topk.values, topk.indices) | |
| } | |
| # Build the interface | |
| demo = gr.Interface( | |
| fn=predict, | |
| inputs=gr.Image(type="pil", label="Upload an anime character image"), | |
| outputs=gr.Label(num_top_classes=5, label="Which anime is this from?"), | |
| title="๐ Guess the Anime Character", | |
| description="Upload any anime character image and the AI will guess which series they are from.", | |
| ) | |
| demo.launch() |