Created
September 21, 2020 14:17
-
-
Save vineethm1627/89a2c86bf0e7b34cf7b5db51938678ec to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<h2> Inception Resnet V2 </h2> | |
# define input shape | |
INPUT_SHAPE = (298, 298, 3) | |
# get the Resnet model | |
resnet_layers = tf.keras.applications.InceptionResNetV2(weights='imagenet', include_top=False, | |
input_shape=INPUT_SHAPE) | |
resnet_layers.summary() | |
# Fine-tune all the layers | |
for layer in resnet_layers.layers: | |
layer.trainable = True | |
# define sequential model | |
model = tf.keras.models.Sequential() | |
weight_decay = 0.0005 | |
# Add the vgg convolutional base model | |
model.add(resnet_layers) | |
model.add(Conv2D(512, (3, 3), padding='same', | |
kernel_regularizer=regularizers.l2(weight_decay))) | |
model.add(Activation('relu')) | |
model.add(BatchNormalization()) | |
model.add(Dropout(0.4)) | |
model.add(Conv2D(512, (3, 3), padding='same', | |
kernel_regularizer=regularizers.l2(weight_decay))) | |
model.add(Activation('relu')) | |
model.add(BatchNormalization()) | |
model.add(Dropout(0.4)) | |
model.add(Conv2D(512, (3, 3), padding='same', | |
kernel_regularizer=regularizers.l2(weight_decay))) | |
model.add(Activation('relu')) | |
model.add(BatchNormalization()) | |
model.add(MaxPooling2D(pool_size=(2, 2))) | |
model.add(Dropout(0.5)) | |
model.add(Flatten()) | |
model.add(Dense(512, kernel_regularizer=regularizers.l2(weight_decay))) | |
model.add(Activation('relu')) | |
model.add(BatchNormalization()) | |
model.add(Dropout(0.5)) | |
model.add(Dense(2)) | |
model.add(Activation('softmax')) | |
model.compile(optimizer=tf.keras.optimizers.Adam(learning_rate=2e-5), | |
loss='categorical_crossentropy', | |
metrics=['accuracy']) | |
# view model layers | |
model.summary() | |
es_callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=4, | |
restore_best_weights=True, | |
verbose=1) | |
STEP_SIZE_TRAIN = train_generator.n//train_generator.batch_size | |
STEP_SIZE_VALID = valid_generator.n//valid_generator.batch_size | |
history = model.fit_generator(generator=train_generator, | |
steps_per_epoch=STEP_SIZE_TRAIN, | |
validation_data=valid_generator, | |
callbacks=[es_callback], | |
validation_steps=STEP_SIZE_VALID, | |
epochs=1) | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Load test images from csv file
test_file = pd.read_csv('xyz.csv')
test_file.head()
test_datagen = ImageDataGenerator(rescale=1./255.)
test generator from dataframe
test_generator = test_datagen.flow_from_dataframe(
dataframe=test_file,
directory="face_mask_detection/test",
x_col="filename",
y_col=None,
batch_size=32,
seed=42,
shuffle=False,
class_mode=None,
target_size=(298, 298))
evaluate the model
STEP_SIZE_TEST = test_generator.n//test_generator.batch_size
model.evaluate_generator(generator=valid_generator,
steps=STEP_SIZE_TEST)
test_generator.reset()
Making the model predictions on the testing dataset.
pred = model.predict_generator(test_generator,
steps=STEP_SIZE_TEST,
verbose=1)
predicted_class_indices = np.argmax(pred, axis=1)
labels = (train_generator.class_indices)
labels = dict((v, k) for k, v in labels.items())
predictions = [labels[k] for k in predicted_class_indices]
filenames = test_generator.filenames
results = pd.DataFrame({"Filename": filenames,
"Predictions": predictions})
results.to_csv("results.csv", index=False)