mirror of
https://github.com/MarcosRodrigoT/ViT-Face-Recognition.git
synced 2025-12-29 23:52:28 +00:00
Added MobileNetV2 model experiments
This commit is contained in:
205
mobilenetV2_train.py
Normal file
205
mobilenetV2_train.py
Normal file
@@ -0,0 +1,205 @@
|
||||
import datetime
|
||||
import tensorflow as tf
|
||||
from tensorflow.keras.layers import GlobalAvgPool2D, Dense
|
||||
from tensorflow.keras.initializers import GlorotUniform
|
||||
from tensorflow.keras.models import Model
|
||||
import matplotlib.pyplot as plt
|
||||
from data_generator import create_data_generators
|
||||
|
||||
|
||||
"""
|
||||
HYPERPARAMETERS
|
||||
"""
|
||||
|
||||
# Distribute training
|
||||
strategy = tf.distribute.MirroredStrategy()
|
||||
|
||||
# Input
|
||||
image_size = 224
|
||||
|
||||
# Hyper-parameters
|
||||
batch_size = 128 * strategy.num_replicas_in_sync
|
||||
num_epochs = 25
|
||||
learning_rate = 0.0001
|
||||
num_classes = 8631
|
||||
|
||||
|
||||
"""
|
||||
DATASET
|
||||
"""
|
||||
|
||||
train_gen, val_gen, test_gen = create_data_generators(target_size=image_size, batch_size=batch_size)
|
||||
|
||||
|
||||
"""
|
||||
MODEL
|
||||
"""
|
||||
|
||||
with strategy.scope():
|
||||
mobilenet_model = tf.keras.applications.MobileNetV2(
|
||||
include_top=False,
|
||||
weights="imagenet",
|
||||
input_shape=(image_size, image_size, 3),
|
||||
pooling=None,
|
||||
)
|
||||
Y = GlobalAvgPool2D()(mobilenet_model.output)
|
||||
Y = Dense(units=num_classes, activation='softmax', kernel_initializer=GlorotUniform())(Y)
|
||||
mobilenet_model = Model(inputs=mobilenet_model.input, outputs=Y, name='MobileNetV2')
|
||||
mobilenet_model.summary(line_length=150)
|
||||
|
||||
|
||||
"""
|
||||
MODEL COMPILE
|
||||
"""
|
||||
|
||||
with strategy.scope():
|
||||
optimizer = tf.keras.optimizers.Adam(learning_rate=learning_rate)
|
||||
mobilenet_model.compile(
|
||||
optimizer=optimizer,
|
||||
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
|
||||
metrics=[
|
||||
tf.keras.metrics.SparseCategoricalAccuracy(name='accuracy'),
|
||||
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=5, name='top-5-accuracy'),
|
||||
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=10, name='top-10-accuracy'),
|
||||
tf.keras.metrics.SparseTopKCategoricalAccuracy(k=100, name='top-100-accuracy'),
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
"""
|
||||
CALLBACKS
|
||||
"""
|
||||
|
||||
# checkpoint callback
|
||||
checkpoint_filepath = "./tmp/checkpoint"
|
||||
checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(
|
||||
filepath=checkpoint_filepath,
|
||||
monitor='val_accuracy',
|
||||
verbose=1,
|
||||
save_best_only=True,
|
||||
save_weights_only=True,
|
||||
mode='max',
|
||||
save_freq='epoch',
|
||||
)
|
||||
|
||||
# csv logger callback
|
||||
csv_filepath = "./tmp/training_log.csv"
|
||||
csv_logger = tf.keras.callbacks.CSVLogger(
|
||||
csv_filepath,
|
||||
separator=',',
|
||||
append=True,
|
||||
)
|
||||
|
||||
# early stopping callback
|
||||
early_stopping = tf.keras.callbacks.EarlyStopping(
|
||||
monitor='val_loss',
|
||||
min_delta=0,
|
||||
patience=7,
|
||||
verbose=0,
|
||||
mode='auto',
|
||||
)
|
||||
|
||||
# tensorboard callback
|
||||
tb_callback = tf.keras.callbacks.TensorBoard(
|
||||
log_dir="./tmp/logs" + datetime.datetime.now().strftime("%d%m%Y-%H%M%S"),
|
||||
histogram_freq=1,
|
||||
write_graph=True,
|
||||
update_freq='epoch',
|
||||
)
|
||||
|
||||
|
||||
"""
|
||||
LOAD PRE-TRAINED MODEL WEIGHTS
|
||||
"""
|
||||
|
||||
# Load pre-trained model weights before training
|
||||
best_weights = "./saved_results/Models/MobileNet_V2/checkpoint"
|
||||
mobilenet_model.load_weights(best_weights)
|
||||
|
||||
|
||||
"""
|
||||
TRAIN THE MODEL
|
||||
"""
|
||||
|
||||
history = mobilenet_model.fit(
|
||||
train_gen,
|
||||
epochs=num_epochs,
|
||||
validation_data=val_gen,
|
||||
callbacks=[
|
||||
checkpoint_callback,
|
||||
csv_logger,
|
||||
early_stopping,
|
||||
tb_callback,
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
"""
|
||||
EVALUATE THE MODEL
|
||||
"""
|
||||
|
||||
# Load best weights seen during training
|
||||
mobilenet_model.load_weights(checkpoint_filepath)
|
||||
|
||||
# Evaluate the model
|
||||
loss, accuracy, top_five_accuracy, top_ten_accuracy, top_hundred_accuracy = mobilenet_model.evaluate(test_gen)
|
||||
accuracy = round(accuracy * 100, 2)
|
||||
top_five_accuracy = round(top_five_accuracy * 100, 2)
|
||||
top_ten_accuracy = round(top_ten_accuracy * 100, 2)
|
||||
top_hundred_accuracy = round(top_hundred_accuracy * 100, 2)
|
||||
print(f"Accuracy on the test set: {accuracy}%.")
|
||||
print(f"Top 5 Accuracy on the test set: {top_five_accuracy}%.")
|
||||
print(f"Top 10 Accuracy on the test set: {top_ten_accuracy}%.")
|
||||
print(f"Top 100 Accuracy on the test set: {top_hundred_accuracy}%.")
|
||||
|
||||
|
||||
"""
|
||||
HISTORY FIGURES
|
||||
"""
|
||||
|
||||
# PLOTS
|
||||
# Accuracy
|
||||
plt.plot(history.history['accuracy'])
|
||||
plt.plot(history.history['val_accuracy'])
|
||||
plt.title('model accuracy')
|
||||
plt.ylabel('accuracy')
|
||||
plt.xlabel('epoch')
|
||||
plt.legend(['train', 'val'], loc='upper left')
|
||||
plt.savefig('./tmp/model accuracy.png')
|
||||
plt.close()
|
||||
# Top 5 accuracy
|
||||
plt.plot(history.history['top-5-accuracy'])
|
||||
plt.plot(history.history['val_top-5-accuracy'])
|
||||
plt.title('model top 5 accuracy')
|
||||
plt.ylabel('top 5 accuracy')
|
||||
plt.xlabel('epoch')
|
||||
plt.legend(['train', 'val'], loc='upper left')
|
||||
plt.savefig('./tmp/model top 5 accuracy.png')
|
||||
plt.close()
|
||||
# Top 10 accuracy
|
||||
plt.plot(history.history['top-10-accuracy'])
|
||||
plt.plot(history.history['val_top-10-accuracy'])
|
||||
plt.title('model top 10 accuracy')
|
||||
plt.ylabel('top 10 accuracy')
|
||||
plt.xlabel('epoch')
|
||||
plt.legend(['train', 'val'], loc='upper left')
|
||||
plt.savefig('./tmp/model top 10 accuracy.png')
|
||||
plt.close()
|
||||
# Top 100 accuracy
|
||||
plt.plot(history.history['top-100-accuracy'])
|
||||
plt.plot(history.history['val_top-100-accuracy'])
|
||||
plt.title('model top 100 accuracy')
|
||||
plt.ylabel('top 100 accuracy')
|
||||
plt.xlabel('epoch')
|
||||
plt.legend(['train', 'val'], loc='upper left')
|
||||
plt.savefig('./tmp/model top 100 accuracy.png')
|
||||
plt.close()
|
||||
# Loss
|
||||
plt.plot(history.history['loss'])
|
||||
plt.plot(history.history['val_loss'])
|
||||
plt.title('model loss')
|
||||
plt.ylabel('loss')
|
||||
plt.xlabel('epoch')
|
||||
plt.legend(['train', 'val'], loc='upper left')
|
||||
plt.savefig('./tmp/model loss.png')
|
||||
plt.close()
|
||||
389
saved_results/Models/MobileNet_V2/history.txt
Normal file
389
saved_results/Models/MobileNet_V2/history.txt
Normal file
@@ -0,0 +1,389 @@
|
||||
[INFO] Num images for train: 2827701 -> train_ds: 2827701
|
||||
[INFO] Num images for validation: 157094 -> val_ds: 157094
|
||||
[INFO] Num images for test: 157094 -> test_ds: 157095
|
||||
Model: "MobileNetV2"
|
||||
______________________________________________________________________________________________________________________________________________________
|
||||
Layer (type) Output Shape Param # Connected to
|
||||
======================================================================================================================================================
|
||||
input_1 (InputLayer) [(None, 224, 224, 3)] 0 []
|
||||
|
||||
Conv1 (Conv2D) (None, 112, 112, 32) 864 ['input_1[0][0]']
|
||||
|
||||
bn_Conv1 (BatchNormalization) (None, 112, 112, 32) 128 ['Conv1[0][0]']
|
||||
|
||||
Conv1_relu (ReLU) (None, 112, 112, 32) 0 ['bn_Conv1[0][0]']
|
||||
|
||||
expanded_conv_depthwise (DepthwiseConv2D) (None, 112, 112, 32) 288 ['Conv1_relu[0][0]']
|
||||
|
||||
expanded_conv_depthwise_BN (BatchNormalization) (None, 112, 112, 32) 128 ['expanded_conv_depthwise[0][0]']
|
||||
|
||||
expanded_conv_depthwise_relu (ReLU) (None, 112, 112, 32) 0 ['expanded_conv_depthwise_BN[0][0]']
|
||||
|
||||
expanded_conv_project (Conv2D) (None, 112, 112, 16) 512 ['expanded_conv_depthwise_relu[0][0]']
|
||||
|
||||
expanded_conv_project_BN (BatchNormalization) (None, 112, 112, 16) 64 ['expanded_conv_project[0][0]']
|
||||
|
||||
block_1_expand (Conv2D) (None, 112, 112, 96) 1536 ['expanded_conv_project_BN[0][0]']
|
||||
|
||||
block_1_expand_BN (BatchNormalization) (None, 112, 112, 96) 384 ['block_1_expand[0][0]']
|
||||
|
||||
block_1_expand_relu (ReLU) (None, 112, 112, 96) 0 ['block_1_expand_BN[0][0]']
|
||||
|
||||
block_1_pad (ZeroPadding2D) (None, 113, 113, 96) 0 ['block_1_expand_relu[0][0]']
|
||||
|
||||
block_1_depthwise (DepthwiseConv2D) (None, 56, 56, 96) 864 ['block_1_pad[0][0]']
|
||||
|
||||
block_1_depthwise_BN (BatchNormalization) (None, 56, 56, 96) 384 ['block_1_depthwise[0][0]']
|
||||
|
||||
block_1_depthwise_relu (ReLU) (None, 56, 56, 96) 0 ['block_1_depthwise_BN[0][0]']
|
||||
|
||||
block_1_project (Conv2D) (None, 56, 56, 24) 2304 ['block_1_depthwise_relu[0][0]']
|
||||
|
||||
block_1_project_BN (BatchNormalization) (None, 56, 56, 24) 96 ['block_1_project[0][0]']
|
||||
|
||||
block_2_expand (Conv2D) (None, 56, 56, 144) 3456 ['block_1_project_BN[0][0]']
|
||||
|
||||
block_2_expand_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_2_expand[0][0]']
|
||||
|
||||
block_2_expand_relu (ReLU) (None, 56, 56, 144) 0 ['block_2_expand_BN[0][0]']
|
||||
|
||||
block_2_depthwise (DepthwiseConv2D) (None, 56, 56, 144) 1296 ['block_2_expand_relu[0][0]']
|
||||
|
||||
block_2_depthwise_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_2_depthwise[0][0]']
|
||||
|
||||
block_2_depthwise_relu (ReLU) (None, 56, 56, 144) 0 ['block_2_depthwise_BN[0][0]']
|
||||
|
||||
block_2_project (Conv2D) (None, 56, 56, 24) 3456 ['block_2_depthwise_relu[0][0]']
|
||||
|
||||
block_2_project_BN (BatchNormalization) (None, 56, 56, 24) 96 ['block_2_project[0][0]']
|
||||
|
||||
block_2_add (Add) (None, 56, 56, 24) 0 ['block_1_project_BN[0][0]',
|
||||
'block_2_project_BN[0][0]']
|
||||
|
||||
block_3_expand (Conv2D) (None, 56, 56, 144) 3456 ['block_2_add[0][0]']
|
||||
|
||||
block_3_expand_BN (BatchNormalization) (None, 56, 56, 144) 576 ['block_3_expand[0][0]']
|
||||
|
||||
block_3_expand_relu (ReLU) (None, 56, 56, 144) 0 ['block_3_expand_BN[0][0]']
|
||||
|
||||
block_3_pad (ZeroPadding2D) (None, 57, 57, 144) 0 ['block_3_expand_relu[0][0]']
|
||||
|
||||
block_3_depthwise (DepthwiseConv2D) (None, 28, 28, 144) 1296 ['block_3_pad[0][0]']
|
||||
|
||||
block_3_depthwise_BN (BatchNormalization) (None, 28, 28, 144) 576 ['block_3_depthwise[0][0]']
|
||||
|
||||
block_3_depthwise_relu (ReLU) (None, 28, 28, 144) 0 ['block_3_depthwise_BN[0][0]']
|
||||
|
||||
block_3_project (Conv2D) (None, 28, 28, 32) 4608 ['block_3_depthwise_relu[0][0]']
|
||||
|
||||
block_3_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_3_project[0][0]']
|
||||
|
||||
block_4_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_3_project_BN[0][0]']
|
||||
|
||||
block_4_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_4_expand[0][0]']
|
||||
|
||||
block_4_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_4_expand_BN[0][0]']
|
||||
|
||||
block_4_depthwise (DepthwiseConv2D) (None, 28, 28, 192) 1728 ['block_4_expand_relu[0][0]']
|
||||
|
||||
block_4_depthwise_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_4_depthwise[0][0]']
|
||||
|
||||
block_4_depthwise_relu (ReLU) (None, 28, 28, 192) 0 ['block_4_depthwise_BN[0][0]']
|
||||
|
||||
block_4_project (Conv2D) (None, 28, 28, 32) 6144 ['block_4_depthwise_relu[0][0]']
|
||||
|
||||
block_4_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_4_project[0][0]']
|
||||
|
||||
block_4_add (Add) (None, 28, 28, 32) 0 ['block_3_project_BN[0][0]',
|
||||
'block_4_project_BN[0][0]']
|
||||
|
||||
block_5_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_4_add[0][0]']
|
||||
|
||||
block_5_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_5_expand[0][0]']
|
||||
|
||||
block_5_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_5_expand_BN[0][0]']
|
||||
|
||||
block_5_depthwise (DepthwiseConv2D) (None, 28, 28, 192) 1728 ['block_5_expand_relu[0][0]']
|
||||
|
||||
block_5_depthwise_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_5_depthwise[0][0]']
|
||||
|
||||
block_5_depthwise_relu (ReLU) (None, 28, 28, 192) 0 ['block_5_depthwise_BN[0][0]']
|
||||
|
||||
block_5_project (Conv2D) (None, 28, 28, 32) 6144 ['block_5_depthwise_relu[0][0]']
|
||||
|
||||
block_5_project_BN (BatchNormalization) (None, 28, 28, 32) 128 ['block_5_project[0][0]']
|
||||
|
||||
block_5_add (Add) (None, 28, 28, 32) 0 ['block_4_add[0][0]',
|
||||
'block_5_project_BN[0][0]']
|
||||
|
||||
block_6_expand (Conv2D) (None, 28, 28, 192) 6144 ['block_5_add[0][0]']
|
||||
|
||||
block_6_expand_BN (BatchNormalization) (None, 28, 28, 192) 768 ['block_6_expand[0][0]']
|
||||
|
||||
block_6_expand_relu (ReLU) (None, 28, 28, 192) 0 ['block_6_expand_BN[0][0]']
|
||||
|
||||
block_6_pad (ZeroPadding2D) (None, 29, 29, 192) 0 ['block_6_expand_relu[0][0]']
|
||||
|
||||
block_6_depthwise (DepthwiseConv2D) (None, 14, 14, 192) 1728 ['block_6_pad[0][0]']
|
||||
|
||||
block_6_depthwise_BN (BatchNormalization) (None, 14, 14, 192) 768 ['block_6_depthwise[0][0]']
|
||||
|
||||
block_6_depthwise_relu (ReLU) (None, 14, 14, 192) 0 ['block_6_depthwise_BN[0][0]']
|
||||
|
||||
block_6_project (Conv2D) (None, 14, 14, 64) 12288 ['block_6_depthwise_relu[0][0]']
|
||||
|
||||
block_6_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_6_project[0][0]']
|
||||
|
||||
block_7_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_6_project_BN[0][0]']
|
||||
|
||||
block_7_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_7_expand[0][0]']
|
||||
|
||||
block_7_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_7_expand_BN[0][0]']
|
||||
|
||||
block_7_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_7_expand_relu[0][0]']
|
||||
|
||||
block_7_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_7_depthwise[0][0]']
|
||||
|
||||
block_7_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_7_depthwise_BN[0][0]']
|
||||
|
||||
block_7_project (Conv2D) (None, 14, 14, 64) 24576 ['block_7_depthwise_relu[0][0]']
|
||||
|
||||
block_7_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_7_project[0][0]']
|
||||
|
||||
block_7_add (Add) (None, 14, 14, 64) 0 ['block_6_project_BN[0][0]',
|
||||
'block_7_project_BN[0][0]']
|
||||
|
||||
block_8_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_7_add[0][0]']
|
||||
|
||||
block_8_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_8_expand[0][0]']
|
||||
|
||||
block_8_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_8_expand_BN[0][0]']
|
||||
|
||||
block_8_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_8_expand_relu[0][0]']
|
||||
|
||||
block_8_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_8_depthwise[0][0]']
|
||||
|
||||
block_8_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_8_depthwise_BN[0][0]']
|
||||
|
||||
block_8_project (Conv2D) (None, 14, 14, 64) 24576 ['block_8_depthwise_relu[0][0]']
|
||||
|
||||
block_8_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_8_project[0][0]']
|
||||
|
||||
block_8_add (Add) (None, 14, 14, 64) 0 ['block_7_add[0][0]',
|
||||
'block_8_project_BN[0][0]']
|
||||
|
||||
block_9_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_8_add[0][0]']
|
||||
|
||||
block_9_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_9_expand[0][0]']
|
||||
|
||||
block_9_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_9_expand_BN[0][0]']
|
||||
|
||||
block_9_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_9_expand_relu[0][0]']
|
||||
|
||||
block_9_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_9_depthwise[0][0]']
|
||||
|
||||
block_9_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_9_depthwise_BN[0][0]']
|
||||
|
||||
block_9_project (Conv2D) (None, 14, 14, 64) 24576 ['block_9_depthwise_relu[0][0]']
|
||||
|
||||
block_9_project_BN (BatchNormalization) (None, 14, 14, 64) 256 ['block_9_project[0][0]']
|
||||
|
||||
block_9_add (Add) (None, 14, 14, 64) 0 ['block_8_add[0][0]',
|
||||
'block_9_project_BN[0][0]']
|
||||
|
||||
block_10_expand (Conv2D) (None, 14, 14, 384) 24576 ['block_9_add[0][0]']
|
||||
|
||||
block_10_expand_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_10_expand[0][0]']
|
||||
|
||||
block_10_expand_relu (ReLU) (None, 14, 14, 384) 0 ['block_10_expand_BN[0][0]']
|
||||
|
||||
block_10_depthwise (DepthwiseConv2D) (None, 14, 14, 384) 3456 ['block_10_expand_relu[0][0]']
|
||||
|
||||
block_10_depthwise_BN (BatchNormalization) (None, 14, 14, 384) 1536 ['block_10_depthwise[0][0]']
|
||||
|
||||
block_10_depthwise_relu (ReLU) (None, 14, 14, 384) 0 ['block_10_depthwise_BN[0][0]']
|
||||
|
||||
block_10_project (Conv2D) (None, 14, 14, 96) 36864 ['block_10_depthwise_relu[0][0]']
|
||||
|
||||
block_10_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_10_project[0][0]']
|
||||
|
||||
block_11_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_10_project_BN[0][0]']
|
||||
|
||||
block_11_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_11_expand[0][0]']
|
||||
|
||||
block_11_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_11_expand_BN[0][0]']
|
||||
|
||||
block_11_depthwise (DepthwiseConv2D) (None, 14, 14, 576) 5184 ['block_11_expand_relu[0][0]']
|
||||
|
||||
block_11_depthwise_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_11_depthwise[0][0]']
|
||||
|
||||
block_11_depthwise_relu (ReLU) (None, 14, 14, 576) 0 ['block_11_depthwise_BN[0][0]']
|
||||
|
||||
block_11_project (Conv2D) (None, 14, 14, 96) 55296 ['block_11_depthwise_relu[0][0]']
|
||||
|
||||
block_11_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_11_project[0][0]']
|
||||
|
||||
block_11_add (Add) (None, 14, 14, 96) 0 ['block_10_project_BN[0][0]',
|
||||
'block_11_project_BN[0][0]']
|
||||
|
||||
block_12_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_11_add[0][0]']
|
||||
|
||||
block_12_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_12_expand[0][0]']
|
||||
|
||||
block_12_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_12_expand_BN[0][0]']
|
||||
|
||||
block_12_depthwise (DepthwiseConv2D) (None, 14, 14, 576) 5184 ['block_12_expand_relu[0][0]']
|
||||
|
||||
block_12_depthwise_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_12_depthwise[0][0]']
|
||||
|
||||
block_12_depthwise_relu (ReLU) (None, 14, 14, 576) 0 ['block_12_depthwise_BN[0][0]']
|
||||
|
||||
block_12_project (Conv2D) (None, 14, 14, 96) 55296 ['block_12_depthwise_relu[0][0]']
|
||||
|
||||
block_12_project_BN (BatchNormalization) (None, 14, 14, 96) 384 ['block_12_project[0][0]']
|
||||
|
||||
block_12_add (Add) (None, 14, 14, 96) 0 ['block_11_add[0][0]',
|
||||
'block_12_project_BN[0][0]']
|
||||
|
||||
block_13_expand (Conv2D) (None, 14, 14, 576) 55296 ['block_12_add[0][0]']
|
||||
|
||||
block_13_expand_BN (BatchNormalization) (None, 14, 14, 576) 2304 ['block_13_expand[0][0]']
|
||||
|
||||
block_13_expand_relu (ReLU) (None, 14, 14, 576) 0 ['block_13_expand_BN[0][0]']
|
||||
|
||||
block_13_pad (ZeroPadding2D) (None, 15, 15, 576) 0 ['block_13_expand_relu[0][0]']
|
||||
|
||||
block_13_depthwise (DepthwiseConv2D) (None, 7, 7, 576) 5184 ['block_13_pad[0][0]']
|
||||
|
||||
block_13_depthwise_BN (BatchNormalization) (None, 7, 7, 576) 2304 ['block_13_depthwise[0][0]']
|
||||
|
||||
block_13_depthwise_relu (ReLU) (None, 7, 7, 576) 0 ['block_13_depthwise_BN[0][0]']
|
||||
|
||||
block_13_project (Conv2D) (None, 7, 7, 160) 92160 ['block_13_depthwise_relu[0][0]']
|
||||
|
||||
block_13_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_13_project[0][0]']
|
||||
|
||||
block_14_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_13_project_BN[0][0]']
|
||||
|
||||
block_14_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_14_expand[0][0]']
|
||||
|
||||
block_14_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_14_expand_BN[0][0]']
|
||||
|
||||
block_14_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_14_expand_relu[0][0]']
|
||||
|
||||
block_14_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_14_depthwise[0][0]']
|
||||
|
||||
block_14_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_14_depthwise_BN[0][0]']
|
||||
|
||||
block_14_project (Conv2D) (None, 7, 7, 160) 153600 ['block_14_depthwise_relu[0][0]']
|
||||
|
||||
block_14_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_14_project[0][0]']
|
||||
|
||||
block_14_add (Add) (None, 7, 7, 160) 0 ['block_13_project_BN[0][0]',
|
||||
'block_14_project_BN[0][0]']
|
||||
|
||||
block_15_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_14_add[0][0]']
|
||||
|
||||
block_15_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_15_expand[0][0]']
|
||||
|
||||
block_15_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_15_expand_BN[0][0]']
|
||||
|
||||
block_15_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_15_expand_relu[0][0]']
|
||||
|
||||
block_15_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_15_depthwise[0][0]']
|
||||
|
||||
block_15_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_15_depthwise_BN[0][0]']
|
||||
|
||||
block_15_project (Conv2D) (None, 7, 7, 160) 153600 ['block_15_depthwise_relu[0][0]']
|
||||
|
||||
block_15_project_BN (BatchNormalization) (None, 7, 7, 160) 640 ['block_15_project[0][0]']
|
||||
|
||||
block_15_add (Add) (None, 7, 7, 160) 0 ['block_14_add[0][0]',
|
||||
'block_15_project_BN[0][0]']
|
||||
|
||||
block_16_expand (Conv2D) (None, 7, 7, 960) 153600 ['block_15_add[0][0]']
|
||||
|
||||
block_16_expand_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_16_expand[0][0]']
|
||||
|
||||
block_16_expand_relu (ReLU) (None, 7, 7, 960) 0 ['block_16_expand_BN[0][0]']
|
||||
|
||||
block_16_depthwise (DepthwiseConv2D) (None, 7, 7, 960) 8640 ['block_16_expand_relu[0][0]']
|
||||
|
||||
block_16_depthwise_BN (BatchNormalization) (None, 7, 7, 960) 3840 ['block_16_depthwise[0][0]']
|
||||
|
||||
block_16_depthwise_relu (ReLU) (None, 7, 7, 960) 0 ['block_16_depthwise_BN[0][0]']
|
||||
|
||||
block_16_project (Conv2D) (None, 7, 7, 320) 307200 ['block_16_depthwise_relu[0][0]']
|
||||
|
||||
block_16_project_BN (BatchNormalization) (None, 7, 7, 320) 1280 ['block_16_project[0][0]']
|
||||
|
||||
Conv_1 (Conv2D) (None, 7, 7, 1280) 409600 ['block_16_project_BN[0][0]']
|
||||
|
||||
Conv_1_bn (BatchNormalization) (None, 7, 7, 1280) 5120 ['Conv_1[0][0]']
|
||||
|
||||
out_relu (ReLU) (None, 7, 7, 1280) 0 ['Conv_1_bn[0][0]']
|
||||
|
||||
global_average_pooling2d (GlobalAveragePooling2 (None, 1280) 0 ['out_relu[0][0]']
|
||||
D)
|
||||
|
||||
dense (Dense) (None, 8631) 11056311 ['global_average_pooling2d[0][0]']
|
||||
|
||||
======================================================================================================================================================
|
||||
Total params: 13,314,295
|
||||
Trainable params: 13,280,183
|
||||
Non-trainable params: 34,112
|
||||
______________________________________________________________________________________________________________________________________________________
|
||||
Epoch 1/25
|
||||
Epoch 00001: val_accuracy improved from -inf to 0.70027, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3446s 311ms/step - loss: 2.9497 - accuracy: 0.4908 - top-5-accuracy: 0.6538 - top-10-accuracy: 0.7119 - top-100-accuracy: 0.8687 - val_loss: 1.4240 - val_accuracy: 0.7003 - val_top-5-accuracy: 0.8539 - val_top-10-accuracy: 0.8953 - val_top-100-accuracy: 0.9759
|
||||
Epoch 2/25
|
||||
Epoch 00002: val_accuracy improved from 0.70027 to 0.83601, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.9672 - accuracy: 0.7959 - top-5-accuracy: 0.9071 - top-10-accuracy: 0.9348 - top-100-accuracy: 0.9855 - val_loss: 0.7466 - val_accuracy: 0.8360 - val_top-5-accuracy: 0.9333 - val_top-10-accuracy: 0.9547 - val_top-100-accuracy: 0.9909
|
||||
Epoch 3/25
|
||||
Epoch 00003: val_accuracy improved from 0.83601 to 0.87064, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3461s 313ms/step - loss: 0.6250 - accuracy: 0.8633 - top-5-accuracy: 0.9446 - top-10-accuracy: 0.9626 - top-100-accuracy: 0.9925 - val_loss: 0.5745 - val_accuracy: 0.8706 - val_top-5-accuracy: 0.9524 - val_top-10-accuracy: 0.9691 - val_top-100-accuracy: 0.9943
|
||||
Epoch 4/25
|
||||
Epoch 00004: val_accuracy improved from 0.87064 to 0.90236, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.4612 - accuracy: 0.8969 - top-5-accuracy: 0.9619 - top-10-accuracy: 0.9749 - top-100-accuracy: 0.9952 - val_loss: 0.4232 - val_accuracy: 0.9024 - val_top-5-accuracy: 0.9674 - val_top-10-accuracy: 0.9791 - val_top-100-accuracy: 0.9964
|
||||
Epoch 5/25
|
||||
Epoch 00005: val_accuracy improved from 0.90236 to 0.92468, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3468s 314ms/step - loss: 0.3604 - accuracy: 0.9181 - top-5-accuracy: 0.9721 - top-10-accuracy: 0.9819 - top-100-accuracy: 0.9968 - val_loss: 0.3239 - val_accuracy: 0.9247 - val_top-5-accuracy: 0.9771 - val_top-10-accuracy: 0.9855 - val_top-100-accuracy: 0.9976
|
||||
Epoch 6/25
|
||||
Epoch 00006: val_accuracy improved from 0.92468 to 0.93362, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3455s 313ms/step - loss: 0.2913 - accuracy: 0.9328 - top-5-accuracy: 0.9787 - top-10-accuracy: 0.9866 - top-100-accuracy: 0.9978 - val_loss: 0.2783 - val_accuracy: 0.9336 - val_top-5-accuracy: 0.9816 - val_top-10-accuracy: 0.9886 - val_top-100-accuracy: 0.9984
|
||||
Epoch 7/25
|
||||
Epoch 00007: val_accuracy did not improve from 0.93362
|
||||
11046/11046 [==============================] - 3436s 311ms/step - loss: 0.2407 - accuracy: 0.9436 - top-5-accuracy: 0.9835 - top-10-accuracy: 0.9898 - top-100-accuracy: 0.9984 - val_loss: 0.2714 - val_accuracy: 0.9319 - val_top-5-accuracy: 0.9826 - val_top-10-accuracy: 0.9900 - val_top-100-accuracy: 0.9986
|
||||
Epoch 8/25
|
||||
Epoch 00008: val_accuracy improved from 0.93362 to 0.95498, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3440s 311ms/step - loss: 0.2013 - accuracy: 0.9522 - top-5-accuracy: 0.9872 - top-10-accuracy: 0.9922 - top-100-accuracy: 0.9989 - val_loss: 0.1851 - val_accuracy: 0.9550 - val_top-5-accuracy: 0.9900 - val_top-10-accuracy: 0.9942 - val_top-100-accuracy: 0.9993
|
||||
Epoch 9/25
|
||||
Epoch 00009: val_accuracy did not improve from 0.95498
|
||||
11046/11046 [==============================] - 3459s 313ms/step - loss: 0.1699 - accuracy: 0.9590 - top-5-accuracy: 0.9899 - top-10-accuracy: 0.9940 - top-100-accuracy: 0.9992 - val_loss: 0.1860 - val_accuracy: 0.9511 - val_top-5-accuracy: 0.9903 - val_top-10-accuracy: 0.9950 - val_top-100-accuracy: 0.9994
|
||||
Epoch 10/25
|
||||
Epoch 00010: val_accuracy improved from 0.95498 to 0.95772, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3447s 312ms/step - loss: 0.1451 - accuracy: 0.9644 - top-5-accuracy: 0.9920 - top-10-accuracy: 0.9954 - top-100-accuracy: 0.9994 - val_loss: 0.1597 - val_accuracy: 0.9577 - val_top-5-accuracy: 0.9926 - val_top-10-accuracy: 0.9961 - val_top-100-accuracy: 0.9995
|
||||
Epoch 11/25
|
||||
Epoch 00011: val_accuracy did not improve from 0.95772
|
||||
11046/11046 [==============================] - 3459s 313ms/step - loss: 0.1248 - accuracy: 0.9689 - top-5-accuracy: 0.9936 - top-10-accuracy: 0.9964 - top-100-accuracy: 0.9996 - val_loss: 0.1626 - val_accuracy: 0.9551 - val_top-5-accuracy: 0.9927 - val_top-10-accuracy: 0.9966 - val_top-100-accuracy: 0.9997
|
||||
Epoch 12/25
|
||||
Epoch 00012: val_accuracy improved from 0.95772 to 0.97526, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3472s 314ms/step - loss: 0.1077 - accuracy: 0.9728 - top-5-accuracy: 0.9950 - top-10-accuracy: 0.9973 - top-100-accuracy: 0.9997 - val_loss: 0.0944 - val_accuracy: 0.9753 - val_top-5-accuracy: 0.9967 - val_top-10-accuracy: 0.9983 - val_top-100-accuracy: 0.9999
|
||||
Epoch 13/25
|
||||
Epoch 00013: val_accuracy did not improve from 0.97526
|
||||
11046/11046 [==============================] - 3464s 314ms/step - loss: 0.0937 - accuracy: 0.9759 - top-5-accuracy: 0.9961 - top-10-accuracy: 0.9979 - top-100-accuracy: 0.9998 - val_loss: 0.0970 - val_accuracy: 0.9736 - val_top-5-accuracy: 0.9967 - val_top-10-accuracy: 0.9984 - val_top-100-accuracy: 0.9999
|
||||
Epoch 14/25
|
||||
Epoch 00014: val_accuracy improved from 0.97526 to 0.97551, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3473s 314ms/step - loss: 0.0820 - accuracy: 0.9786 - top-5-accuracy: 0.9969 - top-10-accuracy: 0.9984 - top-100-accuracy: 0.9999 - val_loss: 0.0881 - val_accuracy: 0.9755 - val_top-5-accuracy: 0.9971 - val_top-10-accuracy: 0.9987 - val_top-100-accuracy: 0.9999
|
||||
Epoch 15/25
|
||||
Epoch 00015: val_accuracy improved from 0.97551 to 0.97630, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3458s 313ms/step - loss: 0.0726 - accuracy: 0.9809 - top-5-accuracy: 0.9975 - top-10-accuracy: 0.9988 - top-100-accuracy: 0.9999 - val_loss: 0.0846 - val_accuracy: 0.9763 - val_top-5-accuracy: 0.9976 - val_top-10-accuracy: 0.9990 - val_top-100-accuracy: 1.0000
|
||||
Epoch 16/25
|
||||
Epoch 00016: val_accuracy improved from 0.97630 to 0.97727, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3463s 313ms/step - loss: 0.0643 - accuracy: 0.9829 - top-5-accuracy: 0.9981 - top-10-accuracy: 0.9991 - top-100-accuracy: 0.9999 - val_loss: 0.0778 - val_accuracy: 0.9773 - val_top-5-accuracy: 0.9981 - val_top-10-accuracy: 0.9993 - val_top-100-accuracy: 1.0000
|
||||
Epoch 17/25
|
||||
Epoch 00017: val_accuracy improved from 0.97727 to 0.97786, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3451s 312ms/step - loss: 0.0572 - accuracy: 0.9846 - top-5-accuracy: 0.9985 - top-10-accuracy: 0.9993 - top-100-accuracy: 1.0000 - val_loss: 0.0758 - val_accuracy: 0.9779 - val_top-5-accuracy: 0.9982 - val_top-10-accuracy: 0.9993 - val_top-100-accuracy: 1.0000
|
||||
Epoch 18/25
|
||||
Epoch 00018: val_accuracy improved from 0.97786 to 0.97878, saving model to ./tmp/checkpoint
|
||||
11046/11046 [==============================] - 3426s 310ms/step - loss: 0.0517 - accuracy: 0.9860 - top-5-accuracy: 0.9988 - top-10-accuracy: 0.9995 - top-100-accuracy: 1.0000 - val_loss: 0.0705 - val_accuracy: 0.9788 - val_top-5-accuracy: 0.9986 - val_top-10-accuracy: 0.9995 - val_top-100-accuracy: 1.0000
|
||||
26
saved_results/Models/MobileNet_V2/training_log.csv
Normal file
26
saved_results/Models/MobileNet_V2/training_log.csv
Normal file
@@ -0,0 +1,26 @@
|
||||
epoch,accuracy,loss,top-10-accuracy,top-100-accuracy,top-5-accuracy,val_accuracy,val_loss,val_top-10-accuracy,val_top-100-accuracy,val_top-5-accuracy
|
||||
0,0.4907640516757965,2.949651002883911,0.7118712067604065,0.868656575679779,0.6537961363792419,0.7002686262130737,1.4239873886108398,0.8952919840812683,0.9758934378623962,0.853851854801178
|
||||
1,0.795885443687439,0.9672361016273499,0.9348357319831848,0.9854981303215027,0.9071050882339478,0.8360090255737305,0.7465912103652954,0.9546831846237183,0.9909353852272034,0.9332756400108337
|
||||
2,0.8633260726928711,0.6249759793281555,0.9625975489616394,0.9924740791320801,0.9446355700492859,0.8706443309783936,0.5745269060134888,0.9690758585929871,0.994270920753479,0.952448844909668
|
||||
3,0.8968734741210938,0.46120527386665344,0.9748672246932983,0.9952197670936584,0.9618654847145081,0.902364194393158,0.4231894016265869,0.9791271686553955,0.9963652491569519,0.9674080610275269
|
||||
4,0.9181494116783142,0.36037951707839966,0.9819280505180359,0.9967595338821411,0.9721487760543823,0.9246756434440613,0.32385993003845215,0.985480010509491,0.9976319670677185,0.9770964980125427
|
||||
5,0.9327888488769531,0.2913418114185333,0.9865629076957703,0.997750461101532,0.9787262082099915,0.9336193799972534,0.27826163172721863,0.9886055588722229,0.998383104801178,0.9815842509269714
|
||||
6,0.9436453580856323,0.24069969356060028,0.989750325679779,0.9983972907066345,0.9834964871406555,0.931856095790863,0.2713744342327118,0.9899677634239197,0.9985804557800293,0.9825645685195923
|
||||
7,0.9521682262420654,0.20128048956394196,0.9921678304672241,0.9988619685173035,0.9871729612350464,0.9549760222434998,0.18512850999832153,0.9941691160202026,0.9992679357528687,0.9899550676345825
|
||||
8,0.9589677453041077,0.1698894202709198,0.9939650893211365,0.9991915822029114,0.9898921251296997,0.9510611295700073,0.1860179901123047,0.9949711561203003,0.9993952512741089,0.9903051853179932
|
||||
9,0.9644138216972351,0.14514721930027008,0.9954121708869934,0.9994133114814758,0.9920172095298767,0.9577195644378662,0.1596861630678177,0.9961488246917725,0.9995161890983582,0.9926095008850098
|
||||
10,0.9689231514930725,0.12475422024726868,0.9964313507080078,0.9996000528335571,0.993649959564209,0.955058753490448,0.1626364290714264,0.9965816736221313,0.9996753334999084,0.9926795363426208
|
||||
11,0.9727602005004883,0.10766829550266266,0.9972864985466003,0.9997209906578064,0.9950493574142456,0.9752568602561951,0.09437419474124908,0.9983195066452026,0.9998599290847778,0.9966517090797424
|
||||
12,0.9758743643760681,0.09373524785041809,0.9979273080825806,0.9997881650924683,0.996117353439331,0.973614513874054,0.09697101265192032,0.9983958601951599,0.9999045133590698,0.9966962337493896
|
||||
13,0.9786292910575867,0.08203183114528656,0.9984199404716492,0.9998556971549988,0.996892511844635,0.9755051136016846,0.08805303275585175,0.9986759424209595,0.9999172687530518,0.9971482157707214
|
||||
14,0.9808819890022278,0.07264290004968643,0.9987650513648987,0.9999023675918579,0.9975138902664185,0.976300835609436,0.08455612510442734,0.998968780040741,0.9999745488166809,0.9976256489753723
|
||||
15,0.9828794002532959,0.06430379301309586,0.9990943074226379,0.9999317526817322,0.9980705380439758,0.977268397808075,0.07780636847019196,0.9992552399635315,0.9999809265136719,0.9981221556663513
|
||||
16,0.9845736622810364,0.05719618871808052,0.9993026256561279,0.9999561309814453,0.998477578163147,0.9778603911399841,0.0757608637213707,0.9992616176605225,0.9999809265136719,0.9982303380966187
|
||||
17,0.9859727025032043,0.051699280738830566,0.9994804859161377,0.9999752640724182,0.9987739324569702,0.9787770509719849,0.07049136608839035,0.9994907379150391,0.9999809265136719,0.9985740780830383
|
||||
18,0.9872153997421265,0.04683251306414604,0.9995855093002319,0.9999851584434509,0.9990158081054688,0.9792226552963257,0.06943082809448242,0.9995735287666321,0.9999872446060181,0.9986441135406494
|
||||
19,0.9882335662841797,0.04242420196533203,0.9997022151947021,0.9999908208847046,0.9992198348045349,0.9825581908226013,0.05836047977209091,0.9996626377105713,0.999993622303009,0.9990515112876892
|
||||
20,0.9891318082809448,0.039091356098651886,0.9997729659080505,0.9999939799308777,0.9993308782577515,0.9775166511535645,0.07386624068021774,0.9995289444923401,0.999993622303009,0.9984404444694519
|
||||
21,0.9898553490638733,0.03624232858419418,0.999825656414032,0.9999982118606567,0.999459981918335,0.9878098368644714,0.04147448390722275,0.9998790621757507,1.0,0.99949711561203
|
||||
22,0.9906644821166992,0.03344619646668434,0.999862790107727,0.9999974966049194,0.9995526671409607,0.9770392179489136,0.07516016811132431,0.9995862245559692,1.0,0.9984785914421082
|
||||
23,0.991235613822937,0.03114890120923519,0.9999006390571594,0.9999978542327881,0.9996435046195984,0.9889938235282898,0.03747271001338959,0.9998981356620789,1.0,0.9996180534362793
|
||||
24,0.9917523264884949,0.029260696843266487,0.9999108910560608,0.9999985694885254,0.9996809959411621,0.9876443147659302,0.041266944259405136,0.9999045133590698,1.0,0.9995671510696411
|
||||
|
Reference in New Issue
Block a user