multimodalart HF staff commited on
Commit
24f0aa3
·
verified ·
1 Parent(s): e335025

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +1138 -0
app.py ADDED
@@ -0,0 +1,1138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import numpy as np
3
+ import torch
4
+ import PIL.Image
5
+ import gradio as gr
6
+ import dnnlib
7
+ import legacy
8
+ from huggingface_hub import hf_hub_download
9
+
10
+ # ImageNet class names (1000 classes)
11
+ imagenet_classes = {
12
+ 0: "tench, Tinca tinca",
13
+ 1: "goldfish, Carassius auratus",
14
+ 2: "great white shark, white shark, man-eater, man-eating shark, Carcharodon caharias',",
15
+ 3: "tiger shark, Galeocerdo cuvieri",
16
+ 4: "hammerhead, hammerhead shark",
17
+ 5: "electric ray, crampfish, numbfish, torpedo",
18
+ 6: "stingray",
19
+ 7: "cock",
20
+ 8: "hen",
21
+ 9: "ostrich, Struthio camelus",
22
+ 10: "brambling, Fringilla montifringilla",
23
+ 11: "goldfinch, Carduelis carduelis",
24
+ 12: "house finch, linnet, Carpodacus mexicanus",
25
+ 13: "junco, snowbird",
26
+ 14: "indigo bunting, indigo finch, indigo bird, Passerina cyanea",
27
+ 15: "robin, American robin, Turdus migratorius",
28
+ 16: "bulbul",
29
+ 17: "jay",
30
+ 18: "magpie",
31
+ 19: "chickadee",
32
+ 20: "water ouzel, dipper",
33
+ 21: "kite",
34
+ 22: "bald eagle, American eagle, Haliaeetus leucocephalus",
35
+ 23: "vulture",
36
+ 24: "great grey owl, great gray owl, Strix nebulosa",
37
+ 25: "European fire salamander, Salamandra salamandra",
38
+ 26: "common newt, Triturus vulgaris",
39
+ 27: "eft",
40
+ 28: "spotted salamander, Ambystoma maculatum",
41
+ 29: "axolotl, mud puppy, Ambystoma mexicanum",
42
+ 30: "bullfrog, Rana catesbeiana",
43
+ 31: "tree frog, tree-frog",
44
+ 32: "tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui",
45
+ 33: "loggerhead, loggerhead turtle, Caretta caretta",
46
+ 34: "leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea",
47
+ 35: "mud turtle",
48
+ 36: "terrapin",
49
+ 37: "box turtle, box tortoise",
50
+ 38: "banded gecko",
51
+ 39: "common iguana, iguana, Iguana iguana",
52
+ 40: "American chameleon, anole, Anolis carolinensis",
53
+ 41: "whiptail, whiptail lizard",
54
+ 42: "agama",
55
+ 43: "frilled lizard, Chlamydosaurus kingi",
56
+ 44: "alligator lizard",
57
+ 45: "Gila monster, Heloderma suspectum",
58
+ 46: "green lizard, Lacerta viridis",
59
+ 47: "African chameleon, Chamaeleo chamaeleon",
60
+ 48: "Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoeis',",
61
+ 49: "African crocodile, Nile crocodile, Crocodylus niloticus",
62
+ 50: "American alligator, Alligator mississipiensis",
63
+ 51: "triceratops",
64
+ 52: "thunder snake, worm snake, Carphophis amoenus",
65
+ 53: "ringneck snake, ring-necked snake, ring snake",
66
+ 54: "hognose snake, puff adder, sand viper",
67
+ 55: "green snake, grass snake",
68
+ 56: "king snake, kingsnake",
69
+ 57: "garter snake, grass snake",
70
+ 58: "water snake",
71
+ 59: "vine snake",
72
+ 60: "night snake, Hypsiglena torquata",
73
+ 61: "boa constrictor, Constrictor constrictor",
74
+ 62: "rock python, rock snake, Python sebae",
75
+ 63: "Indian cobra, Naja naja",
76
+ 64: "green mamba",
77
+ 65: "sea snake",
78
+ 66: "horned viper, cerastes, sand viper, horned asp, Cerastes cornutus",
79
+ 67: "diamondback, diamondback rattlesnake, Crotalus adamanteus",
80
+ 68: "sidewinder, horned rattlesnake, Crotalus cerastes",
81
+ 69: "trilobite",
82
+ 70: "harvestman, daddy longlegs, Phalangium opilio",
83
+ 71: "scorpion",
84
+ 72: "black and gold garden spider, Argiope aurantia",
85
+ 73: "barn spider, Araneus cavaticus",
86
+ 74: "garden spider, Aranea diademata",
87
+ 75: "black widow, Latrodectus mactans",
88
+ 76: "tarantula",
89
+ 77: "wolf spider, hunting spider",
90
+ 78: "tick",
91
+ 79: "centipede",
92
+ 80: "black grouse",
93
+ 81: "ptarmigan",
94
+ 82: "ruffed grouse, partridge, Bonasa umbellus",
95
+ 83: "prairie chicken, prairie grouse, prairie fowl",
96
+ 84: "peacock",
97
+ 85: "quail",
98
+ 86: "partridge",
99
+ 87: "African grey, African gray, Psittacus erithacus",
100
+ 88: "macaw",
101
+ 89: "sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita",
102
+ 90: "lorikeet",
103
+ 91: "coucal",
104
+ 92: "bee eater",
105
+ 93: "hornbill",
106
+ 94: "hummingbird",
107
+ 95: "jacamar",
108
+ 96: "toucan",
109
+ 97: "drake",
110
+ 98: "red-breasted merganser, Mergus serrator",
111
+ 99: "goose",
112
+ 100: "black swan, Cygnus atratus",
113
+ 101: "tusker",
114
+ 102: "echidna, spiny anteater, anteater",
115
+ 103: "platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhyhus anatinus',",
116
+ 104: "wallaby, brush kangaroo",
117
+ 105: "koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus",
118
+ 106: "wombat",
119
+ 107: "jellyfish",
120
+ 108: "sea anemone, anemone",
121
+ 109: "brain coral",
122
+ 110: "flatworm, platyhelminth",
123
+ 111: "nematode, nematode worm, roundworm",
124
+ 112: "conch",
125
+ 113: "snail",
126
+ 114: "slug",
127
+ 115: "sea slug, nudibranch",
128
+ 116: "chiton, coat-of-mail shell, sea cradle, polyplacophore",
129
+ 117: "chambered nautilus, pearly nautilus, nautilus",
130
+ 118: "Dungeness crab, Cancer magister",
131
+ 119: "rock crab, Cancer irroratus",
132
+ 120: "fiddler crab",
133
+ 121: "king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodesamtschatica',",
134
+ 122: "American lobster, Northern lobster, Maine lobster, Homarus americanus",
135
+ 123: "spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish",
136
+ 124: "crayfish, crawfish, crawdad, crawdaddy",
137
+ 125: "hermit crab",
138
+ 126: "isopod",
139
+ 127: "white stork, Ciconia ciconia",
140
+ 128: "black stork, Ciconia nigra",
141
+ 129: "spoonbill",
142
+ 130: "flamingo",
143
+ 131: "little blue heron, Egretta caerulea",
144
+ 132: "American egret, great white heron, Egretta albus",
145
+ 133: "bittern",
146
+ 134: "crane, bird",
147
+ 135: "limpkin, Aramus pictus",
148
+ 136: "European gallinule, Porphyrio porphyrio",
149
+ 137: "American coot, marsh hen, mud hen, water hen, Fulica americana",
150
+ 138: "bustard",
151
+ 139: "ruddy turnstone, Arenaria interpres",
152
+ 140: "red-backed sandpiper, dunlin, Erolia alpina",
153
+ 141: "redshank, Tringa totanus",
154
+ 142: "dowitcher",
155
+ 143: "oystercatcher, oyster catcher",
156
+ 144: "pelican",
157
+ 145: "king penguin, Aptenodytes patagonica",
158
+ 146: "albatross, mollymawk",
159
+ 147: "grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius rostus',",
160
+ 148: "killer whale, killer, orca, grampus, sea wolf, Orcinus orca",
161
+ 149: "dugong, Dugong dugon",
162
+ 150: "sea lion",
163
+ 151: "Chihuahua",
164
+ 152: "Japanese spaniel",
165
+ 153: "Maltese dog, Maltese terrier, Maltese",
166
+ 154: "Pekinese, Pekingese, Peke",
167
+ 155: "Shih-Tzu",
168
+ 156: "Blenheim spaniel",
169
+ 157: "papillon",
170
+ 158: "toy terrier",
171
+ 159: "Rhodesian ridgeback",
172
+ 160: "Afghan hound, Afghan",
173
+ 161: "basset, basset hound",
174
+ 162: "beagle",
175
+ 163: "bloodhound, sleuthhound",
176
+ 164: "bluetick",
177
+ 165: "black-and-tan coonhound",
178
+ 166: "Walker hound, Walker foxhound",
179
+ 167: "English foxhound",
180
+ 168: "redbone",
181
+ 169: "borzoi, Russian wolfhound",
182
+ 170: "Irish wolfhound",
183
+ 171: "Italian greyhound",
184
+ 172: "whippet",
185
+ 173: "Ibizan hound, Ibizan Podenco",
186
+ 174: "Norwegian elkhound, elkhound",
187
+ 175: "otterhound, otter hound",
188
+ 176: "Saluki, gazelle hound",
189
+ 177: "Scottish deerhound, deerhound",
190
+ 178: "Weimaraner",
191
+ 179: "Staffordshire bullterrier, Staffordshire bull terrier",
192
+ 180: "American Staffordshire terrier, Staffordshire terrier, American pit bull rrier, pit bull terrier',",
193
+ 181: "Bedlington terrier",
194
+ 182: "Border terrier",
195
+ 183: "Kerry blue terrier",
196
+ 184: "Irish terrier",
197
+ 185: "Norfolk terrier",
198
+ 186: "Norwich terrier",
199
+ 187: "Yorkshire terrier",
200
+ 188: "wire-haired fox terrier",
201
+ 189: "Lakeland terrier",
202
+ 190: "Sealyham terrier, Sealyham",
203
+ 191: "Airedale, Airedale terrier",
204
+ 192: "cairn, cairn terrier",
205
+ 193: "Australian terrier",
206
+ 194: "Dandie Dinmont, Dandie Dinmont terrier",
207
+ 195: "Boston bull, Boston terrier",
208
+ 196: "miniature schnauzer",
209
+ 197: "giant schnauzer",
210
+ 198: "standard schnauzer",
211
+ 199: "Scotch terrier, Scottish terrier, Scottie",
212
+ 200: "Tibetan terrier, chrysanthemum dog",
213
+ 201: "silky terrier, Sydney silky",
214
+ 202: "soft-coated wheaten terrier",
215
+ 203: "West Highland white terrier",
216
+ 204: "Lhasa, Lhasa apso",
217
+ 205: "flat-coated retriever",
218
+ 206: "curly-coated retriever",
219
+ 207: "golden retriever",
220
+ 208: "Labrador retriever",
221
+ 209: "Chesapeake Bay retriever",
222
+ 210: "German short-haired pointer",
223
+ 211: "vizsla, Hungarian pointer",
224
+ 212: "English setter",
225
+ 213: "Irish setter, red setter",
226
+ 214: "Gordon setter",
227
+ 215: "Brittany spaniel",
228
+ 216: "clumber, clumber spaniel",
229
+ 217: "English springer, English springer spaniel",
230
+ 218: "Welsh springer spaniel",
231
+ 219: "cocker spaniel, English cocker spaniel, cocker",
232
+ 220: "Sussex spaniel",
233
+ 221: "Irish water spaniel",
234
+ 222: "kuvasz",
235
+ 223: "schipperke",
236
+ 224: "groenendael",
237
+ 225: "malinois",
238
+ 226: "briard",
239
+ 227: "kelpie",
240
+ 228: "komondor",
241
+ 229: "Old English sheepdog, bobtail",
242
+ 230: "Shetland sheepdog, Shetland sheep dog, Shetland",
243
+ 231: "collie",
244
+ 232: "Border collie",
245
+ 233: "Bouvier des Flandres, Bouviers des Flandres",
246
+ 234: "Rottweiler",
247
+ 235: "German shepherd, German shepherd dog, German police dog, alsatian",
248
+ 236: "Doberman, Doberman pinscher",
249
+ 237: "miniature pinscher",
250
+ 238: "Greater Swiss Mountain dog",
251
+ 239: "Bernese mountain dog",
252
+ 240: "Appenzeller",
253
+ 241: "EntleBucher",
254
+ 242: "boxer",
255
+ 243: "bull mastiff",
256
+ 244: "Tibetan mastiff",
257
+ 245: "French bulldog",
258
+ 246: "Great Dane",
259
+ 247: "Saint Bernard, St Bernard",
260
+ 248: "Eskimo dog, husky",
261
+ 249: "malamute, malemute, Alaskan malamute",
262
+ 250: "Siberian husky",
263
+ 251: "dalmatian, coach dog, carriage dog",
264
+ 252: "affenpinscher, monkey pinscher, monkey dog",
265
+ 253: "basenji",
266
+ 254: "pug, pug-dog",
267
+ 255: "Leonberg",
268
+ 256: "Newfoundland, Newfoundland dog",
269
+ 257: "Great Pyrenees",
270
+ 258: "Samoyed, Samoyede",
271
+ 259: "Pomeranian",
272
+ 260: "chow, chow chow",
273
+ 261: "keeshond",
274
+ 262: "Brabancon griffon",
275
+ 263: "Pembroke, Pembroke Welsh corgi",
276
+ 264: "Cardigan, Cardigan Welsh corgi",
277
+ 265: "toy poodle",
278
+ 266: "miniature poodle",
279
+ 267: "standard poodle",
280
+ 268: "Mexican hairless",
281
+ 269: "timber wolf, grey wolf, gray wolf, Canis lupus",
282
+ 270: "white wolf, Arctic wolf, Canis lupus tundrarum",
283
+ 271: "red wolf, maned wolf, Canis rufus, Canis niger",
284
+ 272: "coyote, prairie wolf, brush wolf, Canis latrans",
285
+ 273: "dingo, warrigal, warragal, Canis dingo",
286
+ 274: "dhole, Cuon alpinus",
287
+ 275: "African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus",
288
+ 276: "hyena, hyaena",
289
+ 277: "red fox, Vulpes vulpes",
290
+ 278: "kit fox, Vulpes macrotis",
291
+ 279: "Arctic fox, white fox, Alopex lagopus",
292
+ 280: "grey fox, gray fox, Urocyon cinereoargenteus",
293
+ 281: "tabby, tabby cat",
294
+ 282: "tiger cat",
295
+ 283: "Persian cat",
296
+ 284: "Siamese cat, Siamese",
297
+ 285: "Egyptian cat",
298
+ 286: "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor",
299
+ 287: "lynx, catamount",
300
+ 288: "leopard, Panthera pardus",
301
+ 289: "snow leopard, ounce, Panthera uncia",
302
+ 290: "jaguar, panther, Panthera onca, Felis onca",
303
+ 291: "lion, king of beasts, Panthera leo",
304
+ 292: "tiger, Panthera tigris",
305
+ 293: "cheetah, chetah, Acinonyx jubatus",
306
+ 294: "brown bear, bruin, Ursus arctos",
307
+ 295: "American black bear, black bear, Ursus americanus, Euarctos americanus",
308
+ 296: "ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus",
309
+ 297: "sloth bear, Melursus ursinus, Ursus ursinus",
310
+ 298: "mongoose",
311
+ 299: "meerkat, mierkat",
312
+ 300: "tiger beetle",
313
+ 301: "ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle",
314
+ 302: "ground beetle, carabid beetle",
315
+ 303: "long-horned beetle, longicorn, longicorn beetle",
316
+ 304: "leaf beetle, chrysomelid",
317
+ 305: "dung beetle",
318
+ 306: "rhinoceros beetle",
319
+ 307: "weevil",
320
+ 308: "fly",
321
+ 309: "bee",
322
+ 310: "ant, emmet, pismire",
323
+ 311: "grasshopper, hopper",
324
+ 312: "cricket",
325
+ 313: "walking stick, walkingstick, stick insect",
326
+ 314: "cockroach, roach",
327
+ 315: "mantis, mantid",
328
+ 316: "cicada, cicala",
329
+ 317: "leafhopper",
330
+ 318: "lacewing, lacewing fly",
331
+ 319: "dragonfly, darning needle, devil's darning needle, sewing needle, snake fder, snake doctor, mosquito hawk, skeeter hawk",
332
+ 320: "damselfly",
333
+ 321: "admiral",
334
+ 322: "ringlet, ringlet butterfly",
335
+ 323: "monarch, monarch butterfly, milkweed butterfly, Danaus plexippus",
336
+ 324: "cabbage butterfly",
337
+ 325: "sulphur butterfly, sulfur butterfly",
338
+ 326: "lycaenid, lycaenid butterfly",
339
+ 327: "starfish, sea star",
340
+ 328: "sea urchin",
341
+ 329: "sea cucumber, holothurian",
342
+ 330: "wood rabbit, cottontail, cottontail rabbit",
343
+ 331: "hare",
344
+ 332: "Angora, Angora rabbit",
345
+ 333: "hamster",
346
+ 334: "porcupine, hedgehog",
347
+ 335: "fox squirrel, eastern fox squirrel, Sciurus niger",
348
+ 336: "marmot",
349
+ 337: "beaver",
350
+ 338: "guinea pig, Cavia cobaya",
351
+ 339: "sorrel",
352
+ 340: "zebra",
353
+ 341: "hog, pig, grunter, squealer, Sus scrofa",
354
+ 342: "wild boar, boar, Sus scrofa",
355
+ 343: "warthog",
356
+ 344: "hippopotamus, hippo, river horse, Hippopotamus amphibius",
357
+ 345: "ox",
358
+ 346: "water buffalo, water ox, Asiatic buffalo, Bubalus bubalis",
359
+ 347: "bison",
360
+ 348: "ram, tup",
361
+ 349: "bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain eep, Ovis canadensis',",
362
+ 350: "ibex, Capra ibex",
363
+ 351: "hartebeest",
364
+ 352: "impala, Aepyceros melampus",
365
+ 353: "gazelle",
366
+ 354: "Arabian camel, dromedary, Camelus dromedarius",
367
+ 355: "llama",
368
+ 356: "weasel",
369
+ 357: "mink",
370
+ 358: "polecat, fitch, foulmart, foumart, Mustela putorius",
371
+ 359: "black-footed ferret, ferret, Mustela nigripes",
372
+ 360: "otter",
373
+ 361: "skunk, polecat, wood pussy",
374
+ 362: "badger",
375
+ 363: "armadillo",
376
+ 364: "three-toed sloth, ai, Bradypus tridactylus",
377
+ 365: "orangutan, orang, orangutang, Pongo pygmaeus",
378
+ 366: "gorilla, Gorilla gorilla",
379
+ 367: "chimpanzee, chimp, Pan troglodytes",
380
+ 368: "gibbon, Hylobates lar",
381
+ 369: "siamang, Hylobates syndactylus, Symphalangus syndactylus",
382
+ 370: "guenon, guenon monkey",
383
+ 371: "patas, hussar monkey, Erythrocebus patas",
384
+ 372: "baboon",
385
+ 373: "macaque",
386
+ 374: "langur",
387
+ 375: "colobus, colobus monkey",
388
+ 376: "proboscis monkey, Nasalis larvatus",
389
+ 377: "marmoset",
390
+ 378: "capuchin, ringtail, Cebus capucinus",
391
+ 379: "howler monkey, howler",
392
+ 380: "titi, titi monkey",
393
+ 381: "spider monkey, Ateles geoffroyi",
394
+ 382: "squirrel monkey, Saimiri sciureus",
395
+ 383: "Madagascar cat, ring-tailed lemur, Lemur catta",
396
+ 384: "indri, indris, Indri indri, Indri brevicaudatus",
397
+ 385: "Indian elephant, Elephas maximus",
398
+ 386: "African elephant, Loxodonta africana",
399
+ 387: "lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens",
400
+ 388: "giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca",
401
+ 389: "barracouta, snoek",
402
+ 390: "eel",
403
+ 391: "coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch",
404
+ 392: "rock beauty, Holocanthus tricolor",
405
+ 393: "anemone fish",
406
+ 394: "sturgeon",
407
+ 395: "gar, garfish, garpike, billfish, Lepisosteus osseus",
408
+ 396: "lionfish",
409
+ 397: "puffer, pufferfish, blowfish, globefish",
410
+ 398: "abacus",
411
+ 399: "abaya",
412
+ 400: "academic gown, academic robe, judge's robe",
413
+ 401: "accordion, piano accordion, squeeze box",
414
+ 402: "acoustic guitar",
415
+ 403: "aircraft carrier, carrier, flattop, attack aircraft carrier",
416
+ 404: "airliner",
417
+ 405: "airship, dirigible",
418
+ 406: "altar",
419
+ 407: "ambulance",
420
+ 408: "amphibian, amphibious vehicle",
421
+ 409: "analog clock",
422
+ 410: "apiary, bee house",
423
+ 411: "apron",
424
+ 412: "ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustb, trash barrel, trash bin',",
425
+ 413: "assault rifle, assault gun",
426
+ 414: "backpack, back pack, knapsack, packsack, rucksack, haversack",
427
+ 415: "bakery, bakeshop, bakehouse",
428
+ 416: "balance beam, beam",
429
+ 417: "balloon",
430
+ 418: "ballpoint, ballpoint pen, ballpen, Biro",
431
+ 419: "Band Aid",
432
+ 420: "banjo",
433
+ 421: "bannister, banister, balustrade, balusters, handrail",
434
+ 422: "barbell",
435
+ 423: "barber chair",
436
+ 424: "barbershop",
437
+ 425: "barn",
438
+ 426: "barometer",
439
+ 427: "barrel, cask",
440
+ 428: "barrow, garden cart, lawn cart, wheelbarrow",
441
+ 429: "baseball",
442
+ 430: "basketball",
443
+ 431: "bassinet",
444
+ 432: "bassoon",
445
+ 433: "bathing cap, swimming cap",
446
+ 434: "bath towel",
447
+ 435: "bathtub, bathing tub, bath, tub",
448
+ 436: "beach wagon, station wagon, wagon, estate car, beach waggon, station wagg, waggon',",
449
+ 437: "beacon, lighthouse, beacon light, pharos",
450
+ 438: "beaker",
451
+ 439: "bearskin, busby, shako",
452
+ 440: "beer bottle",
453
+ 441: "beer glass",
454
+ 442: "bell cote, bell cot",
455
+ 443: "bib",
456
+ 444: "bicycle-built-for-two, tandem bicycle, tandem",
457
+ 445: "bikini, two-piece",
458
+ 446: "binder, ring-binder",
459
+ 447: "binoculars, field glasses, opera glasses",
460
+ 448: "birdhouse",
461
+ 449: "boathouse",
462
+ 450: "bobsled, bobsleigh, bob",
463
+ 451: "bolo tie, bolo, bola tie, bola",
464
+ 452: "bonnet, poke bonnet",
465
+ 453: "bookcase",
466
+ 454: "bookshop, bookstore, bookstall",
467
+ 455: "bottlecap",
468
+ 456: "bow",
469
+ 457: "bow tie, bow-tie, bowtie",
470
+ 458: "brass, memorial tablet, plaque",
471
+ 459: "brassiere, bra, bandeau",
472
+ 460: "breakwater, groin, groyne, mole, bulwark, seawall, jetty",
473
+ 461: "breastplate, aegis, egis",
474
+ 462: "broom",
475
+ 463: "bucket, pail",
476
+ 464: "buckle",
477
+ 465: "bulletproof vest",
478
+ 466: "bullet train, bullet",
479
+ 467: "butcher shop, meat market",
480
+ 468: "cab, hack, taxi, taxicab",
481
+ 469: "caldron, cauldron",
482
+ 470: "candle, taper, wax light",
483
+ 471: "cannon",
484
+ 472: "canoe",
485
+ 473: "can opener, tin opener",
486
+ 474: "cardigan",
487
+ 475: "car mirror",
488
+ 476: "carousel, carrousel, merry-go-round, roundabout, whirligig",
489
+ 477: "carpenter's kit, tool kit",
490
+ 478: "carton",
491
+ 479: "car wheel",
492
+ 480: "cash machine, cash dispenser, automated teller machine, automatic teller chine, automated teller, automatic teller, ATM',",
493
+ 481: "cassette",
494
+ 482: "cassette player",
495
+ 483: "castle",
496
+ 484: "catamaran",
497
+ 485: "CD player",
498
+ 486: "cello, violoncello",
499
+ 487: "cellular telephone, cellular phone, cellphone, cell, mobile phone",
500
+ 488: "chain",
501
+ 489: "chainlink fence",
502
+ 490: "chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring mour',",
503
+ 491: "chain saw, chainsaw",
504
+ 492: "chest",
505
+ 493: "chiffonier, commode",
506
+ 494: "chime, bell, gong",
507
+ 495: "china cabinet, china closet",
508
+ 496: "Christmas stocking",
509
+ 497: "church, church building",
510
+ 498: "cinema, movie theater, movie theatre, movie house, picture palace",
511
+ 499: "cleaver, meat cleaver, chopper",
512
+ 500: "cliff dwelling",
513
+ 501: "cloak",
514
+ 502: "clog, geta, patten, sabot",
515
+ 503: "cocktail shaker",
516
+ 504: "coffee mug",
517
+ 505: "coffeepot",
518
+ 506: "coil, spiral, volute, whorl, helix",
519
+ 507: "combination lock",
520
+ 508: "computer keyboard, keypad",
521
+ 509: "confectionery, confectionary, candy store",
522
+ 510: "container ship, containership, container vessel",
523
+ 511: "convertible",
524
+ 512: "corkscrew, bottle screw",
525
+ 513: "cornet, horn, trumpet, trump",
526
+ 514: "cowboy boot",
527
+ 515: "cowboy hat, ten-gallon hat",
528
+ 516: "cradle",
529
+ 517: "crane",
530
+ 518: "crash helmet",
531
+ 519: "crate",
532
+ 520: "crib, cot",
533
+ 521: "Crock Pot",
534
+ 522: "croquet ball",
535
+ 523: "crutch",
536
+ 524: "cuirass",
537
+ 525: "dam, dike, dyke",
538
+ 526: "desk",
539
+ 527: "desktop computer",
540
+ 528: "dial telephone, dial phone",
541
+ 529: "diaper, nappy, napkin",
542
+ 530: "digital clock",
543
+ 531: "digital watch",
544
+ 532: "dining table, board",
545
+ 533: "dishrag, dishcloth",
546
+ 534: "dishwasher, dish washer, dishwashing machine",
547
+ 535: "disk brake, disc brake",
548
+ 536: "dock, dockage, docking facility",
549
+ 537: "dogsled, dog sled, dog sleigh",
550
+ 538: "dome",
551
+ 539: "doormat, welcome mat",
552
+ 540: "drilling platform, offshore rig",
553
+ 541: "drum, membranophone, tympan",
554
+ 542: "drumstick",
555
+ 543: "dumbbell",
556
+ 544: "Dutch oven",
557
+ 545: "electric fan, blower",
558
+ 546: "electric guitar",
559
+ 547: "electric locomotive",
560
+ 548: "entertainment center",
561
+ 549: "envelope",
562
+ 550: "espresso maker",
563
+ 551: "face powder",
564
+ 552: "feather boa, boa",
565
+ 553: "file, file cabinet, filing cabinet",
566
+ 554: "fireboat",
567
+ 555: "fire engine, fire truck",
568
+ 556: "fire screen, fireguard",
569
+ 557: "flagpole, flagstaff",
570
+ 558: "flute, transverse flute",
571
+ 559: "folding chair",
572
+ 560: "football helmet",
573
+ 561: "forklift",
574
+ 562: "fountain",
575
+ 563: "fountain pen",
576
+ 564: "four-poster",
577
+ 565: "freight car",
578
+ 566: "French horn, horn",
579
+ 567: "frying pan, frypan, skillet",
580
+ 568: "fur coat",
581
+ 569: "garbage truck, dustcart",
582
+ 570: "gasmask, respirator, gas helmet",
583
+ 571: "gas pump, gasoline pump, petrol pump, island dispenser",
584
+ 572: "goblet",
585
+ 573: "go-kart",
586
+ 574: "golf ball",
587
+ 575: "golfcart, golf cart",
588
+ 576: "gondola",
589
+ 577: "gong, tam-tam",
590
+ 578: "gown",
591
+ 579: "grand piano, grand",
592
+ 580: "greenhouse, nursery, glasshouse",
593
+ 581: "grille, radiator grille",
594
+ 582: "grocery store, grocery, food market, market",
595
+ 583: "guillotine",
596
+ 584: "hair slide",
597
+ 585: "hair spray",
598
+ 586: "half track",
599
+ 587: "hammer",
600
+ 588: "hamper",
601
+ 589: "hand blower, blow dryer, blow drier, hair dryer, hair drier",
602
+ 590: "hand-held computer, hand-held microcomputer",
603
+ 591: "handkerchief, hankie, hanky, hankey",
604
+ 592: "hard disc, hard disk, fixed disk",
605
+ 593: "harmonica, mouth organ, harp, mouth harp",
606
+ 594: "harp",
607
+ 595: "harvester, reaper",
608
+ 596: "hatchet",
609
+ 597: "holster",
610
+ 598: "home theater, home theatre",
611
+ 599: "honeycomb",
612
+ 600: "hook, claw",
613
+ 601: "hoopskirt, crinoline",
614
+ 602: "horizontal bar, high bar",
615
+ 603: "horse cart, horse-cart",
616
+ 604: "hourglass",
617
+ 605: "iPod",
618
+ 606: "iron, smoothing iron",
619
+ 607: "jack-o'-lantern",
620
+ 608: "jean, blue jean, denim",
621
+ 609: "jeep, landrover",
622
+ 610: "jersey, T-shirt, tee shirt",
623
+ 611: "jigsaw puzzle",
624
+ 612: "jinrikisha, ricksha, rickshaw",
625
+ 613: "joystick",
626
+ 614: "kimono",
627
+ 615: "knee pad",
628
+ 616: "knot",
629
+ 617: "lab coat, laboratory coat",
630
+ 618: "ladle",
631
+ 619: "lampshade, lamp shade",
632
+ 620: "laptop, laptop computer",
633
+ 621: "lawn mower, mower",
634
+ 622: "lens cap, lens cover",
635
+ 623: "letter opener, paper knife, paperknife",
636
+ 624: "library",
637
+ 625: "lifeboat",
638
+ 626: "lighter, light, igniter, ignitor",
639
+ 627: "limousine, limo",
640
+ 628: "liner, ocean liner",
641
+ 629: "lipstick, lip rouge",
642
+ 630: "Loafer",
643
+ 631: "lotion",
644
+ 632: "loudspeaker, speaker, speaker unit, loudspeaker system, speaker system",
645
+ 633: "loupe, jeweler's loupe",
646
+ 634: "lumbermill, sawmill",
647
+ 635: "magnetic compass",
648
+ 636: "mailbag, postbag",
649
+ 637: "mailbox, letter box",
650
+ 638: "maillot",
651
+ 639: "maillot, tank suit",
652
+ 640: "manhole cover",
653
+ 641: "maraca",
654
+ 642: "marimba, xylophone",
655
+ 643: "mask",
656
+ 644: "matchstick",
657
+ 645: "maypole",
658
+ 646: "maze, labyrinth",
659
+ 647: "measuring cup",
660
+ 648: "medicine chest, medicine cabinet",
661
+ 649: "megalith, megalithic structure",
662
+ 650: "microphone, mike",
663
+ 651: "microwave, microwave oven",
664
+ 652: "military uniform",
665
+ 653: "milk can",
666
+ 654: "minibus",
667
+ 655: "miniskirt, mini",
668
+ 656: "minivan",
669
+ 657: "missile",
670
+ 658: "mitten",
671
+ 659: "mixing bowl",
672
+ 660: "mobile home, manufactured home",
673
+ 661: "Model T",
674
+ 662: "modem",
675
+ 663: "monastery",
676
+ 664: "monitor",
677
+ 665: "moped",
678
+ 666: "mortar",
679
+ 667: "mortarboard",
680
+ 668: "mosque",
681
+ 669: "mosquito net",
682
+ 670: "motor scooter, scooter",
683
+ 671: "mountain bike, all-terrain bike, off-roader",
684
+ 672: "mountain tent",
685
+ 673: "mouse, computer mouse",
686
+ 674: "mousetrap",
687
+ 675: "moving van",
688
+ 676: "muzzle",
689
+ 677: "nail",
690
+ 678: "neck brace",
691
+ 679: "necklace",
692
+ 680: "nipple",
693
+ 681: "notebook, notebook computer",
694
+ 682: "obelisk",
695
+ 683: "oboe, hautboy, hautbois",
696
+ 684: "ocarina, sweet potato",
697
+ 685: "odometer, hodometer, mileometer, milometer",
698
+ 686: "oil filter",
699
+ 687: "organ, pipe organ",
700
+ 688: "oscilloscope, scope, cathode-ray oscilloscope, CRO",
701
+ 689: "overskirt",
702
+ 690: "oxcart",
703
+ 691: "oxygen mask",
704
+ 692: "packet",
705
+ 693: "paddle, boat paddle",
706
+ 694: "paddlewheel, paddle wheel",
707
+ 695: "padlock",
708
+ 696: "paintbrush",
709
+ 697: "pajama, pyjama, pj's, jammies",
710
+ 698: "palace",
711
+ 699: "panpipe, pandean pipe, syrinx",
712
+ 700: "paper towel",
713
+ 701: "parachute, chute",
714
+ 702: "parallel bars, bars",
715
+ 703: "park bench",
716
+ 704: "parking meter",
717
+ 705: "passenger car, coach, carriage",
718
+ 706: "patio, terrace",
719
+ 707: "pay-phone, pay-station",
720
+ 708: "pedestal, plinth, footstall",
721
+ 709: "pencil box, pencil case",
722
+ 710: "pencil sharpener",
723
+ 711: "perfume, essence",
724
+ 712: "Petri dish",
725
+ 713: "photocopier",
726
+ 714: "pick, plectrum, plectron",
727
+ 715: "pickelhaube",
728
+ 716: "picket fence, paling",
729
+ 717: "pickup, pickup truck",
730
+ 718: "pier",
731
+ 719: "piggy bank, penny bank",
732
+ 720: "pill bottle",
733
+ 721: "pillow",
734
+ 722: "ping-pong ball",
735
+ 723: "pinwheel",
736
+ 724: "pirate, pirate ship",
737
+ 725: "pitcher, ewer",
738
+ 726: "plane, carpenter's plane, woodworking plane",
739
+ 727: "planetarium",
740
+ 728: "plastic bag",
741
+ 729: "plate rack",
742
+ 730: "plow, plough",
743
+ 731: "plunger, plumber's helper",
744
+ 732: "Polaroid camera, Polaroid Land camera",
745
+ 733: "pole",
746
+ 734: "police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria",
747
+ 735: "poncho",
748
+ 736: "pool table, billiard table, snooker table",
749
+ 737: "pop bottle, soda bottle",
750
+ 738: "pot, flowerpot",
751
+ 739: "potter's wheel",
752
+ 740: "power drill",
753
+ 741: "prayer rug, prayer mat",
754
+ 742: "printer",
755
+ 743: "prison, prison house",
756
+ 744: "projectile, missile",
757
+ 745: "projector",
758
+ 746: "puck, hockey puck",
759
+ 747: "punching bag, punch bag, punching ball, punchball",
760
+ 748: "purse",
761
+ 749: "quill, quill pen",
762
+ 750: "quilt, comforter, comfort, puff",
763
+ 751: "racer, race car, racing car",
764
+ 752: "racket, racquet",
765
+ 753: "radiator",
766
+ 754: "radio, wireless",
767
+ 755: "radio telescope, radio reflector",
768
+ 756: "rain barrel",
769
+ 757: "recreational vehicle, RV, R.V.",
770
+ 758: "reel",
771
+ 759: "reflex camera",
772
+ 760: "refrigerator, icebox",
773
+ 761: "remote control, remote",
774
+ 762: "restaurant, eating house, eating place, eatery",
775
+ 763: "revolver, six-gun, six-shooter",
776
+ 764: "rifle",
777
+ 765: "rocking chair, rocker",
778
+ 766: "rotisserie",
779
+ 767: "rubber eraser, rubber, pencil eraser",
780
+ 768: "rugby ball",
781
+ 769: "rule, ruler",
782
+ 770: "running shoe",
783
+ 771: "safe",
784
+ 772: "safety pin",
785
+ 773: "saltshaker, salt shaker",
786
+ 774: "sandal",
787
+ 775: "sarong",
788
+ 776: "sax, saxophone",
789
+ 777: "scabbard",
790
+ 778: "scale, weighing machine",
791
+ 779: "school bus",
792
+ 780: "schooner",
793
+ 781: "scoreboard",
794
+ 782: "screen, CRT screen",
795
+ 783: "screw",
796
+ 784: "screwdriver",
797
+ 785: "seat belt, seatbelt",
798
+ 786: "sewing machine",
799
+ 787: "shield, buckler",
800
+ 788: "shoe shop, shoe-shop, shoe store",
801
+ 789: "shoji",
802
+ 790: "shopping basket",
803
+ 791: "shopping cart",
804
+ 792: "shovel",
805
+ 793: "shower cap",
806
+ 794: "shower curtain",
807
+ 795: "ski",
808
+ 796: "ski mask",
809
+ 797: "sleeping bag",
810
+ 798: "slide rule, slipstick",
811
+ 799: "sliding door",
812
+ 800: "slot, one-armed bandit",
813
+ 801: "snorkel",
814
+ 802: "snowmobile",
815
+ 803: "snowplow, snowplough",
816
+ 804: "soap dispenser",
817
+ 805: "soccer ball",
818
+ 806: "sock",
819
+ 807: "solar dish, solar collector, solar furnace",
820
+ 808: "sombrero",
821
+ 809: "soup bowl",
822
+ 810: "space bar",
823
+ 811: "space heater",
824
+ 812: "space shuttle",
825
+ 813: "spatula",
826
+ 814: "speedboat",
827
+ 815: "spider web, spider's web",
828
+ 816: "spindle",
829
+ 817: "sports car, sport car",
830
+ 818: "spotlight, spot",
831
+ 819: "stage",
832
+ 820: "steam locomotive",
833
+ 821: "steel arch bridge",
834
+ 822: "steel drum",
835
+ 823: "stethoscope",
836
+ 824: "stole",
837
+ 825: "stone wall",
838
+ 826: "stopwatch, stop watch",
839
+ 827: "stove",
840
+ 828: "strainer",
841
+ 829: "streetcar, tram, tramcar, trolley, trolley car",
842
+ 830: "stretcher",
843
+ 831: "studio couch, day bed",
844
+ 832: "stupa, tope",
845
+ 833: "submarine, pigboat, sub, U-boat",
846
+ 834: "suit, suit of clothes",
847
+ 835: "sundial",
848
+ 836: "sunglass",
849
+ 837: "sunglasses, dark glasses, shades",
850
+ 838: "sunscreen, sunblock, sun blocker",
851
+ 839: "suspension bridge",
852
+ 840: "swab, swob, mop",
853
+ 841: "sweatshirt",
854
+ 842: "swimming trunks, bathing trunks",
855
+ 843: "swing",
856
+ 844: "switch, electric switch, electrical switch",
857
+ 845: "syringe",
858
+ 846: "table lamp",
859
+ 847: "tank, army tank, armored combat vehicle, armoured combat vehicle",
860
+ 848: "tape player",
861
+ 849: "teapot",
862
+ 850: "teddy, teddy bear",
863
+ 851: "television, television system",
864
+ 852: "tennis ball",
865
+ 853: "thatch, thatched roof",
866
+ 854: "theater curtain, theatre curtain",
867
+ 855: "thimble",
868
+ 856: "thresher, thrasher, threshing machine",
869
+ 857: "throne",
870
+ 858: "tile roof",
871
+ 859: "toaster",
872
+ 860: "tobacco shop, tobacconist shop, tobacconist",
873
+ 861: "toilet seat",
874
+ 862: "torch",
875
+ 863: "totem pole",
876
+ 864: "tow truck, tow car, wrecker",
877
+ 865: "toyshop",
878
+ 866: "tractor",
879
+ 867: "trailer truck, tractor trailer, trucking rig, rig, articulated lorry, sem,",
880
+ 868: "tray",
881
+ 869: "trench coat",
882
+ 870: "tricycle, trike, velocipede",
883
+ 871: "trimaran",
884
+ 872: "tripod",
885
+ 873: "triumphal arch",
886
+ 874: "trolleybus, trolley coach, trackless trolley",
887
+ 875: "trombone",
888
+ 876: "tub, vat",
889
+ 877: "turnstile",
890
+ 878: "typewriter keyboard",
891
+ 879: "umbrella",
892
+ 880: "unicycle, monocycle",
893
+ 881: "upright, upright piano",
894
+ 882: "vacuum, vacuum cleaner",
895
+ 883: "vase",
896
+ 884: "vault",
897
+ 885: "velvet",
898
+ 886: "vending machine",
899
+ 887: "vestment",
900
+ 888: "viaduct",
901
+ 889: "violin, fiddle",
902
+ 890: "volleyball",
903
+ 891: "waffle iron",
904
+ 892: "wall clock",
905
+ 893: "wallet, billfold, notecase, pocketbook",
906
+ 894: "wardrobe, closet, press",
907
+ 895: "warplane, military plane",
908
+ 896: "washbasin, handbasin, washbowl, lavabo, wash-hand basin",
909
+ 897: "washer, automatic washer, washing machine",
910
+ 898: "water bottle",
911
+ 899: "water jug",
912
+ 900: "water tower",
913
+ 901: "whiskey jug",
914
+ 902: "whistle",
915
+ 903: "wig",
916
+ 904: "window screen",
917
+ 905: "window shade",
918
+ 906: "Windsor tie",
919
+ 907: "wine bottle",
920
+ 908: "wing",
921
+ 909: "wok",
922
+ 910: "wooden spoon",
923
+ 911: "wool, woolen, woollen",
924
+ 912: "worm fence, snake fence, snake-rail fence, Virginia fence",
925
+ 913: "wreck",
926
+ 914: "yawl",
927
+ 915: "yurt",
928
+ 916: "web site, website, internet site, site",
929
+ 917: "comic book",
930
+ 918: "crossword puzzle, crossword",
931
+ 919: "street sign",
932
+ 920: "traffic light, traffic signal, stoplight",
933
+ 921: "book jacket, dust cover, dust jacket, dust wrapper",
934
+ 922: "menu",
935
+ 923: "plate",
936
+ 924: "guacamole",
937
+ 925: "consomme",
938
+ 926: "hot pot, hotpot",
939
+ 927: "trifle",
940
+ 928: "ice cream, icecream",
941
+ 929: "ice lolly, lolly, lollipop, popsicle",
942
+ 930: "French loaf",
943
+ 931: "bagel, beigel",
944
+ 932: "pretzel",
945
+ 933: "cheeseburger",
946
+ 934: "hotdog, hot dog, red hot",
947
+ 935: "mashed potato",
948
+ 936: "head cabbage",
949
+ 937: "broccoli",
950
+ 938: "cauliflower",
951
+ 939: "zucchini, courgette",
952
+ 940: "spaghetti squash",
953
+ 941: "acorn squash",
954
+ 942: "butternut squash",
955
+ 943: "cucumber, cuke",
956
+ 944: "artichoke, globe artichoke",
957
+ 945: "bell pepper",
958
+ 946: "cardoon",
959
+ 947: "mushroom",
960
+ 948: "Granny Smith",
961
+ 949: "strawberry",
962
+ 950: "orange",
963
+ 951: "lemon",
964
+ 952: "fig",
965
+ 953: "pineapple, ananas",
966
+ 954: "banana",
967
+ 955: "jackfruit, jak, jack",
968
+ 956: "custard apple",
969
+ 957: "pomegranate",
970
+ 958: "hay",
971
+ 959: "carbonara",
972
+ 960: "chocolate sauce, chocolate syrup",
973
+ 961: "dough",
974
+ 962: "meat loaf, meatloaf",
975
+ 963: "pizza, pizza pie",
976
+ 964: "potpie",
977
+ 965: "burrito",
978
+ 966: "red wine",
979
+ 967: "espresso",
980
+ 968: "cup",
981
+ 969: "eggnog",
982
+ 970: "alp",
983
+ 971: "bubble",
984
+ 972: "cliff, drop, drop-off",
985
+ 973: "coral reef",
986
+ 974: "geyser",
987
+ 975: "lakeside, lakeshore",
988
+ 976: "promontory, headland, head, foreland",
989
+ 977: "sandbar, sand bar",
990
+ 978: "seashore, coast, seacoast, sea-coast",
991
+ 979: "valley, vale",
992
+ 980: "volcano",
993
+ 981: "ballplayer, baseball player",
994
+ 982: "groom, bridegroom",
995
+ 983: "scuba diver",
996
+ 984: "rapeseed",
997
+ 985: "daisy",
998
+ 986: "yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripium parviflorum",
999
+ 987: "corn",
1000
+ 988: "acorn",
1001
+ 989: "hip, rose hip, rosehip",
1002
+ 990: "buckeye, horse chestnut, conker",
1003
+ 991: "coral fungus",
1004
+ 992: "agaric",
1005
+ 993: "gyromitra",
1006
+ 994: "stinkhorn, carrion fungus",
1007
+ 995: "earthstar",
1008
+ 996: "hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa",
1009
+ 997: "bolete",
1010
+ 998: "ear, spike, capitulum",
1011
+ 999: "toilet tissue, toilet paper, bathroom tissue",
1012
+ }
1013
+
1014
+ hf_hub_download(repo_id="brownvc/BaselineGAN-FFHQ-256x256", filename="network-snapshot-final.pkl", local_dir="ffhq-256x256.pkl")
1015
+ hf_hub_download(repo_id="brownvc/BaselineGAN-ImgNet-64x64-v0", filename="network-snapshot-final.pkl", local_dir="ImgNet-64x64-v0.pkl")
1016
+
1017
+ # Configuration
1018
+ networks = {
1019
+ "FFHQ (Faces) 128px": {
1020
+ "path": "ffhq-256x256.pkl",
1021
+ "G": None,
1022
+ "conditional": False
1023
+ },
1024
+ "ImageNet 64px": {
1025
+ "path": "ImgNet-64x64-v0.pkl",
1026
+ "G": None,
1027
+ "conditional": True
1028
+ }
1029
+ }
1030
+ device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
1031
+
1032
+ # Preload all networks
1033
+ for network_name, network_info in networks.items():
1034
+ print(f'Loading network {network_name} from "{network_info["path"]}"...')
1035
+ with dnnlib.util.open_url(network_info["path"]) as f:
1036
+ network_info["G"] = legacy.load_network_pkl(f)['G_ema'].to(device)
1037
+
1038
+ def generate_random_images(network_choice, class_label=None, num_images=2):
1039
+ # Get the selected generator
1040
+ G = networks[network_choice]["G"]
1041
+
1042
+ # Generate random seeds
1043
+ seeds = np.random.randint(0, 100000, num_images)
1044
+
1045
+ # Setup labels
1046
+ if networks[network_choice]["conditional"] and class_label is not None:
1047
+ # Extract class index from the selection string
1048
+ class_idx = int(class_label.split(':')[0])
1049
+ label = torch.zeros([1, G.c_dim], device=device)
1050
+ label[:, class_idx] = 1
1051
+ else:
1052
+ label = torch.zeros([1, G.c_dim], device=device)
1053
+
1054
+ # Generate and save images
1055
+ output_images = []
1056
+ for seed_idx, seed in enumerate(seeds):
1057
+ print(f'Generating image for seed {seed} ({seed_idx+1}/{num_images}) ...')
1058
+ z = torch.from_numpy(np.random.RandomState(seed).randn(1, G.z_dim)).to(device)
1059
+ img = G(z, label)
1060
+ img = (img.permute(0, 2, 3, 1) * 127.5 + 128).clamp(0, 255).to(torch.uint8)
1061
+ pil_img = PIL.Image.fromarray(img[0].cpu().numpy(), 'RGB')
1062
+ output_images.append(pil_img)
1063
+
1064
+ return output_images
1065
+
1066
+ # Format ImageNet classes for dropdown
1067
+ imagenet_choices = [f"{idx}: {name}" for idx, name in imagenet_classes.items()]
1068
+
1069
+ css = '''
1070
+ .gradio-container{max-width: 640px !important}
1071
+ '''
1072
+ # Create Gradio interface
1073
+ with gr.Blocks(css=css) as demo:
1074
+ with gr.Column():
1075
+ gr.Markdown("# GANs are so back!? R3GAN Demo")
1076
+ gr.Markdown("Demo for the stable, easy to train and modern R3GAN")
1077
+ gr.Markdown("[[Paper](https://huggingface.co/papers/2501.05441)] [[Models](https://huggingface.co/collections/brownvc/r3gan-6780a350063dd44ffb1fe08a)] [[Code](https://github.com/brownvc/R3GAN/)]")
1078
+
1079
+ total_images = gr.State(2)
1080
+
1081
+ # Add radio buttons for network selection
1082
+ network_choice = gr.Radio(
1083
+ choices=list(networks.keys()),
1084
+ value=list(networks.keys())[0],
1085
+ label="Choose Network"
1086
+ )
1087
+
1088
+ # Add conditional class selector for ImageNet
1089
+ with gr.Column(visible=False) as class_selector:
1090
+ class_label = gr.Dropdown(
1091
+ choices=imagenet_choices,
1092
+ label="ImageNet Class",
1093
+ value=imagenet_choices[0],
1094
+ filterable=True
1095
+ )
1096
+
1097
+ generate_btn = gr.Button("Generate Images")
1098
+
1099
+ # Create a gallery to display images
1100
+ gallery = gr.Gallery(
1101
+ label="Generated Images",
1102
+ show_label=True,
1103
+ elem_id="gallery",
1104
+ columns=2,
1105
+ rows=1,
1106
+ height="auto"
1107
+ )
1108
+
1109
+ with gr.Accordion("How does it work?", open=False):
1110
+ gr.Markdown('''# The GAN is dead; long live the GAN! A Modern GAN Baseline
1111
+
1112
+ ![Poster](https://cdn-uploads.huggingface.co/production/uploads/620573d0522e40b4a18d8763/IMeKij7GEtgCHE6EY-6Uj.png)
1113
+
1114
+ Abstract: There is a widely-spread claim that GANs are difficult to train, and GAN architectures in the literature are littered with empirical tricks. We provide evidence against this claim and build a modern GAN baseline in a more principled manner. First, we derive a well-behaved regularized relativistic GAN loss that addresses issues of mode dropping and non-convergence that were previously tackled via a bag of ad-hoc tricks. We analyze our loss mathematically and prove that it admits local convergence guarantees, unlike most existing relativistic losses. Second, our new loss allows us to discard all ad-hoc tricks and replace outdated backbones used in common GANs with modern architectures. Using StyleGAN2 as an example, we present a roadmap of simplification and modernization that results in a new minimalist baseline -- R3GAN. Despite being simple, our approach surpasses StyleGAN2 on FFHQ, ImageNet, CIFAR, and Stacked MNIST datasets, and compares favorably against state-of-the-art GANs and diffusion models.
1115
+
1116
+ [Read the paper](https://huggingface.co/papers/2501.05441)''')
1117
+
1118
+ # Show/hide class selector based on network choice
1119
+ def update_class_selector(choice):
1120
+ if(choice == "ImageNet 64px"):
1121
+ return gr.update(visible=True), gr.update(columns=5, rows=1), 5
1122
+ else:
1123
+ return gr.update(visible=False), gr.update(columns=2, rows=1), 2
1124
+ network_choice.change(
1125
+ fn=update_class_selector,
1126
+ inputs=[network_choice],
1127
+ outputs=[class_selector, gallery, total_images]
1128
+ )
1129
+
1130
+ # Connect the button to the generation function
1131
+ generate_btn.click(
1132
+ fn=generate_random_images,
1133
+ inputs=[network_choice, class_label, total_images],
1134
+ outputs=gallery
1135
+ )
1136
+
1137
+ if __name__ == "__main__":
1138
+ demo.launch(share=True)