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