Exemplo n.º 1
0
def trainFromScratch_MobileNet():
    from time import time
    from keras.callbacks import TensorBoard
    tensorboard = TensorBoard(log_dir="logs/resnet_CosmeticsBrands/{}".format(
        time()),
                              histogram_freq=0,
                              write_graph=True,
                              write_images=True)

    checkPoint = ModelCheckpoint(filepath='weights/ah_mobile_2cats.h5',
                                 save_best_only=True)

    model = MobileNet(weights="imagenet",
                      include_top=False,
                      input_shape=(image_size, image_size, 3))

    genterator_training = ImageDataGenerator(
        rescale=1. / 255,
        #rotation_range=0.4,
        #shear_range=0.2,
        #zoom_range=0.1,
        #width_shift_range=0.1,
        #height_shift_range=0.1,
        vertical_flip=True,
        horizontal_flip=True)

    augmented_training = genterator_training.flow_from_directory(
        train_data,
        target_size=(image_size, image_size),
        class_mode="categorical",
        shuffle=False,
        batch_size=batch_size)

    generator_test = ImageDataGenerator(rescale=1. / 255)
    augmented_testing = generator_test.flow_from_directory(
        test_data,
        target_size=(image_size, image_size),
        class_mode="categorical",
        batch_size=batch_size,
        shuffle=False)

    #    optimizer_1 = RMSprop(lr=0.0005)
    #    optimizer_2 = Adagrad()
    #    model.compile(optimizer_1, loss='categorical_crossentropy', metrics=["accuracy"])

    training_bottleneck_features = model.predict_generator(
        augmented_training, steps=training_instances // batch_size)
    np.save(open('weights/ah_trainig_bottleneck.npy', 'w'),
            training_bottleneck_features)

    testing_bottleneck_features = model.predict_generator(
        augmented_testing, steps=test_instances // batch_size)
    np.save(open('weights/ah_testing_bottleneck.npy', 'w'),
            testing_bottleneck_features)
Exemplo n.º 2
0
def mobile(X_train, Y_train):
    conv_base = MobileNet(weights='imagenet',
                          include_top=False,
                          input_shape=(128, 128, 3))
    samples_generator = DataGenerator(X_train, Y_train, **params)
    test_features = conv_base.predict_generator(samples_generator,
                                                verbose=True)

    return test_features
Exemplo n.º 3
0
history_list = []
for i in range(len(Train_indices)):
    print(i)
    print('Done1')
    # Need to get the correct samples for the training and val sets
    X_train = [Trainval_ids[j] for j in Train_indices[i]]
    Y_train = [Trainval_labels[j] for j in Train_indices[i]]
    X_val = [Trainval_ids[j] for j in Val_indices[i]]
    Y_val = [Trainval_labels[j] for j in Val_indices[i]]
    print('Done2')

    conv_base = MobileNet(weights='imagenet',
                          include_top=False,
                          input_shape=(128, 128, 3))
    train_generator = DataGenerator(X_train, Y_train, **params)
    X_train = conv_base.predict_generator(train_generator, verbose=True)
    print('Done3')
    val_generator = DataGenerator(X_val, Y_val, **params)
    X_val = conv_base.predict_generator(val_generator, verbose=True)

    Y_train = [Trainval_labels[j] for j in Train_indices[i]]
    Y_val = [Trainval_labels[j] for j in Val_indices[i]]
    # Need to have the same amount of labels as X_train and X_val, as theyre done in batches of 25:
    rem1 = len(Y_train) % 25
    if not rem1 == 0:
        Y_train = Y_train[:-rem1][:]
    rem2 = len(Y_val) % 25
    if not rem2 == 0:
        Y_val = Y_val[:-rem2][:]

    print(X_train.shape)