prithivMLmods commited on
Commit
fb36fa4
·
verified ·
1 Parent(s): e128767

Create dog_breed.py

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