Why can I successfully use an option list of the dog and cat entities with the ImageRecognition function but not use a similar option list for two aircraft entities
1 Answer
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" &]
-
$\begingroup$ Swapping BAe Jetstream for Boeing 747 and all works well with the Harrier recognised as jumbo jet. However, the basset hound, harrier and osprey entries explain some very odd classifications. The Harrier is often classified as a Montague's Harrier, a very fine bird but definitely not a fighter jet. $\endgroup$– NickCommented Mar 8, 2023 at 17:58