├── .gitignore
├── ImageClassifier.sln
├── ImageClassifier
├── ImageClassifier.csproj
├── Labels.json
├── Program.cs
├── SqueezeNet.cs
└── squeezenet1.0-9.onnx
└── LICENSE
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Aa][Rr][Mm]/
27 | [Aa][Rr][Mm]64/
28 | bld/
29 | [Bb]in/
30 | [Oo]bj/
31 | [Ll]og/
32 | [Ll]ogs/
33 |
34 | # Visual Studio 2015/2017 cache/options directory
35 | .vs/
36 | # Uncomment if you have tasks that create the project's static files in wwwroot
37 | #wwwroot/
38 |
39 | # Visual Studio 2017 auto generated files
40 | Generated\ Files/
41 |
42 | # MSTest test Results
43 | [Tt]est[Rr]esult*/
44 | [Bb]uild[Ll]og.*
45 |
46 | # NUnit
47 | *.VisualState.xml
48 | TestResult.xml
49 | nunit-*.xml
50 |
51 | # Build Results of an ATL Project
52 | [Dd]ebugPS/
53 | [Rr]eleasePS/
54 | dlldata.c
55 |
56 | # Benchmark Results
57 | BenchmarkDotNet.Artifacts/
58 |
59 | # .NET Core
60 | project.lock.json
61 | project.fragment.lock.json
62 | artifacts/
63 |
64 | # StyleCop
65 | StyleCopReport.xml
66 |
67 | # Files built by Visual Studio
68 | *_i.c
69 | *_p.c
70 | *_h.h
71 | *.ilk
72 | *.meta
73 | *.obj
74 | *.iobj
75 | *.pch
76 | *.pdb
77 | *.ipdb
78 | *.pgc
79 | *.pgd
80 | *.rsp
81 | *.sbr
82 | *.tlb
83 | *.tli
84 | *.tlh
85 | *.tmp
86 | *.tmp_proj
87 | *_wpftmp.csproj
88 | *.log
89 | *.vspscc
90 | *.vssscc
91 | .builds
92 | *.pidb
93 | *.svclog
94 | *.scc
95 |
96 | # Chutzpah Test files
97 | _Chutzpah*
98 |
99 | # Visual C++ cache files
100 | ipch/
101 | *.aps
102 | *.ncb
103 | *.opendb
104 | *.opensdf
105 | *.sdf
106 | *.cachefile
107 | *.VC.db
108 | *.VC.VC.opendb
109 |
110 | # Visual Studio profiler
111 | *.psess
112 | *.vsp
113 | *.vspx
114 | *.sap
115 |
116 | # Visual Studio Trace Files
117 | *.e2e
118 |
119 | # TFS 2012 Local Workspace
120 | $tf/
121 |
122 | # Guidance Automation Toolkit
123 | *.gpState
124 |
125 | # ReSharper is a .NET coding add-in
126 | _ReSharper*/
127 | *.[Rr]e[Ss]harper
128 | *.DotSettings.user
129 |
130 | # TeamCity is a build add-in
131 | _TeamCity*
132 |
133 | # DotCover is a Code Coverage Tool
134 | *.dotCover
135 |
136 | # AxoCover is a Code Coverage Tool
137 | .axoCover/*
138 | !.axoCover/settings.json
139 |
140 | # Visual Studio code coverage results
141 | *.coverage
142 | *.coveragexml
143 |
144 | # NCrunch
145 | _NCrunch_*
146 | .*crunch*.local.xml
147 | nCrunchTemp_*
148 |
149 | # MightyMoose
150 | *.mm.*
151 | AutoTest.Net/
152 |
153 | # Web workbench (sass)
154 | .sass-cache/
155 |
156 | # Installshield output folder
157 | [Ee]xpress/
158 |
159 | # DocProject is a documentation generator add-in
160 | DocProject/buildhelp/
161 | DocProject/Help/*.HxT
162 | DocProject/Help/*.HxC
163 | DocProject/Help/*.hhc
164 | DocProject/Help/*.hhk
165 | DocProject/Help/*.hhp
166 | DocProject/Help/Html2
167 | DocProject/Help/html
168 |
169 | # Click-Once directory
170 | publish/
171 |
172 | # Publish Web Output
173 | *.[Pp]ublish.xml
174 | *.azurePubxml
175 | # Note: Comment the next line if you want to checkin your web deploy settings,
176 | # but database connection strings (with potential passwords) will be unencrypted
177 | *.pubxml
178 | *.publishproj
179 |
180 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
181 | # checkin your Azure Web App publish settings, but sensitive information contained
182 | # in these scripts will be unencrypted
183 | PublishScripts/
184 |
185 | # NuGet Packages
186 | *.nupkg
187 | # NuGet Symbol Packages
188 | *.snupkg
189 | # The packages folder can be ignored because of Package Restore
190 | **/[Pp]ackages/*
191 | # except build/, which is used as an MSBuild target.
192 | !**/[Pp]ackages/build/
193 | # Uncomment if necessary however generally it will be regenerated when needed
194 | #!**/[Pp]ackages/repositories.config
195 | # NuGet v3's project.json files produces more ignorable files
196 | *.nuget.props
197 | *.nuget.targets
198 |
199 | # Microsoft Azure Build Output
200 | csx/
201 | *.build.csdef
202 |
203 | # Microsoft Azure Emulator
204 | ecf/
205 | rcf/
206 |
207 | # Windows Store app package directories and files
208 | AppPackages/
209 | BundleArtifacts/
210 | Package.StoreAssociation.xml
211 | _pkginfo.txt
212 | *.appx
213 | *.appxbundle
214 | *.appxupload
215 |
216 | # Visual Studio cache files
217 | # files ending in .cache can be ignored
218 | *.[Cc]ache
219 | # but keep track of directories ending in .cache
220 | !?*.[Cc]ache/
221 |
222 | # Others
223 | ClientBin/
224 | ~$*
225 | *~
226 | *.dbmdl
227 | *.dbproj.schemaview
228 | *.jfm
229 | *.pfx
230 | *.publishsettings
231 | orleans.codegen.cs
232 |
233 | # Including strong name files can present a security risk
234 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
235 | #*.snk
236 |
237 | # Since there are multiple workflows, uncomment next line to ignore bower_components
238 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
239 | #bower_components/
240 |
241 | # RIA/Silverlight projects
242 | Generated_Code/
243 |
244 | # Backup & report files from converting an old project file
245 | # to a newer Visual Studio version. Backup files are not needed,
246 | # because we have git ;-)
247 | _UpgradeReport_Files/
248 | Backup*/
249 | UpgradeLog*.XML
250 | UpgradeLog*.htm
251 | ServiceFabricBackup/
252 | *.rptproj.bak
253 |
254 | # SQL Server files
255 | *.mdf
256 | *.ldf
257 | *.ndf
258 |
259 | # Business Intelligence projects
260 | *.rdl.data
261 | *.bim.layout
262 | *.bim_*.settings
263 | *.rptproj.rsuser
264 | *- [Bb]ackup.rdl
265 | *- [Bb]ackup ([0-9]).rdl
266 | *- [Bb]ackup ([0-9][0-9]).rdl
267 |
268 | # Microsoft Fakes
269 | FakesAssemblies/
270 |
271 | # GhostDoc plugin setting file
272 | *.GhostDoc.xml
273 |
274 | # Node.js Tools for Visual Studio
275 | .ntvs_analysis.dat
276 | node_modules/
277 |
278 | # Visual Studio 6 build log
279 | *.plg
280 |
281 | # Visual Studio 6 workspace options file
282 | *.opt
283 |
284 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
285 | *.vbw
286 |
287 | # Visual Studio LightSwitch build output
288 | **/*.HTMLClient/GeneratedArtifacts
289 | **/*.DesktopClient/GeneratedArtifacts
290 | **/*.DesktopClient/ModelManifest.xml
291 | **/*.Server/GeneratedArtifacts
292 | **/*.Server/ModelManifest.xml
293 | _Pvt_Extensions
294 |
295 | # Paket dependency manager
296 | .paket/paket.exe
297 | paket-files/
298 |
299 | # FAKE - F# Make
300 | .fake/
301 |
302 | # CodeRush personal settings
303 | .cr/personal
304 |
305 | # Python Tools for Visual Studio (PTVS)
306 | __pycache__/
307 | *.pyc
308 |
309 | # Cake - Uncomment if you are using it
310 | # tools/**
311 | # !tools/packages.config
312 |
313 | # Tabs Studio
314 | *.tss
315 |
316 | # Telerik's JustMock configuration file
317 | *.jmconfig
318 |
319 | # BizTalk build output
320 | *.btp.cs
321 | *.btm.cs
322 | *.odx.cs
323 | *.xsd.cs
324 |
325 | # OpenCover UI analysis results
326 | OpenCover/
327 |
328 | # Azure Stream Analytics local run output
329 | ASALocalRun/
330 |
331 | # MSBuild Binary and Structured Log
332 | *.binlog
333 |
334 | # NVidia Nsight GPU debugger configuration file
335 | *.nvuser
336 |
337 | # MFractors (Xamarin productivity tool) working folder
338 | .mfractor/
339 |
340 | # Local History for Visual Studio
341 | .localhistory/
342 |
343 | # BeatPulse healthcheck temp database
344 | healthchecksdb
345 |
346 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
347 | MigrationBackup/
348 |
349 | # Ionide (cross platform F# VS Code tools) working folder
350 | .ionide/
351 |
--------------------------------------------------------------------------------
/ImageClassifier.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.30907.101
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ImageClassifier", "ImageClassifier\ImageClassifier.csproj", "{806908CF-56FB-4C45-8158-E4A1B4F97830}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {806908CF-56FB-4C45-8158-E4A1B4F97830}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {806908CF-56FB-4C45-8158-E4A1B4F97830}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {806908CF-56FB-4C45-8158-E4A1B4F97830}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {806908CF-56FB-4C45-8158-E4A1B4F97830}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {C60C8FCF-91C8-4A09-BA34-B59CA34C508F}
24 | EndGlobalSection
25 | EndGlobal
26 |
--------------------------------------------------------------------------------
/ImageClassifier/ImageClassifier.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Exe
5 | net5.0-windows10.0.17763.0
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | PreserveNewest
16 |
17 |
18 | PreserveNewest
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/ImageClassifier/Labels.json:
--------------------------------------------------------------------------------
1 | {
2 | "0":"tench, Tinca tinca",
3 | "1":"goldfish, Carassius auratus",
4 | "2":"great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias",
5 | "3":"tiger shark, Galeocerdo cuvieri",
6 | "4":"hammerhead, hammerhead shark",
7 | "5":"electric ray, crampfish, numbfish, torpedo",
8 | "6":"stingray",
9 | "7":"cock",
10 | "8":"hen",
11 | "9":"ostrich, Struthio camelus",
12 | "10":"brambling, Fringilla montifringilla",
13 | "11":"goldfinch, Carduelis carduelis",
14 | "12":"house finch, linnet, Carpodacus mexicanus",
15 | "13":"junco, snowbird",
16 | "14":"indigo bunting, indigo finch, indigo bird, Passerina cyanea",
17 | "15":"robin, American robin, Turdus migratorius",
18 | "16":"bulbul",
19 | "17":"jay",
20 | "18":"magpie",
21 | "19":"chickadee",
22 | "20":"water ouzel, dipper",
23 | "21":"kite",
24 | "22":"bald eagle, American eagle, Haliaeetus leucocephalus",
25 | "23":"vulture",
26 | "24":"great grey owl, great gray owl, Strix nebulosa",
27 | "25":"European fire salamander, Salamandra salamandra",
28 | "26":"common newt, Triturus vulgaris",
29 | "27":"eft",
30 | "28":"spotted salamander, Ambystoma maculatum",
31 | "29":"axolotl, mud puppy, Ambystoma mexicanum",
32 | "30":"bullfrog, Rana catesbeiana",
33 | "31":"tree frog, tree-frog",
34 | "32":"tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui",
35 | "33":"loggerhead, loggerhead turtle, Caretta caretta",
36 | "34":"leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea",
37 | "35":"mud turtle",
38 | "36":"terrapin",
39 | "37":"box turtle, box tortoise",
40 | "38":"banded gecko",
41 | "39":"common iguana, iguana, Iguana iguana",
42 | "40":"American chameleon, anole, Anolis carolinensis",
43 | "41":"whiptail, whiptail lizard",
44 | "42":"agama",
45 | "43":"frilled lizard, Chlamydosaurus kingi",
46 | "44":"alligator lizard",
47 | "45":"Gila monster, Heloderma suspectum",
48 | "46":"green lizard, Lacerta viridis",
49 | "47":"African chameleon, Chamaeleo chamaeleon",
50 | "48":"Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis",
51 | "49":"African crocodile, Nile crocodile, Crocodylus niloticus",
52 | "50":"American alligator, Alligator mississipiensis",
53 | "51":"triceratops",
54 | "52":"thunder snake, worm snake, Carphophis amoenus",
55 | "53":"ringneck snake, ring-necked snake, ring snake",
56 | "54":"hognose snake, puff adder, sand viper",
57 | "55":"green snake, grass snake",
58 | "56":"king snake, kingsnake",
59 | "57":"garter snake, grass snake",
60 | "58":"water snake",
61 | "59":"vine snake",
62 | "60":"night snake, Hypsiglena torquata",
63 | "61":"boa constrictor, Constrictor constrictor",
64 | "62":"rock python, rock snake, Python sebae",
65 | "63":"Indian cobra, Naja naja",
66 | "64":"green mamba",
67 | "65":"sea snake",
68 | "66":"horned viper, cerastes, sand viper, horned asp, Cerastes cornutus",
69 | "67":"diamondback, diamondback rattlesnake, Crotalus adamanteus",
70 | "68":"sidewinder, horned rattlesnake, Crotalus cerastes",
71 | "69":"trilobite",
72 | "70":"harvestman, daddy longlegs, Phalangium opilio",
73 | "71":"scorpion",
74 | "72":"black and gold garden spider, Argiope aurantia",
75 | "73":"barn spider, Araneus cavaticus",
76 | "74":"garden spider, Aranea diademata",
77 | "75":"black widow, Latrodectus mactans",
78 | "76":"tarantula",
79 | "77":"wolf spider, hunting spider",
80 | "78":"tick",
81 | "79":"centipede",
82 | "80":"black grouse",
83 | "81":"ptarmigan",
84 | "82":"ruffed grouse, partridge, Bonasa umbellus",
85 | "83":"prairie chicken, prairie grouse, prairie fowl",
86 | "84":"peacock",
87 | "85":"quail",
88 | "86":"partridge",
89 | "87":"African grey, African gray, Psittacus erithacus",
90 | "88":"macaw",
91 | "89":"sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita",
92 | "90":"lorikeet",
93 | "91":"coucal",
94 | "92":"bee eater",
95 | "93":"hornbill",
96 | "94":"hummingbird",
97 | "95":"jacamar",
98 | "96":"toucan",
99 | "97":"drake",
100 | "98":"red-breasted merganser, Mergus serrator",
101 | "99":"goose",
102 | "100":"black swan, Cygnus atratus",
103 | "101":"tusker",
104 | "102":"echidna, spiny anteater, anteater",
105 | "103":"platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus",
106 | "104":"wallaby, brush kangaroo",
107 | "105":"koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus",
108 | "106":"wombat",
109 | "107":"jellyfish",
110 | "108":"sea anemone, anemone",
111 | "109":"brain coral",
112 | "110":"flatworm, platyhelminth",
113 | "111":"nematode, nematode worm, roundworm",
114 | "112":"conch",
115 | "113":"snail",
116 | "114":"slug",
117 | "115":"sea slug, nudibranch",
118 | "116":"chiton, coat-of-mail shell, sea cradle, polyplacophore",
119 | "117":"chambered nautilus, pearly nautilus, nautilus",
120 | "118":"Dungeness crab, Cancer magister",
121 | "119":"rock crab, Cancer irroratus",
122 | "120":"fiddler crab",
123 | "121":"king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica",
124 | "122":"American lobster, Northern lobster, Maine lobster, Homarus americanus",
125 | "123":"spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish",
126 | "124":"crayfish, crawfish, crawdad, crawdaddy",
127 | "125":"hermit crab",
128 | "126":"isopod",
129 | "127":"white stork, Ciconia ciconia",
130 | "128":"black stork, Ciconia nigra",
131 | "129":"spoonbill",
132 | "130":"flamingo",
133 | "131":"little blue heron, Egretta caerulea",
134 | "132":"American egret, great white heron, Egretta albus",
135 | "133":"bittern",
136 | "134":"crane",
137 | "135":"limpkin, Aramus pictus",
138 | "136":"European gallinule, Porphyrio porphyrio",
139 | "137":"American coot, marsh hen, mud hen, water hen, Fulica americana",
140 | "138":"bustard",
141 | "139":"ruddy turnstone, Arenaria interpres",
142 | "140":"red-backed sandpiper, dunlin, Erolia alpina",
143 | "141":"redshank, Tringa totanus",
144 | "142":"dowitcher",
145 | "143":"oystercatcher, oyster catcher",
146 | "144":"pelican",
147 | "145":"king penguin, Aptenodytes patagonica",
148 | "146":"albatross, mollymawk",
149 | "147":"grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus",
150 | "148":"killer whale, killer, orca, grampus, sea wolf, Orcinus orca",
151 | "149":"dugong, Dugong dugon",
152 | "150":"sea lion",
153 | "151":"Chihuahua",
154 | "152":"Japanese spaniel",
155 | "153":"Maltese dog, Maltese terrier, Maltese",
156 | "154":"Pekinese, Pekingese, Peke",
157 | "155":"Shih-Tzu",
158 | "156":"Blenheim spaniel",
159 | "157":"papillon",
160 | "158":"toy terrier",
161 | "159":"Rhodesian ridgeback",
162 | "160":"Afghan hound, Afghan",
163 | "161":"basset, basset hound",
164 | "162":"beagle",
165 | "163":"bloodhound, sleuthhound",
166 | "164":"bluetick",
167 | "165":"black-and-tan coonhound",
168 | "166":"Walker hound, Walker foxhound",
169 | "167":"English foxhound",
170 | "168":"redbone",
171 | "169":"borzoi, Russian wolfhound",
172 | "170":"Irish wolfhound",
173 | "171":"Italian greyhound",
174 | "172":"whippet",
175 | "173":"Ibizan hound, Ibizan Podenco",
176 | "174":"Norwegian elkhound, elkhound",
177 | "175":"otterhound, otter hound",
178 | "176":"Saluki, gazelle hound",
179 | "177":"Scottish deerhound, deerhound",
180 | "178":"Weimaraner",
181 | "179":"Staffordshire bullterrier, Staffordshire bull terrier",
182 | "180":"American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier",
183 | "181":"Bedlington terrier",
184 | "182":"Border terrier",
185 | "183":"Kerry blue terrier",
186 | "184":"Irish terrier",
187 | "185":"Norfolk terrier",
188 | "186":"Norwich terrier",
189 | "187":"Yorkshire terrier",
190 | "188":"wire-haired fox terrier",
191 | "189":"Lakeland terrier",
192 | "190":"Sealyham terrier, Sealyham",
193 | "191":"Airedale, Airedale terrier",
194 | "192":"cairn, cairn terrier",
195 | "193":"Australian terrier",
196 | "194":"Dandie Dinmont, Dandie Dinmont terrier",
197 | "195":"Boston bull, Boston terrier",
198 | "196":"miniature schnauzer",
199 | "197":"giant schnauzer",
200 | "198":"standard schnauzer",
201 | "199":"Scotch terrier, Scottish terrier, Scottie",
202 | "200":"Tibetan terrier, chrysanthemum dog",
203 | "201":"silky terrier, Sydney silky",
204 | "202":"soft-coated wheaten terrier",
205 | "203":"West Highland white terrier",
206 | "204":"Lhasa, Lhasa apso",
207 | "205":"flat-coated retriever",
208 | "206":"curly-coated retriever",
209 | "207":"golden retriever",
210 | "208":"Labrador retriever",
211 | "209":"Chesapeake Bay retriever",
212 | "210":"German short-haired pointer",
213 | "211":"vizsla, Hungarian pointer",
214 | "212":"English setter",
215 | "213":"Irish setter, red setter",
216 | "214":"Gordon setter",
217 | "215":"Brittany spaniel",
218 | "216":"clumber, clumber spaniel",
219 | "217":"English springer, English springer spaniel",
220 | "218":"Welsh springer spaniel",
221 | "219":"cocker spaniel, English cocker spaniel, cocker",
222 | "220":"Sussex spaniel",
223 | "221":"Irish water spaniel",
224 | "222":"kuvasz",
225 | "223":"schipperke",
226 | "224":"groenendael",
227 | "225":"malinois",
228 | "226":"briard",
229 | "227":"kelpie",
230 | "228":"komondor",
231 | "229":"Old English sheepdog, bobtail",
232 | "230":"Shetland sheepdog, Shetland sheep dog, Shetland",
233 | "231":"collie",
234 | "232":"Border collie",
235 | "233":"Bouvier des Flandres, Bouviers des Flandres",
236 | "234":"Rottweiler",
237 | "235":"German shepherd, German shepherd dog, German police dog, alsatian",
238 | "236":"Doberman, Doberman pinscher",
239 | "237":"miniature pinscher",
240 | "238":"Greater Swiss Mountain dog",
241 | "239":"Bernese mountain dog",
242 | "240":"Appenzeller",
243 | "241":"EntleBucher",
244 | "242":"boxer",
245 | "243":"bull mastiff",
246 | "244":"Tibetan mastiff",
247 | "245":"French bulldog",
248 | "246":"Great Dane",
249 | "247":"Saint Bernard, St Bernard",
250 | "248":"Eskimo dog, husky",
251 | "249":"malamute, malemute, Alaskan malamute",
252 | "250":"Siberian husky",
253 | "251":"dalmatian, coach dog, carriage dog",
254 | "252":"affenpinscher, monkey pinscher, monkey dog",
255 | "253":"basenji",
256 | "254":"pug, pug-dog",
257 | "255":"Leonberg",
258 | "256":"Newfoundland, Newfoundland dog",
259 | "257":"Great Pyrenees",
260 | "258":"Samoyed, Samoyede",
261 | "259":"Pomeranian",
262 | "260":"chow, chow chow",
263 | "261":"keeshond",
264 | "262":"Brabancon griffon",
265 | "263":"Pembroke, Pembroke Welsh corgi",
266 | "264":"Cardigan, Cardigan Welsh corgi",
267 | "265":"toy poodle",
268 | "266":"miniature poodle",
269 | "267":"standard poodle",
270 | "268":"Mexican hairless",
271 | "269":"timber wolf, grey wolf, gray wolf, Canis lupus",
272 | "270":"white wolf, Arctic wolf, Canis lupus tundrarum",
273 | "271":"red wolf, maned wolf, Canis rufus, Canis niger",
274 | "272":"coyote, prairie wolf, brush wolf, Canis latrans",
275 | "273":"dingo, warrigal, warragal, Canis dingo",
276 | "274":"dhole, Cuon alpinus",
277 | "275":"African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus",
278 | "276":"hyena, hyaena",
279 | "277":"red fox, Vulpes vulpes",
280 | "278":"kit fox, Vulpes macrotis",
281 | "279":"Arctic fox, white fox, Alopex lagopus",
282 | "280":"grey fox, gray fox, Urocyon cinereoargenteus",
283 | "281":"tabby, tabby cat",
284 | "282":"tiger cat",
285 | "283":"Persian cat",
286 | "284":"Siamese cat, Siamese",
287 | "285":"Egyptian cat",
288 | "286":"cougar, puma, catamount, mountain lion, painter, panther, Felis concolor",
289 | "287":"lynx, catamount",
290 | "288":"leopard, Panthera pardus",
291 | "289":"snow leopard, ounce, Panthera uncia",
292 | "290":"jaguar, panther, Panthera onca, Felis onca",
293 | "291":"lion, king of beasts, Panthera leo",
294 | "292":"tiger, Panthera tigris",
295 | "293":"cheetah, chetah, Acinonyx jubatus",
296 | "294":"brown bear, bruin, Ursus arctos",
297 | "295":"American black bear, black bear, Ursus americanus, Euarctos americanus",
298 | "296":"ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus",
299 | "297":"sloth bear, Melursus ursinus, Ursus ursinus",
300 | "298":"mongoose",
301 | "299":"meerkat, mierkat",
302 | "300":"tiger beetle",
303 | "301":"ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle",
304 | "302":"ground beetle, carabid beetle",
305 | "303":"long-horned beetle, longicorn, longicorn beetle",
306 | "304":"leaf beetle, chrysomelid",
307 | "305":"dung beetle",
308 | "306":"rhinoceros beetle",
309 | "307":"weevil",
310 | "308":"fly",
311 | "309":"bee",
312 | "310":"ant, emmet, pismire",
313 | "311":"grasshopper, hopper",
314 | "312":"cricket",
315 | "313":"walking stick, walkingstick, stick insect",
316 | "314":"cockroach, roach",
317 | "315":"mantis, mantid",
318 | "316":"cicada, cicala",
319 | "317":"leafhopper",
320 | "318":"lacewing, lacewing fly",
321 | "319":"dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk",
322 | "320":"damselfly",
323 | "321":"admiral",
324 | "322":"ringlet, ringlet butterfly",
325 | "323":"monarch, monarch butterfly, milkweed butterfly, Danaus plexippus",
326 | "324":"cabbage butterfly",
327 | "325":"sulphur butterfly, sulfur butterfly",
328 | "326":"lycaenid, lycaenid butterfly",
329 | "327":"starfish, sea star",
330 | "328":"sea urchin",
331 | "329":"sea cucumber, holothurian",
332 | "330":"wood rabbit, cottontail, cottontail rabbit",
333 | "331":"hare",
334 | "332":"Angora, Angora rabbit",
335 | "333":"hamster",
336 | "334":"porcupine, hedgehog",
337 | "335":"fox squirrel, eastern fox squirrel, Sciurus niger",
338 | "336":"marmot",
339 | "337":"beaver",
340 | "338":"guinea pig, Cavia cobaya",
341 | "339":"sorrel",
342 | "340":"zebra",
343 | "341":"hog, pig, grunter, squealer, Sus scrofa",
344 | "342":"wild boar, boar, Sus scrofa",
345 | "343":"warthog",
346 | "344":"hippopotamus, hippo, river horse, Hippopotamus amphibius",
347 | "345":"ox",
348 | "346":"water buffalo, water ox, Asiatic buffalo, Bubalus bubalis",
349 | "347":"bison",
350 | "348":"ram, tup",
351 | "349":"bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis",
352 | "350":"ibex, Capra ibex",
353 | "351":"hartebeest",
354 | "352":"impala, Aepyceros melampus",
355 | "353":"gazelle",
356 | "354":"Arabian camel, dromedary, Camelus dromedarius",
357 | "355":"llama",
358 | "356":"weasel",
359 | "357":"mink",
360 | "358":"polecat, fitch, foulmart, foumart, Mustela putorius",
361 | "359":"black-footed ferret, ferret, Mustela nigripes",
362 | "360":"otter",
363 | "361":"skunk, polecat, wood pussy",
364 | "362":"badger",
365 | "363":"armadillo",
366 | "364":"three-toed sloth, ai, Bradypus tridactylus",
367 | "365":"orangutan, orang, orangutang, Pongo pygmaeus",
368 | "366":"gorilla, Gorilla gorilla",
369 | "367":"chimpanzee, chimp, Pan troglodytes",
370 | "368":"gibbon, Hylobates lar",
371 | "369":"siamang, Hylobates syndactylus, Symphalangus syndactylus",
372 | "370":"guenon, guenon monkey",
373 | "371":"patas, hussar monkey, Erythrocebus patas",
374 | "372":"baboon",
375 | "373":"macaque",
376 | "374":"langur",
377 | "375":"colobus, colobus monkey",
378 | "376":"proboscis monkey, Nasalis larvatus",
379 | "377":"marmoset",
380 | "378":"capuchin, ringtail, Cebus capucinus",
381 | "379":"howler monkey, howler",
382 | "380":"titi, titi monkey",
383 | "381":"spider monkey, Ateles geoffroyi",
384 | "382":"squirrel monkey, Saimiri sciureus",
385 | "383":"Madagascar cat, ring-tailed lemur, Lemur catta",
386 | "384":"indri, indris, Indri indri, Indri brevicaudatus",
387 | "385":"Indian elephant, Elephas maximus",
388 | "386":"African elephant, Loxodonta africana",
389 | "387":"lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens",
390 | "388":"giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca",
391 | "389":"barracouta, snoek",
392 | "390":"eel",
393 | "391":"coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch",
394 | "392":"rock beauty, Holocanthus tricolor",
395 | "393":"anemone fish",
396 | "394":"sturgeon",
397 | "395":"gar, garfish, garpike, billfish, Lepisosteus osseus",
398 | "396":"lionfish",
399 | "397":"puffer, pufferfish, blowfish, globefish",
400 | "398":"abacus",
401 | "399":"abaya",
402 | "400":"academic gown, academic robe, judge's robe",
403 | "401":"accordion, piano accordion, squeeze box",
404 | "402":"acoustic guitar",
405 | "403":"aircraft carrier, carrier, flattop, attack aircraft carrier",
406 | "404":"airliner",
407 | "405":"airship, dirigible",
408 | "406":"altar",
409 | "407":"ambulance",
410 | "408":"amphibian, amphibious vehicle",
411 | "409":"analog clock",
412 | "410":"apiary, bee house",
413 | "411":"apron",
414 | "412":"ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin",
415 | "413":"assault rifle, assault gun",
416 | "414":"backpack, back pack, knapsack, packsack, rucksack, haversack",
417 | "415":"bakery, bakeshop, bakehouse",
418 | "416":"balance beam, beam",
419 | "417":"balloon",
420 | "418":"ballpoint, ballpoint pen, ballpen, Biro",
421 | "419":"Band Aid",
422 | "420":"banjo",
423 | "421":"bannister, banister, balustrade, balusters, handrail",
424 | "422":"barbell",
425 | "423":"barber chair",
426 | "424":"barbershop",
427 | "425":"barn",
428 | "426":"barometer",
429 | "427":"barrel, cask",
430 | "428":"barrow, garden cart, lawn cart, wheelbarrow",
431 | "429":"baseball",
432 | "430":"basketball",
433 | "431":"bassinet",
434 | "432":"bassoon",
435 | "433":"bathing cap, swimming cap",
436 | "434":"bath towel",
437 | "435":"bathtub, bathing tub, bath, tub",
438 | "436":"beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon",
439 | "437":"beacon, lighthouse, beacon light, pharos",
440 | "438":"beaker",
441 | "439":"bearskin, busby, shako",
442 | "440":"beer bottle",
443 | "441":"beer glass",
444 | "442":"bell cote, bell cot",
445 | "443":"bib",
446 | "444":"bicycle-built-for-two, tandem bicycle, tandem",
447 | "445":"bikini, two-piece",
448 | "446":"binder, ring-binder",
449 | "447":"binoculars, field glasses, opera glasses",
450 | "448":"birdhouse",
451 | "449":"boathouse",
452 | "450":"bobsled, bobsleigh, bob",
453 | "451":"bolo tie, bolo, bola tie, bola",
454 | "452":"bonnet, poke bonnet",
455 | "453":"bookcase",
456 | "454":"bookshop, bookstore, bookstall",
457 | "455":"bottlecap",
458 | "456":"bow",
459 | "457":"bow tie, bow-tie, bowtie",
460 | "458":"brass, memorial tablet, plaque",
461 | "459":"brassiere, bra, bandeau",
462 | "460":"breakwater, groin, groyne, mole, bulwark, seawall, jetty",
463 | "461":"breastplate, aegis, egis",
464 | "462":"broom",
465 | "463":"bucket, pail",
466 | "464":"buckle",
467 | "465":"bulletproof vest",
468 | "466":"bullet train, bullet",
469 | "467":"butcher shop, meat market",
470 | "468":"cab, hack, taxi, taxicab",
471 | "469":"caldron, cauldron",
472 | "470":"candle, taper, wax light",
473 | "471":"cannon",
474 | "472":"canoe",
475 | "473":"can opener, tin opener",
476 | "474":"cardigan",
477 | "475":"car mirror",
478 | "476":"carousel, carrousel, merry-go-round, roundabout, whirligig",
479 | "477":"carpenter's kit, tool kit",
480 | "478":"carton",
481 | "479":"car wheel",
482 | "480":"cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM",
483 | "481":"cassette",
484 | "482":"cassette player",
485 | "483":"castle",
486 | "484":"catamaran",
487 | "485":"CD player",
488 | "486":"cello, violoncello",
489 | "487":"cellular telephone, cellular phone, cellphone, cell, mobile phone",
490 | "488":"chain",
491 | "489":"chainlink fence",
492 | "490":"chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour",
493 | "491":"chain saw, chainsaw",
494 | "492":"chest",
495 | "493":"chiffonier, commode",
496 | "494":"chime, bell, gong",
497 | "495":"china cabinet, china closet",
498 | "496":"Christmas stocking",
499 | "497":"church, church building",
500 | "498":"cinema, movie theater, movie theatre, movie house, picture palace",
501 | "499":"cleaver, meat cleaver, chopper",
502 | "500":"cliff dwelling",
503 | "501":"cloak",
504 | "502":"clog, geta, patten, sabot",
505 | "503":"cocktail shaker",
506 | "504":"coffee mug",
507 | "505":"coffeepot",
508 | "506":"coil, spiral, volute, whorl, helix",
509 | "507":"combination lock",
510 | "508":"computer keyboard, keypad",
511 | "509":"confectionery, confectionary, candy store",
512 | "510":"container ship, containership, container vessel",
513 | "511":"convertible",
514 | "512":"corkscrew, bottle screw",
515 | "513":"cornet, horn, trumpet, trump",
516 | "514":"cowboy boot",
517 | "515":"cowboy hat, ten-gallon hat",
518 | "516":"cradle",
519 | "517":"crane",
520 | "518":"crash helmet",
521 | "519":"crate",
522 | "520":"crib, cot",
523 | "521":"Crock Pot",
524 | "522":"croquet ball",
525 | "523":"crutch",
526 | "524":"cuirass",
527 | "525":"dam, dike, dyke",
528 | "526":"desk",
529 | "527":"desktop computer",
530 | "528":"dial telephone, dial phone",
531 | "529":"diaper, nappy, napkin",
532 | "530":"digital clock",
533 | "531":"digital watch",
534 | "532":"dining table, board",
535 | "533":"dishrag, dishcloth",
536 | "534":"dishwasher, dish washer, dishwashing machine",
537 | "535":"disk brake, disc brake",
538 | "536":"dock, dockage, docking facility",
539 | "537":"dogsled, dog sled, dog sleigh",
540 | "538":"dome",
541 | "539":"doormat, welcome mat",
542 | "540":"drilling platform, offshore rig",
543 | "541":"drum, membranophone, tympan",
544 | "542":"drumstick",
545 | "543":"dumbbell",
546 | "544":"Dutch oven",
547 | "545":"electric fan, blower",
548 | "546":"electric guitar",
549 | "547":"electric locomotive",
550 | "548":"entertainment center",
551 | "549":"envelope",
552 | "550":"espresso maker",
553 | "551":"face powder",
554 | "552":"feather boa, boa",
555 | "553":"file, file cabinet, filing cabinet",
556 | "554":"fireboat",
557 | "555":"fire engine, fire truck",
558 | "556":"fire screen, fireguard",
559 | "557":"flagpole, flagstaff",
560 | "558":"flute, transverse flute",
561 | "559":"folding chair",
562 | "560":"football helmet",
563 | "561":"forklift",
564 | "562":"fountain",
565 | "563":"fountain pen",
566 | "564":"four-poster",
567 | "565":"freight car",
568 | "566":"French horn, horn",
569 | "567":"frying pan, frypan, skillet",
570 | "568":"fur coat",
571 | "569":"garbage truck, dustcart",
572 | "570":"gasmask, respirator, gas helmet",
573 | "571":"gas pump, gasoline pump, petrol pump, island dispenser",
574 | "572":"goblet",
575 | "573":"go-kart",
576 | "574":"golf ball",
577 | "575":"golfcart, golf cart",
578 | "576":"gondola",
579 | "577":"gong, tam-tam",
580 | "578":"gown",
581 | "579":"grand piano, grand",
582 | "580":"greenhouse, nursery, glasshouse",
583 | "581":"grille, radiator grille",
584 | "582":"grocery store, grocery, food market, market",
585 | "583":"guillotine",
586 | "584":"hair slide",
587 | "585":"hair spray",
588 | "586":"half track",
589 | "587":"hammer",
590 | "588":"hamper",
591 | "589":"hand blower, blow dryer, blow drier, hair dryer, hair drier",
592 | "590":"hand-held computer, hand-held microcomputer",
593 | "591":"handkerchief, hankie, hanky, hankey",
594 | "592":"hard disc, hard disk, fixed disk",
595 | "593":"harmonica, mouth organ, harp, mouth harp",
596 | "594":"harp",
597 | "595":"harvester, reaper",
598 | "596":"hatchet",
599 | "597":"holster",
600 | "598":"home theater, home theatre",
601 | "599":"honeycomb",
602 | "600":"hook, claw",
603 | "601":"hoopskirt, crinoline",
604 | "602":"horizontal bar, high bar",
605 | "603":"horse cart, horse-cart",
606 | "604":"hourglass",
607 | "605":"iPod",
608 | "606":"iron, smoothing iron",
609 | "607":"jack-o'-lantern",
610 | "608":"jean, blue jean, denim",
611 | "609":"jeep, landrover",
612 | "610":"jersey, T-shirt, tee shirt",
613 | "611":"jigsaw puzzle",
614 | "612":"jinrikisha, ricksha, rickshaw",
615 | "613":"joystick",
616 | "614":"kimono",
617 | "615":"knee pad",
618 | "616":"knot",
619 | "617":"lab coat, laboratory coat",
620 | "618":"ladle",
621 | "619":"lampshade, lamp shade",
622 | "620":"laptop, laptop computer",
623 | "621":"lawn mower, mower",
624 | "622":"lens cap, lens cover",
625 | "623":"letter opener, paper knife, paperknife",
626 | "624":"library",
627 | "625":"lifeboat",
628 | "626":"lighter, light, igniter, ignitor",
629 | "627":"limousine, limo",
630 | "628":"liner, ocean liner",
631 | "629":"lipstick, lip rouge",
632 | "630":"Loafer",
633 | "631":"lotion",
634 | "632":"loudspeaker, speaker, speaker unit, loudspeaker system, speaker system",
635 | "633":"loupe, jeweler's loupe",
636 | "634":"lumbermill, sawmill",
637 | "635":"magnetic compass",
638 | "636":"mailbag, postbag",
639 | "637":"mailbox, letter box",
640 | "638":"maillot",
641 | "639":"maillot, tank suit",
642 | "640":"manhole cover",
643 | "641":"maraca",
644 | "642":"marimba, xylophone",
645 | "643":"mask",
646 | "644":"matchstick",
647 | "645":"maypole",
648 | "646":"maze, labyrinth",
649 | "647":"measuring cup",
650 | "648":"medicine chest, medicine cabinet",
651 | "649":"megalith, megalithic structure",
652 | "650":"microphone, mike",
653 | "651":"microwave, microwave oven",
654 | "652":"military uniform",
655 | "653":"milk can",
656 | "654":"minibus",
657 | "655":"miniskirt, mini",
658 | "656":"minivan",
659 | "657":"missile",
660 | "658":"mitten",
661 | "659":"mixing bowl",
662 | "660":"mobile home, manufactured home",
663 | "661":"Model T",
664 | "662":"modem",
665 | "663":"monastery",
666 | "664":"monitor",
667 | "665":"moped",
668 | "666":"mortar",
669 | "667":"mortarboard",
670 | "668":"mosque",
671 | "669":"mosquito net",
672 | "670":"motor scooter, scooter",
673 | "671":"mountain bike, all-terrain bike, off-roader",
674 | "672":"mountain tent",
675 | "673":"mouse, computer mouse",
676 | "674":"mousetrap",
677 | "675":"moving van",
678 | "676":"muzzle",
679 | "677":"nail",
680 | "678":"neck brace",
681 | "679":"necklace",
682 | "680":"nipple",
683 | "681":"notebook, notebook computer",
684 | "682":"obelisk",
685 | "683":"oboe, hautboy, hautbois",
686 | "684":"ocarina, sweet potato",
687 | "685":"odometer, hodometer, mileometer, milometer",
688 | "686":"oil filter",
689 | "687":"organ, pipe organ",
690 | "688":"oscilloscope, scope, cathode-ray oscilloscope, CRO",
691 | "689":"overskirt",
692 | "690":"oxcart",
693 | "691":"oxygen mask",
694 | "692":"packet",
695 | "693":"paddle, boat paddle",
696 | "694":"paddlewheel, paddle wheel",
697 | "695":"padlock",
698 | "696":"paintbrush",
699 | "697":"pajama, pyjama, pj's, jammies",
700 | "698":"palace",
701 | "699":"panpipe, pandean pipe, syrinx",
702 | "700":"paper towel",
703 | "701":"parachute, chute",
704 | "702":"parallel bars, bars",
705 | "703":"park bench",
706 | "704":"parking meter",
707 | "705":"passenger car, coach, carriage",
708 | "706":"patio, terrace",
709 | "707":"pay-phone, pay-station",
710 | "708":"pedestal, plinth, footstall",
711 | "709":"pencil box, pencil case",
712 | "710":"pencil sharpener",
713 | "711":"perfume, essence",
714 | "712":"Petri dish",
715 | "713":"photocopier",
716 | "714":"pick, plectrum, plectron",
717 | "715":"pickelhaube",
718 | "716":"picket fence, paling",
719 | "717":"pickup, pickup truck",
720 | "718":"pier",
721 | "719":"piggy bank, penny bank",
722 | "720":"pill bottle",
723 | "721":"pillow",
724 | "722":"ping-pong ball",
725 | "723":"pinwheel",
726 | "724":"pirate, pirate ship",
727 | "725":"pitcher, ewer",
728 | "726":"plane, carpenter's plane, woodworking plane",
729 | "727":"planetarium",
730 | "728":"plastic bag",
731 | "729":"plate rack",
732 | "730":"plow, plough",
733 | "731":"plunger, plumber's helper",
734 | "732":"Polaroid camera, Polaroid Land camera",
735 | "733":"pole",
736 | "734":"police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria",
737 | "735":"poncho",
738 | "736":"pool table, billiard table, snooker table",
739 | "737":"pop bottle, soda bottle",
740 | "738":"pot, flowerpot",
741 | "739":"potter's wheel",
742 | "740":"power drill",
743 | "741":"prayer rug, prayer mat",
744 | "742":"printer",
745 | "743":"prison, prison house",
746 | "744":"projectile, missile",
747 | "745":"projector",
748 | "746":"puck, hockey puck",
749 | "747":"punching bag, punch bag, punching ball, punchball",
750 | "748":"purse",
751 | "749":"quill, quill pen",
752 | "750":"quilt, comforter, comfort, puff",
753 | "751":"racer, race car, racing car",
754 | "752":"racket, racquet",
755 | "753":"radiator",
756 | "754":"radio, wireless",
757 | "755":"radio telescope, radio reflector",
758 | "756":"rain barrel",
759 | "757":"recreational vehicle, RV, R.V.",
760 | "758":"reel",
761 | "759":"reflex camera",
762 | "760":"refrigerator, icebox",
763 | "761":"remote control, remote",
764 | "762":"restaurant, eating house, eating place, eatery",
765 | "763":"revolver, six-gun, six-shooter",
766 | "764":"rifle",
767 | "765":"rocking chair, rocker",
768 | "766":"rotisserie",
769 | "767":"rubber eraser, rubber, pencil eraser",
770 | "768":"rugby ball",
771 | "769":"rule, ruler",
772 | "770":"running shoe",
773 | "771":"safe",
774 | "772":"safety pin",
775 | "773":"saltshaker, salt shaker",
776 | "774":"sandal",
777 | "775":"sarong",
778 | "776":"sax, saxophone",
779 | "777":"scabbard",
780 | "778":"scale, weighing machine",
781 | "779":"school bus",
782 | "780":"schooner",
783 | "781":"scoreboard",
784 | "782":"screen, CRT screen",
785 | "783":"screw",
786 | "784":"screwdriver",
787 | "785":"seat belt, seatbelt",
788 | "786":"sewing machine",
789 | "787":"shield, buckler",
790 | "788":"shoe shop, shoe-shop, shoe store",
791 | "789":"shoji",
792 | "790":"shopping basket",
793 | "791":"shopping cart",
794 | "792":"shovel",
795 | "793":"shower cap",
796 | "794":"shower curtain",
797 | "795":"ski",
798 | "796":"ski mask",
799 | "797":"sleeping bag",
800 | "798":"slide rule, slipstick",
801 | "799":"sliding door",
802 | "800":"slot, one-armed bandit",
803 | "801":"snorkel",
804 | "802":"snowmobile",
805 | "803":"snowplow, snowplough",
806 | "804":"soap dispenser",
807 | "805":"soccer ball",
808 | "806":"sock",
809 | "807":"solar dish, solar collector, solar furnace",
810 | "808":"sombrero",
811 | "809":"soup bowl",
812 | "810":"space bar",
813 | "811":"space heater",
814 | "812":"space shuttle",
815 | "813":"spatula",
816 | "814":"speedboat",
817 | "815":"spider web, spider's web",
818 | "816":"spindle",
819 | "817":"sports car, sport car",
820 | "818":"spotlight, spot",
821 | "819":"stage",
822 | "820":"steam locomotive",
823 | "821":"steel arch bridge",
824 | "822":"steel drum",
825 | "823":"stethoscope",
826 | "824":"stole",
827 | "825":"stone wall",
828 | "826":"stopwatch, stop watch",
829 | "827":"stove",
830 | "828":"strainer",
831 | "829":"streetcar, tram, tramcar, trolley, trolley car",
832 | "830":"stretcher",
833 | "831":"studio couch, day bed",
834 | "832":"stupa, tope",
835 | "833":"submarine, pigboat, sub, U-boat",
836 | "834":"suit, suit of clothes",
837 | "835":"sundial",
838 | "836":"sunglass",
839 | "837":"sunglasses, dark glasses, shades",
840 | "838":"sunscreen, sunblock, sun blocker",
841 | "839":"suspension bridge",
842 | "840":"swab, swob, mop",
843 | "841":"sweatshirt",
844 | "842":"swimming trunks, bathing trunks",
845 | "843":"swing",
846 | "844":"switch, electric switch, electrical switch",
847 | "845":"syringe",
848 | "846":"table lamp",
849 | "847":"tank, army tank, armored combat vehicle, armoured combat vehicle",
850 | "848":"tape player",
851 | "849":"teapot",
852 | "850":"teddy, teddy bear",
853 | "851":"television, television system",
854 | "852":"tennis ball",
855 | "853":"thatch, thatched roof",
856 | "854":"theater curtain, theatre curtain",
857 | "855":"thimble",
858 | "856":"thresher, thrasher, threshing machine",
859 | "857":"throne",
860 | "858":"tile roof",
861 | "859":"toaster",
862 | "860":"tobacco shop, tobacconist shop, tobacconist",
863 | "861":"toilet seat",
864 | "862":"torch",
865 | "863":"totem pole",
866 | "864":"tow truck, tow car, wrecker",
867 | "865":"toyshop",
868 | "866":"tractor",
869 | "867":"trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi",
870 | "868":"tray",
871 | "869":"trench coat",
872 | "870":"tricycle, trike, velocipede",
873 | "871":"trimaran",
874 | "872":"tripod",
875 | "873":"triumphal arch",
876 | "874":"trolleybus, trolley coach, trackless trolley",
877 | "875":"trombone",
878 | "876":"tub, vat",
879 | "877":"turnstile",
880 | "878":"typewriter keyboard",
881 | "879":"umbrella",
882 | "880":"unicycle, monocycle",
883 | "881":"upright, upright piano",
884 | "882":"vacuum, vacuum cleaner",
885 | "883":"vase",
886 | "884":"vault",
887 | "885":"velvet",
888 | "886":"vending machine",
889 | "887":"vestment",
890 | "888":"viaduct",
891 | "889":"violin, fiddle",
892 | "890":"volleyball",
893 | "891":"waffle iron",
894 | "892":"wall clock",
895 | "893":"wallet, billfold, notecase, pocketbook",
896 | "894":"wardrobe, closet, press",
897 | "895":"warplane, military plane",
898 | "896":"washbasin, handbasin, washbowl, lavabo, wash-hand basin",
899 | "897":"washer, automatic washer, washing machine",
900 | "898":"water bottle",
901 | "899":"water jug",
902 | "900":"water tower",
903 | "901":"whiskey jug",
904 | "902":"whistle",
905 | "903":"wig",
906 | "904":"window screen",
907 | "905":"window shade",
908 | "906":"Windsor tie",
909 | "907":"wine bottle",
910 | "908":"wing",
911 | "909":"wok",
912 | "910":"wooden spoon",
913 | "911":"wool, woolen, woollen",
914 | "912":"worm fence, snake fence, snake-rail fence, Virginia fence",
915 | "913":"wreck",
916 | "914":"yawl",
917 | "915":"yurt",
918 | "916":"web site, website, internet site, site",
919 | "917":"comic book",
920 | "918":"crossword puzzle, crossword",
921 | "919":"street sign",
922 | "920":"traffic light, traffic signal, stoplight",
923 | "921":"book jacket, dust cover, dust jacket, dust wrapper",
924 | "922":"menu",
925 | "923":"plate",
926 | "924":"guacamole",
927 | "925":"consomme",
928 | "926":"hot pot, hotpot",
929 | "927":"trifle",
930 | "928":"ice cream, icecream",
931 | "929":"ice lolly, lolly, lollipop, popsicle",
932 | "930":"French loaf",
933 | "931":"bagel, beigel",
934 | "932":"pretzel",
935 | "933":"cheeseburger",
936 | "934":"hotdog, hot dog, red hot",
937 | "935":"mashed potato",
938 | "936":"head cabbage",
939 | "937":"broccoli",
940 | "938":"cauliflower",
941 | "939":"zucchini, courgette",
942 | "940":"spaghetti squash",
943 | "941":"acorn squash",
944 | "942":"butternut squash",
945 | "943":"cucumber, cuke",
946 | "944":"artichoke, globe artichoke",
947 | "945":"bell pepper",
948 | "946":"cardoon",
949 | "947":"mushroom",
950 | "948":"Granny Smith",
951 | "949":"strawberry",
952 | "950":"orange",
953 | "951":"lemon",
954 | "952":"fig",
955 | "953":"pineapple, ananas",
956 | "954":"banana",
957 | "955":"jackfruit, jak, jack",
958 | "956":"custard apple",
959 | "957":"pomegranate",
960 | "958":"hay",
961 | "959":"carbonara",
962 | "960":"chocolate sauce, chocolate syrup",
963 | "961":"dough",
964 | "962":"meat loaf, meatloaf",
965 | "963":"pizza, pizza pie",
966 | "964":"potpie",
967 | "965":"burrito",
968 | "966":"red wine",
969 | "967":"espresso",
970 | "968":"cup",
971 | "969":"eggnog",
972 | "970":"alp",
973 | "971":"bubble",
974 | "972":"cliff, drop, drop-off",
975 | "973":"coral reef",
976 | "974":"geyser",
977 | "975":"lakeside, lakeshore",
978 | "976":"promontory, headland, head, foreland",
979 | "977":"sandbar, sand bar",
980 | "978":"seashore, coast, seacoast, sea-coast",
981 | "979":"valley, vale",
982 | "980":"volcano",
983 | "981":"ballplayer, baseball player",
984 | "982":"groom, bridegroom",
985 | "983":"scuba diver",
986 | "984":"rapeseed",
987 | "985":"daisy",
988 | "986":"yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum",
989 | "987":"corn",
990 | "988":"acorn",
991 | "989":"hip, rose hip, rosehip",
992 | "990":"buckeye, horse chestnut, conker",
993 | "991":"coral fungus",
994 | "992":"agaric",
995 | "993":"gyromitra",
996 | "994":"stinkhorn, carrion fungus",
997 | "995":"earthstar",
998 | "996":"hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa",
999 | "997":"bolete",
1000 | "998":"ear, spike, capitulum",
1001 | "999":"toilet tissue, toilet paper, bathroom tissue"
1002 | }
--------------------------------------------------------------------------------
/ImageClassifier/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.IO;
4 | using System.Linq;
5 | using System.Reflection;
6 | using System.Text.Json;
7 | using System.Threading.Tasks;
8 | using Windows.AI.MachineLearning;
9 | using Windows.Graphics.Imaging;
10 | using Windows.Media;
11 |
12 | namespace ImageClassifier
13 | {
14 | class Program
15 | {
16 | static async Task Main(string[] args)
17 | {
18 | var rootDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
19 | var squeezeNetModel = SqueezeNetModel.CreateFromFilePath(Path.Combine(rootDir, "squeezenet1.0-9.onnx"));
20 |
21 | // Load labels from JSON
22 | var labels = new List();
23 | foreach (var kvp in JsonSerializer.Deserialize>(File.ReadAllText(Path.Combine(rootDir, "Labels.json"))))
24 | {
25 | labels.Add(kvp.Value);
26 | }
27 |
28 | if (args.Length < 1)
29 | return;
30 |
31 | var filePath = args[0];
32 |
33 | // Open image file
34 | SqueezeNetOutput output;
35 | using (var fileStream = File.OpenRead(filePath))
36 | {
37 | // Convert from FileStream to ImageFeatureValue
38 | var decoder = await BitmapDecoder.CreateAsync(fileStream.AsRandomAccessStream());
39 | using var softwareBitmap = await decoder.GetSoftwareBitmapAsync();
40 | using var inputImage = VideoFrame.CreateWithSoftwareBitmap(softwareBitmap);
41 | var imageTensor = ImageFeatureValue.CreateFromVideoFrame(inputImage);
42 |
43 | output = await squeezeNetModel.EvaluateAsync(new SqueezeNetInput
44 | {
45 | data_0 = imageTensor
46 | });
47 | }
48 |
49 | // Get result, which is a list of floats with all the probabilities for all 1000 classes of SqueezeNet
50 | var resultTensor = output.softmaxout_1;
51 | var resultVector = resultTensor.GetAsVectorView();
52 |
53 | // Order the 1000 results with their indexes to know which class is the highest ranked one
54 | List<(int index, float p)> results = new List<(int, float)>();
55 | for (int i = 0; i < resultVector.Count; i++)
56 | {
57 | results.Add((index: i, p: resultVector.ElementAt(i)));
58 | }
59 | results.Sort((a, b) => a.p switch
60 | {
61 | var p when p < b.p => 1,
62 | var p when p > b.p => -1,
63 | _ => 0
64 | });
65 |
66 | if (results[0].p >= 0.9f)
67 | {
68 | Console.WriteLine($"Image '{filePath}' is classified as '{labels[results[0].index]}'(p={(int)(results[0].p * 100)}%).");
69 | }
70 | else
71 | {
72 | Console.WriteLine("Sorry, but I'm not sure what this is.");
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/ImageClassifier/SqueezeNet.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Threading.Tasks;
3 | using Windows.AI.MachineLearning;
4 |
5 | namespace ImageClassifier
6 | {
7 | public sealed class SqueezeNetInput
8 | {
9 | public ImageFeatureValue data_0; // shape(1,3,224,224)
10 | }
11 |
12 | public sealed class SqueezeNetOutput
13 | {
14 | public TensorFloat softmaxout_1; // shape(1,1000,1,1)
15 | }
16 |
17 | public sealed class SqueezeNetModel
18 | {
19 | private LearningModel model;
20 | private LearningModelSession session;
21 | private LearningModelBinding binding;
22 |
23 | public static SqueezeNetModel CreateFromFilePath(string filePath)
24 | {
25 | var learningModel = new SqueezeNetModel
26 | {
27 | model = LearningModel.LoadFromFilePath(filePath)
28 | };
29 | learningModel.session = new LearningModelSession(learningModel.model);
30 | learningModel.binding = new LearningModelBinding(learningModel.session);
31 | return learningModel;
32 | }
33 |
34 | public async Task EvaluateAsync(SqueezeNetInput input)
35 | {
36 | binding.Bind("data_0", input.data_0);
37 | var result = await session.EvaluateAsync(binding, "0");
38 | var output = new SqueezeNetOutput
39 | {
40 | softmaxout_1 = result.Outputs["softmaxout_1"] as TensorFloat
41 | };
42 | return output;
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/ImageClassifier/squeezenet1.0-9.onnx:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/azchohfi/ImageClassifierSample/99451cf116da1c253437683a61f7c7e61c880eb9/ImageClassifier/squeezenet1.0-9.onnx
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Alexandre Zollinger Chohfi
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------