Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save vineethm1627/89a2c86bf0e7b34cf7b5db51938678ec to your computer and use it in GitHub Desktop.
Save vineethm1627/89a2c86bf0e7b34cf7b5db51938678ec to your computer and use it in GitHub Desktop.
<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)
@vineethm1627
Copy link
Author

vineethm1627 commented Sep 21, 2020

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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment