Exemple #1
0
def save_bottleneck_features():
    model = MobileNet(include_top=False, weights='imagenet', input_shape=(150, 150, 3))
    print('load model ok')
    datagen = ImageDataGenerator(rescale=1. / 255)
 
    # train set image generator
    train_generator = datagen.flow_from_directory(
        '/data/lebron/data/mytrain',
        target_size=(150, 150),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False
    )
 
    # test set image generator
    test_generator = datagen.flow_from_directory(
        '/data/lebron/data/mytest',
        target_size=(150, 150),
        batch_size=batch_size,
        class_mode=None,
        shuffle=False
    )
 
    # load weight
    model.load_weights(WEIGHTS_PATH_NO_TOP)
    print('load weight ok')
    # get bottleneck feature
    bottleneck_features_train = model.predict_generator(train_generator, 10)
    np.save(save_train_path, bottleneck_features_train)
 
    bottleneck_features_validation = model.predict_generator(test_generator, 2)
    np.save(save_test_path, bottleneck_features_validation)
Exemple #2
0
                  include_top=False,
                  weights='imagenet')

# Apply the same prerposessing used in MobileNet net
datagen = ImageDataGenerator(preprocessing_function=preprocess_input)

# data generator for training images
generator = datagen.flow_from_directory(TRAIN_DATA_DIR,
                                        target_size=(IMG_WIDTH, IMG_HEIGHT),
                                        batch_size=1,
                                        class_mode=None,
                                        shuffle=False)

print('Extracting training features with MobileNet:')
bottleneck_features_train = model.predict_generator(generator,
                                                    steps=len(
                                                        generator.filenames),
                                                    verbose=1)

# Save the indices for reference in the prediction step
np.save('class_indices.npy', generator.class_indices)

np.save('bottleneck_features_train.npy', bottleneck_features_train)
np.save('train_labels.npy', generator.classes)

# data generator for validation images
generator = datagen.flow_from_directory(VALIDATION_DATA_DIR,
                                        target_size=(IMG_WIDTH, IMG_HEIGHT),
                                        batch_size=1,
                                        class_mode=None,
                                        shuffle=False)
Exemple #3
0
from keras.applications.mobilenet import MobileNet
from keras.preprocessing.image import load_img, img_to_array, ImageDataGenerator
from keras.layers import Dense, Flatten
from keras.models import Model, load_model
import numpy as np
from sklearn.cluster import KMeans

img_path = './img'
img_data_gen = ImageDataGenerator(rescale=1. / 255)
img_gen = img_data_gen.flow_from_directory(img_path,
                                           target_size=(224, 224),
                                           batch_size=1)

m = MobileNet()
#m = load_model(model_path)

#out = Dense(64, activation='softmax')
#out = out(m.layers[-1].output)
#m2 = Model(m.input, out)
x = m.predict_generator(img_gen, steps=20, verbose=1)

kmeans = KMeans(n_clusters=4)
pred = kmeans.fit_predict(x)
print(pred)
Exemple #4
0
                                               batch_size=BATCH_SIZE,
                                               class_mode='categorical',
                                               subset='training',
                                               shuffle=False)

validate_generator = data_gen.flow_from_directory(dataset_path,
                                                  target_size=(IMAGE_SIZE,
                                                               IMAGE_SIZE),
                                                  batch_size=BATCH_SIZE,
                                                  class_mode='categorical',
                                                  subset='validation',
                                                  shuffle=False)

print(" Extract bottleneck features...")
# Get bottle neck features in numpay arrays from convolution part of model
bottleneck_train_features = mobileNet_model.predict_generator(
    train_generator, len(train_generator), verbose=1)
bottleneck_validate_features = mobileNet_model.predict_generator(
    validate_generator, len(validate_generator), verbose=1)

# Get training labels
print(" Get Labels...")
num_classes = len(train_generator.class_indices)
train_classes = train_generator.classes
train_labels = utils.to_categorical(train_classes, num_classes=num_classes)

num_classes = len(validate_generator.class_indices)
validate_classes = validate_generator.classes
validate_labels = utils.to_categorical(validate_classes,
                                       num_classes=num_classes)

print("Create top layer model...")