ImageIdentify
uses a neural network that was trained on a specific set of images, classifying them to a finite predefined set of "words" and "concepts". While this set is quite large, it does not contain all available entities.
Spelunking into code for ImageIdentify
, one can obtain the learning set by:
ontologyData =
NeuralFunctions`Private`LoadPaclet["CNN_GraphData4", "Construct.m"];
Length[ontologyData["ObjectInterpretation"]]
50258
Looking at some of them:
Take[Keys[ontologyData["ObjectInterpretation"]], 50]
{"Aircraft", "Amphibian", "Animal", "Arachnid", "Bird", "Book",
"Bridge", "Building", "Canal", "Castle", "Comet", "Dam", "Dinosaur",
"Fish", "Image", "Insect", "Knot", "Lattice", "Mammal", "Package",
"Park", "Plant", "Pulsar", "Reptile", "Rocket", "Satellite",
"School", "Ship", "Shipwreck", "Stadium", "Star", "Supernova",
"Surface", "Table", "Tunnel", "instrumentality", "artefact", "",
"edifice", "structure", "ant bear", "anteater", "Orycteropus afer",
"eutherian", "eutherian mammal", "placental", "mammal", "craniate",
"animate being", "beast"}
We can see that the Harrier Jump Jet was part of the learning set, but BAe Jetstream unfortunately wasn't.
KeyExistsQ[ontologyData["ObjectInterpretation"],
Entity["Aircraft", "HarrierJumpJet"]]
(* True *)
KeyExistsQ[ontologyData["ObjectInterpretation"],
Entity["Aircraft", "BAeJetstream"]]
(* False *)
We can also list all available aircrafts.
KeySelect[ontologyData["ObjectInterpretation"],
EntityTypeName[#] == "Aircraft" &]