Exemplo n.º 1
0
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)
Exemplo n.º 3
0
# 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(