Spaces:
Running
on
Zero
Running
on
Zero
| import gradio as gr | |
| import spaces | |
| from transformers import AutoImageProcessor, SiglipForImageClassification | |
| from PIL import Image | |
| import torch | |
| # Load model and processor | |
| model_name = "prithivMLmods/Dog-Breed-120" | |
| model = SiglipForImageClassification.from_pretrained(model_name) | |
| processor = AutoImageProcessor.from_pretrained(model_name) | |
| def dog_breed_classification(image): | |
| """Predicts the dog breed for an image.""" | |
| image = Image.fromarray(image).convert("RGB") | |
| inputs = processor(images=image, return_tensors="pt") | |
| with torch.no_grad(): | |
| outputs = model(**inputs) | |
| logits = outputs.logits | |
| probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist() | |
| labels = { | |
| "0": "affenpinscher", | |
| "1": "afghan_hound", | |
| "2": "african_hunting_dog", | |
| "3": "airedale", | |
| "4": "american_staffordshire_terrier", | |
| "5": "appenzeller", | |
| "6": "australian_terrier", | |
| "7": "basenji", | |
| "8": "basset", | |
| "9": "beagle", | |
| "10": "bedlington_terrier", | |
| "11": "bernese_mountain_dog", | |
| "12": "black-and-tan_coonhound", | |
| "13": "blenheim_spaniel", | |
| "14": "bloodhound", | |
| "15": "bluetick", | |
| "16": "border_collie", | |
| "17": "border_terrier", | |
| "18": "borzoi", | |
| "19": "boston_bull", | |
| "20": "bouvier_des_flandres", | |
| "21": "boxer", | |
| "22": "brabancon_griffon", | |
| "23": "briard", | |
| "24": "brittany_spaniel", | |
| "25": "bull_mastiff", | |
| "26": "cairn", | |
| "27": "cardigan", | |
| "28": "chesapeake_bay_retriever", | |
| "29": "chihuahua", | |
| "30": "chow", | |
| "31": "clumber", | |
| "32": "cocker_spaniel", | |
| "33": "collie", | |
| "34": "curly-coated_retriever", | |
| "35": "dandie_dinmont", | |
| "36": "dhole", | |
| "37": "dingo", | |
| "38": "doberman", | |
| "39": "english_foxhound", | |
| "40": "english_setter", | |
| "41": "english_springer", | |
| "42": "entlebucher", | |
| "43": "eskimo_dog", | |
| "44": "flat-coated_retriever", | |
| "45": "french_bulldog", | |
| "46": "german_shepherd", | |
| "47": "german_short-haired_pointer", | |
| "48": "giant_schnauzer", | |
| "49": "golden_retriever", | |
| "50": "gordon_setter", | |
| "51": "great_dane", | |
| "52": "great_pyrenees", | |
| "53": "greater_swiss_mountain_dog", | |
| "54": "groenendael", | |
| "55": "ibizan_hound", | |
| "56": "irish_setter", | |
| "57": "irish_terrier", | |
| "58": "irish_water_spaniel", | |
| "59": "irish_wolfhound", | |
| "60": "italian_greyhound", | |
| "61": "japanese_spaniel", | |
| "62": "keeshond", | |
| "63": "kelpie", | |
| "64": "kerry_blue_terrier", | |
| "65": "komondor", | |
| "66": "kuvasz", | |
| "67": "labrador_retriever", | |
| "68": "lakeland_terrier", | |
| "69": "leonberg", | |
| "70": "lhasa", | |
| "71": "malamute", | |
| "72": "malinois", | |
| "73": "maltese_dog", | |
| "74": "mexican_hairless", | |
| "75": "miniature_pinscher", | |
| "76": "miniature_poodle", | |
| "77": "miniature_schnauzer", | |
| "78": "newfoundland", | |
| "79": "norfolk_terrier", | |
| "80": "norwegian_elkhound", | |
| "81": "norwich_terrier", | |
| "82": "old_english_sheepdog", | |
| "83": "otterhound", | |
| "84": "papillon", | |
| "85": "pekinese", | |
| "86": "pembroke", | |
| "87": "pomeranian", | |
| "88": "pug", | |
| "89": "redbone", | |
| "90": "rhodesian_ridgeback", | |
| "91": "rottweiler", | |
| "92": "saint_bernard", | |
| "93": "saluki", | |
| "94": "samoyed", | |
| "95": "schipperke", | |
| "96": "scotch_terrier", | |
| "97": "scottish_deerhound", | |
| "98": "sealyham_terrier", | |
| "99": "shetland_sheepdog", | |
| "100": "shih-tzu", | |
| "101": "siberian_husky", | |
| "102": "silky_terrier", | |
| "103": "soft-coated_wheaten_terrier", | |
| "104": "staffordshire_bullterrier", | |
| "105": "standard_poodle", | |
| "106": "standard_schnauzer", | |
| "107": "sussex_spaniel", | |
| "108": "test", | |
| "109": "tibetan_mastiff", | |
| "110": "tibetan_terrier", | |
| "111": "toy_poodle", | |
| "112": "toy_terrier", | |
| "113": "vizsla", | |
| "114": "walker_hound", | |
| "115": "weimaraner", | |
| "116": "welsh_springer_spaniel", | |
| "117": "west_highland_white_terrier", | |
| "118": "whippet", | |
| "119": "wire-haired_fox_terrier", | |
| "120": "yorkshire_terrier" | |
| } | |
| predictions = {labels[str(i)]: round(probs[i], 3) for i in range(len(probs))} | |
| return predictions | |
| # Create Gradio interface | |
| iface = gr.Interface( | |
| fn=dog_breed_classification, | |
| inputs=gr.Image(type="numpy"), | |
| outputs=gr.Label(label="Prediction Scores"), | |
| title="Dog Breed Classification", | |
| description="Upload an image to classify it into one of the 121 dog breed categories." | |
| ) | |
| # Launch the app | |
| if __name__ == "__main__": | |
| iface.launch() |