Пример #1
0
    def define(self, optimizer=Adam(lr=config.configured_learning_rate)):
        """Define the model layers
        The defined model should be saved into base class
        """
        self.optimizer = optimizer

        #define the base model based on keras vgg16 model
        keras_model = KerasVGG16(
            weights=config.configured_pretrained_weight,
            include_top=False,  # if config.use_fineturn_model else True, 
            input_tensor=self.get_input_tensor(),
            input_shape=self.get_input_shape(),
            classes=len(config.configured_classes))

        self.set_trainable(keras_model, False)

        self.model_debug(keras_model)

        x = keras_model.output
        x = Flatten()(x)
        x = Dense(4096, activation='elu', name='fc1')(x)
        x = Dropout(0.6)(x)
        x = Dense(self.noveltyDetectionLayerSize,
                  activation='elu',
                  name=self.noveltyDetectionLayerName)(x)
        x = Dropout(0.6)(x)
        predictions = Dense(len(config.configured_classes),
                            activation='softmax',
                            name='predictions')(x)

        self.model = Model(input=keras_model.input, output=predictions)
        """
Пример #2
0
    def _create(self):
        base_model = KerasVGG16(weights='imagenet', include_top=False, input_tensor=self.get_input_tensor())
        self.make_net_layers_non_trainable(base_model)

        x = base_model.output
        x = Flatten()(x)
        x = Dense(4096, activation='elu', name='fc1')(x)
        x = Dropout(0.6)(x)
        x = Dense(self.noveltyDetectionLayerSize, activation='elu', name=self.noveltyDetectionLayerName)(x)
        x = Dropout(0.6)(x)
        predictions = Dense(len(config.classes), activation='softmax', name='predictions')(x)

        self.model = Model(input=base_model.input, output=predictions)
Пример #3
0
    def _create(self):

        base_model = KerasVGG16(weights='imagenet',
                                include_top=False,
                                input_tensor=self.get_input_tensor())
        #base_model = KerasVGG16(weights='imagenet', include_top=False, input_shape=(165, 100, 3))
        self.make_net_layers_non_trainable(base_model)
        x = base_model.output
        print("the vgg16 layers is!!!!!!!!!!!!!!!!!!!!!!!")
        print(base_model.layers[3].output.shape)
        # print(base_model.layers[18].output.shape)
        # print(base_model.layers[19].output.shape)
        x = Flatten()(x)
        x = Dense(4096, activation='elu', name='fc1')(x)
        x = Dropout(0.6)(x)
        feature = Dense(self.noveltyDetectionLayerSize,
                        activation='elu',
                        name=self.noveltyDetectionLayerName)(x)
        x = Dropout(0.6)(feature)
        predictions = Dense(len(config.classes),
                            activation='softmax',
                            name='predictions')(x)
        # print("qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq")
        # print(len(config.classes))
        # self.model = Model(input=base_model.input, output=predictions).save()

        if config.isCenterLoss:
            print(config.isCenterLoss)
            # input_2 chu
            input_target = Input(shape=(None, ))
            #print(input_target)
            centers = Embedding(len(config.classes), 4096)(input_target)
            print('center:', centers)
            #print(centers.ndim)
            # print(centers.shape)
            # print(centers[:, 0])
            # print(centers[:, 1])
            center_loss = Lambda(
                lambda x: K.sum(K.square(x[0] - x[1][:, 0]), 1, keepdims=True),
                name='center_loss')([feature, centers])
            self.center_model = Model(inputs=[base_model.input, input_target],
                                      outputs=[predictions, center_loss])

        elif config.isTripletLoss:
            self.triplet_model = Model(input=base_model.input,
                                       output=[predictions, feature])

        else:
            print(base_model.input)  # tensor("input_1:0")
            self.model = Model(input=base_model.input, output=predictions)
Пример #4
0
    def _create(self):
        # base_model = KerasVGG16(weights='imagenet', include_top=False, input_tensor=self.get_input_tensor())
        # self.make_net_layers_non_trainable(base_model)
        #
        # test1 = base_model.get_layer('block5_conv3').output
        # test1 = Lambda(lambda x: K.permute_dimensions(x, (0, 3, 1, 2)))(test1) #K.permute_dimensions(test1,(0, 3, 1, 2))  # shift to [Batch, Channel, Height, Width] ==> [B,512,28,28]
        # test1 = Lambda(lambda x: K.reshape(x, [-1, 512, 14*14]))(test1)#K.reshape(test1, [-1, 512, 28 * 28])
        # #test1_T = Lambda(lambda x: K.permute_dimensions(test1,[0,2,1]))(test1)
        #
        # x_value = Lambda(lambda x: K.batch_dot(x, K.permute_dimensions(x,[0,2,1])))(test1)
        # x_value = Lambda(lambda x: K.reshape(x, [-1, 512*512]))(x_value) # K.reshape(x_value, [-1, 512 * 512])
        # y_value = Lambda(lambda x: K.sqrt(x + 1e-10))(x_value)  #K.sqrt(x_value + 1e-10)
        # z_value = Lambda(lambda x: K.l2_normalize(x, axis=1))(y_value)#K.l2_normalize(y_value, axis=1)
        #
        # # x = base_model.output
        # # z_value = Flatten()(z_value)
        # x = Dense(128, activation='elu', name='fc1')(z_value)
        # x = Dropout(0.6)(x)
        # x = Dense(self.noveltyDetectionLayerSize, activation='elu', name=self.noveltyDetectionLayerName)(x)
        # x = Dropout(0.6)(x)
        # predictions = Dense(len(config.classes), activation='softmax', name='predictions')(x)
        # self.model = Model(input=base_model.input, output=predictions)
        #self.model.load_weights()
        base_model = KerasVGG16(weights='imagenet',
                                include_top=False,
                                input_tensor=self.get_input_tensor())
        self.make_net_layers_non_trainable(base_model)

        x = base_model.output
        print("the vgg16 layers is!!!!!!!!!!!!!!!!!!!!!!!")
        print(base_model.layers[3].output.shape)
        x = Flatten()(x)
        x = Dense(4096, activation='elu', name='fc1')(x)
        x = Dropout(0.6)(x)
        x = Dense(self.noveltyDetectionLayerSize,
                  activation='elu',
                  name=self.noveltyDetectionLayerName)(x)
        x = Dropout(0.6)(x)
        predictions = Dense(len(config.classes),
                            activation='softmax',
                            name='predictions')(x)

        self.model = Model(input=base_model.input, output=predictions)
        self.model = load_model(
            'C:/Users/Ctbri/Desktop/chenxingli/keras-transfer-learning-for-oxford102/trained/model-vgg16.h5'
        )
Пример #5
0
    def _create(self):
        base_model = KerasVGG16(weights='imagenet', include_top=False, input_tensor=self.get_input_tensor())
        self.make_net_layers_non_trainable(base_model)

        x = base_model.output
        x = Dropout(self.dropout)(x)
        x = Flatten()(x)
        #x = Dense(4096, activation='elu', name='fc1')(x)
        #x = Dense(self.noveltyDetectionLayerSize, activation='elu', name=self.noveltyDetectionLayerName)(x)
        #x = Dropout(0.6)(x)

        if self.run_config.main.classification_type==_config.CLASSIFICATION_TYPE.CLASSIFICATION:
            predictions = Dense(self.run_config.data.nb_classes, activation='softmax', name='predictions')(x)
        elif self.run_config.main.classification_type==_config.CLASSIFICATION_TYPE.REGRESSION:
            predictions = Dense(1, activation='linear', name='regression')(x)
        elif self.run_config.main.classification_type==_config.CLASSIFICATION_TYPE.MULTIPLE_REGRESSION:
            predictions = Dense(self.run_config.data.nb_classes, activation='linear', name='multiple_regression')(x)
        else:
            raise ValueError("Error, unknown classification_type: <%s>" % self.run_config.main.classification_type)

        self.model = Model(input=base_model.input, output=predictions)