summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: c1ed48f)
raw | patch | inline | side by side (parent: c1ed48f)
author | Yuan Zhao <yuanzhao@ti.com> | |
Thu, 31 Oct 2019 03:02:26 +0000 (22:02 -0500) | ||
committer | Yuan Zhao <yuanzhao@ti.com> | |
Thu, 31 Oct 2019 03:02:26 +0000 (22:02 -0500) |
- Using the TidlRunSubgraph() interface
examples/mobilenet_subgraph/Makefile | [new file with mode: 0644] | patch | blob |
examples/mobilenet_subgraph/imagenet_objects.json | [new file with mode: 0644] | patch | blob |
examples/mobilenet_subgraph/main.cpp | [new file with mode: 0644] | patch | blob |
examples/mobilenet_subgraph/subgraph0.cfg | [new file with mode: 0644] | patch | blob |
diff --git a/examples/mobilenet_subgraph/Makefile b/examples/mobilenet_subgraph/Makefile
--- /dev/null
@@ -0,0 +1,43 @@
+# Copyright (c) 2018 Texas Instruments Incorporated - http://www.ti.com/
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of Texas Instruments Incorporated nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+# THE POSSIBILITY OF SUCH DAMAGE.
+
+EXE = imagenet
+
+include ../make.common
+
+LIBS += -lopencv_highgui -lopencv_imgcodecs -lopencv_videoio\
+ -lopencv_imgproc -lopencv_core
+LIBS += -ljson-c
+
+LIBS += -L$(TIDL_API_DIR) -ltidl_api -ltidl_imgutil
+
+SOURCES = main.cpp ../common/object_classes.cpp ../common/utils.cpp \
+ ../common/video_utils.cpp
+
+$(EXE): $(HEADERS) $(SOURCES)
+ $(CXX) $(CXXFLAGS) $(SOURCES) \
+ $(LDFLAGS) $(LIBS) -o $@
+
diff --git a/examples/mobilenet_subgraph/imagenet_objects.json b/examples/mobilenet_subgraph/imagenet_objects.json
--- /dev/null
@@ -0,0 +1,1005 @@
+{
+ "network": "imagenet",
+ "objects": [
+ { "label": "tench" },
+ { "label": "goldfish" },
+ { "label": "great_white_shark" },
+ { "label": "tiger_shark" },
+ { "label": "hammerhead" },
+ { "label": "electric_ray" },
+ { "label": "stingray" },
+ { "label": "cock" },
+ { "label": "hen" },
+ { "label": "ostrich" },
+ { "label": "brambling" },
+ { "label": "goldfinch" },
+ { "label": "house_finch" },
+ { "label": "junco" },
+ { "label": "indigo_bunting" },
+ { "label": "robin" },
+ { "label": "bulbul" },
+ { "label": "jay" },
+ { "label": "magpie" },
+ { "label": "chickadee" },
+ { "label": "water_ouzel" },
+ { "label": "kite" },
+ { "label": "bald_eagle" },
+ { "label": "vulture" },
+ { "label": "great_grey_owl" },
+ { "label": "European_fire_salamander" },
+ { "label": "common_newt" },
+ { "label": "eft" },
+ { "label": "spotted_salamander" },
+ { "label": "axolotl" },
+ { "label": "bullfrog" },
+ { "label": "tree_frog" },
+ { "label": "tailed_frog" },
+ { "label": "loggerhead" },
+ { "label": "leatherback_turtle" },
+ { "label": "mud_turtle" },
+ { "label": "terrapin" },
+ { "label": "box_turtle" },
+ { "label": "banded_gecko" },
+ { "label": "common_iguana" },
+ { "label": "American_chameleon" },
+ { "label": "whiptail" },
+ { "label": "agama" },
+ { "label": "frilled_lizard" },
+ { "label": "alligator_lizard" },
+ { "label": "Gila_monster" },
+ { "label": "green_lizard" },
+ { "label": "African_chameleon" },
+ { "label": "Komodo_dragon" },
+ { "label": "African_crocodile" },
+ { "label": "American_alligator" },
+ { "label": "triceratops" },
+ { "label": "thunder_snake" },
+ { "label": "ringneck_snake" },
+ { "label": "hognose_snake" },
+ { "label": "green_snake" },
+ { "label": "king_snake" },
+ { "label": "garter_snake" },
+ { "label": "water_snake" },
+ { "label": "vine_snake" },
+ { "label": "night_snake" },
+ { "label": "boa_constrictor" },
+ { "label": "rock_python" },
+ { "label": "Indian_cobra" },
+ { "label": "green_mamba" },
+ { "label": "sea_snake" },
+ { "label": "horned_viper" },
+ { "label": "diamondback" },
+ { "label": "sidewinder" },
+ { "label": "trilobite" },
+ { "label": "harvestman" },
+ { "label": "scorpion" },
+ { "label": "black_and_gold_garden_spider" },
+ { "label": "barn_spider" },
+ { "label": "garden_spider" },
+ { "label": "black_widow" },
+ { "label": "tarantula" },
+ { "label": "wolf_spider" },
+ { "label": "tick" },
+ { "label": "centipede" },
+ { "label": "black_grouse" },
+ { "label": "ptarmigan" },
+ { "label": "ruffed_grouse" },
+ { "label": "prairie_chicken" },
+ { "label": "peacock" },
+ { "label": "quail" },
+ { "label": "partridge" },
+ { "label": "African_grey" },
+ { "label": "macaw" },
+ { "label": "sulphur-crested_cockatoo" },
+ { "label": "lorikeet" },
+ { "label": "coucal" },
+ { "label": "bee_eater" },
+ { "label": "hornbill" },
+ { "label": "hummingbird" },
+ { "label": "jacamar" },
+ { "label": "toucan" },
+ { "label": "drake" },
+ { "label": "red-breasted_merganser" },
+ { "label": "goose" },
+ { "label": "black_swan" },
+ { "label": "tusker" },
+ { "label": "echidna" },
+ { "label": "platypus" },
+ { "label": "wallaby" },
+ { "label": "koala" },
+ { "label": "wombat" },
+ { "label": "jellyfish" },
+ { "label": "sea_anemone" },
+ { "label": "brain_coral" },
+ { "label": "flatworm" },
+ { "label": "nematode" },
+ { "label": "conch" },
+ { "label": "snail" },
+ { "label": "slug" },
+ { "label": "sea_slug" },
+ { "label": "chiton" },
+ { "label": "chambered_nautilus" },
+ { "label": "Dungeness_crab" },
+ { "label": "rock_crab" },
+ { "label": "fiddler_crab" },
+ { "label": "king_crab" },
+ { "label": "American_lobster" },
+ { "label": "spiny_lobster" },
+ { "label": "crayfish" },
+ { "label": "hermit_crab" },
+ { "label": "isopod" },
+ { "label": "white_stork" },
+ { "label": "black_stork" },
+ { "label": "spoonbill" },
+ { "label": "flamingo" },
+ { "label": "little_blue_heron" },
+ { "label": "American_egret" },
+ { "label": "bittern" },
+ { "label": "crane" },
+ { "label": "limpkin" },
+ { "label": "European_gallinule" },
+ { "label": "American_coot" },
+ { "label": "bustard" },
+ { "label": "ruddy_turnstone" },
+ { "label": "red-backed_sandpiper" },
+ { "label": "redshank" },
+ { "label": "dowitcher" },
+ { "label": "oystercatcher" },
+ { "label": "pelican" },
+ { "label": "king_penguin" },
+ { "label": "albatross" },
+ { "label": "grey_whale" },
+ { "label": "killer_whale" },
+ { "label": "dugong" },
+ { "label": "sea_lion" },
+ { "label": "Chihuahua" },
+ { "label": "Japanese_spaniel" },
+ { "label": "Maltese_dog" },
+ { "label": "Pekinese" },
+ { "label": "Shih-Tzu" },
+ { "label": "Blenheim_spaniel" },
+ { "label": "papillon" },
+ { "label": "toy_terrier" },
+ { "label": "Rhodesian_ridgeback" },
+ { "label": "Afghan_hound" },
+ { "label": "basset" },
+ { "label": "beagle" },
+ { "label": "bloodhound" },
+ { "label": "bluetick" },
+ { "label": "black-and-tan_coonhound" },
+ { "label": "Walker_hound" },
+ { "label": "English_foxhound" },
+ { "label": "redbone" },
+ { "label": "borzoi" },
+ { "label": "Irish_wolfhound" },
+ { "label": "Italian_greyhound" },
+ { "label": "whippet" },
+ { "label": "Ibizan_hound" },
+ { "label": "Norwegian_elkhound" },
+ { "label": "otterhound" },
+ { "label": "Saluki" },
+ { "label": "Scottish_deerhound" },
+ { "label": "Weimaraner" },
+ { "label": "Staffordshire_bullterrier" },
+ { "label": "American_Staffordshire_terrier" },
+ { "label": "Bedlington_terrier" },
+ { "label": "Border_terrier" },
+ { "label": "Kerry_blue_terrier" },
+ { "label": "Irish_terrier" },
+ { "label": "Norfolk_terrier" },
+ { "label": "Norwich_terrier" },
+ { "label": "Yorkshire_terrier" },
+ { "label": "wire-haired_fox_terrier" },
+ { "label": "Lakeland_terrier" },
+ { "label": "Sealyham_terrier" },
+ { "label": "Airedale" },
+ { "label": "cairn" },
+ { "label": "Australian_terrier" },
+ { "label": "Dandie_Dinmont" },
+ { "label": "Boston_bull" },
+ { "label": "miniature_schnauzer" },
+ { "label": "giant_schnauzer" },
+ { "label": "standard_schnauzer" },
+ { "label": "Scotch_terrier" },
+ { "label": "Tibetan_terrier" },
+ { "label": "silky_terrier" },
+ { "label": "soft-coated_wheaten_terrier" },
+ { "label": "West_Highland_white_terrier" },
+ { "label": "Lhasa" },
+ { "label": "flat-coated_retriever" },
+ { "label": "curly-coated_retriever" },
+ { "label": "golden_retriever" },
+ { "label": "Labrador_retriever" },
+ { "label": "Chesapeake_Bay_retriever" },
+ { "label": "German_short-haired_pointer" },
+ { "label": "vizsla" },
+ { "label": "English_setter" },
+ { "label": "Irish_setter" },
+ { "label": "Gordon_setter" },
+ { "label": "Brittany_spaniel" },
+ { "label": "clumber" },
+ { "label": "English_springer" },
+ { "label": "Welsh_springer_spaniel" },
+ { "label": "cocker_spaniel" },
+ { "label": "Sussex_spaniel" },
+ { "label": "Irish_water_spaniel" },
+ { "label": "kuvasz" },
+ { "label": "schipperke" },
+ { "label": "groenendael" },
+ { "label": "malinois" },
+ { "label": "briard" },
+ { "label": "kelpie" },
+ { "label": "komondor" },
+ { "label": "Old_English_sheepdog" },
+ { "label": "Shetland_sheepdog" },
+ { "label": "collie" },
+ { "label": "Border_collie" },
+ { "label": "Bouvier_des_Flandres" },
+ { "label": "Rottweiler" },
+ { "label": "German_shepherd" },
+ { "label": "Doberman" },
+ { "label": "miniature_pinscher" },
+ { "label": "Greater_Swiss_Mountain_dog" },
+ { "label": "Bernese_mountain_dog" },
+ { "label": "Appenzeller" },
+ { "label": "EntleBucher" },
+ { "label": "boxer" },
+ { "label": "bull_mastiff" },
+ { "label": "Tibetan_mastiff" },
+ { "label": "French_bulldog" },
+ { "label": "Great_Dane" },
+ { "label": "Saint_Bernard" },
+ { "label": "Eskimo_dog" },
+ { "label": "malamute" },
+ { "label": "Siberian_husky" },
+ { "label": "dalmatian" },
+ { "label": "affenpinscher" },
+ { "label": "basenji" },
+ { "label": "pug" },
+ { "label": "Leonberg" },
+ { "label": "Newfoundland" },
+ { "label": "Great_Pyrenees" },
+ { "label": "Samoyed" },
+ { "label": "Pomeranian" },
+ { "label": "chow" },
+ { "label": "keeshond" },
+ { "label": "Brabancon_griffon" },
+ { "label": "Pembroke" },
+ { "label": "Cardigan" },
+ { "label": "toy_poodle" },
+ { "label": "miniature_poodle" },
+ { "label": "standard_poodle" },
+ { "label": "Mexican_hairless" },
+ { "label": "timber_wolf" },
+ { "label": "white_wolf" },
+ { "label": "red_wolf" },
+ { "label": "coyote" },
+ { "label": "dingo" },
+ { "label": "dhole" },
+ { "label": "African_hunting_dog" },
+ { "label": "hyena" },
+ { "label": "red_fox" },
+ { "label": "kit_fox" },
+ { "label": "Arctic_fox" },
+ { "label": "grey_fox" },
+ { "label": "tabby" },
+ { "label": "tiger_cat" },
+ { "label": "Persian_cat" },
+ { "label": "Siamese_cat" },
+ { "label": "Egyptian_cat" },
+ { "label": "cougar" },
+ { "label": "lynx" },
+ { "label": "leopard" },
+ { "label": "snow_leopard" },
+ { "label": "jaguar" },
+ { "label": "lion" },
+ { "label": "tiger" },
+ { "label": "cheetah" },
+ { "label": "brown_bear" },
+ { "label": "American_black_bear" },
+ { "label": "ice_bear" },
+ { "label": "sloth_bear" },
+ { "label": "mongoose" },
+ { "label": "meerkat" },
+ { "label": "tiger_beetle" },
+ { "label": "ladybug" },
+ { "label": "ground_beetle" },
+ { "label": "long-horned_beetle" },
+ { "label": "leaf_beetle" },
+ { "label": "dung_beetle" },
+ { "label": "rhinoceros_beetle" },
+ { "label": "weevil" },
+ { "label": "fly" },
+ { "label": "bee" },
+ { "label": "ant" },
+ { "label": "grasshopper" },
+ { "label": "cricket" },
+ { "label": "walking_stick" },
+ { "label": "cockroach" },
+ { "label": "mantis" },
+ { "label": "cicada" },
+ { "label": "leafhopper" },
+ { "label": "lacewing" },
+ { "label": "dragonfly" },
+ { "label": "damselfly" },
+ { "label": "admiral" },
+ { "label": "ringlet" },
+ { "label": "monarch" },
+ { "label": "cabbage_butterfly" },
+ { "label": "sulphur_butterfly" },
+ { "label": "lycaenid" },
+ { "label": "starfish" },
+ { "label": "sea_urchin" },
+ { "label": "sea_cucumber" },
+ { "label": "wood_rabbit" },
+ { "label": "hare" },
+ { "label": "Angora" },
+ { "label": "hamster" },
+ { "label": "porcupine" },
+ { "label": "fox_squirrel" },
+ { "label": "marmot" },
+ { "label": "beaver" },
+ { "label": "guinea_pig" },
+ { "label": "sorrel" },
+ { "label": "zebra" },
+ { "label": "hog" },
+ { "label": "wild_boar" },
+ { "label": "warthog" },
+ { "label": "hippopotamus" },
+ { "label": "ox" },
+ { "label": "water_buffalo" },
+ { "label": "bison" },
+ { "label": "ram" },
+ { "label": "bighorn" },
+ { "label": "ibex" },
+ { "label": "hartebeest" },
+ { "label": "impala" },
+ { "label": "gazelle" },
+ { "label": "Arabian_camel" },
+ { "label": "llama" },
+ { "label": "weasel" },
+ { "label": "mink" },
+ { "label": "polecat" },
+ { "label": "black-footed_ferret" },
+ { "label": "otter" },
+ { "label": "skunk" },
+ { "label": "badger" },
+ { "label": "armadillo" },
+ { "label": "three-toed_sloth" },
+ { "label": "orangutan" },
+ { "label": "gorilla" },
+ { "label": "chimpanzee" },
+ { "label": "gibbon" },
+ { "label": "siamang" },
+ { "label": "guenon" },
+ { "label": "patas" },
+ { "label": "baboon" },
+ { "label": "macaque" },
+ { "label": "langur" },
+ { "label": "colobus" },
+ { "label": "proboscis_monkey" },
+ { "label": "marmoset" },
+ { "label": "capuchin" },
+ { "label": "howler_monkey" },
+ { "label": "titi" },
+ { "label": "spider_monkey" },
+ { "label": "squirrel_monkey" },
+ { "label": "Madagascar_cat" },
+ { "label": "indri" },
+ { "label": "Indian_elephant" },
+ { "label": "African_elephant" },
+ { "label": "lesser_panda" },
+ { "label": "giant_panda" },
+ { "label": "barracouta" },
+ { "label": "eel" },
+ { "label": "coho" },
+ { "label": "rock_beauty" },
+ { "label": "anemone_fish" },
+ { "label": "sturgeon" },
+ { "label": "gar" },
+ { "label": "lionfish" },
+ { "label": "puffer" },
+ { "label": "abacus" },
+ { "label": "abaya" },
+ { "label": "academic_gown" },
+ { "label": "accordion" },
+ { "label": "acoustic_guitar" },
+ { "label": "aircraft_carrier" },
+ { "label": "airliner" },
+ { "label": "airship" },
+ { "label": "altar" },
+ { "label": "ambulance" },
+ { "label": "amphibian" },
+ { "label": "analog_clock" },
+ { "label": "apiary" },
+ { "label": "apron" },
+ { "label": "ashcan" },
+ { "label": "assault_rifle" },
+ { "label": "backpack" },
+ { "label": "bakery" },
+ { "label": "balance_beam" },
+ { "label": "balloon" },
+ { "label": "ballpoint" },
+ { "label": "Band_Aid" },
+ { "label": "banjo" },
+ { "label": "bannister" },
+ { "label": "barbell" },
+ { "label": "barber_chair" },
+ { "label": "barbershop" },
+ { "label": "barn" },
+ { "label": "barometer" },
+ { "label": "barrel" },
+ { "label": "barrow" },
+ { "label": "baseball" },
+ { "label": "basketball" },
+ { "label": "bassinet" },
+ { "label": "bassoon" },
+ { "label": "bathing_cap" },
+ { "label": "bath_towel" },
+ { "label": "bathtub" },
+ { "label": "beach_wagon" },
+ { "label": "beacon" },
+ { "label": "beaker" },
+ { "label": "bearskin" },
+ { "label": "beer_bottle" },
+ { "label": "beer_glass" },
+ { "label": "bell_cote" },
+ { "label": "bib" },
+ { "label": "bicycle-built-for-two" },
+ { "label": "bikini" },
+ { "label": "binder" },
+ { "label": "binoculars" },
+ { "label": "birdhouse" },
+ { "label": "boathouse" },
+ { "label": "bobsled" },
+ { "label": "bolo_tie" },
+ { "label": "bonnet" },
+ { "label": "bookcase" },
+ { "label": "bookshop" },
+ { "label": "bottlecap" },
+ { "label": "bow" },
+ { "label": "bow_tie" },
+ { "label": "brass" },
+ { "label": "brassiere" },
+ { "label": "breakwater" },
+ { "label": "breastplate" },
+ { "label": "broom" },
+ { "label": "bucket" },
+ { "label": "buckle" },
+ { "label": "bulletproof_vest" },
+ { "label": "bullet_train" },
+ { "label": "butcher_shop" },
+ { "label": "cab" },
+ { "label": "caldron" },
+ { "label": "candle" },
+ { "label": "cannon" },
+ { "label": "canoe" },
+ { "label": "can_opener" },
+ { "label": "cardigan" },
+ { "label": "car_mirror" },
+ { "label": "carousel" },
+ { "label": "carpenter's_kit" },
+ { "label": "carton" },
+ { "label": "car_wheel" },
+ { "label": "cash_machine" },
+ { "label": "cassette" },
+ { "label": "cassette_player" },
+ { "label": "castle" },
+ { "label": "catamaran" },
+ { "label": "CD_player" },
+ { "label": "cello" },
+ { "label": "cellular_telephone" },
+ { "label": "chain" },
+ { "label": "chainlink_fence" },
+ { "label": "chain_mail" },
+ { "label": "chain_saw" },
+ { "label": "chest" },
+ { "label": "chiffonier" },
+ { "label": "chime" },
+ { "label": "china_cabinet" },
+ { "label": "Christmas_stocking" },
+ { "label": "church" },
+ { "label": "cinema" },
+ { "label": "cleaver" },
+ { "label": "cliff_dwelling" },
+ { "label": "cloak" },
+ { "label": "clog" },
+ { "label": "cocktail_shaker" },
+ { "label": "coffee_mug" },
+ { "label": "coffeepot" },
+ { "label": "coil" },
+ { "label": "combination_lock" },
+ { "label": "computer_keyboard" },
+ { "label": "confectionery" },
+ { "label": "container_ship" },
+ { "label": "convertible" },
+ { "label": "corkscrew" },
+ { "label": "cornet" },
+ { "label": "cowboy_boot" },
+ { "label": "cowboy_hat" },
+ { "label": "cradle" },
+ { "label": "crane" },
+ { "label": "crash_helmet" },
+ { "label": "crate" },
+ { "label": "crib" },
+ { "label": "Crock_Pot" },
+ { "label": "croquet_ball" },
+ { "label": "crutch" },
+ { "label": "cuirass" },
+ { "label": "dam" },
+ { "label": "desk" },
+ { "label": "desktop_computer" },
+ { "label": "dial_telephone" },
+ { "label": "diaper" },
+ { "label": "digital_clock" },
+ { "label": "digital_watch" },
+ { "label": "dining_table" },
+ { "label": "dishrag" },
+ { "label": "dishwasher" },
+ { "label": "disk_brake" },
+ { "label": "dock" },
+ { "label": "dogsled" },
+ { "label": "dome" },
+ { "label": "doormat" },
+ { "label": "drilling_platform" },
+ { "label": "drum" },
+ { "label": "drumstick" },
+ { "label": "dumbbell" },
+ { "label": "Dutch_oven" },
+ { "label": "electric_fan" },
+ { "label": "electric_guitar" },
+ { "label": "electric_locomotive" },
+ { "label": "entertainment_center" },
+ { "label": "envelope" },
+ { "label": "espresso_maker" },
+ { "label": "face_powder" },
+ { "label": "feather_boa" },
+ { "label": "file" },
+ { "label": "fireboat" },
+ { "label": "fire_engine" },
+ { "label": "fire_screen" },
+ { "label": "flagpole" },
+ { "label": "flute" },
+ { "label": "folding_chair" },
+ { "label": "football_helmet" },
+ { "label": "forklift" },
+ { "label": "fountain" },
+ { "label": "fountain_pen" },
+ { "label": "four-poster" },
+ { "label": "freight_car" },
+ { "label": "French_horn" },
+ { "label": "frying_pan" },
+ { "label": "fur_coat" },
+ { "label": "garbage_truck" },
+ { "label": "gasmask" },
+ { "label": "gas_pump" },
+ { "label": "goblet" },
+ { "label": "go-kart" },
+ { "label": "golf_ball" },
+ { "label": "golfcart" },
+ { "label": "gondola" },
+ { "label": "gong" },
+ { "label": "gown" },
+ { "label": "grand_piano" },
+ { "label": "greenhouse" },
+ { "label": "grille" },
+ { "label": "grocery_store" },
+ { "label": "guillotine" },
+ { "label": "hair_slide" },
+ { "label": "hair_spray" },
+ { "label": "half_track" },
+ { "label": "hammer" },
+ { "label": "hamper" },
+ { "label": "hand_blower" },
+ { "label": "hand-held_computer" },
+ { "label": "handkerchief" },
+ { "label": "hard_disc" },
+ { "label": "harmonica" },
+ { "label": "harp" },
+ { "label": "harvester" },
+ { "label": "hatchet" },
+ { "label": "holster" },
+ { "label": "home_theater" },
+ { "label": "honeycomb" },
+ { "label": "hook" },
+ { "label": "hoopskirt" },
+ { "label": "horizontal_bar" },
+ { "label": "horse_cart" },
+ { "label": "hourglass" },
+ { "label": "iPod" },
+ { "label": "iron" },
+ { "label": "jack-o'-lantern" },
+ { "label": "jean" },
+ { "label": "jeep" },
+ { "label": "jersey" },
+ { "label": "jigsaw_puzzle" },
+ { "label": "jinrikisha" },
+ { "label": "joystick" },
+ { "label": "kimono" },
+ { "label": "knee_pad" },
+ { "label": "knot" },
+ { "label": "lab_coat" },
+ { "label": "ladle" },
+ { "label": "lampshade" },
+ { "label": "laptop" },
+ { "label": "lawn_mower" },
+ { "label": "lens_cap" },
+ { "label": "letter_opener" },
+ { "label": "library" },
+ { "label": "lifeboat" },
+ { "label": "lighter" },
+ { "label": "limousine" },
+ { "label": "liner" },
+ { "label": "lipstick" },
+ { "label": "Loafer" },
+ { "label": "lotion" },
+ { "label": "loudspeaker" },
+ { "label": "loupe" },
+ { "label": "lumbermill" },
+ { "label": "magnetic_compass" },
+ { "label": "mailbag" },
+ { "label": "mailbox" },
+ { "label": "maillot" },
+ { "label": "maillot" },
+ { "label": "manhole_cover" },
+ { "label": "maraca" },
+ { "label": "marimba" },
+ { "label": "mask" },
+ { "label": "matchstick" },
+ { "label": "maypole" },
+ { "label": "maze" },
+ { "label": "measuring_cup" },
+ { "label": "medicine_chest" },
+ { "label": "megalith" },
+ { "label": "microphone" },
+ { "label": "microwave" },
+ { "label": "military_uniform" },
+ { "label": "milk_can" },
+ { "label": "minibus" },
+ { "label": "miniskirt" },
+ { "label": "minivan" },
+ { "label": "missile" },
+ { "label": "mitten" },
+ { "label": "mixing_bowl" },
+ { "label": "mobile_home" },
+ { "label": "Model_T" },
+ { "label": "modem" },
+ { "label": "monastery" },
+ { "label": "monitor" },
+ { "label": "moped" },
+ { "label": "mortar" },
+ { "label": "mortarboard" },
+ { "label": "mosque" },
+ { "label": "mosquito_net" },
+ { "label": "motor_scooter" },
+ { "label": "mountain_bike" },
+ { "label": "mountain_tent" },
+ { "label": "mouse" },
+ { "label": "mousetrap" },
+ { "label": "moving_van" },
+ { "label": "muzzle" },
+ { "label": "nail" },
+ { "label": "neck_brace" },
+ { "label": "necklace" },
+ { "label": "nipple" },
+ { "label": "notebook" },
+ { "label": "obelisk" },
+ { "label": "oboe" },
+ { "label": "ocarina" },
+ { "label": "odometer" },
+ { "label": "oil_filter" },
+ { "label": "organ" },
+ { "label": "oscilloscope" },
+ { "label": "overskirt" },
+ { "label": "oxcart" },
+ { "label": "oxygen_mask" },
+ { "label": "packet" },
+ { "label": "paddle" },
+ { "label": "paddlewheel" },
+ { "label": "padlock" },
+ { "label": "paintbrush" },
+ { "label": "pajama" },
+ { "label": "palace" },
+ { "label": "panpipe" },
+ { "label": "paper_towel" },
+ { "label": "parachute" },
+ { "label": "parallel_bars" },
+ { "label": "park_bench" },
+ { "label": "parking_meter" },
+ { "label": "passenger_car" },
+ { "label": "patio" },
+ { "label": "pay-phone" },
+ { "label": "pedestal" },
+ { "label": "pencil_box" },
+ { "label": "pencil_sharpener" },
+ { "label": "perfume" },
+ { "label": "Petri_dish" },
+ { "label": "photocopier" },
+ { "label": "pick" },
+ { "label": "pickelhaube" },
+ { "label": "picket_fence" },
+ { "label": "pickup" },
+ { "label": "pier" },
+ { "label": "piggy_bank" },
+ { "label": "pill_bottle" },
+ { "label": "pillow" },
+ { "label": "ping-pong_ball" },
+ { "label": "pinwheel" },
+ { "label": "pirate" },
+ { "label": "pitcher" },
+ { "label": "plane" },
+ { "label": "planetarium" },
+ { "label": "plastic_bag" },
+ { "label": "plate_rack" },
+ { "label": "plow" },
+ { "label": "plunger" },
+ { "label": "Polaroid_camera" },
+ { "label": "pole" },
+ { "label": "police_van" },
+ { "label": "poncho" },
+ { "label": "pool_table" },
+ { "label": "pop_bottle" },
+ { "label": "pot" },
+ { "label": "potter's_wheel" },
+ { "label": "power_drill" },
+ { "label": "prayer_rug" },
+ { "label": "printer" },
+ { "label": "prison" },
+ { "label": "projectile" },
+ { "label": "projector" },
+ { "label": "puck" },
+ { "label": "punching_bag" },
+ { "label": "purse" },
+ { "label": "quill" },
+ { "label": "quilt" },
+ { "label": "racer" },
+ { "label": "racket" },
+ { "label": "radiator" },
+ { "label": "radio" },
+ { "label": "radio_telescope" },
+ { "label": "rain_barrel" },
+ { "label": "recreational_vehicle" },
+ { "label": "reel" },
+ { "label": "reflex_camera" },
+ { "label": "refrigerator" },
+ { "label": "remote_control" },
+ { "label": "restaurant" },
+ { "label": "revolver" },
+ { "label": "rifle" },
+ { "label": "rocking_chair" },
+ { "label": "rotisserie" },
+ { "label": "rubber_eraser" },
+ { "label": "rugby_ball" },
+ { "label": "rule" },
+ { "label": "running_shoe" },
+ { "label": "safe" },
+ { "label": "safety_pin" },
+ { "label": "saltshaker" },
+ { "label": "sandal" },
+ { "label": "sarong" },
+ { "label": "sax" },
+ { "label": "scabbard" },
+ { "label": "scale" },
+ { "label": "school_bus" },
+ { "label": "schooner" },
+ { "label": "scoreboard" },
+ { "label": "screen" },
+ { "label": "screw" },
+ { "label": "screwdriver" },
+ { "label": "seat_belt" },
+ { "label": "sewing_machine" },
+ { "label": "shield" },
+ { "label": "shoe_shop" },
+ { "label": "shoji" },
+ { "label": "shopping_basket" },
+ { "label": "shopping_cart" },
+ { "label": "shovel" },
+ { "label": "shower_cap" },
+ { "label": "shower_curtain" },
+ { "label": "ski" },
+ { "label": "ski_mask" },
+ { "label": "sleeping_bag" },
+ { "label": "slide_rule" },
+ { "label": "sliding_door" },
+ { "label": "slot" },
+ { "label": "snorkel" },
+ { "label": "snowmobile" },
+ { "label": "snowplow" },
+ { "label": "soap_dispenser" },
+ { "label": "soccer_ball" },
+ { "label": "sock" },
+ { "label": "solar_dish" },
+ { "label": "sombrero" },
+ { "label": "soup_bowl" },
+ { "label": "space_bar" },
+ { "label": "space_heater" },
+ { "label": "space_shuttle" },
+ { "label": "spatula" },
+ { "label": "speedboat" },
+ { "label": "spider_web" },
+ { "label": "spindle" },
+ { "label": "sports_car" },
+ { "label": "spotlight" },
+ { "label": "stage" },
+ { "label": "steam_locomotive" },
+ { "label": "steel_arch_bridge" },
+ { "label": "steel_drum" },
+ { "label": "stethoscope" },
+ { "label": "stole" },
+ { "label": "stone_wall" },
+ { "label": "stopwatch" },
+ { "label": "stove" },
+ { "label": "strainer" },
+ { "label": "streetcar" },
+ { "label": "stretcher" },
+ { "label": "studio_couch" },
+ { "label": "stupa" },
+ { "label": "submarine" },
+ { "label": "suit" },
+ { "label": "sundial" },
+ { "label": "sunglass" },
+ { "label": "sunglasses" },
+ { "label": "sunscreen" },
+ { "label": "suspension_bridge" },
+ { "label": "swab" },
+ { "label": "sweatshirt" },
+ { "label": "swimming_trunks" },
+ { "label": "swing" },
+ { "label": "switch" },
+ { "label": "syringe" },
+ { "label": "table_lamp" },
+ { "label": "tank" },
+ { "label": "tape_player" },
+ { "label": "teapot" },
+ { "label": "teddy" },
+ { "label": "television" },
+ { "label": "tennis_ball" },
+ { "label": "thatch" },
+ { "label": "theater_curtain" },
+ { "label": "thimble" },
+ { "label": "thresher" },
+ { "label": "throne" },
+ { "label": "tile_roof" },
+ { "label": "toaster" },
+ { "label": "tobacco_shop" },
+ { "label": "toilet_seat" },
+ { "label": "torch" },
+ { "label": "totem_pole" },
+ { "label": "tow_truck" },
+ { "label": "toyshop" },
+ { "label": "tractor" },
+ { "label": "trailer_truck" },
+ { "label": "tray" },
+ { "label": "trench_coat" },
+ { "label": "tricycle" },
+ { "label": "trimaran" },
+ { "label": "tripod" },
+ { "label": "triumphal_arch" },
+ { "label": "trolleybus" },
+ { "label": "trombone" },
+ { "label": "tub" },
+ { "label": "turnstile" },
+ { "label": "typewriter_keyboard" },
+ { "label": "umbrella" },
+ { "label": "unicycle" },
+ { "label": "upright" },
+ { "label": "vacuum" },
+ { "label": "vase" },
+ { "label": "vault" },
+ { "label": "velvet" },
+ { "label": "vending_machine" },
+ { "label": "vestment" },
+ { "label": "viaduct" },
+ { "label": "violin" },
+ { "label": "volleyball" },
+ { "label": "waffle_iron" },
+ { "label": "wall_clock" },
+ { "label": "wallet" },
+ { "label": "wardrobe" },
+ { "label": "warplane" },
+ { "label": "washbasin" },
+ { "label": "washer" },
+ { "label": "water_bottle" },
+ { "label": "water_jug" },
+ { "label": "water_tower" },
+ { "label": "whiskey_jug" },
+ { "label": "whistle" },
+ { "label": "wig" },
+ { "label": "window_screen" },
+ { "label": "window_shade" },
+ { "label": "Windsor_tie" },
+ { "label": "wine_bottle" },
+ { "label": "wing" },
+ { "label": "wok" },
+ { "label": "wooden_spoon" },
+ { "label": "wool" },
+ { "label": "worm_fence" },
+ { "label": "wreck" },
+ { "label": "yawl" },
+ { "label": "yurt" },
+ { "label": "web_site" },
+ { "label": "comic_book" },
+ { "label": "crossword_puzzle" },
+ { "label": "street_sign" },
+ { "label": "traffic_light" },
+ { "label": "book_jacket" },
+ { "label": "menu" },
+ { "label": "plate" },
+ { "label": "guacamole" },
+ { "label": "consomme" },
+ { "label": "hot_pot" },
+ { "label": "trifle" },
+ { "label": "ice_cream" },
+ { "label": "ice_lolly" },
+ { "label": "French_loaf" },
+ { "label": "bagel" },
+ { "label": "pretzel" },
+ { "label": "cheeseburger" },
+ { "label": "hotdog" },
+ { "label": "mashed_potato" },
+ { "label": "head_cabbage" },
+ { "label": "broccoli" },
+ { "label": "cauliflower" },
+ { "label": "zucchini" },
+ { "label": "spaghetti_squash" },
+ { "label": "acorn_squash" },
+ { "label": "butternut_squash" },
+ { "label": "cucumber" },
+ { "label": "artichoke" },
+ { "label": "bell_pepper" },
+ { "label": "cardoon" },
+ { "label": "mushroom" },
+ { "label": "Granny_Smith" },
+ { "label": "strawberry" },
+ { "label": "orange" },
+ { "label": "lemon" },
+ { "label": "fig" },
+ { "label": "pineapple" },
+ { "label": "banana" },
+ { "label": "jackfruit" },
+ { "label": "custard_apple" },
+ { "label": "pomegranate" },
+ { "label": "hay" },
+ { "label": "carbonara" },
+ { "label": "chocolate_sauce" },
+ { "label": "dough" },
+ { "label": "meat_loaf" },
+ { "label": "pizza" },
+ { "label": "potpie" },
+ { "label": "burrito" },
+ { "label": "red_wine" },
+ { "label": "espresso" },
+ { "label": "cup" },
+ { "label": "eggnog" },
+ { "label": "alp" },
+ { "label": "bubble" },
+ { "label": "cliff" },
+ { "label": "coral_reef" },
+ { "label": "geyser" },
+ { "label": "lakeside" },
+ { "label": "promontory" },
+ { "label": "sandbar" },
+ { "label": "seashore" },
+ { "label": "valley" },
+ { "label": "volcano" },
+ { "label": "ballplayer" },
+ { "label": "groom" },
+ { "label": "scuba_diver" },
+ { "label": "rapeseed" },
+ { "label": "daisy" },
+ { "label": "yellow_lady's_slipper" },
+ { "label": "corn" },
+ { "label": "acorn" },
+ { "label": "hip" },
+ { "label": "buckeye" },
+ { "label": "coral_fungus" },
+ { "label": "agaric" },
+ { "label": "gyromitra" },
+ { "label": "stinkhorn" },
+ { "label": "earthstar" },
+ { "label": "hen-of-the-woods" },
+ { "label": "bolete" },
+ { "label": "ear" },
+ { "label": "toilet_tissue" }
+ ]
+}
diff --git a/examples/mobilenet_subgraph/main.cpp b/examples/mobilenet_subgraph/main.cpp
--- /dev/null
@@ -0,0 +1,307 @@
+/******************************************************************************
+ * Copyright (c) 2018, Texas Instruments Incorporated - http://www.ti.com/
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ * * Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * * Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ * * Neither the name of Texas Instruments Incorporated nor the
+ * names of its contributors may be used to endorse or promote products
+ * derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
+ * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ *****************************************************************************/
+#include <signal.h>
+#include <iostream>
+#include <iomanip>
+#include <fstream>
+#include <cassert>
+#include <string>
+#include <functional>
+#include <algorithm>
+#include <time.h>
+#include <unistd.h>
+
+#include <queue>
+#include <vector>
+#include <chrono>
+
+#include "executor.h"
+#include "execution_object.h"
+#include "execution_object_pipeline.h"
+#include "subgraph_runtime.h"
+#include "configuration.h"
+#include "../common/object_classes.h"
+#include "imgutil.h"
+#include "../common/video_utils.h"
+
+#include "opencv2/core.hpp"
+#include "opencv2/imgproc.hpp"
+#include "opencv2/highgui.hpp"
+#include "opencv2/videoio.hpp"
+
+using namespace std;
+using namespace tidl;
+using namespace cv;
+
+#define NUM_VIDEO_FRAMES 300
+#define DEFAULT_CONFIG "j11_v2"
+#define NUM_DEFAULT_INPUTS 1
+#define DEFAULT_OBJECT_CLASSES_LIST_FILE "imagenet_objects.json"
+#define DEFAULT_OUTPUT_PROB_THRESHOLD 5
+const char *default_inputs[NUM_DEFAULT_INPUTS] =
+{
+ "../test/testvecs/input/objects/cat-pet-animal-domestic-104827.jpeg"
+};
+std::unique_ptr<ObjectClasses> object_classes;
+
+bool RunConfiguration(cmdline_opts_t& opts);
+bool ReadFrame(const cmdline_opts_t& opts, VideoCapture &cap, float** inputs);
+bool WriteFrameOutput(float *out, const cmdline_opts_t& opts);
+void DisplayHelp();
+
+
+int main(int argc, char *argv[])
+{
+ // Catch ctrl-c to ensure a clean exit
+ signal(SIGABRT, exit);
+ signal(SIGTERM, exit);
+
+ // If there are no devices capable of offloading TIDL on the SoC, exit
+ uint32_t num_eves = Executor::GetNumDevices(DeviceType::EVE);
+ uint32_t num_dsps = Executor::GetNumDevices(DeviceType::DSP);
+ if (num_eves == 0 && num_dsps == 0)
+ {
+ cout << "TI DL not supported on this SoC." << endl;
+ return EXIT_SUCCESS;
+ }
+
+ // Process arguments
+ cmdline_opts_t opts;
+ opts.config = DEFAULT_CONFIG;
+ opts.object_classes_list_file = DEFAULT_OBJECT_CLASSES_LIST_FILE;
+ opts.output_prob_threshold = DEFAULT_OUTPUT_PROB_THRESHOLD;
+ if (num_eves != 0) { opts.num_eves = 1; opts.num_dsps = 0; }
+ else { opts.num_eves = 0; opts.num_dsps = 1; }
+ if (! ProcessArgs(argc, argv, opts))
+ {
+ DisplayHelp();
+ exit(EXIT_SUCCESS);
+ }
+ assert(opts.num_dsps != 0 || opts.num_eves != 0);
+ if (opts.num_frames == 0)
+ opts.num_frames = (opts.is_camera_input || opts.is_video_input) ?
+ NUM_VIDEO_FRAMES : 1;
+ if (opts.input_file.empty())
+ cout << "Input: " << default_inputs[0] << endl;
+ else
+ cout << "Input: " << opts.input_file << endl;
+
+ // Get object classes list
+ object_classes = std::unique_ptr<ObjectClasses>(
+ new ObjectClasses(opts.object_classes_list_file));
+ if (object_classes->GetNumClasses() == 0)
+ {
+ cout << "No object classes defined for this config." << endl;
+ return EXIT_FAILURE;
+ }
+
+ // Run network
+ bool status = RunConfiguration(opts);
+ if (!status)
+ {
+ cout << "imagenet FAILED" << endl;
+ return EXIT_FAILURE;
+ }
+
+ cout << "imagenet PASSED" << endl;
+ return EXIT_SUCCESS;
+}
+
+bool RunConfiguration(cmdline_opts_t& opts)
+{
+ bool status = true;
+
+ // setup camera/video input/output
+ VideoCapture cap;
+ if (! SetVideoInputOutput(cap, opts, "ImageNet")) return false;
+
+ try
+ {
+ float **inputs = new float *[1];
+ inputs[0] = new float[1*3*224*224];
+ float **outputs = new float *[1];
+ outputs[0] = new float[1001];
+
+ for (int i = 0; i < 5; i ++)
+ {
+ chrono::time_point<chrono::steady_clock> tloop0, tloop1;
+ tloop0 = chrono::steady_clock::now();
+
+ ReadFrame(opts, cap, inputs);
+ TidlRunSubgraph(1, 0, 1, 1, inputs, outputs);
+ WriteFrameOutput(outputs[0], opts);
+
+ tloop1 = chrono::steady_clock::now();
+ chrono::duration<float> elapsed = tloop1 - tloop0;
+ cout << "Frame " << i
+ << " time (including read/write/opencv/print/etc): "
+ << setw(6) << setprecision(4)
+ << (elapsed.count() * 1000) << "ms" << endl;
+ }
+
+ delete [] inputs[0];
+ delete [] inputs;
+ delete [] outputs[0];
+ delete [] outputs;
+ }
+ catch (tidl::Exception &e)
+ {
+ cerr << e.what() << endl;
+ status = false;
+ }
+
+ return status;
+}
+
+
+bool ReadFrame(const cmdline_opts_t& opts, VideoCapture &cap, float** inputs)
+{
+ Configuration c;
+ c.inNumChannels = 3;;
+ c.inWidth = 224;
+ c.inHeight = 224;
+ c.preProcType = 2;
+ SubgraphDataConv in_conv{{true}, {128.0f}, {false}, {1,3,224,224}};
+
+ char* frame_buffer = new char[3*224*224];
+ assert (frame_buffer != nullptr);
+
+ Mat image;
+ if (! opts.is_camera_input && ! opts.is_video_input)
+ {
+ if (opts.input_file.empty())
+ image = cv::imread(default_inputs[0],
+ CV_LOAD_IMAGE_COLOR);
+ else
+ image = cv::imread(opts.input_file, CV_LOAD_IMAGE_COLOR);
+ if (image.empty())
+ {
+ cerr << "Unable to read input image" << endl;
+ return false;
+ }
+ }
+ else
+ {
+ Mat v_image;
+ if (! cap.grab()) return false;
+ if (! cap.retrieve(v_image)) return false;
+ int orig_width = v_image.cols;
+ int orig_height = v_image.rows;
+ // Crop camera/video input to center 256x256 input
+ if (orig_width > 256 && orig_height > 256)
+ {
+ image = Mat(v_image, Rect((orig_width-256)/2, (orig_height-256)/2,
+ 256, 256));
+ }
+ else
+ image = v_image;
+ cv::imshow("ImageNet", image);
+ waitKey(2);
+ }
+
+ // TI DL image preprocessing, into frame_buffer
+ bool status = imgutil::PreprocessImage(image, frame_buffer, c);
+ std::vector<float *> in_data_v{inputs[0]};
+ in_conv.ScaleDequant((const uint8_t *)frame_buffer, in_data_v);
+ delete [] frame_buffer;
+ return status;
+}
+
+// Display top 5 classified imagenet classes with probabilities 5% or higher
+bool WriteFrameOutput(float *out, const cmdline_opts_t& opts)
+{
+ const int k = 5;
+ int out_size = 1001;
+ // Tensorflow trained network outputs 1001 probabilities,
+ // with 0-index being background, thus we need to subtract 1 when
+ // reporting classified object from 1000 categories
+ int background_offset = out_size == 1001 ? 1 : 0;
+
+ // sort and get k largest values and corresponding indices
+ typedef pair<float, int> val_index;
+ auto cmp = [](val_index &left, val_index &right)
+ { return left.first > right.first; };
+ priority_queue<val_index, vector<val_index>, decltype(cmp)> queue(cmp);
+ // initialize priority queue with smallest value on top
+ for (int i = 0; i < k; i++)
+ queue.push(val_index(out[i], i));
+
+ // for rest output, if larger than current min, pop min, push new val
+ for (int i = k; i < out_size; i++)
+ {
+ if (out[i] > queue.top().first)
+ {
+ queue.pop();
+ queue.push(val_index(out[i], i));
+ }
+ }
+
+ // output top k values in reverse order: largest val first
+ vector<val_index> sorted;
+ while (! queue.empty())
+ {
+ sorted.push_back(queue.top());
+ queue.pop();
+ }
+
+ for (int i = k - 1; i >= 0; i--)
+ {
+ if (sorted[i].first * 100 < opts.output_prob_threshold) break;
+ int imagenet_index = sorted[i].second - background_offset;
+ cout << k-i << ": [" << imagenet_index << "] "
+ << object_classes->At(imagenet_index).label
+ << ", prob = " << setprecision(4)
+ << (sorted[i].first * 100) << "%" << endl;
+ }
+
+ return true;
+}
+
+void DisplayHelp()
+{
+ cout <<
+ "Usage: imagenet\n"
+ " Will run imagenet network to predict top 5 object"
+ " classes for the input.\n Use -c to run a"
+ " different imagenet network. Default is j11_v2.\n"
+ "Optional arguments:\n"
+ " -c <config> Valid configs: j11_bn, j11_prelu, j11_v2\n"
+ " -d <number> Number of dsp cores to use\n"
+ " -e <number> Number of eve cores to use\n"
+ " -i <image> Path to the image file as input\n"
+ " -i camera<number> Use camera as input\n"
+ " video input port: /dev/video<number>\n"
+ " -i <name>.{mp4,mov,avi} Use video file as input\n"
+ " -l <objects_list> Path to the object classes list file\n"
+ " -f <number> Number of frames to process\n"
+ " -p <number> Output probablity threshold in percentage\n"
+ " Default is 5 percent or higher.\n"
+ " -v Verbose output during execution\n"
+ " -h Help\n";
+}
+
diff --git a/examples/mobilenet_subgraph/subgraph0.cfg b/examples/mobilenet_subgraph/subgraph0.cfg
--- /dev/null
@@ -0,0 +1,9 @@
+numFrames = 1
+preProcType = 2
+inData = "../test/testvecs/input/preproc_2_224x224.y"
+outData = "./stats_tool_out.bin"
+netBinFile = "../test/testvecs/config/tidl_models/tidl_net_mobilenet_1_224.bin"
+paramsBinFile = "../test/testvecs/config/tidl_models/tidl_param_mobilenet_1_224.bin"
+inWidth = 224
+inHeight = 224
+inNumChannels = 3