Spaces:
Sleeping
Sleeping
import gradio as gr | |
from transformers import pipeline | |
# Load your Hugging Face model | |
classifier = pipeline("image-classification", model="dima806/cat_breed_image_detection") | |
# Function to predict top 3 cat breeds from uploaded image | |
def predict(image): | |
results = classifier(image) | |
top3 = results[:3] | |
formatted = [f"{i+1}. {res['label']} ({round(res['score'] * 100, 2)}%)" for i, res in enumerate(top3)] | |
return "\n".join(formatted) | |
# All cat breeds detected by the model | |
cat_breeds = [ | |
"Abyssinian", "American Bobtail", "American Curl", "American Shorthair", | |
"Applehead Siamese", "Balinese", "Bengal", "Birman", "Bombay", "British Shorthair", | |
"Burmese", "Calico", "Cornish Rex", "Devon Rex", "Dilute Calico", "Dilute Tortoiseshell", | |
"Domestic Long Hair", "Domestic Medium Hair", "Domestic Short Hair", "Egyptian Mau", | |
"Exotic Shorthair", "Extra-Toes Cat - Hemingway Polydactyl", "Havana", "Himalayan", | |
"Japanese Bobtail", "Maine Coon", "Manx", "Munchkin", "Nebelung", "Norwegian Forest", | |
"Oriental Short Hair", "Persian", "Ragamuffin", "Ragdoll", "Russian Blue", | |
"Scottish Fold", "Siamese", "Siberian", "Snowshoe", "Sphynx", "Tabby", "Tiger", | |
"Tonkinese", "Torbie", "Tortoiseshell", "Turkish Angora", "Turkish Van", "Tuxedo" | |
] | |
breed_list = "\n".join(cat_breeds) | |
# Build the UI | |
with gr.Blocks(theme="soft") as demo: | |
gr.Markdown(""" | |
# πΎ Cat Breed Detector | |
Upload a picture of your cat, and let AI tell you its top 3 possible breeds! | |
Powered by π€ Hugging Face Transformers and a fine-tuned model. | |
""") | |
with gr.Row(equal_height=True): | |
with gr.Column(scale=1): | |
image_input = gr.Image(type="pil", label="πΈ Upload a Cat Image") | |
predict_button = gr.Button("π Detect Breed") | |
output = gr.Textbox(label="π― Top 3 Predicted Breeds", interactive=False) | |
with gr.Column(scale=1): | |
gr.Markdown("### π± All Supported Cat Breeds") | |
gr.Textbox(value=breed_list, label="", lines=25, interactive=False, max_lines=25, show_copy_button=True) | |
gr.Markdown("---") | |
# Loading spinner while processing | |
predict_button.click(fn=predict, inputs=image_input, outputs=output) | |
demo.launch() | |