from copy import deepcopy from huggingface_hub import from_pretrained_fastai from PIL import Image import streamlit as st import pandas as pd _LABELS = ( "affenpinscher", "afghan_hound", "african_hunting_dog", "airedale", "american_staffordshire_terrier", "appenzeller", "australian_terrier", "basenji", "basset", "beagle", "bedlington_terrier", "bernese_mountain_dog", "black-and-tan_coonhound", "blenheim_spaniel", "bloodhound", "bluetick", "border_collie", "border_terrier", "borzoi", "boston_bull", "bouvier_des_flandres", "boxer", "brabancon_griffon", "briard", "brittany_spaniel", "bull_mastiff", "cairn", "cardigan", "chesapeake_bay_retriever", "chihuahua", "chow", "clumber", "cocker_spaniel", "collie", "curly-coated_retriever", "dandie_dinmont", "dhole", "dingo", "doberman", "english_foxhound", "english_setter", "english_springer", "entlebucher", "eskimo_dog", "flat-coated_retriever", "french_bulldog", "german_shepherd", "german_short-haired_pointer", "giant_schnauzer", "golden_retriever", "gordon_setter", "great_dane", "great_pyrenees", "greater_swiss_mountain_dog", "groenendael", "ibizan_hound", "irish_setter", "irish_terrier", "irish_water_spaniel", "irish_wolfhound", "italian_greyhound", "japanese_spaniel", "keeshond", "kelpie", "kerry_blue_terrier", "komondor", "kuvasz", "labrador_retriever", "lakeland_terrier", "leonberg", "lhasa", "malamute", "malinois", "maltese_dog", "mexican_hairless", "miniature_pinscher", "miniature_poodle", "miniature_schnauzer", "newfoundland", "norfolk_terrier", "norwegian_elkhound", "norwich_terrier", "old_english_sheepdog", "otterhound", "papillon", "pekinese", "pembroke", "pomeranian", "pug", "redbone", "rhodesian_ridgeback", "rottweiler", "saint_bernard", "saluki", "samoyed", "schipperke", "scotch_terrier", "scottish_deerhound", "sealyham_terrier", "shetland_sheepdog", "shih-tzu", "siberian_husky", "silky_terrier", "soft-coated_wheaten_terrier", "staffordshire_bullterrier", "standard_poodle", "standard_schnauzer", "sussex_spaniel", "tibetan_mastiff", "tibetan_terrier", "toy_poodle", "toy_terrier", "vizsla", "walker_hound", "weimaraner", "welsh_springer_spaniel", "west_highland_white_terrier", "whippet", "wire-haired_fox_terrier", "yorkshire_terrier", ) def get_breed(path): pass @st.cache_resource def get_predictor(): return from_pretrained_fastai("TheDima/resnet50-dog-breed-identification") def predict(image): # Get predictions predictor = get_predictor() pred, pred_idx, probs = predictor.predict(image) return pred, probs[pred_idx].item(), probs def print_probabilities(probs, labels, top_n=10): df = pd.DataFrame({"Label": labels, "Probability": probs}) df = df.sort_values(by="Probability", ascending=False).head(top_n) st.dataframe(df, column_order=["Label", "Probability"], hide_index=True) st.title("Dog Breed Recognition") uploaded_file = st.file_uploader("Upload a doggy...", type=["jpg", "jpeg"]) if uploaded_file is not None: # Display uploaded image image = Image.open(uploaded_file) image_copy = deepcopy(image) # Make a prediction with st.spinner("Checking..."): pred, prob, probs = predict(image) centered_html = f"""