riyadifirman's picture
Update app.py
acdd1cd verified
import gradio as gr
import torch
from transformers import AutoImageProcessor, AutoModelForImageClassification
from torchvision.transforms import Compose, Resize, ToTensor, Normalize, RandomHorizontalFlip, RandomRotation
from PIL import Image
from datasets import load_dataset
import traceback
# Load dataset to get labels
dataset = load_dataset("bentrevett/caltech-ucsd-birds-200-2011")
labels = dataset['train'].features['label'].names
# Load model and processor
model_name = "riyadifirman/klasifikasiburung_new"
processor = AutoImageProcessor.from_pretrained(model_name)
model = AutoModelForImageClassification.from_pretrained(model_name)
# Define image transformations
normalize = Normalize(mean=processor.image_mean, std=processor.image_std)
transform = Compose([
Resize((224, 224)),
RandomHorizontalFlip(),
RandomRotation(10),
ToTensor(),
normalize,
])
def predict(image):
try:
image = Image.fromarray(image)
inputs = transform(image).unsqueeze(0)
outputs = model(inputs)
logits = outputs.logits
predicted_class_idx = logits.argmax(-1).item()
predicted_class = labels[predicted_class_idx]
return predicted_class
except Exception as e:
# Menampilkan error
print("An error occurred:", e)
print(traceback.format_exc()) # Ini akan print error secara detail
return "An error occurred while processing your request."
# Create Gradio interface
interface = gr.Interface(
fn=predict,
inputs=gr.Image(type="numpy"),
outputs="text",
title="Bird Classification",
description="Upload an image of a bird to classify it."
)
if __name__ == "__main__":
interface.launch(share=True)