File size: 36,264 Bytes
0c717d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
fd1d2e7
0c717d3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
import gradio as gr
import pandas as pd
import torch
import torchvision.transforms as transforms
from PIL import Image
import lightning as L
from src.models.classifier import ImageNetClassifier

# Define the class names (replace with your actual class names)
# Add your dog breed classes here
# Example:
# "Labrador", "German Shepherd", "Golden Retriever", etc.
class_names = [
"n01443537",  "n01828970",  "n02093859",  "n02115913",  "n02480495",  "n02879718",  "n03272562",  "n03710637",  "n03961711",  "n04310018"  "n04599235"
"n01440764",  "n01824575",  "n02093754",  "n02115641",  "n02457408",  "n02877765",  "n03272010",  "n03710193",  "n03958227",  "n04296562"  "n04597913"
"n01484850",  "n01829413",  "n02093991",  "n02116738",  "n02480855",  "n02883205",  "n03290653",  "n03710721",  "n03967562",  "n04311004"  "n04604644"
"n01491361",  "n01833805",  "n02094114",  "n02117135",  "n02481823",  "n02892201",  "n03291819",  "n03717622",  "n03970156",  "n04311174"  "n04606251"
"n01494475",  "n01843065",  "n02094258",  "n02119022",  "n02483362",  "n02892767",  "n03297495",  "n03720891",  "n03976467",  "n04317175"  "n04612504"
"n01496331",  "n01843383",  "n02094433",  "n02119789",  "n02483708",  "n02894605",  "n03314780",  "n03721384",  "n03976657",  "n04325704"  "n04613696"
"n01498041",  "n01847000",  "n02095314",  "n02120079",  "n02484975",  "n02895154",  "n03325584",  "n03724870",  "n03977966",  "n04326547"  "n06359193"
"n01514668",  "n01855032",  "n02095570",  "n02120505",  "n02486261",  "n02906734",  "n03337140",  "n03729826",  "n03980874",  "n04328186"  "n06596364"
"n01514859",  "n01855672",  "n02095889",  "n02123045",  "n02486410",  "n02909870",  "n03344393",  "n03733131",  "n03982430",  "n04330267"  "n06785654"
"n01518878",  "n01860187",  "n02096051",  "n02123159",  "n02487347",  "n02910353",  "n03345487",  "n03733281",  "n03983396",  "n04332243"  "n06794110"
"n01530575",  "n01871265",  "n02096177",  "n02123394",  "n02488291",  "n02916936",  "n03347037",  "n03733805",  "n03991062",  "n04335435"  "n06874185"
"n01531178",  "n01872401",  "n02096294",  "n02123597",  "n02488702",  "n02917067",  "n03355925",  "n03742115",  "n03992509",  "n04336792"  "n07248320"
"n01532829",  "n01873310",  "n02096437",  "n02124075",  "n02489166",  "n02927161",  "n03372029",  "n03743016",  "n03995372",  "n04344873"  "n07565083"
"n01534433",  "n01877812",  "n02096585",  "n02125311",  "n02490219",  "n02930766",  "n03376595",  "n03759954",  "n03998194",  "n04346328"  "n07579787"
"n01537544",  "n01882714",  "n02097047",  "n02127052",  "n02492035",  "n02939185",  "n03379051",  "n03761084",  "n04004767",  "n04347754"  "n07583066"
"n01558993",  "n01883070",  "n02097130",  "n02128385",  "n02492660",  "n02948072",  "n03384352",  "n03763968",  "n04005630",  "n04350905"  "n07584110"
"n01560419",  "n01910747",  "n02097209",  "n02128757",  "n02493509",  "n02950826",  "n03388043",  "n03764736",  "n04008634",  "n04355338"  "n07590611"
"n01580077",  "n01914609",  "n02097298",  "n02128925",  "n02493793",  "n02951358",  "n03388183",  "n03769881",  "n04009552",  "n04355933"  "n07613480"
"n01582220",  "n01917289",  "n02097474",  "n02129165",  "n02494079",  "n02951585",  "n03388549",  "n03770439",  "n04019541",  "n04356056"  "n07614500"
"n01592084",  "n01924916",  "n02097658",  "n02129604",  "n02497673",  "n02963159",  "n03393912",  "n03770679",  "n04023962",  "n04357314"  "n07615774"
"n01601694",  "n01930112",  "n02098105",  "n02130308",  "n02500267",  "n02965783",  "n03394916",  "n03773504",  "n04026417",  "n04366367"  "n07684084"
"n01608432",  "n01943899",  "n02098286",  "n02132136",  "n02504013",  "n02966193",  "n03400231",  "n03775071",  "n04033901",  "n04367480"  "n07693725"
"n01614925",  "n01944390",  "n02098413",  "n02133161",  "n02504458",  "n02966687",  "n03404251",  "n03775546",  "n04033995",  "n04370456"  "n07695742"
"n01616318",  "n01945685",  "n02099267",  "n02134084",  "n02509815",  "n02971356",  "n03417042",  "n03776460",  "n04037443",  "n04371430"  "n07697313"
"n01622779",  "n01950731",  "n02099429",  "n02134418",  "n02510455",  "n02974003",  "n03424325",  "n03777568",  "n04039381",  "n04371774"  "n07697537"
"n01629819",  "n01955084",  "n02099601",  "n02137549",  "n02514041",  "n02977058",  "n03425413",  "n03777754",  "n04040759",  "n04372370"  "n07711569"
"n01630670",  "n01968897",  "n02099712",  "n02138441",  "n02526121",  "n02978881",  "n03443371",  "n03781244",  "n04041544",  "n04376876"  "n07714571"
"n01631663",  "n01978287",  "n02099849",  "n02165105",  "n02536864",  "n02979186",  "n03444034",  "n03782006",  "n04044716",  "n04380533"  "n07714990"
"n01632458",  "n01978455",  "n02100236",  "n02165456",  "n02606052",  "n02980441",  "n03445777",  "n03785016",  "n04049303",  "n04389033"  "n07715103"
"n01632777",  "n01980166",  "n02100583",  "n02167151",  "n02607072",  "n02981792",  "n03445924",  "n03786901",  "n04065272",  "n04392985"  "n07716358"
"n01641577",  "n01981276",  "n02100735",  "n02168699",  "n02640242",  "n02988304",  "n03447447",  "n03787032",  "n04067472",  "n04398044"  "n07716906"
"n01644373",  "n01983481",  "n02100877",  "n02169497",  "n02641379",  "n02992211",  "n03447721",  "n03788195",  "n04069434",  "n04399382"  "n07717410"
"n01644900",  "n01984695",  "n02101006",  "n02172182",  "n02643566",  "n02992529",  "n03450230",  "n03788365",  "n04070727",  "n04404412"  "n07717556"
"n01664065",  "n01985128",  "n02101388",  "n02174001",  "n02655020",  "n02999410",  "n03452741",  "n03791053",  "n04074963",  "n04409515"  "n07718472"
"n01665541",  "n01986214",  "n02101556",  "n02177972",  "n02666196",  "n03000134",  "n03457902",  "n03792782",  "n04081281",  "n04417672"  "n07718747"
"n01667114",  "n01990800",  "n02102040",  "n02190166",  "n02667093",  "n03000247",  "n03459775",  "n03792972",  "n04086273",  "n04418357"  "n07720875"
"n01667778",  "n02002556",  "n02102177",  "n02206856",  "n02669723",  "n03000684",  "n03461385",  "n03793489",  "n04090263",  "n04423845"  "n07730033"
"n01669191",  "n02002724",  "n02102318",  "n02219486",  "n02672831",  "n03014705",  "n03467068",  "n03794056",  "n04099969",  "n04428191"  "n07734744"
"n01675722",  "n02006656",  "n02102480",  "n02226429",  "n02676566",  "n03016953",  "n03476684",  "n03796401",  "n04111531",  "n04429376"  "n07742313"
"n01677366",  "n02007558",  "n02102973",  "n02229544",  "n02687172",  "n03017168",  "n03476991",  "n03803284",  "n04116512",  "n04435653"  "n07745940"
"n01682714",  "n02009229",  "n02104029",  "n02231487",  "n02690373",  "n03018349",  "n03478589",  "n03804744",  "n04118538",  "n04442312"  "n07747607"
"n01685808",  "n02009912",  "n02104365",  "n02233338",  "n02692877",  "n03026506",  "n03481172",  "n03814639",  "n04118776",  "n04443257"  "n07749582"
"n01687978",  "n02011460",  "n02105056",  "n02236044",  "n02699494",  "n03028079",  "n03482405",  "n03814906",  "n04120489",  "n04447861"  "n07753113"
"n01688243",  "n02012849",  "n02105162",  "n02256656",  "n02701002",  "n03032252",  "n03483316",  "n03825788",  "n04125021",  "n04456115"  "n07753275"
"n01689811",  "n02013706",  "n02105251",  "n02259212",  "n02704792",  "n03041632",  "n03485407",  "n03832673",  "n04127249",  "n04458633"  "n07753592"
"n01692333",  "n02017213",  "n02105412",  "n02264363",  "n02708093",  "n03042490",  "n03485794",  "n03837869",  "n04131690",  "n04461696"  "n07754684"
"n01693334",  "n02018207",  "n02105505",  "n02268443",  "n02727426",  "n03045698",  "n03492542",  "n03838899",  "n04133789",  "n04462240"  "n07760859"
"n01694178",  "n02018795",  "n02105641",  "n02268853",  "n02730930",  "n03047690",  "n03494278",  "n03840681",  "n04136333",  "n04465501"  "n07768694"
"n01695060",  "n02025239",  "n02105855",  "n02276258",  "n02747177",  "n03062245",  "n03495258",  "n03841143",  "n04141076",  "n04467665"  "n07802026"
"n01697457",  "n02027492",  "n02106030",  "n02277742",  "n02749479",  "n03063599",  "n03496892",  "n03843555",  "n04141327",  "n04476259"  "n07831146"
"n01698640",  "n02028035",  "n02106166",  "n02279972",  "n02769748",  "n03063689",  "n03498962",  "n03854065",  "n04141975",  "n04479046"  "n07836838"
"n01704323",  "n02033041",  "n02106382",  "n02280649",  "n02776631",  "n03065424",  "n03527444",  "n03857828",  "n04146614",  "n04482393"  "n07860988"
"n01728572",  "n02037110",  "n02106550",  "n02281406",  "n02777292",  "n03075370",  "n03529860",  "n03866082",  "n04147183",  "n04483307"  "n07871810"
"n01728920",  "n02051845",  "n02106662",  "n02281787",  "n02782093",  "n03085013",  "n03530642",  "n03868242",  "n04149813",  "n04485082"  "n07873807"
"n01729322",  "n02056570",  "n02107142",  "n02317335",  "n02783161",  "n03089624",  "n03532672",  "n03868863",  "n04152593",  "n04486054"  "n07875152"
"n01729977",  "n02058221",  "n02107312",  "n02319095",  "n02786058",  "n03095699",  "n03534580",  "n03871628",  "n04153751",  "n04487081"  "n07880968"
"n01734418",  "n02066245",  "n02107574",  "n02321529",  "n02787622",  "n03100240",  "n03535780",  "n03873416",  "n04154565",  "n04487394"  "n07892512"
"n01735189",  "n02071294",  "n02107683",  "n02325366",  "n02788148",  "n03109150",  "n03538406",  "n03874293",  "n04162706",  "n04493381"  "n07920052"
"n01737021",  "n02074367",  "n02107908",  "n02326432",  "n02790996",  "n03110669",  "n03544143",  "n03874599",  "n04179913",  "n04501370"  "n07930864"
"n01739381",  "n02077923",  "n02108000",  "n02328150",  "n02791124",  "n03124043",  "n03584254",  "n03876231",  "n04192698",  "n04505470"  "n07932039"
"n01740131",  "n02085620",  "n02108089",  "n02342885",  "n02791270",  "n03124170",  "n03584829",  "n03877472",  "n04200800",  "n04507155"  "n09193705"
"n01742172",  "n02085782",  "n02108422",  "n02346627",  "n02793495",  "n03125729",  "n03590841",  "n03877845",  "n04201297",  "n04509417"  "n09229709"
"n01744401",  "n02085936",  "n02108551",  "n02356798",  "n02794156",  "n03126707",  "n03594734",  "n03884397",  "n04204238",  "n04515003"  "n09246464"
"n01748264",  "n02086079",  "n02108915",  "n02361337",  "n02795169",  "n03127747",  "n03594945",  "n03887697",  "n04204347",  "n04517823"  "n09256479"
"n01749939",  "n02086240",  "n02109047",  "n02363005",  "n02797295",  "n03127925",  "n03595614",  "n03888257",  "n04208210",  "n04522168"  "n09288635"
"n01751748",  "n02086646",  "n02109525",  "n02364673",  "n02799071",  "n03131574",  "n03598930",  "n03888605",  "n04209133",  "n04523525"  "n09332890"
"n01753488",  "n02086910",  "n02109961",  "n02389026",  "n02802426",  "n03133878",  "n03599486",  "n03891251",  "n04209239",  "n04525038"  "n09399592"
"n01755581",  "n02087046",  "n02110063",  "n02391049",  "n02804414",  "n03134739",  "n03602883",  "n03891332",  "n04228054",  "n04525305"  "n09421951"
"n01756291",  "n02087394",  "n02110185",  "n02395406",  "n02804610",  "n03141823",  "n03617480",  "n03895866",  "n04229816",  "n04532106"  "n09428293"
"n01768244",  "n02088094",  "n02110341",  "n02396427",  "n02807133",  "n03146219",  "n03623198",  "n03899768",  "n04235860",  "n04532670"  "n09468604"
"n01770081",  "n02088238",  "n02110627",  "n02397096",  "n02808304",  "n03160309",  "n03627232",  "n03902125",  "n04238763",  "n04536866"  "n09472597"
"n01770393",  "n02088364",  "n02110806",  "n02398521",  "n02808440",  "n03179701",  "n03630383",  "n03903868",  "n04239074",  "n04540053"  "n09835506"
"n01773157",  "n02088466",  "n02110958",  "n02403003",  "n02814533",  "n03180011",  "n03633091",  "n03908618",  "n04243546",  "n04542943"  "n10148035"
"n01773549",  "n02088632",  "n02111129",  "n02408429",  "n02814860",  "n03187595",  "n03637318",  "n03908714",  "n04251144",  "n04548280"  "n10565667"
"n01773797",  "n02089078",  "n02111277",  "n02410509",  "n02815834",  "n03188531",  "n03642806",  "n03916031",  "n04252077",  "n04548362"  "n11879895"
"n01774384",  "n02089867",  "n02111500",  "n02412080",  "n02817516",  "n03196217",  "n03649909",  "n03920288",  "n04252225",  "n04550184"  "n11939491"
"n01774750",  "n02089973",  "n02111889",  "n02415577",  "n02823428",  "n03197337",  "n03657121",  "n03924679",  "n04254120",  "n04552348"  "n12057211"
"n01775062",  "n02090379",  "n02112018",  "n02417914",  "n02823750",  "n03201208",  "n03658185",  "n03929660",  "n04254680",  "n04553703"  "n12144580"
"n01776313",  "n02090622",  "n02112137",  "n02422106",  "n02825657",  "n03207743",  "n03661043",  "n03929855",  "n04254777",  "n04554684"  "n12267677"
"n01784675",  "n02090721",  "n02112350",  "n02422699",  "n02834397",  "n03207941",  "n03662601",  "n03930313",  "n04258138",  "n04557648"  "n12620546"
"n01795545",  "n02091032",  "n02112706",  "n02423022",  "n02835271",  "n03208938",  "n03666591",  "n03930630",  "n04259630",  "n04560804"  "n12768682"
"n01796340",  "n02091134",  "n02113023",  "n02437312",  "n02837789",  "n03216828",  "n03670208",  "n03933933",  "n04263257",  "n04562935"  "n12985857"
"n01797886",  "n02091244",  "n02113186",  "n02437616",  "n02840245",  "n03218198",  "n03673027",  "n03935335",  "n04264628",  "n04579145"  "n12998815"
"n01798484",  "n02091467",  "n02113624",  "n02441942",  "n02841315",  "n03220513",  "n03676483",  "n03937543",  "n04265275",  "n04579432"  "n13037406"
"n01806143",  "n02091635",  "n02113712",  "n02442845",  "n02843684",  "n03223299",  "n03680355",  "n03938244",  "n04266014",  "n04584207"  "n13040303"
"n01806567",  "n02091831",  "n02113799",  "n02443114",  "n02859443",  "n03240683",  "n03690938",  "n03942813",  "n04270147",  "n04589890"  "n13044778"
"n01807496",  "n02092002",  "n02113978",  "n02443484",  "n02860847",  "n03249569",  "n03691459",  "n03944341",  "n04273569",  "n04590129"  "n13052670"
"n01817953",  "n02092339",  "n02114367",  "n02444819",  "n02865351",  "n03250847",  "n03692522",  "n03947888",  "n04275548",  "n04591157"  "n13054560"
"n01818515",  "n02093256",  "n02114548",  "n02445715",  "n02869837",  "n03255030",  "n03697007",  "n03950228",  "n04277352",  "n04591713"  "n13133613"
"n01819313",  "n02093428",  "n02114712",  "n02447366",  "n02870880",  "n03259280",  "n03706229",  "n03954731",  "n04285008",  "n04592741"  "n15075141"
"n01820546",  "n02093647",  "n02114855",  "n02454379",  "n02871525",  "n03271574",  "n03709823",  "n03956157",  "n04286575",  "n04596742"]
mapping_file = 'LOC_synset_mapping.txt'
mapping_file_df = pd.read_csv(mapping_file, header = None,  sep =':')
mapping_file_dict =  dict(zip(mapping_file_df.iloc[:, 0].str.strip(), mapping_file_df.iloc[:, 1].str.strip()))  
class_names_dict = {'n01440764': 0, 'n01443537': 1, 'n01484850': 2, 'n01491361': 3, 'n01494475': 4, 'n01496331': 5, 'n01498041': 6, 'n01514668': 7, 'n01514859': 8
                    , 'n01518878': 9, 'n01530575': 10, 'n01531178': 11, 'n01532829': 12, 'n01534433': 13, 'n01537544': 14, 'n01558993': 15, 'n01560419': 16
                    , 'n01580077': 17, 'n01582220': 18, 'n01592084': 19, 'n01601694': 20, 'n01608432': 21, 'n01614925': 22, 'n01616318': 23, 'n01622779': 24
                    , 'n01629819': 25, 'n01630670': 26, 'n01631663': 27, 'n01632458': 28, 'n01632777': 29, 'n01641577': 30, 'n01644373': 31, 'n01644900': 32
                    , 'n01664065': 33, 'n01665541': 34, 'n01667114': 35, 'n01667778': 36, 'n01669191': 37, 'n01675722': 38, 'n01677366': 39, 'n01682714': 40
                    , 'n01685808': 41, 'n01687978': 42, 'n01688243': 43, 'n01689811': 44, 'n01692333': 45, 'n01693334': 46, 'n01694178': 47, 'n01695060': 48
                    , 'n01697457': 49, 'n01698640': 50, 'n01704323': 51, 'n01728572': 52, 'n01728920': 53, 'n01729322': 54, 'n01729977': 55, 'n01734418': 56
                    , 'n01735189': 57, 'n01737021': 58, 'n01739381': 59, 'n01740131': 60, 'n01742172': 61, 'n01744401': 62, 'n01748264': 63, 'n01749939': 64
                    , 'n01751748': 65, 'n01753488': 66, 'n01755581': 67, 'n01756291': 68, 'n01768244': 69, 'n01770081': 70, 'n01770393': 71, 'n01773157': 72
                    , 'n01773549': 73, 'n01773797': 74, 'n01774384': 75, 'n01774750': 76, 'n01775062': 77, 'n01776313': 78, 'n01784675': 79, 'n01795545': 80
                    , 'n01796340': 81, 'n01797886': 82, 'n01798484': 83, 'n01806143': 84, 'n01806567': 85, 'n01807496': 86, 'n01817953': 87, 'n01818515': 88
                    , 'n01819313': 89, 'n01820546': 90, 'n01824575': 91, 'n01828970': 92, 'n01829413': 93, 'n01833805': 94, 'n01843065': 95, 'n01843383': 96
                    , 'n01847000': 97, 'n01855032': 98, 'n01855672': 99, 'n01860187': 100, 'n01871265': 101, 'n01872401': 102, 'n01873310': 103, 'n01877812': 104
                    , 'n01882714': 105, 'n01883070': 106, 'n01910747': 107, 'n01914609': 108, 'n01917289': 109, 'n01924916': 110, 'n01930112': 111, 'n01943899': 112
                    , 'n01944390': 113, 'n01945685': 114, 'n01950731': 115, 'n01955084': 116, 'n01968897': 117, 'n01978287': 118, 'n01978455': 119, 'n01980166': 120
                    , 'n01981276': 121, 'n01983481': 122, 'n01984695': 123, 'n01985128': 124, 'n01986214': 125, 'n01990800': 126, 'n02002556': 127, 'n02002724': 128
                    , 'n02006656': 129, 'n02007558': 130, 'n02009229': 131, 'n02009912': 132, 'n02011460': 133, 'n02012849': 134, 'n02013706': 135, 'n02017213': 136
                    , 'n02018207': 137, 'n02018795': 138, 'n02025239': 139, 'n02027492': 140, 'n02028035': 141, 'n02033041': 142, 'n02037110': 143, 'n02051845': 144, 'n02056570': 145, 'n02058221': 146, 'n02066245': 147, 'n02071294': 148, 'n02074367': 149, 'n02077923': 150
                    , 'n02085620': 151, 'n02085782': 152, 'n02085936': 153, 'n02086079': 154, 'n02086240': 155, 'n02086646': 156, 'n02086910': 157, 'n02087046': 158, 'n02087394': 159, 'n02088094': 160, 'n02088238': 161, 'n02088364': 162, 'n02088466': 163, 'n02088632': 164
                    , 'n02089078': 165, 'n02089867': 166, 'n02089973': 167, 'n02090379': 168, 'n02090622': 169, 'n02090721': 170, 'n02091032': 171, 'n02091134': 172, 'n02091244': 173, 'n02091467': 174, 'n02091635': 175, 'n02091831': 176, 'n02092002': 177, 'n02092339': 178
                    , 'n02093256': 179, 'n02093428': 180, 'n02093647': 181, 'n02093754': 182, 'n02093859': 183, 'n02093991': 184, 'n02094114': 185, 'n02094258': 186, 'n02094433': 187, 'n02095314': 188, 'n02095570': 189, 'n02095889': 190, 'n02096051': 191, 'n02096177': 192
                    , 'n02096294': 193, 'n02096437': 194, 'n02096585': 195, 'n02097047': 196, 'n02097130': 197, 'n02097209': 198, 'n02097298': 199, 'n02097474': 200, 'n02097658': 201, 'n02098105': 202, 'n02098286': 203, 'n02098413': 204, 'n02099267': 205, 'n02099429': 206
                    , 'n02099601': 207, 'n02099712': 208, 'n02099849': 209, 'n02100236': 210, 'n02100583': 211, 'n02100735': 212, 'n02100877': 213, 'n02101006': 214, 'n02101388': 215, 'n02101556': 216, 'n02102040': 217, 'n02102177': 218, 'n02102318': 219, 'n02102480': 220
                    , 'n02102973': 221, 'n02104029': 222, 'n02104365': 223, 'n02105056': 224, 'n02105162': 225, 'n02105251': 226, 'n02105412': 227, 'n02105505': 228, 'n02105641': 229, 'n02105855': 230, 'n02106030': 231, 'n02106166': 232, 'n02106382': 233, 'n02106550': 234
                    , 'n02106662': 235, 'n02107142': 236, 'n02107312': 237, 'n02107574': 238, 'n02107683': 239, 'n02107908': 240, 'n02108000': 241, 'n02108089': 242, 'n02108422': 243, 'n02108551': 244, 'n02108915': 245, 'n02109047': 246, 'n02109525': 247, 'n02109961': 248
                    , 'n02110063': 249, 'n02110185': 250, 'n02110341': 251, 'n02110627': 252, 'n02110806': 253, 'n02110958': 254, 'n02111129': 255, 'n02111277': 256, 'n02111500': 257, 'n02111889': 258, 'n02112018': 259, 'n02112137': 260, 'n02112350': 261, 'n02112706': 262
                    , 'n02113023': 263, 'n02113186': 264, 'n02113624': 265, 'n02113712': 266, 'n02113799': 267, 'n02113978': 268, 'n02114367': 269, 'n02114548': 270, 'n02114712': 271, 'n02114855': 272, 'n02115641': 273, 'n02115913': 274, 'n02116738': 275, 'n02117135': 276
                    , 'n02119022': 277, 'n02119789': 278, 'n02120079': 279, 'n02120505': 280, 'n02123045': 281, 'n02123159': 282, 'n02123394': 283, 'n02123597': 284, 'n02124075': 285, 'n02125311': 286, 'n02127052': 287, 'n02128385': 288, 'n02128757': 289, 'n02128925': 290
                    , 'n02129165': 291, 'n02129604': 292, 'n02130308': 293, 'n02132136': 294, 'n02133161': 295, 'n02134084': 296, 'n02134418': 297, 'n02137549': 298, 'n02138441': 299, 'n02165105': 300, 'n02165456': 301, 'n02167151': 302, 'n02168699': 303, 'n02169497': 304
                    , 'n02172182': 305, 'n02174001': 306, 'n02177972': 307, 'n02190166': 308, 'n02206856': 309
                    , 'n02219486': 310, 'n02226429': 311, 'n02229544': 312, 'n02231487': 313, 'n02233338': 314, 'n02236044': 315, 'n02256656': 316, 'n02259212': 317, 'n02264363': 318, 'n02268443': 319, 'n02268853': 320, 'n02276258': 321, 'n02277742': 322, 'n02279972': 323, 'n02280649': 324, 'n02281406': 325
                    , 'n02281787': 326, 'n02317335': 327, 'n02319095': 328, 'n02321529': 329, 'n02325366': 330, 'n02326432': 331, 'n02328150': 332, 'n02342885': 333, 'n02346627': 334, 'n02356798': 335, 'n02361337': 336, 'n02363005': 337, 'n02364673': 338, 'n02389026': 339, 'n02391049': 340, 'n02395406': 341
                    , 'n02396427': 342, 'n02397096': 343, 'n02398521': 344, 'n02403003': 345, 'n02408429': 346, 'n02410509': 347, 'n02412080': 348, 'n02415577': 349, 'n02417914': 350, 'n02422106': 351, 'n02422699': 352, 'n02423022': 353, 'n02437312': 354, 'n02437616': 355, 'n02441942': 356, 'n02442845': 357
                    , 'n02443114': 358, 'n02443484': 359, 'n02444819': 360, 'n02445715': 361, 'n02447366': 362, 'n02454379': 363, 'n02457408': 364, 'n02480495': 365, 'n02480855': 366, 'n02481823': 367, 'n02483362': 368, 'n02483708': 369, 'n02484975': 370, 'n02486261': 371, 'n02486410': 372, 'n02487347': 373
                    , 'n02488291': 374, 'n02488702': 375, 'n02489166': 376, 'n02490219': 377, 'n02492035': 378, 'n02492660': 379, 'n02493509': 380, 'n02493793': 381, 'n02494079': 382, 'n02497673': 383, 'n02500267': 384, 'n02504013': 385, 'n02504458': 386, 'n02509815': 387, 'n02510455': 388, 'n02514041': 389
                    , 'n02526121': 390, 'n02536864': 391, 'n02606052': 392, 'n02607072': 393, 'n02640242': 394, 'n02641379': 395, 'n02643566': 396, 'n02655020': 397, 'n02666196': 398, 'n02667093': 399, 'n02669723': 400, 'n02672831': 401, 'n02676566': 402, 'n02687172': 403, 'n02690373': 404, 'n02692877': 405
                    , 'n02699494': 406, 'n02701002': 407, 'n02704792': 408, 'n02708093': 409, 'n02727426': 410, 'n02730930': 411, 'n02747177': 412, 'n02749479': 413, 'n02769748': 414, 'n02776631': 415, 'n02777292': 416, 'n02782093': 417, 'n02783161': 418, 'n02786058': 419, 'n02787622': 420, 'n02788148': 421
                    , 'n02790996': 422, 'n02791124': 423, 'n02791270': 424, 'n02793495': 425, 'n02794156': 426, 'n02795169': 427, 'n02797295': 428, 'n02799071': 429, 'n02802426': 430, 'n02804414': 431, 'n02804610': 432, 'n02807133': 433, 'n02808304': 434, 'n02808440': 435, 'n02814533': 436, 'n02814860': 437
                    , 'n02815834': 438, 'n02817516': 439, 'n02823428': 440, 'n02823750': 441, 'n02825657': 442, 'n02834397': 443, 'n02835271': 444, 'n02837789': 445, 'n02840245': 446, 'n02841315': 447, 'n02843684': 448, 'n02859443': 449, 'n02860847': 450, 'n02865351': 451, 'n02869837': 452, 'n02870880': 453
                    , 'n02871525': 454, 'n02877765': 455, 'n02879718': 456, 'n02883205': 457, 'n02892201': 458, 'n02892767': 459, 'n02894605': 460, 'n02895154': 461, 'n02906734': 462, 'n02909870': 463, 'n02910353': 464, 'n02916936': 465, 'n02917067': 466, 'n02927161': 467, 'n02930766': 468, 'n02939185': 469
                    , 'n02948072': 470, 'n02950826': 471, 'n02951358': 472, 'n02951585': 473, 'n02963159': 474, 'n02965783': 475, 'n02966193': 476, 'n02966687': 477, 'n02971356': 478, 'n02974003': 479, 'n02977058': 480, 'n02978881': 481, 'n02979186': 482, 'n02980441': 483, 'n02981792': 484, 'n02988304': 485
                    , 'n02992211': 486, 'n02992529': 487, 'n02999410': 488, 'n03000134': 489, 'n03000247': 490, 'n03000684': 491, 'n03014705': 492, 'n03016953': 493, 'n03017168': 494, 'n03018349': 495, 'n03026506': 496, 'n03028079': 497, 'n03032252': 498, 'n03041632': 499, 'n03042490': 500
                    , 'n03045698': 501, 'n03047690': 502, 'n03062245': 503, 'n03063599': 504, 'n03063689': 505, 'n03065424': 506, 'n03075370': 507, 'n03085013': 508, 'n03089624': 509, 'n03095699': 510, 'n03100240': 511, 'n03109150': 512, 'n03110669': 513, 'n03124043': 514, 'n03124170': 515, 'n03125729': 516
                    , 'n03126707': 517, 'n03127747': 518, 'n03127925': 519, 'n03131574': 520, 'n03133878': 521, 'n03134739': 522, 'n03141823': 523, 'n03146219': 524, 'n03160309': 525, 'n03179701': 526, 'n03180011': 527, 'n03187595': 528, 'n03188531': 529, 'n03196217': 530, 'n03197337': 531, 'n03201208': 532
                    , 'n03207743': 533, 'n03207941': 534, 'n03208938': 535, 'n03216828': 536, 'n03218198': 537, 'n03220513': 538, 'n03223299': 539, 'n03240683': 540, 'n03249569': 541, 'n03250847': 542, 'n03255030': 543, 'n03259280': 544, 'n03271574': 545, 'n03272010': 546, 'n03272562': 547, 'n03290653': 548
                    , 'n03291819': 549, 'n03297495': 550, 'n03314780': 551, 'n03325584': 552, 'n03337140': 553, 'n03344393': 554, 'n03345487': 555, 'n03347037': 556, 'n03355925': 557, 'n03372029': 558, 'n03376595': 559, 'n03379051': 560, 'n03384352': 561, 'n03388043': 562, 'n03388183': 563, 'n03388549': 564
                    , 'n03393912': 565, 'n03394916': 566, 'n03400231': 567, 'n03404251': 568, 'n03417042': 569, 'n03424325': 570, 'n03425413': 571, 'n03443371': 572, 'n03444034': 573, 'n03445777': 574, 'n03445924': 575, 'n03447447': 576, 'n03447721': 577, 'n03450230': 578, 'n03452741': 579, 'n03457902': 580
                    , 'n03459775': 581, 'n03461385': 582, 'n03467068': 583, 'n03476684': 584, 'n03476991': 585, 'n03478589': 586, 'n03481172': 587, 'n03482405': 588, 'n03483316': 589, 'n03485407': 590, 'n03485794': 591, 'n03492542': 592, 'n03494278': 593, 'n03495258': 594, 'n03496892': 595, 'n03498962': 596
                    , 'n03527444': 597, 'n03529860': 598, 'n03530642': 599,
                      'n03532672': 600, 'n03534580': 601, 'n03535780': 602, 'n03538406': 603, 'n03544143': 604, 'n03584254': 605, 'n03584829': 606, 'n03590841': 607, 'n03594734': 608, 'n03594945': 609, 'n03595614': 610, 'n03598930': 611, 'n03599486': 612, 'n03602883': 613, 'n03617480': 614, 'n03623198': 615
                      , 'n03627232': 616, 'n03630383': 617, 'n03633091': 618, 'n03637318': 619, 'n03642806': 620, 'n03649909': 621, 'n03657121': 622, 'n03658185': 623, 'n03661043': 624, 'n03662601': 625, 'n03666591': 626, 'n03670208': 627, 'n03673027': 628, 'n03676483': 629, 'n03680355': 630, 'n03690938': 631
                      , 'n03691459': 632, 'n03692522': 633, 'n03697007': 634, 'n03706229': 635, 'n03709823': 636, 'n03710193': 637, 'n03710637': 638, 'n03710721': 639, 'n03717622': 640, 'n03720891': 641, 'n03721384': 642, 'n03724870': 643, 'n03729826': 644, 'n03733131': 645, 'n03733281': 646, 'n03733805': 647
                      , 'n03742115': 648, 'n03743016': 649, 'n03759954': 650, 'n03761084': 651, 'n03763968': 652, 'n03764736': 653, 'n03769881': 654, 'n03770439': 655, 'n03770679': 656, 'n03773504': 657, 'n03775071': 658, 'n03775546': 659, 'n03776460': 660, 'n03777568': 661, 'n03777754': 662, 'n03781244': 663, 'n03782006': 664, 'n03785016': 665
                    , 'n03786901': 666, 'n03787032': 667, 'n03788195': 668, 'n03788365': 669, 'n03791053': 670, 'n03792782': 671, 'n03792972': 672, 'n03793489': 673, 'n03794056': 674, 'n03796401': 675, 'n03803284': 676, 'n03804744': 677, 'n03814639': 678, 'n03814906': 679, 'n03825788': 680, 'n03832673': 681
                    , 'n03837869': 682, 'n03838899': 683, 'n03840681': 684, 'n03841143': 685, 'n03843555': 686, 'n03854065': 687, 'n03857828': 688, 'n03866082': 689, 'n03868242': 690, 'n03868863': 691, 'n03871628': 692, 'n03873416': 693, 'n03874293': 694, 'n03874599': 695, 'n03876231': 696, 'n03877472': 697
                    , 'n03877845': 698, 'n03884397': 699, 'n03887697': 700, 'n03888257': 701, 'n03888605': 702, 'n03891251': 703, 'n03891332': 704, 'n03895866': 705, 'n03899768': 706, 'n03902125': 707, 'n03903868': 708, 'n03908618': 709, 'n03908714': 710, 'n03916031': 711, 'n03920288': 712, 'n03924679': 713
                    , 'n03929660': 714, 'n03929855': 715, 'n03930313': 716, 'n03930630': 717, 'n03933933': 718, 'n03935335': 719, 'n03937543': 720, 'n03938244': 721, 'n03942813': 722, 'n03944341': 723, 'n03947888': 724, 'n03950228': 725, 'n03954731': 726, 'n03956157': 727, 'n03958227': 728, 'n03961711': 729
                    , 'n03967562': 730, 'n03970156': 731, 'n03976467': 732, 'n03976657': 733, 'n03977966': 734, 'n03980874': 735, 'n03982430': 736, 'n03983396': 737, 'n03991062': 738, 'n03992509': 739, 'n03995372': 740, 'n03998194': 741, 'n04004767': 742, 'n04005630': 743, 'n04008634': 744, 'n04009552': 745
                    , 'n04019541': 746, 'n04023962': 747, 'n04026417': 748, 'n04033901': 749, 'n04033995': 750, 'n04037443': 751, 'n04039381': 752, 'n04040759': 753, 'n04041544': 754, 'n04044716': 755, 'n04049303': 756, 'n04065272': 757, 'n04067472': 758, 'n04069434': 759, 'n04070727': 760, 'n04074963': 761
                    , 'n04081281': 762, 'n04086273': 763, 'n04090263': 764, 'n04099969': 765, 'n04111531': 766, 'n04116512': 767, 'n04118538': 768, 'n04118776': 769, 'n04120489': 770, 'n04125021': 771, 'n04127249': 772, 'n04131690': 773, 'n04133789': 774, 'n04136333': 775, 'n04141076': 776, 'n04141327': 777
                    , 'n04141975': 778, 'n04146614': 779, 'n04147183': 780, 'n04149813': 781, 'n04152593': 782, 'n04153751': 783, 'n04154565': 784, 'n04162706': 785, 'n04179913': 786, 'n04192698': 787, 'n04200800': 788, 'n04201297': 789, 'n04204238': 790, 'n04204347': 791, 'n04208210': 792, 'n04209133': 793
                    , 'n04209239': 794, 'n04228054': 795, 'n04229816': 796, 'n04235860': 797, 'n04238763': 798, 'n04239074': 799, 'n04243546': 800, 'n04251144': 801, 'n04252077': 802, 'n04252225': 803, 'n04254120': 804, 'n04254680': 805, 'n04254777': 806, 'n04258138': 807, 'n04259630': 808, 'n04263257': 809
                    , 'n04264628': 810, 'n04265275': 811, 'n04266014': 812, 'n04270147': 813, 'n04273569': 814, 'n04275548': 815, 'n04277352': 816, 'n04285008': 817, 'n04286575': 818, 'n04296562': 819, 'n04310018': 820, 'n04311004': 821, 'n04311174': 822, 'n04317175': 823, 'n04325704': 824, 'n04326547': 825
                    , 'n04328186': 826, 'n04330267': 827, 'n04332243': 828, 'n04335435': 829, 'n04336792': 830, 'n04344873': 831, 'n04346328': 832, 'n04347754': 833, 'n04350905': 834, 'n04355338': 835, 'n04355933': 836, 'n04356056': 837, 'n04357314': 838, 'n04366367': 839, 'n04367480': 840, 'n04370456': 841
                    , 'n04371430': 842, 'n04371774': 843, 'n04372370': 844, 'n04376876': 845, 'n04380533': 846, 'n04389033': 847, 'n04392985': 848, 'n04398044': 849, 'n04399382': 850, 'n04404412': 851, 'n04409515': 852, 'n04417672': 853, 'n04418357': 854, 'n04423845': 855, 'n04428191': 856, 'n04429376': 857
                    , 'n04435653': 858, 'n04442312': 859, 'n04443257': 860, 'n04447861': 861, 'n04456115': 862, 'n04458633': 863, 'n04461696': 864, 'n04462240': 865, 'n04465501': 866, 'n04467665': 867, 'n04476259': 868, 'n04479046': 869, 'n04482393': 870, 'n04483307': 871, 'n04485082': 872, 'n04486054': 873
                    , 'n04487081': 874, 'n04487394': 875, 'n04493381': 876, 'n04501370': 877, 'n04505470': 878, 'n04507155': 879, 'n04509417': 880, 'n04515003': 881, 'n04517823': 882, 'n04522168': 883, 'n04523525': 884, 'n04525038': 885, 'n04525305': 886, 'n04532106': 887, 'n04532670': 888, 'n04536866': 889
                    , 'n04540053': 890, 'n04542943': 891, 'n04548280': 892, 'n04548362': 893, 'n04550184': 894, 'n04552348': 895, 'n04553703': 896, 'n04554684': 897, 'n04557648': 898, 'n04560804': 899
                    , 'n04562935': 900, 'n04579145': 901, 'n04579432': 902, 'n04584207': 903, 'n04589890': 904, 'n04590129': 905, 'n04591157': 906, 'n04591713': 907, 'n04592741': 908, 'n04596742': 909, 'n04597913': 910, 'n04599235': 911, 'n04604644': 912, 'n04606251': 913, 'n04612504': 914, 'n04613696': 915
                    , 'n06359193': 916, 'n06596364': 917, 'n06785654': 918, 'n06794110': 919, 'n06874185': 920, 'n07248320': 921, 'n07565083': 922, 'n07579787': 923, 'n07583066': 924, 'n07584110': 925, 'n07590611': 926, 'n07613480': 927, 'n07614500': 928, 'n07615774': 929, 'n07684084': 930, 'n07693725': 931
                    , 'n07695742': 932, 'n07697313': 933, 'n07697537': 934, 'n07711569': 935, 'n07714571': 936, 'n07714990': 937, 'n07715103': 938, 'n07716358': 939, 'n07716906': 940, 'n07717410': 941, 'n07717556': 942, 'n07718472': 943, 'n07718747': 944, 'n07720875': 945, 'n07730033': 946, 'n07734744': 947
                    , 'n07742313': 948, 'n07745940': 949, 'n07747607': 950, 'n07749582': 951, 'n07753113': 952, 'n07753275': 953, 'n07753592': 954, 'n07754684': 955, 'n07760859': 956, 'n07768694': 957, 'n07802026': 958, 'n07831146': 959, 'n07836838': 960, 'n07860988': 961, 'n07871810': 962, 'n07873807': 963
                    , 'n07875152': 964, 'n07880968': 965, 'n07892512': 966, 'n07920052': 967, 'n07930864': 968, 'n07932039': 969, 'n09193705': 970, 'n09229709': 971, 'n09246464': 972, 'n09256479': 973, 'n09288635': 974, 'n09332890': 975, 'n09399592': 976, 'n09421951': 977, 'n09428293': 978, 'n09468604': 979
                    , 'n09472597': 980, 'n09835506': 981, 'n10148035': 982, 'n10565667': 983, 'n11879895': 984, 'n11939491': 985, 'n12057211': 986, 'n12144580': 987, 'n12267677': 988, 'n12620546': 989, 'n12768682': 990, 'n12985857': 991, 'n12998815': 992, 'n13037406': 993, 'n13040303': 994, 'n13044778': 995
                    , 'n13052670': 996, 'n13054560': 997, 'n13133613': 998, 'n15075141': 999}

class_names_dict = dict(sorted(class_names_dict.items(), key=lambda x: x[1]))
class_names_2 = list(class_names_dict.keys())
def load_model():
    # Load the trained model
    model = ImageNetClassifier.load_from_checkpoint(
        "logs/checkpoints/epoch=59-val_loss=1.46.ckpt",
        map_location="cuda" if torch.cuda.is_available() else "cpu",
        #lr=6.28E-02,  # This parameter is required but won't be used for inference
        num_classes=1000  # Make sure this matches your trained model
    )
    model.eval()
    return model

# Initialize the model
model = load_model()
model.eval()

# Define the preprocessing transforms
transform = transforms.Compose([
    transforms.Resize(size=256, antialias=True),
    transforms.CenterCrop(224),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    transforms.ToTensor(),
    ])

def predict_breed(image):
    # Convert to PIL Image if needed
    if not isinstance(image, Image.Image):
        image = Image.fromarray(image)
    
    # Preprocess the image
    # Convert to tensor
    to_tensor = transforms.ToTensor()
    img_tensor = to_tensor(image).unsqueeze(0)
    
    # Make prediction
    with torch.no_grad():
        outputs = model(img_tensor)
        probabilities = torch.nn.functional.softmax(outputs, dim=1)
        
    # Get top 5 predictions
    top5_prob, top5_indices = torch.topk(probabilities, 5)
    print('top5_prob', top5_prob)
    print('top5_indices', top5_indices)
    # Create results dictionary
    results = {
        class_names_2[idx.item()]: prob.item() 
        for prob, idx in zip(top5_prob[0], top5_indices[0])
    }
    print(results)
    results = {mapping_file_dict[old_key]: results[old_key] for old_key in  results.keys()}
    print(results)
    
    return results

# Create Gradio interface
iface = gr.Interface(
    fn=predict_breed,
    inputs=gr.Image(),
    outputs=gr.Label(num_top_classes=5),
    title="ImageNet-1K ResNet50 Classifier",
    description="Upload a image to identify its classification!",
    examples=[
        # Add paths to example images here
        # ["examples/dog1.jpg"],
        # ["examples/dog2.jpg"]
        # ['data/test/ILSVRC2012_test_00000004.JPEG'],
        # ['data/test/ILSVRC2012_test_00000178.JPEG'],
        # ["data/test/ILSVRC2012_test_00000188.JPEG"],
        # ["data/test/ILSVRC2012_test_00000158.JPEG"],
    ]
)

# Launch the app
if __name__ == "__main__":
    iface.launch()