123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342 |
- # Copyright (c) 2018, NVIDIA CORPORATION. All rights reserved.
- # Full license terms provided in LICENSE.md file.
- import numpy as np
- import sys
- sys.path.append("third_party/models/research/")
- sys.path.append("third_party/models")
- sys.path.append("third_party/")
- sys.path.append("third_party/models/research/slim/")
- import tensorflow.contrib.slim as tf_slim
- import slim.nets as nets
- import slim.nets.vgg
- import slim.nets.inception
- import slim.nets.resnet_v1
- import slim.nets.resnet_v2
- import slim.nets.mobilenet_v1
- def create_label_map(label_file='data/imagenet_labels_1001.txt'):
- label_map = {}
- with open(label_file, 'r') as f:
- labels = f.readlines()
- for i, label in enumerate(labels):
- label_map[i] = label
- return label_map
-
- IMAGNET2012_LABEL_MAP = create_label_map()
- def preprocess_vgg(image):
- return np.array(image, dtype=np.float32) - np.array([123.68, 116.78, 103.94])
- def postprocess_vgg(output):
- output = output.flatten()
- predictions_top5 = np.argsort(output)[::-1][0:5]
- labels_top5 = [IMAGNET2012_LABEL_MAP[p + 1] for p in predictions_top5]
- return labels_top5
- def preprocess_inception(image):
- return 2.0 * (np.array(image, dtype=np.float32) / 255.0 - 0.5)
- def postprocess_inception(output):
- output = output.flatten()
- predictions_top5 = np.argsort(output)[::-1][0:5]
- labels_top5 = [IMAGNET2012_LABEL_MAP[p] for p in predictions_top5]
- return labels_top5
- def mobilenet_v1_1p0_224(*args, **kwargs):
- kwargs['depth_multiplier'] = 1.0
- return nets.mobilenet_v1.mobilenet_v1(*args, **kwargs)
- def mobilenet_v1_0p5_160(*args, **kwargs):
- kwargs['depth_multiplier'] = 0.5
- return nets.mobilenet_v1.mobilenet_v1(*args, **kwargs)
- def mobilenet_v1_0p25_128(*args, **kwargs):
- kwargs['depth_multiplier'] = 0.25
- return nets.mobilenet_v1.mobilenet_v1(*args, **kwargs)
- CHECKPOINT_DIR = 'data/checkpoints/'
- FROZEN_GRAPHS_DIR = 'data/frozen_graphs/'
- # UFF_DIR = 'data/uff/'
- PLAN_DIR = 'data/plans/'
- NETS = {
- 'vgg_16': {
- 'model': nets.vgg.vgg_16,
- 'arg_scope': nets.vgg.vgg_arg_scope,
- 'num_classes': 1000,
- 'input_name': 'input',
- 'output_names': ['vgg_16/fc8/BiasAdd'],
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'preprocess_fn': preprocess_vgg,
- 'postprocess_fn': postprocess_vgg,
- 'checkpoint_filename': CHECKPOINT_DIR + 'vgg_16.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'vgg_16.pb',
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'vgg_16.plan'
- },
- 'vgg_19': {
- 'model': nets.vgg.vgg_19,
- 'arg_scope': nets.vgg.vgg_arg_scope,
- 'num_classes': 1000,
- 'input_name': 'input',
- 'output_names': ['vgg_19/fc8/BiasAdd'],
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'preprocess_fn': preprocess_vgg,
- 'postprocess_fn': postprocess_vgg,
- 'checkpoint_filename': CHECKPOINT_DIR + 'vgg_19.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'vgg_19.pb',
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'vgg_19.plan',
- 'exclude': True
- },
- 'inception_v1': {
- 'model': nets.inception.inception_v1,
- 'arg_scope': nets.inception.inception_v1_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['InceptionV1/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'inception_v1.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'inception_v1.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'inception_v1.plan'
- },
- 'inception_v2': {
- 'model': nets.inception.inception_v2,
- 'arg_scope': nets.inception.inception_v2_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['InceptionV2/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'inception_v2.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'inception_v2.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'trt_convert_status': "bad results",
- 'plan_filename': PLAN_DIR + 'inception_v2.plan'
- },
- 'inception_v3': {
- 'model': nets.inception.inception_v3,
- 'arg_scope': nets.inception.inception_v3_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['InceptionV3/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'inception_v3.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'inception_v3.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'inception_v3.plan'
- },
- 'inception_v4': {
- 'model': nets.inception.inception_v4,
- 'arg_scope': nets.inception.inception_v4_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['InceptionV4/Logits/Logits/BiasAdd'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'inception_v4.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'inception_v4.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'inception_v4.plan'
- },
-
- 'inception_resnet_v2': {
- 'model': nets.inception.inception_resnet_v2,
- 'arg_scope': nets.inception.inception_resnet_v2_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['InceptionResnetV2/Logits/Logits/BiasAdd'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'inception_resnet_v2_2016_08_30.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'inception_resnet_v2.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'trt_convert_status': "works",
- 'plan_filename': PLAN_DIR + 'inception_resnet_v2.plan'
- },
- 'resnet_v1_50': {
- 'model': nets.resnet_v1.resnet_v1_50,
- 'arg_scope': nets.resnet_v1.resnet_arg_scope,
- 'num_classes': 1000,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['resnet_v1_50/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v1_50.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v1_50.pb',
- 'preprocess_fn': preprocess_vgg,
- 'postprocess_fn': postprocess_vgg,
- 'plan_filename': PLAN_DIR + 'resnet_v1_50.plan'
- },
- 'resnet_v1_101': {
- 'model': nets.resnet_v1.resnet_v1_101,
- 'arg_scope': nets.resnet_v1.resnet_arg_scope,
- 'num_classes': 1000,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['resnet_v1_101/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v1_101.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v1_101.pb',
- 'preprocess_fn': preprocess_vgg,
- 'postprocess_fn': postprocess_vgg,
- 'plan_filename': PLAN_DIR + 'resnet_v1_101.plan'
- },
- 'resnet_v1_152': {
- 'model': nets.resnet_v1.resnet_v1_152,
- 'arg_scope': nets.resnet_v1.resnet_arg_scope,
- 'num_classes': 1000,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['resnet_v1_152/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v1_152.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v1_152.pb',
- 'preprocess_fn': preprocess_vgg,
- 'postprocess_fn': postprocess_vgg,
- 'plan_filename': PLAN_DIR + 'resnet_v1_152.plan'
- },
- 'resnet_v2_50': {
- 'model': nets.resnet_v2.resnet_v2_50,
- 'arg_scope': nets.resnet_v2.resnet_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['resnet_v2_50/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v2_50.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v2_50.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'plan_filename': PLAN_DIR + 'resnet_v2_50.plan'
- },
- 'resnet_v2_101': {
- 'model': nets.resnet_v2.resnet_v2_101,
- 'arg_scope': nets.resnet_v2.resnet_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['resnet_v2_101/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v2_101.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v2_101.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'plan_filename': PLAN_DIR + 'resnet_v2_101.plan'
- },
- 'resnet_v2_152': {
- 'model': nets.resnet_v2.resnet_v2_152,
- 'arg_scope': nets.resnet_v2.resnet_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 299,
- 'input_height': 299,
- 'input_channels': 3,
- 'output_names': ['resnet_v2_152/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR + 'resnet_v2_152.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'resnet_v2_152.pb',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- 'plan_filename': PLAN_DIR + 'resnet_v2_152.plan'
- },
- #'resnet_v2_200': {
- #},
- 'mobilenet_v1_1p0_224': {
- 'model': mobilenet_v1_1p0_224,
- 'arg_scope': nets.mobilenet_v1.mobilenet_v1_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 224,
- 'input_height': 224,
- 'input_channels': 3,
- 'output_names': ['MobilenetV1/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR +
- 'mobilenet_v1_1.0_224.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'mobilenet_v1_1p0_224.pb',
- 'plan_filename': PLAN_DIR + 'mobilenet_v1_1p0_224.plan',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- },
- 'mobilenet_v1_0p5_160': {
- 'model': mobilenet_v1_0p5_160,
- 'arg_scope': nets.mobilenet_v1.mobilenet_v1_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 160,
- 'input_height': 160,
- 'input_channels': 3,
- 'output_names': ['MobilenetV1/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR +
- 'mobilenet_v1_0.50_160.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'mobilenet_v1_0p5_160.pb',
- 'plan_filename': PLAN_DIR + 'mobilenet_v1_0p5_160.plan',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- },
- 'mobilenet_v1_0p25_128': {
- 'model': mobilenet_v1_0p25_128,
- 'arg_scope': nets.mobilenet_v1.mobilenet_v1_arg_scope,
- 'num_classes': 1001,
- 'input_name': 'input',
- 'input_width': 128,
- 'input_height': 128,
- 'input_channels': 3,
- 'output_names': ['MobilenetV1/Logits/SpatialSqueeze'],
- 'checkpoint_filename': CHECKPOINT_DIR +
- 'mobilenet_v1_0.25_128.ckpt',
- 'frozen_graph_filename': FROZEN_GRAPHS_DIR + 'mobilenet_v1_0p25_128.pb',
- 'plan_filename': PLAN_DIR + 'mobilenet_v1_0p25_128.plan',
- 'preprocess_fn': preprocess_inception,
- 'postprocess_fn': postprocess_inception,
- },
- }
|