From 8d3789c4ec0b8acc657f3901cc76394651622220 Mon Sep 17 00:00:00 2001 From: Felix Yu Date: Fri, 12 May 2017 16:42:44 +0800 Subject: [PATCH] Initial Commit --- .gitignore | 3 + custom_layers.py | 68 +++ densenet121.py | 171 +++++++ densenet161.py | 171 +++++++ densenet169.py | 171 +++++++ resources/cat.jpg | Bin 0 -> 140391 bytes resources/classes.txt | 1000 +++++++++++++++++++++++++++++++++++++++++ resources/shark.jpg | Bin 0 -> 8689 bytes test_inference.py | 47 ++ 9 files changed, 1631 insertions(+) create mode 100644 custom_layers.py create mode 100644 densenet121.py create mode 100644 densenet161.py create mode 100644 densenet169.py create mode 100644 resources/cat.jpg create mode 100755 resources/classes.txt create mode 100644 resources/shark.jpg create mode 100644 test_inference.py diff --git a/.gitignore b/.gitignore index 72364f9..5dc65d9 100644 --- a/.gitignore +++ b/.gitignore @@ -87,3 +87,6 @@ ENV/ # Rope project settings .ropeproject + +*.pyc +*.swp diff --git a/custom_layers.py b/custom_layers.py new file mode 100644 index 0000000..9038419 --- /dev/null +++ b/custom_layers.py @@ -0,0 +1,68 @@ +from keras import initializations +from keras.engine import Layer, InputSpec + +import keras.backend as K + +class Scale(Layer): + '''Custom Layer for DenseNet used for BatchNormalization. + + Learns a set of weights and biases used for scaling the input data. + the output consists simply in an element-wise multiplication of the input + and a sum of a set of constants: + + out = in * gamma + beta, + + where 'gamma' and 'beta' are the weights and biases larned. + + # Arguments + axis: integer, axis along which to normalize in mode 0. For instance, + if your input tensor has shape (samples, channels, rows, cols), + set axis to 1 to normalize per feature map (channels axis). + momentum: momentum in the computation of the + exponential average of the mean and standard deviation + of the data, for feature-wise normalization. + weights: Initialization weights. + List of 2 Numpy arrays, with shapes: + `[(input_shape,), (input_shape,)]` + beta_init: name of initialization function for shift parameter + (see [initializations](../initializations.md)), or alternatively, + Theano/TensorFlow function to use for weights initialization. + This parameter is only relevant if you don't pass a `weights` argument. + gamma_init: name of initialization function for scale parameter (see + [initializations](../initializations.md)), or alternatively, + Theano/TensorFlow function to use for weights initialization. + This parameter is only relevant if you don't pass a `weights` argument. + ''' + def __init__(self, weights=None, axis=-1, momentum = 0.9, beta_init='zero', gamma_init='one', **kwargs): + self.momentum = momentum + self.axis = axis + self.beta_init = initializations.get(beta_init) + self.gamma_init = initializations.get(gamma_init) + self.initial_weights = weights + super(Scale, self).__init__(**kwargs) + + def build(self, input_shape): + self.input_spec = [InputSpec(shape=input_shape)] + shape = (int(input_shape[self.axis]),) + + self.gamma = self.gamma_init(shape, name='{}_gamma'.format(self.name)) + self.beta = self.beta_init(shape, name='{}_beta'.format(self.name)) + self.trainable_weights = [self.gamma, self.beta] + + if self.initial_weights is not None: + self.set_weights(self.initial_weights) + del self.initial_weights + + def call(self, x, mask=None): + input_shape = self.input_spec[0].shape + broadcast_shape = [1] * len(input_shape) + broadcast_shape[self.axis] = input_shape[self.axis] + + out = K.reshape(self.gamma, broadcast_shape) * x + K.reshape(self.beta, broadcast_shape) + return out + + def get_config(self): + config = {"momentum": self.momentum, "axis": self.axis} + base_config = super(Scale, self).get_config() + return dict(list(base_config.items()) + list(config.items())) + diff --git a/densenet121.py b/densenet121.py new file mode 100644 index 0000000..7973016 --- /dev/null +++ b/densenet121.py @@ -0,0 +1,171 @@ +from keras.models import Model +from keras.layers import Input, merge, ZeroPadding2D +from keras.layers.core import Dense, Dropout, Activation +from keras.layers.convolutional import Convolution2D +from keras.layers.pooling import AveragePooling2D, GlobalAveragePooling2D, MaxPooling2D +from keras.layers.normalization import BatchNormalization +import keras.backend as K + +from custom_layers import Scale + +def DenseNet(nb_dense_block=4, growth_rate=32, nb_filter=64, reduction=0.0, dropout_rate=0.0, weight_decay=1e-4, classes=1000, weights_path=None): + '''Instantiate the DenseNet 121 architecture, + # Arguments + nb_dense_block: number of dense blocks to add to end + growth_rate: number of filters to add per dense block + nb_filter: initial number of filters + reduction: reduction factor of transition blocks. + dropout_rate: dropout rate + weight_decay: weight decay factor + classes: optional number of classes to classify images + weights_path: path to pre-trained weights + # Returns + A Keras model instance. + ''' + eps = 1.1e-5 + + # compute compression factor + compression = 1.0 - reduction + + # Handle Dimension Ordering for different backends + global concat_axis + if K.image_dim_ordering() == 'tf': + concat_axis = 3 + img_input = Input(shape=(224, 224, 3), name='data') + else: + concat_axis = 1 + img_input = Input(shape=(3, 224, 224), name='data') + + # From architecture for ImageNet (Table 1 in the paper) + nb_filter = 64 + nb_layers = [6,12,24,16] # For DenseNet-121 + + # Initial convolution + x = ZeroPadding2D((3, 3), name='conv1_zeropadding')(img_input) + x = Convolution2D(nb_filter, 7, 7, subsample=(2, 2), name='conv1', bias=False)(x) + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv1_bn')(x) + x = Scale(axis=concat_axis, name='conv1_scale')(x) + x = Activation('relu', name='relu1')(x) + x = ZeroPadding2D((1, 1), name='pool1_zeropadding')(x) + x = MaxPooling2D((3, 3), strides=(2, 2), name='pool1')(x) + + # Add dense blocks + for block_idx in range(nb_dense_block - 1): + stage = block_idx+2 + x, nb_filter = dense_block(x, stage, nb_layers[block_idx], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + # Add transition_block + x = transition_block(x, stage, nb_filter, compression=compression, dropout_rate=dropout_rate, weight_decay=weight_decay) + nb_filter = int(nb_filter * compression) + + final_stage = stage + 1 + x, nb_filter = dense_block(x, final_stage, nb_layers[-1], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv'+str(final_stage)+'_blk_bn')(x) + x = Scale(axis=concat_axis, name='conv'+str(final_stage)+'_blk_scale')(x) + x = Activation('relu', name='relu'+str(final_stage)+'_blk')(x) + x = GlobalAveragePooling2D(name='pool'+str(final_stage))(x) + + x = Dense(classes, name='fc6')(x) + x = Activation('softmax', name='prob')(x) + + model = Model(img_input, x, name='densenet') + + if weights_path is not None: + model.load_weights(weights_path) + + return model + + +def conv_block(x, stage, branch, nb_filter, dropout_rate=None, weight_decay=1e-4): + '''Apply BatchNorm, Relu, bottleneck 1x1 Conv2D, 3x3 Conv2D, and option dropout + # Arguments + x: input tensor + stage: index for dense block + branch: layer index within each dense block + nb_filter: number of filters + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_' + str(branch) + relu_name_base = 'relu' + str(stage) + '_' + str(branch) + + # 1x1 Convolution (Bottleneck layer) + inter_channel = nb_filter * 4 + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x1_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x1_scale')(x) + x = Activation('relu', name=relu_name_base+'_x1')(x) + x = Convolution2D(inter_channel, 1, 1, name=conv_name_base+'_x1', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + # 3x3 Convolution + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x2_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x2_scale')(x) + x = Activation('relu', name=relu_name_base+'_x2')(x) + x = ZeroPadding2D((1, 1), name=conv_name_base+'_x2_zeropadding')(x) + x = Convolution2D(nb_filter, 3, 3, name=conv_name_base+'_x2', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + return x + + +def transition_block(x, stage, nb_filter, compression=1.0, dropout_rate=None, weight_decay=1E-4): + ''' Apply BatchNorm, 1x1 Convolution, averagePooling, optional compression, dropout + # Arguments + x: input tensor + stage: index for dense block + nb_filter: number of filters + compression: calculated as 1 - reduction. Reduces the number of feature maps in the transition block. + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_blk' + relu_name_base = 'relu' + str(stage) + '_blk' + pool_name_base = 'pool' + str(stage) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_scale')(x) + x = Activation('relu', name=relu_name_base)(x) + x = Convolution2D(int(nb_filter * compression), 1, 1, name=conv_name_base, bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + x = AveragePooling2D((2, 2), strides=(2, 2), name=pool_name_base)(x) + + return x + + +def dense_block(x, stage, nb_layers, nb_filter, growth_rate, dropout_rate=None, weight_decay=1e-4, grow_nb_filters=True): + ''' Build a dense_block where the output of each conv_block is fed to subsequent ones + # Arguments + x: input tensor + stage: index for dense block + nb_layers: the number of layers of conv_block to append to the model. + nb_filter: number of filters + growth_rate: growth rate + dropout_rate: dropout rate + weight_decay: weight decay factor + grow_nb_filters: flag to decide to allow number of filters to grow + ''' + + eps = 1.1e-5 + concat_feat = x + + for i in range(nb_layers): + branch = i+1 + x = conv_block(concat_feat, stage, branch, growth_rate, dropout_rate, weight_decay) + concat_feat = merge([concat_feat, x], mode='concat', concat_axis=concat_axis, name='concat_'+str(stage)+'_'+str(branch)) + + if grow_nb_filters: + nb_filter += growth_rate + + return concat_feat, nb_filter + diff --git a/densenet161.py b/densenet161.py new file mode 100644 index 0000000..936bfe2 --- /dev/null +++ b/densenet161.py @@ -0,0 +1,171 @@ +from keras.models import Model +from keras.layers import Input, merge, ZeroPadding2D +from keras.layers.core import Dense, Dropout, Activation +from keras.layers.convolutional import Convolution2D +from keras.layers.pooling import AveragePooling2D, GlobalAveragePooling2D, MaxPooling2D +from keras.layers.normalization import BatchNormalization +import keras.backend as K + +from custom_layers import Scale + +def DenseNet(nb_dense_block=4, growth_rate=48, nb_filter=96, reduction=0.0, dropout_rate=0.0, weight_decay=1e-4, classes=1000, weights_path=None): + '''Instantiate the DenseNet 161 architecture, + # Arguments + nb_dense_block: number of dense blocks to add to end + growth_rate: number of filters to add per dense block + nb_filter: initial number of filters + reduction: reduction factor of transition blocks. + dropout_rate: dropout rate + weight_decay: weight decay factor + classes: optional number of classes to classify images + weights_path: path to pre-trained weights + # Returns + A Keras model instance. + ''' + eps = 1.1e-5 + + # compute compression factor + compression = 1.0 - reduction + + # Handle Dimension Ordering for different backends + global concat_axis + if K.image_dim_ordering() == 'tf': + concat_axis = 3 + img_input = Input(shape=(224, 224, 3), name='data') + else: + concat_axis = 1 + img_input = Input(shape=(3, 224, 224), name='data') + + # From architecture for ImageNet (Table 1 in the paper) + nb_filter = 96 + nb_layers = [6,12,36,24] # For DenseNet-161 + + # Initial convolution + x = ZeroPadding2D((3, 3), name='conv1_zeropadding')(img_input) + x = Convolution2D(nb_filter, 7, 7, subsample=(2, 2), name='conv1', bias=False)(x) + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv1_bn')(x) + x = Scale(axis=concat_axis, name='conv1_scale')(x) + x = Activation('relu', name='relu1')(x) + x = ZeroPadding2D((1, 1), name='pool1_zeropadding')(x) + x = MaxPooling2D((3, 3), strides=(2, 2), name='pool1')(x) + + # Add dense blocks + for block_idx in range(nb_dense_block - 1): + stage = block_idx+2 + x, nb_filter = dense_block(x, stage, nb_layers[block_idx], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + # Add transition_block + x = transition_block(x, stage, nb_filter, compression=compression, dropout_rate=dropout_rate, weight_decay=weight_decay) + nb_filter = int(nb_filter * compression) + + final_stage = stage + 1 + x, nb_filter = dense_block(x, final_stage, nb_layers[-1], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv'+str(final_stage)+'_blk_bn')(x) + x = Scale(axis=concat_axis, name='conv'+str(final_stage)+'_blk_scale')(x) + x = Activation('relu', name='relu'+str(final_stage)+'_blk')(x) + x = GlobalAveragePooling2D(name='pool'+str(final_stage))(x) + + x = Dense(classes, name='fc6')(x) + x = Activation('softmax', name='prob')(x) + + model = Model(img_input, x, name='densenet') + + if weights_path is not None: + model.load_weights(weights_path) + + return model + + +def conv_block(x, stage, branch, nb_filter, dropout_rate=None, weight_decay=1e-4): + '''Apply BatchNorm, Relu, bottleneck 1x1 Conv2D, 3x3 Conv2D, and option dropout + # Arguments + x: input tensor + stage: index for dense block + branch: layer index within each dense block + nb_filter: number of filters + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_' + str(branch) + relu_name_base = 'relu' + str(stage) + '_' + str(branch) + + # 1x1 Convolution (Bottleneck layer) + inter_channel = nb_filter * 4 + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x1_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x1_scale')(x) + x = Activation('relu', name=relu_name_base+'_x1')(x) + x = Convolution2D(inter_channel, 1, 1, name=conv_name_base+'_x1', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + # 3x3 Convolution + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x2_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x2_scale')(x) + x = Activation('relu', name=relu_name_base+'_x2')(x) + x = ZeroPadding2D((1, 1), name=conv_name_base+'_x2_zeropadding')(x) + x = Convolution2D(nb_filter, 3, 3, name=conv_name_base+'_x2', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + return x + + +def transition_block(x, stage, nb_filter, compression=1.0, dropout_rate=None, weight_decay=1E-4): + ''' Apply BatchNorm, 1x1 Convolution, averagePooling, optional compression, dropout + # Arguments + x: input tensor + stage: index for dense block + nb_filter: number of filters + compression: calculated as 1 - reduction. Reduces the number of feature maps in the transition block. + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_blk' + relu_name_base = 'relu' + str(stage) + '_blk' + pool_name_base = 'pool' + str(stage) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_scale')(x) + x = Activation('relu', name=relu_name_base)(x) + x = Convolution2D(int(nb_filter * compression), 1, 1, name=conv_name_base, bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + x = AveragePooling2D((2, 2), strides=(2, 2), name=pool_name_base)(x) + + return x + + +def dense_block(x, stage, nb_layers, nb_filter, growth_rate, dropout_rate=None, weight_decay=1e-4, grow_nb_filters=True): + ''' Build a dense_block where the output of each conv_block is fed to subsequent ones + # Arguments + x: input tensor + stage: index for dense block + nb_layers: the number of layers of conv_block to append to the model. + nb_filter: number of filters + growth_rate: growth rate + dropout_rate: dropout rate + weight_decay: weight decay factor + grow_nb_filters: flag to decide to allow number of filters to grow + ''' + + eps = 1.1e-5 + concat_feat = x + + for i in range(nb_layers): + branch = i+1 + x = conv_block(concat_feat, stage, branch, growth_rate, dropout_rate, weight_decay) + concat_feat = merge([concat_feat, x], mode='concat', concat_axis=concat_axis, name='concat_'+str(stage)+'_'+str(branch)) + + if grow_nb_filters: + nb_filter += growth_rate + + return concat_feat, nb_filter + diff --git a/densenet169.py b/densenet169.py new file mode 100644 index 0000000..07f0e63 --- /dev/null +++ b/densenet169.py @@ -0,0 +1,171 @@ +from keras.models import Model +from keras.layers import Input, merge, ZeroPadding2D +from keras.layers.core import Dense, Dropout, Activation +from keras.layers.convolutional import Convolution2D +from keras.layers.pooling import AveragePooling2D, GlobalAveragePooling2D, MaxPooling2D +from keras.layers.normalization import BatchNormalization +import keras.backend as K + +from custom_layers import Scale + +def DenseNet(nb_dense_block=4, growth_rate=32, nb_filter=64, reduction=0.0, dropout_rate=0.0, weight_decay=1e-4, classes=1000, weights_path=None): + '''Instantiate the DenseNet architecture, + # Arguments + nb_dense_block: number of dense blocks to add to end + growth_rate: number of filters to add per dense block + nb_filter: initial number of filters + reduction: reduction factor of transition blocks. + dropout_rate: dropout rate + weight_decay: weight decay factor + classes: optional number of classes to classify images + weights_path: path to pre-trained weights + # Returns + A Keras model instance. + ''' + eps = 1.1e-5 + + # compute compression factor + compression = 1.0 - reduction + + # Handle Dimension Ordering for different backends + global concat_axis + if K.image_dim_ordering() == 'tf': + concat_axis = 3 + img_input = Input(shape=(224, 224, 3), name='data') + else: + concat_axis = 1 + img_input = Input(shape=(3, 224, 224), name='data') + + # From architecture for ImageNet (Table 1 in the paper) + nb_filter = 64 + nb_layers = [6,12,32,32] # For DenseNet-169 + + # Initial convolution + x = ZeroPadding2D((3, 3), name='conv1_zeropadding')(img_input) + x = Convolution2D(nb_filter, 7, 7, subsample=(2, 2), name='conv1', bias=False)(x) + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv1_bn')(x) + x = Scale(axis=concat_axis, name='conv1_scale')(x) + x = Activation('relu', name='relu1')(x) + x = ZeroPadding2D((1, 1), name='pool1_zeropadding')(x) + x = MaxPooling2D((3, 3), strides=(2, 2), name='pool1')(x) + + # Add dense blocks + for block_idx in range(nb_dense_block - 1): + stage = block_idx+2 + x, nb_filter = dense_block(x, stage, nb_layers[block_idx], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + # Add transition_block + x = transition_block(x, stage, nb_filter, compression=compression, dropout_rate=dropout_rate, weight_decay=weight_decay) + nb_filter = int(nb_filter * compression) + + final_stage = stage + 1 + x, nb_filter = dense_block(x, final_stage, nb_layers[-1], nb_filter, growth_rate, dropout_rate=dropout_rate, weight_decay=weight_decay) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name='conv'+str(final_stage)+'_blk_bn')(x) + x = Scale(axis=concat_axis, name='conv'+str(final_stage)+'_blk_scale')(x) + x = Activation('relu', name='relu'+str(final_stage)+'_blk')(x) + x = GlobalAveragePooling2D(name='pool'+str(final_stage))(x) + + x = Dense(classes, name='fc6')(x) + x = Activation('softmax', name='prob')(x) + + model = Model(img_input, x, name='densenet') + + if weights_path is not None: + model.load_weights(weights_path) + + return model + + +def conv_block(x, stage, branch, nb_filter, dropout_rate=None, weight_decay=1e-4): + '''Apply BatchNorm, Relu, bottleneck 1x1 Conv2D, 3x3 Conv2D, and option dropout + # Arguments + x: input tensor + stage: index for dense block + branch: layer index within each dense block + nb_filter: number of filters + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_' + str(branch) + relu_name_base = 'relu' + str(stage) + '_' + str(branch) + + # 1x1 Convolution (Bottleneck layer) + inter_channel = nb_filter * 4 + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x1_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x1_scale')(x) + x = Activation('relu', name=relu_name_base+'_x1')(x) + x = Convolution2D(inter_channel, 1, 1, name=conv_name_base+'_x1', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + # 3x3 Convolution + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_x2_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_x2_scale')(x) + x = Activation('relu', name=relu_name_base+'_x2')(x) + x = ZeroPadding2D((1, 1), name=conv_name_base+'_x2_zeropadding')(x) + x = Convolution2D(nb_filter, 3, 3, name=conv_name_base+'_x2', bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + return x + + +def transition_block(x, stage, nb_filter, compression=1.0, dropout_rate=None, weight_decay=1E-4): + ''' Apply BatchNorm, 1x1 Convolution, averagePooling, optional compression, dropout + # Arguments + x: input tensor + stage: index for dense block + nb_filter: number of filters + compression: calculated as 1 - reduction. Reduces the number of feature maps in the transition block. + dropout_rate: dropout rate + weight_decay: weight decay factor + ''' + + eps = 1.1e-5 + conv_name_base = 'conv' + str(stage) + '_blk' + relu_name_base = 'relu' + str(stage) + '_blk' + pool_name_base = 'pool' + str(stage) + + x = BatchNormalization(epsilon=eps, axis=concat_axis, name=conv_name_base+'_bn')(x) + x = Scale(axis=concat_axis, name=conv_name_base+'_scale')(x) + x = Activation('relu', name=relu_name_base)(x) + x = Convolution2D(int(nb_filter * compression), 1, 1, name=conv_name_base, bias=False)(x) + + if dropout_rate: + x = Dropout(dropout_rate)(x) + + x = AveragePooling2D((2, 2), strides=(2, 2), name=pool_name_base)(x) + + return x + + +def dense_block(x, stage, nb_layers, nb_filter, growth_rate, dropout_rate=None, weight_decay=1e-4, grow_nb_filters=True): + ''' Build a dense_block where the output of each conv_block is fed to subsequent ones + # Arguments + x: input tensor + stage: index for dense block + nb_layers: the number of layers of conv_block to append to the model. + nb_filter: number of filters + growth_rate: growth rate + dropout_rate: dropout rate + weight_decay: weight decay factor + grow_nb_filters: flag to decide to allow number of filters to grow + ''' + + eps = 1.1e-5 + concat_feat = x + + for i in range(nb_layers): + branch = i+1 + x = conv_block(concat_feat, stage, branch, growth_rate, dropout_rate, weight_decay) + concat_feat = merge([concat_feat, x], mode='concat', concat_axis=concat_axis, name='concat_'+str(stage)+'_'+str(branch)) + + if grow_nb_filters: + nb_filter += growth_rate + + return concat_feat, nb_filter + diff --git a/resources/cat.jpg b/resources/cat.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b4efc6c98b7e7bed698b10f4b7f06031267d52dd GIT binary patch literal 140391 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�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 literal 0 HcmV?d00001 diff --git a/resources/classes.txt b/resources/classes.txt new file mode 100755 index 0000000..a9e8c7f --- /dev/null +++ b/resources/classes.txt @@ -0,0 +1,1000 @@ +n01440764 tench, Tinca tinca +n01443537 goldfish, Carassius auratus +n01484850 great white shark, white shark, man-eater, man-eating shark, Carcharodon carcharias +n01491361 tiger shark, Galeocerdo cuvieri +n01494475 hammerhead, hammerhead shark +n01496331 electric ray, crampfish, numbfish, torpedo +n01498041 stingray +n01514668 cock +n01514859 hen +n01518878 ostrich, Struthio camelus +n01530575 brambling, Fringilla montifringilla +n01531178 goldfinch, Carduelis carduelis +n01532829 house finch, linnet, Carpodacus mexicanus +n01534433 junco, snowbird +n01537544 indigo bunting, indigo finch, indigo bird, Passerina cyanea +n01558993 robin, American robin, Turdus migratorius +n01560419 bulbul +n01580077 jay +n01582220 magpie +n01592084 chickadee +n01601694 water ouzel, dipper +n01608432 kite +n01614925 bald eagle, American eagle, Haliaeetus leucocephalus +n01616318 vulture +n01622779 great grey owl, great gray owl, Strix nebulosa +n01629819 European fire salamander, Salamandra salamandra +n01630670 common newt, Triturus vulgaris +n01631663 eft +n01632458 spotted salamander, Ambystoma maculatum +n01632777 axolotl, mud puppy, Ambystoma mexicanum +n01641577 bullfrog, Rana catesbeiana +n01644373 tree frog, tree-frog +n01644900 tailed frog, bell toad, ribbed toad, tailed toad, Ascaphus trui +n01664065 loggerhead, loggerhead turtle, Caretta caretta +n01665541 leatherback turtle, leatherback, leathery turtle, Dermochelys coriacea +n01667114 mud turtle +n01667778 terrapin +n01669191 box turtle, box tortoise +n01675722 banded gecko +n01677366 common iguana, iguana, Iguana iguana +n01682714 American chameleon, anole, Anolis carolinensis +n01685808 whiptail, whiptail lizard +n01687978 agama +n01688243 frilled lizard, Chlamydosaurus kingi +n01689811 alligator lizard +n01692333 Gila monster, Heloderma suspectum +n01693334 green lizard, Lacerta viridis +n01694178 African chameleon, Chamaeleo chamaeleon +n01695060 Komodo dragon, Komodo lizard, dragon lizard, giant lizard, Varanus komodoensis +n01697457 African crocodile, Nile crocodile, Crocodylus niloticus +n01698640 American alligator, Alligator mississipiensis +n01704323 triceratops +n01728572 thunder snake, worm snake, Carphophis amoenus +n01728920 ringneck snake, ring-necked snake, ring snake +n01729322 hognose snake, puff adder, sand viper +n01729977 green snake, grass snake +n01734418 king snake, kingsnake +n01735189 garter snake, grass snake +n01737021 water snake +n01739381 vine snake +n01740131 night snake, Hypsiglena torquata +n01742172 boa constrictor, Constrictor constrictor +n01744401 rock python, rock snake, Python sebae +n01748264 Indian cobra, Naja naja +n01749939 green mamba +n01751748 sea snake +n01753488 horned viper, cerastes, sand viper, horned asp, Cerastes cornutus +n01755581 diamondback, diamondback rattlesnake, Crotalus adamanteus +n01756291 sidewinder, horned rattlesnake, Crotalus cerastes +n01768244 trilobite +n01770081 harvestman, daddy longlegs, Phalangium opilio +n01770393 scorpion +n01773157 black and gold garden spider, Argiope aurantia +n01773549 barn spider, Araneus cavaticus +n01773797 garden spider, Aranea diademata +n01774384 black widow, Latrodectus mactans +n01774750 tarantula +n01775062 wolf spider, hunting spider +n01776313 tick +n01784675 centipede +n01795545 black grouse +n01796340 ptarmigan +n01797886 ruffed grouse, partridge, Bonasa umbellus +n01798484 prairie chicken, prairie grouse, prairie fowl +n01806143 peacock +n01806567 quail +n01807496 partridge +n01817953 African grey, African gray, Psittacus erithacus +n01818515 macaw +n01819313 sulphur-crested cockatoo, Kakatoe galerita, Cacatua galerita +n01820546 lorikeet +n01824575 coucal +n01828970 bee eater +n01829413 hornbill +n01833805 hummingbird +n01843065 jacamar +n01843383 toucan +n01847000 drake +n01855032 red-breasted merganser, Mergus serrator +n01855672 goose +n01860187 black swan, Cygnus atratus +n01871265 tusker +n01872401 echidna, spiny anteater, anteater +n01873310 platypus, duckbill, duckbilled platypus, duck-billed platypus, Ornithorhynchus anatinus +n01877812 wallaby, brush kangaroo +n01882714 koala, koala bear, kangaroo bear, native bear, Phascolarctos cinereus +n01883070 wombat +n01910747 jellyfish +n01914609 sea anemone, anemone +n01917289 brain coral +n01924916 flatworm, platyhelminth +n01930112 nematode, nematode worm, roundworm +n01943899 conch +n01944390 snail +n01945685 slug +n01950731 sea slug, nudibranch +n01955084 chiton, coat-of-mail shell, sea cradle, polyplacophore +n01968897 chambered nautilus, pearly nautilus, nautilus +n01978287 Dungeness crab, Cancer magister +n01978455 rock crab, Cancer irroratus +n01980166 fiddler crab +n01981276 king crab, Alaska crab, Alaskan king crab, Alaska king crab, Paralithodes camtschatica +n01983481 American lobster, Northern lobster, Maine lobster, Homarus americanus +n01984695 spiny lobster, langouste, rock lobster, crawfish, crayfish, sea crawfish +n01985128 crayfish, crawfish, crawdad, crawdaddy +n01986214 hermit crab +n01990800 isopod +n02002556 white stork, Ciconia ciconia +n02002724 black stork, Ciconia nigra +n02006656 spoonbill +n02007558 flamingo +n02009229 little blue heron, Egretta caerulea +n02009912 American egret, great white heron, Egretta albus +n02011460 bittern +n02012849 crane +n02013706 limpkin, Aramus pictus +n02017213 European gallinule, Porphyrio porphyrio +n02018207 American coot, marsh hen, mud hen, water hen, Fulica americana +n02018795 bustard +n02025239 ruddy turnstone, Arenaria interpres +n02027492 red-backed sandpiper, dunlin, Erolia alpina +n02028035 redshank, Tringa totanus +n02033041 dowitcher +n02037110 oystercatcher, oyster catcher +n02051845 pelican +n02056570 king penguin, Aptenodytes patagonica +n02058221 albatross, mollymawk +n02066245 grey whale, gray whale, devilfish, Eschrichtius gibbosus, Eschrichtius robustus +n02071294 killer whale, killer, orca, grampus, sea wolf, Orcinus orca +n02074367 dugong, Dugong dugon +n02077923 sea lion +n02085620 Chihuahua +n02085782 Japanese spaniel +n02085936 Maltese dog, Maltese terrier, Maltese +n02086079 Pekinese, Pekingese, Peke +n02086240 Shih-Tzu +n02086646 Blenheim spaniel +n02086910 papillon +n02087046 toy terrier +n02087394 Rhodesian ridgeback +n02088094 Afghan hound, Afghan +n02088238 basset, basset hound +n02088364 beagle +n02088466 bloodhound, sleuthhound +n02088632 bluetick +n02089078 black-and-tan coonhound +n02089867 Walker hound, Walker foxhound +n02089973 English foxhound +n02090379 redbone +n02090622 borzoi, Russian wolfhound +n02090721 Irish wolfhound +n02091032 Italian greyhound +n02091134 whippet +n02091244 Ibizan hound, Ibizan Podenco +n02091467 Norwegian elkhound, elkhound +n02091635 otterhound, otter hound +n02091831 Saluki, gazelle hound +n02092002 Scottish deerhound, deerhound +n02092339 Weimaraner +n02093256 Staffordshire bullterrier, Staffordshire bull terrier +n02093428 American Staffordshire terrier, Staffordshire terrier, American pit bull terrier, pit bull terrier +n02093647 Bedlington terrier +n02093754 Border terrier +n02093859 Kerry blue terrier +n02093991 Irish terrier +n02094114 Norfolk terrier +n02094258 Norwich terrier +n02094433 Yorkshire terrier +n02095314 wire-haired fox terrier +n02095570 Lakeland terrier +n02095889 Sealyham terrier, Sealyham +n02096051 Airedale, Airedale terrier +n02096177 cairn, cairn terrier +n02096294 Australian terrier +n02096437 Dandie Dinmont, Dandie Dinmont terrier +n02096585 Boston bull, Boston terrier +n02097047 miniature schnauzer +n02097130 giant schnauzer +n02097209 standard schnauzer +n02097298 Scotch terrier, Scottish terrier, Scottie +n02097474 Tibetan terrier, chrysanthemum dog +n02097658 silky terrier, Sydney silky +n02098105 soft-coated wheaten terrier +n02098286 West Highland white terrier +n02098413 Lhasa, Lhasa apso +n02099267 flat-coated retriever +n02099429 curly-coated retriever +n02099601 golden retriever +n02099712 Labrador retriever +n02099849 Chesapeake Bay retriever +n02100236 German short-haired pointer +n02100583 vizsla, Hungarian pointer +n02100735 English setter +n02100877 Irish setter, red setter +n02101006 Gordon setter +n02101388 Brittany spaniel +n02101556 clumber, clumber spaniel +n02102040 English springer, English springer spaniel +n02102177 Welsh springer spaniel +n02102318 cocker spaniel, English cocker spaniel, cocker +n02102480 Sussex spaniel +n02102973 Irish water spaniel +n02104029 kuvasz +n02104365 schipperke +n02105056 groenendael +n02105162 malinois +n02105251 briard +n02105412 kelpie +n02105505 komondor +n02105641 Old English sheepdog, bobtail +n02105855 Shetland sheepdog, Shetland sheep dog, Shetland +n02106030 collie +n02106166 Border collie +n02106382 Bouvier des Flandres, Bouviers des Flandres +n02106550 Rottweiler +n02106662 German shepherd, German shepherd dog, German police dog, alsatian +n02107142 Doberman, Doberman pinscher +n02107312 miniature pinscher +n02107574 Greater Swiss Mountain dog +n02107683 Bernese mountain dog +n02107908 Appenzeller +n02108000 EntleBucher +n02108089 boxer +n02108422 bull mastiff +n02108551 Tibetan mastiff +n02108915 French bulldog +n02109047 Great Dane +n02109525 Saint Bernard, St Bernard +n02109961 Eskimo dog, husky +n02110063 malamute, malemute, Alaskan malamute +n02110185 Siberian husky +n02110341 dalmatian, coach dog, carriage dog +n02110627 affenpinscher, monkey pinscher, monkey dog +n02110806 basenji +n02110958 pug, pug-dog +n02111129 Leonberg +n02111277 Newfoundland, Newfoundland dog +n02111500 Great Pyrenees +n02111889 Samoyed, Samoyede +n02112018 Pomeranian +n02112137 chow, chow chow +n02112350 keeshond +n02112706 Brabancon griffon +n02113023 Pembroke, Pembroke Welsh corgi +n02113186 Cardigan, Cardigan Welsh corgi +n02113624 toy poodle +n02113712 miniature poodle +n02113799 standard poodle +n02113978 Mexican hairless +n02114367 timber wolf, grey wolf, gray wolf, Canis lupus +n02114548 white wolf, Arctic wolf, Canis lupus tundrarum +n02114712 red wolf, maned wolf, Canis rufus, Canis niger +n02114855 coyote, prairie wolf, brush wolf, Canis latrans +n02115641 dingo, warrigal, warragal, Canis dingo +n02115913 dhole, Cuon alpinus +n02116738 African hunting dog, hyena dog, Cape hunting dog, Lycaon pictus +n02117135 hyena, hyaena +n02119022 red fox, Vulpes vulpes +n02119789 kit fox, Vulpes macrotis +n02120079 Arctic fox, white fox, Alopex lagopus +n02120505 grey fox, gray fox, Urocyon cinereoargenteus +n02123045 tabby, tabby cat +n02123159 tiger cat +n02123394 Persian cat +n02123597 Siamese cat, Siamese +n02124075 Egyptian cat +n02125311 cougar, puma, catamount, mountain lion, painter, panther, Felis concolor +n02127052 lynx, catamount +n02128385 leopard, Panthera pardus +n02128757 snow leopard, ounce, Panthera uncia +n02128925 jaguar, panther, Panthera onca, Felis onca +n02129165 lion, king of beasts, Panthera leo +n02129604 tiger, Panthera tigris +n02130308 cheetah, chetah, Acinonyx jubatus +n02132136 brown bear, bruin, Ursus arctos +n02133161 American black bear, black bear, Ursus americanus, Euarctos americanus +n02134084 ice bear, polar bear, Ursus Maritimus, Thalarctos maritimus +n02134418 sloth bear, Melursus ursinus, Ursus ursinus +n02137549 mongoose +n02138441 meerkat, mierkat +n02165105 tiger beetle +n02165456 ladybug, ladybeetle, lady beetle, ladybird, ladybird beetle +n02167151 ground beetle, carabid beetle +n02168699 long-horned beetle, longicorn, longicorn beetle +n02169497 leaf beetle, chrysomelid +n02172182 dung beetle +n02174001 rhinoceros beetle +n02177972 weevil +n02190166 fly +n02206856 bee +n02219486 ant, emmet, pismire +n02226429 grasshopper, hopper +n02229544 cricket +n02231487 walking stick, walkingstick, stick insect +n02233338 cockroach, roach +n02236044 mantis, mantid +n02256656 cicada, cicala +n02259212 leafhopper +n02264363 lacewing, lacewing fly +n02268443 dragonfly, darning needle, devil's darning needle, sewing needle, snake feeder, snake doctor, mosquito hawk, skeeter hawk +n02268853 damselfly +n02276258 admiral +n02277742 ringlet, ringlet butterfly +n02279972 monarch, monarch butterfly, milkweed butterfly, Danaus plexippus +n02280649 cabbage butterfly +n02281406 sulphur butterfly, sulfur butterfly +n02281787 lycaenid, lycaenid butterfly +n02317335 starfish, sea star +n02319095 sea urchin +n02321529 sea cucumber, holothurian +n02325366 wood rabbit, cottontail, cottontail rabbit +n02326432 hare +n02328150 Angora, Angora rabbit +n02342885 hamster +n02346627 porcupine, hedgehog +n02356798 fox squirrel, eastern fox squirrel, Sciurus niger +n02361337 marmot +n02363005 beaver +n02364673 guinea pig, Cavia cobaya +n02389026 sorrel +n02391049 zebra +n02395406 hog, pig, grunter, squealer, Sus scrofa +n02396427 wild boar, boar, Sus scrofa +n02397096 warthog +n02398521 hippopotamus, hippo, river horse, Hippopotamus amphibius +n02403003 ox +n02408429 water buffalo, water ox, Asiatic buffalo, Bubalus bubalis +n02410509 bison +n02412080 ram, tup +n02415577 bighorn, bighorn sheep, cimarron, Rocky Mountain bighorn, Rocky Mountain sheep, Ovis canadensis +n02417914 ibex, Capra ibex +n02422106 hartebeest +n02422699 impala, Aepyceros melampus +n02423022 gazelle +n02437312 Arabian camel, dromedary, Camelus dromedarius +n02437616 llama +n02441942 weasel +n02442845 mink +n02443114 polecat, fitch, foulmart, foumart, Mustela putorius +n02443484 black-footed ferret, ferret, Mustela nigripes +n02444819 otter +n02445715 skunk, polecat, wood pussy +n02447366 badger +n02454379 armadillo +n02457408 three-toed sloth, ai, Bradypus tridactylus +n02480495 orangutan, orang, orangutang, Pongo pygmaeus +n02480855 gorilla, Gorilla gorilla +n02481823 chimpanzee, chimp, Pan troglodytes +n02483362 gibbon, Hylobates lar +n02483708 siamang, Hylobates syndactylus, Symphalangus syndactylus +n02484975 guenon, guenon monkey +n02486261 patas, hussar monkey, Erythrocebus patas +n02486410 baboon +n02487347 macaque +n02488291 langur +n02488702 colobus, colobus monkey +n02489166 proboscis monkey, Nasalis larvatus +n02490219 marmoset +n02492035 capuchin, ringtail, Cebus capucinus +n02492660 howler monkey, howler +n02493509 titi, titi monkey +n02493793 spider monkey, Ateles geoffroyi +n02494079 squirrel monkey, Saimiri sciureus +n02497673 Madagascar cat, ring-tailed lemur, Lemur catta +n02500267 indri, indris, Indri indri, Indri brevicaudatus +n02504013 Indian elephant, Elephas maximus +n02504458 African elephant, Loxodonta africana +n02509815 lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens +n02510455 giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca +n02514041 barracouta, snoek +n02526121 eel +n02536864 coho, cohoe, coho salmon, blue jack, silver salmon, Oncorhynchus kisutch +n02606052 rock beauty, Holocanthus tricolor +n02607072 anemone fish +n02640242 sturgeon +n02641379 gar, garfish, garpike, billfish, Lepisosteus osseus +n02643566 lionfish +n02655020 puffer, pufferfish, blowfish, globefish +n02666196 abacus +n02667093 abaya +n02669723 academic gown, academic robe, judge's robe +n02672831 accordion, piano accordion, squeeze box +n02676566 acoustic guitar +n02687172 aircraft carrier, carrier, flattop, attack aircraft carrier +n02690373 airliner +n02692877 airship, dirigible +n02699494 altar +n02701002 ambulance +n02704792 amphibian, amphibious vehicle +n02708093 analog clock +n02727426 apiary, bee house +n02730930 apron +n02747177 ashcan, trash can, garbage can, wastebin, ash bin, ash-bin, ashbin, dustbin, trash barrel, trash bin +n02749479 assault rifle, assault gun +n02769748 backpack, back pack, knapsack, packsack, rucksack, haversack +n02776631 bakery, bakeshop, bakehouse +n02777292 balance beam, beam +n02782093 balloon +n02783161 ballpoint, ballpoint pen, ballpen, Biro +n02786058 Band Aid +n02787622 banjo +n02788148 bannister, banister, balustrade, balusters, handrail +n02790996 barbell +n02791124 barber chair +n02791270 barbershop +n02793495 barn +n02794156 barometer +n02795169 barrel, cask +n02797295 barrow, garden cart, lawn cart, wheelbarrow +n02799071 baseball +n02802426 basketball +n02804414 bassinet +n02804610 bassoon +n02807133 bathing cap, swimming cap +n02808304 bath towel +n02808440 bathtub, bathing tub, bath, tub +n02814533 beach wagon, station wagon, wagon, estate car, beach waggon, station waggon, waggon +n02814860 beacon, lighthouse, beacon light, pharos +n02815834 beaker +n02817516 bearskin, busby, shako +n02823428 beer bottle +n02823750 beer glass +n02825657 bell cote, bell cot +n02834397 bib +n02835271 bicycle-built-for-two, tandem bicycle, tandem +n02837789 bikini, two-piece +n02840245 binder, ring-binder +n02841315 binoculars, field glasses, opera glasses +n02843684 birdhouse +n02859443 boathouse +n02860847 bobsled, bobsleigh, bob +n02865351 bolo tie, bolo, bola tie, bola +n02869837 bonnet, poke bonnet +n02870880 bookcase +n02871525 bookshop, bookstore, bookstall +n02877765 bottlecap +n02879718 bow +n02883205 bow tie, bow-tie, bowtie +n02892201 brass, memorial tablet, plaque +n02892767 brassiere, bra, bandeau +n02894605 breakwater, groin, groyne, mole, bulwark, seawall, jetty +n02895154 breastplate, aegis, egis +n02906734 broom +n02909870 bucket, pail +n02910353 buckle +n02916936 bulletproof vest +n02917067 bullet train, bullet +n02927161 butcher shop, meat market +n02930766 cab, hack, taxi, taxicab +n02939185 caldron, cauldron +n02948072 candle, taper, wax light +n02950826 cannon +n02951358 canoe +n02951585 can opener, tin opener +n02963159 cardigan +n02965783 car mirror +n02966193 carousel, carrousel, merry-go-round, roundabout, whirligig +n02966687 carpenter's kit, tool kit +n02971356 carton +n02974003 car wheel +n02977058 cash machine, cash dispenser, automated teller machine, automatic teller machine, automated teller, automatic teller, ATM +n02978881 cassette +n02979186 cassette player +n02980441 castle +n02981792 catamaran +n02988304 CD player +n02992211 cello, violoncello +n02992529 cellular telephone, cellular phone, cellphone, cell, mobile phone +n02999410 chain +n03000134 chainlink fence +n03000247 chain mail, ring mail, mail, chain armor, chain armour, ring armor, ring armour +n03000684 chain saw, chainsaw +n03014705 chest +n03016953 chiffonier, commode +n03017168 chime, bell, gong +n03018349 china cabinet, china closet +n03026506 Christmas stocking +n03028079 church, church building +n03032252 cinema, movie theater, movie theatre, movie house, picture palace +n03041632 cleaver, meat cleaver, chopper +n03042490 cliff dwelling +n03045698 cloak +n03047690 clog, geta, patten, sabot +n03062245 cocktail shaker +n03063599 coffee mug +n03063689 coffeepot +n03065424 coil, spiral, volute, whorl, helix +n03075370 combination lock +n03085013 computer keyboard, keypad +n03089624 confectionery, confectionary, candy store +n03095699 container ship, containership, container vessel +n03100240 convertible +n03109150 corkscrew, bottle screw +n03110669 cornet, horn, trumpet, trump +n03124043 cowboy boot +n03124170 cowboy hat, ten-gallon hat +n03125729 cradle +n03126707 crane +n03127747 crash helmet +n03127925 crate +n03131574 crib, cot +n03133878 Crock Pot +n03134739 croquet ball +n03141823 crutch +n03146219 cuirass +n03160309 dam, dike, dyke +n03179701 desk +n03180011 desktop computer +n03187595 dial telephone, dial phone +n03188531 diaper, nappy, napkin +n03196217 digital clock +n03197337 digital watch +n03201208 dining table, board +n03207743 dishrag, dishcloth +n03207941 dishwasher, dish washer, dishwashing machine +n03208938 disk brake, disc brake +n03216828 dock, dockage, docking facility +n03218198 dogsled, dog sled, dog sleigh +n03220513 dome +n03223299 doormat, welcome mat +n03240683 drilling platform, offshore rig +n03249569 drum, membranophone, tympan +n03250847 drumstick +n03255030 dumbbell +n03259280 Dutch oven +n03271574 electric fan, blower +n03272010 electric guitar +n03272562 electric locomotive +n03290653 entertainment center +n03291819 envelope +n03297495 espresso maker +n03314780 face powder +n03325584 feather boa, boa +n03337140 file, file cabinet, filing cabinet +n03344393 fireboat +n03345487 fire engine, fire truck +n03347037 fire screen, fireguard +n03355925 flagpole, flagstaff +n03372029 flute, transverse flute +n03376595 folding chair +n03379051 football helmet +n03384352 forklift +n03388043 fountain +n03388183 fountain pen +n03388549 four-poster +n03393912 freight car +n03394916 French horn, horn +n03400231 frying pan, frypan, skillet +n03404251 fur coat +n03417042 garbage truck, dustcart +n03424325 gasmask, respirator, gas helmet +n03425413 gas pump, gasoline pump, petrol pump, island dispenser +n03443371 goblet +n03444034 go-kart +n03445777 golf ball +n03445924 golfcart, golf cart +n03447447 gondola +n03447721 gong, tam-tam +n03450230 gown +n03452741 grand piano, grand +n03457902 greenhouse, nursery, glasshouse +n03459775 grille, radiator grille +n03461385 grocery store, grocery, food market, market +n03467068 guillotine +n03476684 hair slide +n03476991 hair spray +n03478589 half track +n03481172 hammer +n03482405 hamper +n03483316 hand blower, blow dryer, blow drier, hair dryer, hair drier +n03485407 hand-held computer, hand-held microcomputer +n03485794 handkerchief, hankie, hanky, hankey +n03492542 hard disc, hard disk, fixed disk +n03494278 harmonica, mouth organ, harp, mouth harp +n03495258 harp +n03496892 harvester, reaper +n03498962 hatchet +n03527444 holster +n03529860 home theater, home theatre +n03530642 honeycomb +n03532672 hook, claw +n03534580 hoopskirt, crinoline +n03535780 horizontal bar, high bar +n03538406 horse cart, horse-cart +n03544143 hourglass +n03584254 iPod +n03584829 iron, smoothing iron +n03590841 jack-o'-lantern +n03594734 jean, blue jean, denim +n03594945 jeep, landrover +n03595614 jersey, T-shirt, tee shirt +n03598930 jigsaw puzzle +n03599486 jinrikisha, ricksha, rickshaw +n03602883 joystick +n03617480 kimono +n03623198 knee pad +n03627232 knot +n03630383 lab coat, laboratory coat +n03633091 ladle +n03637318 lampshade, lamp shade +n03642806 laptop, laptop computer +n03649909 lawn mower, mower +n03657121 lens cap, lens cover +n03658185 letter opener, paper knife, paperknife +n03661043 library +n03662601 lifeboat +n03666591 lighter, light, igniter, ignitor +n03670208 limousine, limo +n03673027 liner, ocean liner +n03676483 lipstick, lip rouge +n03680355 Loafer +n03690938 lotion +n03691459 loudspeaker, speaker, speaker unit, loudspeaker system, speaker system +n03692522 loupe, jeweler's loupe +n03697007 lumbermill, sawmill +n03706229 magnetic compass +n03709823 mailbag, postbag +n03710193 mailbox, letter box +n03710637 maillot +n03710721 maillot, tank suit +n03717622 manhole cover +n03720891 maraca +n03721384 marimba, xylophone +n03724870 mask +n03729826 matchstick +n03733131 maypole +n03733281 maze, labyrinth +n03733805 measuring cup +n03742115 medicine chest, medicine cabinet +n03743016 megalith, megalithic structure +n03759954 microphone, mike +n03761084 microwave, microwave oven +n03763968 military uniform +n03764736 milk can +n03769881 minibus +n03770439 miniskirt, mini +n03770679 minivan +n03773504 missile +n03775071 mitten +n03775546 mixing bowl +n03776460 mobile home, manufactured home +n03777568 Model T +n03777754 modem +n03781244 monastery +n03782006 monitor +n03785016 moped +n03786901 mortar +n03787032 mortarboard +n03788195 mosque +n03788365 mosquito net +n03791053 motor scooter, scooter +n03792782 mountain bike, all-terrain bike, off-roader +n03792972 mountain tent +n03793489 mouse, computer mouse +n03794056 mousetrap +n03796401 moving van +n03803284 muzzle +n03804744 nail +n03814639 neck brace +n03814906 necklace +n03825788 nipple +n03832673 notebook, notebook computer +n03837869 obelisk +n03838899 oboe, hautboy, hautbois +n03840681 ocarina, sweet potato +n03841143 odometer, hodometer, mileometer, milometer +n03843555 oil filter +n03854065 organ, pipe organ +n03857828 oscilloscope, scope, cathode-ray oscilloscope, CRO +n03866082 overskirt +n03868242 oxcart +n03868863 oxygen mask +n03871628 packet +n03873416 paddle, boat paddle +n03874293 paddlewheel, paddle wheel +n03874599 padlock +n03876231 paintbrush +n03877472 pajama, pyjama, pj's, jammies +n03877845 palace +n03884397 panpipe, pandean pipe, syrinx +n03887697 paper towel +n03888257 parachute, chute +n03888605 parallel bars, bars +n03891251 park bench +n03891332 parking meter +n03895866 passenger car, coach, carriage +n03899768 patio, terrace +n03902125 pay-phone, pay-station +n03903868 pedestal, plinth, footstall +n03908618 pencil box, pencil case +n03908714 pencil sharpener +n03916031 perfume, essence +n03920288 Petri dish +n03924679 photocopier +n03929660 pick, plectrum, plectron +n03929855 pickelhaube +n03930313 picket fence, paling +n03930630 pickup, pickup truck +n03933933 pier +n03935335 piggy bank, penny bank +n03937543 pill bottle +n03938244 pillow +n03942813 ping-pong ball +n03944341 pinwheel +n03947888 pirate, pirate ship +n03950228 pitcher, ewer +n03954731 plane, carpenter's plane, woodworking plane +n03956157 planetarium +n03958227 plastic bag +n03961711 plate rack +n03967562 plow, plough +n03970156 plunger, plumber's helper +n03976467 Polaroid camera, Polaroid Land camera +n03976657 pole +n03977966 police van, police wagon, paddy wagon, patrol wagon, wagon, black Maria +n03980874 poncho +n03982430 pool table, billiard table, snooker table +n03983396 pop bottle, soda bottle +n03991062 pot, flowerpot +n03992509 potter's wheel +n03995372 power drill +n03998194 prayer rug, prayer mat +n04004767 printer +n04005630 prison, prison house +n04008634 projectile, missile +n04009552 projector +n04019541 puck, hockey puck +n04023962 punching bag, punch bag, punching ball, punchball +n04026417 purse +n04033901 quill, quill pen +n04033995 quilt, comforter, comfort, puff +n04037443 racer, race car, racing car +n04039381 racket, racquet +n04040759 radiator +n04041544 radio, wireless +n04044716 radio telescope, radio reflector +n04049303 rain barrel +n04065272 recreational vehicle, RV, R.V. +n04067472 reel +n04069434 reflex camera +n04070727 refrigerator, icebox +n04074963 remote control, remote +n04081281 restaurant, eating house, eating place, eatery +n04086273 revolver, six-gun, six-shooter +n04090263 rifle +n04099969 rocking chair, rocker +n04111531 rotisserie +n04116512 rubber eraser, rubber, pencil eraser +n04118538 rugby ball +n04118776 rule, ruler +n04120489 running shoe +n04125021 safe +n04127249 safety pin +n04131690 saltshaker, salt shaker +n04133789 sandal +n04136333 sarong +n04141076 sax, saxophone +n04141327 scabbard +n04141975 scale, weighing machine +n04146614 school bus +n04147183 schooner +n04149813 scoreboard +n04152593 screen, CRT screen +n04153751 screw +n04154565 screwdriver +n04162706 seat belt, seatbelt +n04179913 sewing machine +n04192698 shield, buckler +n04200800 shoe shop, shoe-shop, shoe store +n04201297 shoji +n04204238 shopping basket +n04204347 shopping cart +n04208210 shovel +n04209133 shower cap +n04209239 shower curtain +n04228054 ski +n04229816 ski mask +n04235860 sleeping bag +n04238763 slide rule, slipstick +n04239074 sliding door +n04243546 slot, one-armed bandit +n04251144 snorkel +n04252077 snowmobile +n04252225 snowplow, snowplough +n04254120 soap dispenser +n04254680 soccer ball +n04254777 sock +n04258138 solar dish, solar collector, solar furnace +n04259630 sombrero +n04263257 soup bowl +n04264628 space bar +n04265275 space heater +n04266014 space shuttle +n04270147 spatula +n04273569 speedboat +n04275548 spider web, spider's web +n04277352 spindle +n04285008 sports car, sport car +n04286575 spotlight, spot +n04296562 stage +n04310018 steam locomotive +n04311004 steel arch bridge +n04311174 steel drum +n04317175 stethoscope +n04325704 stole +n04326547 stone wall +n04328186 stopwatch, stop watch +n04330267 stove +n04332243 strainer +n04335435 streetcar, tram, tramcar, trolley, trolley car +n04336792 stretcher +n04344873 studio couch, day bed +n04346328 stupa, tope +n04347754 submarine, pigboat, sub, U-boat +n04350905 suit, suit of clothes +n04355338 sundial +n04355933 sunglass +n04356056 sunglasses, dark glasses, shades +n04357314 sunscreen, sunblock, sun blocker +n04366367 suspension bridge +n04367480 swab, swob, mop +n04370456 sweatshirt +n04371430 swimming trunks, bathing trunks +n04371774 swing +n04372370 switch, electric switch, electrical switch +n04376876 syringe +n04380533 table lamp +n04389033 tank, army tank, armored combat vehicle, armoured combat vehicle +n04392985 tape player +n04398044 teapot +n04399382 teddy, teddy bear +n04404412 television, television system +n04409515 tennis ball +n04417672 thatch, thatched roof +n04418357 theater curtain, theatre curtain +n04423845 thimble +n04428191 thresher, thrasher, threshing machine +n04429376 throne +n04435653 tile roof +n04442312 toaster +n04443257 tobacco shop, tobacconist shop, tobacconist +n04447861 toilet seat +n04456115 torch +n04458633 totem pole +n04461696 tow truck, tow car, wrecker +n04462240 toyshop +n04465501 tractor +n04467665 trailer truck, tractor trailer, trucking rig, rig, articulated lorry, semi +n04476259 tray +n04479046 trench coat +n04482393 tricycle, trike, velocipede +n04483307 trimaran +n04485082 tripod +n04486054 triumphal arch +n04487081 trolleybus, trolley coach, trackless trolley +n04487394 trombone +n04493381 tub, vat +n04501370 turnstile +n04505470 typewriter keyboard +n04507155 umbrella +n04509417 unicycle, monocycle +n04515003 upright, upright piano +n04517823 vacuum, vacuum cleaner +n04522168 vase +n04523525 vault +n04525038 velvet +n04525305 vending machine +n04532106 vestment +n04532670 viaduct +n04536866 violin, fiddle +n04540053 volleyball +n04542943 waffle iron +n04548280 wall clock +n04548362 wallet, billfold, notecase, pocketbook +n04550184 wardrobe, closet, press +n04552348 warplane, military plane +n04553703 washbasin, handbasin, washbowl, lavabo, wash-hand basin +n04554684 washer, automatic washer, washing machine +n04557648 water bottle +n04560804 water jug +n04562935 water tower +n04579145 whiskey jug +n04579432 whistle +n04584207 wig +n04589890 window screen +n04590129 window shade +n04591157 Windsor tie +n04591713 wine bottle +n04592741 wing +n04596742 wok +n04597913 wooden spoon +n04599235 wool, woolen, woollen +n04604644 worm fence, snake fence, snake-rail fence, Virginia fence +n04606251 wreck +n04612504 yawl +n04613696 yurt +n06359193 web site, website, internet site, site +n06596364 comic book +n06785654 crossword puzzle, crossword +n06794110 street sign +n06874185 traffic light, traffic signal, stoplight +n07248320 book jacket, dust cover, dust jacket, dust wrapper +n07565083 menu +n07579787 plate +n07583066 guacamole +n07584110 consomme +n07590611 hot pot, hotpot +n07613480 trifle +n07614500 ice cream, icecream +n07615774 ice lolly, lolly, lollipop, popsicle +n07684084 French loaf +n07693725 bagel, beigel +n07695742 pretzel +n07697313 cheeseburger +n07697537 hotdog, hot dog, red hot +n07711569 mashed potato +n07714571 head cabbage +n07714990 broccoli +n07715103 cauliflower +n07716358 zucchini, courgette +n07716906 spaghetti squash +n07717410 acorn squash +n07717556 butternut squash +n07718472 cucumber, cuke +n07718747 artichoke, globe artichoke +n07720875 bell pepper +n07730033 cardoon +n07734744 mushroom +n07742313 Granny Smith +n07745940 strawberry +n07747607 orange +n07749582 lemon +n07753113 fig +n07753275 pineapple, ananas +n07753592 banana +n07754684 jackfruit, jak, jack +n07760859 custard apple +n07768694 pomegranate +n07802026 hay +n07831146 carbonara +n07836838 chocolate sauce, chocolate syrup +n07860988 dough +n07871810 meat loaf, meatloaf +n07873807 pizza, pizza pie +n07875152 potpie +n07880968 burrito +n07892512 red wine +n07920052 espresso +n07930864 cup +n07932039 eggnog +n09193705 alp +n09229709 bubble +n09246464 cliff, drop, drop-off +n09256479 coral reef +n09288635 geyser +n09332890 lakeside, lakeshore +n09399592 promontory, headland, head, foreland +n09421951 sandbar, sand bar +n09428293 seashore, coast, seacoast, sea-coast +n09468604 valley, vale +n09472597 volcano +n09835506 ballplayer, baseball player +n10148035 groom, bridegroom +n10565667 scuba diver +n11879895 rapeseed +n11939491 daisy +n12057211 yellow lady's slipper, yellow lady-slipper, Cypripedium calceolus, Cypripedium parviflorum +n12144580 corn +n12267677 acorn +n12620546 hip, rose hip, rosehip +n12768682 buckeye, horse chestnut, conker +n12985857 coral fungus +n12998815 agaric +n13037406 gyromitra +n13040303 stinkhorn, carrion fungus +n13044778 earthstar +n13052670 hen-of-the-woods, hen of the woods, Polyporus frondosus, Grifola frondosa +n13054560 bolete +n13133613 ear, spike, capitulum +n15075141 toilet tissue, toilet paper, bathroom tissue diff --git a/resources/shark.jpg b/resources/shark.jpg new file mode 100644 index 0000000000000000000000000000000000000000..82c94c8169d9aaeee26fac40b8be2b322de5ca3b GIT binary patch literal 8689 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 literal 0 HcmV?d00001 diff --git a/test_inference.py b/test_inference.py new file mode 100644 index 0000000..a342213 --- /dev/null +++ b/test_inference.py @@ -0,0 +1,47 @@ +"""Test ImageNet pretrained DenseNet""" + +import cv2 +import numpy as np +from keras.optimizers import SGD +import keras.backend as K + +# We only test DenseNet-121 in this script for demo purpose +from densenet121 import DenseNet + +im = cv2.resize(cv2.imread('resources/cat.jpg'), (224, 224)).astype(np.float32) +#im = cv2.resize(cv2.imread('shark.jpg'), (224, 224)).astype(np.float32) + +# Subtract mean pixel and multiple by scaling constant +# Reference: https://github.com/shicai/DenseNet-Caffe +im[:,:,0] = (im[:,:,0] - 103.94) * 0.017 +im[:,:,1] = (im[:,:,1] - 116.78) * 0.017 +im[:,:,2] = (im[:,:,2] - 123.68) * 0.017 + +if K.image_dim_ordering() == 'th': + # Transpose image dimensions (Theano uses the channels as the 1st dimension) + im = im.transpose((2,0,1)) + + # Use pre-trained weights for Theano backend + weights_path = 'imagenet_models/densenet121_weights_th.h5' +else: + # Use pre-trained weights for Tensorflow backend + weights_path = 'imagenet_models/densenet121_weights_tf.h5' + +# Insert a new dimension for the batch_size +im = np.expand_dims(im, axis=0) + +# Test pretrained model +model = DenseNet(reduction=0.5, classes=1000, weights_path=weights_path) + +sgd = SGD(lr=1e-2, decay=1e-6, momentum=0.9, nesterov=True) +model.compile(optimizer=sgd, loss='categorical_crossentropy', metrics=['accuracy']) + +out = model.predict(im) + +# Load ImageNet classes file +classes = [] +with open('resources/classes.txt', 'r') as list_: + for line in list_: + classes.append(line.rstrip('\n')) + +print 'Prediction: '+str(classes[np.argmax(out)])