MODEL_PATH = r"C:\NN\Experiments\DropletDetection\2020-01-29 07-55-29 - MediumNet_run2\checkpoint\best_epoch-00023_val-loss-0.01.hdf5" DATA_FOLDER = r"D:\2805 RMED Pre-project Droplet Detection Deep Learning\_Cutout\All" print_gpus() # Load model / modify def model_modifier(m): m.layers[-1].activation = tf.keras.activations.linear # Replace softmax with linear. Somehow required. model = load_model(MODEL_PATH) model.summary() # Load data from tensorflow.keras.preprocessing.image import ImageDataGenerator rescale_gen = ImageDataGenerator(rescale=1. / 255) data_gen = rescale_gen.flow_from_directory(DATA_FOLDER, batch_size=1, class_mode='categorical', target_size=[224, 224]) image, label_one_hot = next(data_gen) loss = lambda output: K.mean(output[:, label_one_hot.argmax()]) X = image # Saliency saliency = Saliency(model, model_modifier) saliency_map = saliency(loss, X, smooth_samples=20) saliency_map = normalize(saliency_map) # plt.figure() # plt.imshow((X[0]*255).astype(np.uint8)) # plt.figure() # plt.imshow(saliency_map[0]) plt.figure()
classifier.add(Dense(units=1, activation='sigmoid')) classifier.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) from tensorflow.keras.preprocessing.image import ImageDataGenerator train_datagen = ImageDataGenerator(rescale=1. / 255, shear_range=0.2, zoom_range=0.2, horizontal_flip=True) test_datagen = ImageDataGenerator(rescale=1. / 255) training_set = train_datagen.flow_from_directory('dataset/training_set', target_size=(64, 64), batch_size=32, class_mode='binary') test_set = test_datagen.flow_from_directory('dataset/test_set', target_size=(64, 64), batch_size=32, class_mode='binary') classifier.fit_generator(training_set, steps_per_epoch=8000 / 32, epochs=50, validation_data=test_set, validation_steps=2000 / 32)
# CREATING THE NEURAL NETWORK AND EMOTION DETECTOR # 0. Importing the necessary libraries import cv2 import numpy as np import tensorflow as tf from tensorflow.keras.preprocessing import image from tensorflow.keras.preprocessing.image import ImageDataGenerator # 1. Preprocessing the images/data train_datagen = ImageDataGenerator(rescale=1. / 255) train_set = train_datagen.flow_from_directory('your_folder_path/data/training', target_size=(48, 48), batch_size=32, color_mode='grayscale', class_mode='categorical') test_datagen = ImageDataGenerator(rescale=1. / 255) test_set = test_datagen.flow_from_directory('your_folder_path/data/testing', target_size=(48, 48), batch_size=32, color_mode='grayscale', class_mode='categorical') # 2. Creating the model cnn = tf.keras.models.Sequential() #layer1 cnn.add( tf.keras.layers.Conv2D(filters=32, kernel_size=3,
rankdir="TB", expand_nested=False, dpi=96, ) train = ImageDataGenerator(rescale=1.0 / 255, rotation_range=40, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.2, zoom_range=0.2, horizontal_flip=True, fill_mode='nearest') train_generator = train.flow_from_directory('./archive/train', batch_size=64, target_size=(48, 48), class_mode='categorical') validation = ImageDataGenerator(rescale=1.0 / 255) validation_generator = validation.flow_from_directory('./archive/test', batch_size=64, target_size=(48, 48), class_mode='categorical') history = model.fit_generator(train_generator, epochs=50, steps_per_epoch=24176 // 64, verbose=1, validation_data=validation_generator, validation_steps=6043 // 64,
shear_range=0.2, zoom_range=0.2, horizontal_flip=True, #vertical_flip=True, width_shift_range=0.1, height_shift_range=0.1, #channel_shift_range=0.1, #brightness_range=[0.1, 10] ) # Note that the validation data should not be augmented! test_datagen = ImageDataGenerator(rescale=1. / 255) train_generator = train_datagen.flow_from_directory(train_dir, target_size=(IMG_WIDTH, IMG_HEIGHT), batch_size=BATCH_SIZE, class_mode='binary') validation_generator = valid_datagen.flow_from_directory( validation_dir, target_size=(IMG_WIDTH, IMG_HEIGHT), batch_size=BATCH_SIZE, class_mode='binary') # Horovod: write logs on worker 0. verbose = 1 if hvd.rank() == 0 else 0 # Horovod: save checkpoints only on worker 0 to prevent other workers from corrupting them. if hvd.rank() == 0: callbacks.append(