Views
No views yet

Dog-Breed-120 is an image classification vision-language encoder model fine-tuned from google/siglip2-base-patch16-224 for a single-label classification task. It is designed to classify dog images into specific breed categories using the SiglipForImageClassification architecture.
[!Note] Accuracy : 86.81
1{'eval_loss': 0.49717578291893005,
2 'eval_model_preparation_time': 0.0042,
3 'eval_accuracy': 0.8681275679906085,
4 'eval_runtime': 146.2493,
5 'eval_samples_per_second': 69.894,
6 'eval_steps_per_second': 8.739,
7 'epoch': 7.0}!pip install -q transformers torch pillow gradio1import gradio as gr
2from transformers import AutoImageProcessor, SiglipForImageClassification
3from PIL import Image
4import torch
5
6# Load model and processor
7model_name = "prithivMLmods/Dog-Breed-120"
8model = SiglipForImageClassification.from_pretrained(model_name)
9processor = AutoImageProcessor.from_pretrained(model_name)
10
11def dog_breed_classification(image):
12 """Predicts the dog breed for an image."""
13 image = Image.fromarray(image).convert("RGB")
14 inputs = processor(images=image, return_tensors="pt")
15
16 with torch.no_grad():
17 outputs = model(**inputs)
18 logits = outputs.logits
19 probs = torch.nn.functional.softmax(logits, dim=1).squeeze().tolist()
20
21 labels = {
22 "0": "affenpinscher",
23 "1": "afghan_hound",
24 "2": "african_hunting_dog",
25 "3": "airedale",
26 "4": "american_staffordshire_terrier",
27 "5": "appenzeller",
28 "6": "australian_terrier",
29 "7": "basenji",
30 "8": "basset",
31 "9": "beagle",
32 "10": "bedlington_terrier",
33 "11": "bernese_mountain_dog",
34 "12": "black-and-tan_coonhound",
35 "13": "blenheim_spaniel",
36 "14": "bloodhound",
37 "15": "bluetick",
38 "16": "border_collie",
39 "17": "border_terrier",
40 "18": "borzoi",
41 "19": "boston_bull",
42 "20": "bouvier_des_flandres",
43 "21": "boxer",
44 "22": "brabancon_griffon",
45 "23": "briard",
46 "24": "brittany_spaniel",
47 "25": "bull_mastiff",
48 "26": "cairn",
49 "27": "cardigan",
50 "28": "chesapeake_bay_retriever",
51 "29": "chihuahua",
52 "30": "chow",
53 "31": "clumber",
54 "32": "cocker_spaniel",
55 "33": "collie",
56 "34": "curly-coated_retriever",
57 "35": "dandie_dinmont",
58 "36": "dhole",
59 "37": "dingo",
60 "38": "doberman",
61 "39": "english_foxhound",
62 "40": "english_setter",
63 "41": "english_springer",
64 "42": "entlebucher",
65 "43": "eskimo_dog",
66 "44": "flat-coated_retriever",
67 "45": "french_bulldog",
68 "46": "german_shepherd",
69 "47": "german_short-haired_pointer",
70 "48": "giant_schnauzer",
71 "49": "golden_retriever",
72 "50": "gordon_setter",
73 "51": "great_dane",
74 "52": "great_pyrenees",
75 "53": "greater_swiss_mountain_dog",
76 "54": "groenendael",
77 "55": "ibizan_hound",
78 "56": "irish_setter",
79 "57": "irish_terrier",
80 "58": "irish_water_spaniel",
81 "59": "irish_wolfhound",
82 "60": "italian_greyhound",
83 "61": "japanese_spaniel",
84 "62": "keeshond",
85 "63": "kelpie",
86 "64": "kerry_blue_terrier",
87 "65": "komondor",
88 "66": "kuvasz",
89 "67": "labrador_retriever",
90 "68": "lakeland_terrier",
91 "69": "leonberg",
92 "70": "lhasa",
93 "71": "malamute",
94 "72": "malinois",
95 "73": "maltese_dog",
96 "74": "mexican_hairless",
97 "75": "miniature_pinscher",
98 "76": "miniature_poodle",
99 "77": "miniature_schnauzer",
100 "78": "newfoundland",
101 "79": "norfolk_terrier",
102 "80": "norwegian_elkhound",
103 "81": "norwich_terrier",
104 "82": "old_english_sheepdog",
105 "83": "otterhound",
106 "84": "papillon",
107 "85": "pekinese",
108 "86": "pembroke",
109 "87": "pomeranian",
110 "88": "pug",
111 "89": "redbone",
112 "90": "rhodesian_ridgeback",
113 "91": "rottweiler",
114 "92": "saint_bernard",
115 "93": "saluki",
116 "94": "samoyed",
117 "95": "schipperke",
118 "96": "scotch_terrier",
119 "97": "scottish_deerhound",
120 "98": "sealyham_terrier",
121 "99": "shetland_sheepdog",
122 "100": "shih-tzu",
123 "101": "siberian_husky",
124 "102": "silky_terrier",
125 "103": "soft-coated_wheaten_terrier",
126 "104": "staffordshire_bullterrier",
127 "105": "standard_poodle",
128 "106": "standard_schnauzer",
129 "107": "sussex_spaniel",
130 "108": "test",
131 "109": "tibetan_mastiff",
132 "110": "tibetan_terrier",
133 "111": "toy_poodle",
134 "112": "toy_terrier",
135 "113": "vizsla",
136 "114": "walker_hound",
137 "115": "weimaraner",
138 "116": "welsh_springer_spaniel",
139 "117": "west_highland_white_terrier",
140 "118": "whippet",
141 "119": "wire-haired_fox_terrier",
142 "120": "yorkshire_terrier"
143 }
144
145 predictions = {labels[str(i)]: round(probs[i], 3) for i in range(len(probs))}
146 return predictions
147
148# Create Gradio interface
149iface = gr.Interface(
150 fn=dog_breed_classification,
151 inputs=gr.Image(type="numpy"),
152 outputs=gr.Label(label="Prediction Scores"),
153 title="Dog Breed Classification",
154 description="Upload an image to classify it into one of the 121 dog breed categories."
155)
156
157# Launch the app
158if __name__ == "__main__":
159 iface.launch()