diff --git a/Sejal_Tuned_FER_Model/Tuned FER Model.ipynb b/Sejal_Tuned_FER_Model/Tuned FER Model.ipynb new file mode 100644 index 0000000..2ff5a5b --- /dev/null +++ b/Sejal_Tuned_FER_Model/Tuned FER Model.ipynb @@ -0,0 +1,1203 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.012395, + "end_time": "2020-12-28T06:13:12.266495", + "exception": false, + "start_time": "2020-12-28T06:13:12.254100", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "

Facial Expression Recognition Classifier Model

\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.011028, + "end_time": "2020-12-28T06:13:12.288924", + "exception": false, + "start_time": "2020-12-28T06:13:12.277896", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Changes and Updates\n", + "* This notebook was run on Kaggle using the [FER-2013](https://www.kaggle.com/msambare/fer2013) dataset \n", + "* Accelerator used : GPU\n", + "* Changed 'Plot Sample Images' Section\n", + "* Changes in ImageDataGenerator()\n", + "* Changed Batch size from 64 to 128\n", + "* Changed Learning rate from 0.0005 to 0.001\n", + "* Changes in Dropout rate\n", + "* Removed 4th Convolution Layer\n", + "* Changed Fully connected layer 1st layer of 256 neurons to 1024 neurons\n", + "* Changed no. of epochs from 15 to 60\n", + "* Changes in reduce_lr\n", + "* Added 'Accuracy and Loss Curves' and 'Model Evaluation' Sections" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", + "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5", + "papermill": { + "duration": 0.010953, + "end_time": "2020-12-28T06:13:12.311315", + "exception": false, + "start_time": "2020-12-28T06:13:12.300362", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Import Libraries\n", + "- Let us import all the required Libraries and Packages including Tensorflow" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0", + "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a", + "execution": { + "iopub.execute_input": "2020-12-28T06:13:12.346115Z", + "iopub.status.busy": "2020-12-28T06:13:12.345424Z", + "iopub.status.idle": "2020-12-28T06:13:17.293538Z", + "shell.execute_reply": "2020-12-28T06:13:17.292437Z" + }, + "papermill": { + "duration": 4.971155, + "end_time": "2020-12-28T06:13:17.293665", + "exception": false, + "start_time": "2020-12-28T06:13:12.322510", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "import os\n", + "import numpy as np\n", + "import seaborn as sns\n", + "import tensorflow as tf\n", + "import matplotlib.pyplot as plt\n", + "\n", + "# To set the backend of matplotlib to the 'inline' backend\n", + "%matplotlib inline\n", + "\n", + "from keras.preprocessing.image import load_img\n", + "from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", + "from tensorflow.keras.layers import Dense, Input, Dropout, Flatten, Conv2D\n", + "from tensorflow.keras.layers import BatchNormalization, Activation, MaxPooling2D\n", + "from tensorflow.keras.models import Model, Sequential\n", + "from tensorflow.keras.optimizers import Adam\n", + "from tensorflow.keras.callbacks import ModelCheckpoint, ReduceLROnPlateau\n", + "from sklearn.metrics import classification_report, confusion_matrix" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.01157, + "end_time": "2020-12-28T06:13:17.317291", + "exception": false, + "start_time": "2020-12-28T06:13:17.305721", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Plot Sample Images\n", + "- Let us have a look at random images from the Dataset" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:17.348586Z", + "iopub.status.busy": "2020-12-28T06:13:17.347991Z", + "iopub.status.idle": "2020-12-28T06:13:19.632365Z", + "shell.execute_reply": "2020-12-28T06:13:19.631829Z" + }, + "papermill": { + "duration": 2.303837, + "end_time": "2020-12-28T06:13:19.632462", + "exception": false, + "start_time": "2020-12-28T06:13:17.328625", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#train examples\n", + "plt.figure(figsize=(16,44))\n", + "i = 1\n", + "for expression in os.listdir(\"../input/fer2013/train\"):\n", + " img = load_img((\"../input/fer2013/train/\" + expression +'/'+ np.random.choice(os.listdir(\"../input/fer2013/train/\" + expression))))\n", + " plt.subplot(1,7,i)\n", + " plt.imshow(img)\n", + " plt.title(expression)\n", + " plt.axis('off')\n", + " i += 1\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.013385, + "end_time": "2020-12-28T06:13:19.660447", + "exception": false, + "start_time": "2020-12-28T06:13:19.647062", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Data Sets\n", + "- Let us look at the number of Images in Training and Testing Datasets" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:19.709322Z", + "iopub.status.busy": "2020-12-28T06:13:19.706205Z", + "iopub.status.idle": "2020-12-28T06:13:21.310462Z", + "shell.execute_reply": "2020-12-28T06:13:21.309540Z" + }, + "papermill": { + "duration": 1.63656, + "end_time": "2020-12-28T06:13:21.310607", + "exception": false, + "start_time": "2020-12-28T06:13:19.674047", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Images in Training Data\n", + "_______________________\n", + "3171 surprise images\n", + "4097 fear images\n", + "3995 angry images\n", + "4965 neutral images\n", + "4830 sad images\n", + "436 disgust images\n", + "7215 happy images\n", + "\n", + "\n", + "Images in Testing Data\n", + "_______________________\n", + "831 surprise images\n", + "1024 fear images\n", + "958 angry images\n", + "1233 neutral images\n", + "1247 sad images\n", + "111 disgust images\n", + "1774 happy images\n" + ] + } + ], + "source": [ + "print(\"Images in Training Data\")\n", + "print(\"_______________________\")\n", + "for expression in os.listdir(\"../input/fer2013/train/\"):\n", + " print(str(len(os.listdir(\"../input/fer2013/train/\" + expression))) + \" \" + expression + \" images\")\n", + "\n", + "print(\"\\n\")\n", + "\n", + "print(\"Images in Testing Data\")\n", + "print(\"_______________________\")\n", + "for expression in os.listdir(\"../input/fer2013/test/\"):\n", + " print(str(len(os.listdir(\"../input/fer2013/test/\" + expression))) + \" \" + expression + \" images\")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.017019, + "end_time": "2020-12-28T06:13:21.344283", + "exception": false, + "start_time": "2020-12-28T06:13:21.327264", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Create Training and Validation Batches\n", + "- Using the ImageDataGenerators Let us create Training and Validation Batches by loading images from corresponding directories" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:21.383483Z", + "iopub.status.busy": "2020-12-28T06:13:21.382623Z", + "iopub.status.idle": "2020-12-28T06:13:55.410503Z", + "shell.execute_reply": "2020-12-28T06:13:55.411266Z" + }, + "papermill": { + "duration": 34.051565, + "end_time": "2020-12-28T06:13:55.411433", + "exception": false, + "start_time": "2020-12-28T06:13:21.359868", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Found 28709 images belonging to 7 classes.\n", + "Found 7178 images belonging to 7 classes.\n" + ] + } + ], + "source": [ + "img_size = 48\n", + "batch_size = 128\n", + "\n", + "datagen_train = ImageDataGenerator(rescale=1./255,\n", + " horizontal_flip=True)\n", + "\n", + "train_generator = datagen_train.flow_from_directory(\"../input/fer2013/train/\",\n", + " target_size=(img_size,img_size),\n", + " color_mode=\"grayscale\",\n", + " batch_size=batch_size,\n", + " class_mode='categorical',\n", + " shuffle=True)\n", + "\n", + "datagen_validation = ImageDataGenerator(rescale=1./255)\n", + "\n", + "validation_generator = datagen_validation.flow_from_directory(\"../input/fer2013/test/\",\n", + " target_size=(img_size,img_size),\n", + " color_mode=\"grayscale\",\n", + " batch_size=batch_size,\n", + " class_mode='categorical',\n", + " shuffle=False)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.016063, + "end_time": "2020-12-28T06:13:55.444973", + "exception": false, + "start_time": "2020-12-28T06:13:55.428910", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Create Convolutional Neural Network (CNN) Model\n", + "- Let us create a Neural Network using 3 Convolutional Layers and 2 Fully Connected dense Layers." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:55.512596Z", + "iopub.status.busy": "2020-12-28T06:13:55.511703Z", + "iopub.status.idle": "2020-12-28T06:13:58.422570Z", + "shell.execute_reply": "2020-12-28T06:13:58.421427Z" + }, + "papermill": { + "duration": 2.957208, + "end_time": "2020-12-28T06:13:58.422691", + "exception": false, + "start_time": "2020-12-28T06:13:55.465483", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Initialising the CNN\n", + "model = Sequential()\n", + "\n", + "# 1st Convolution Layer\n", + "\n", + "# There are 64 (3,3) filters with \"same\" Padding and Shape of the Input_Image is (48,48,1)\n", + "model.add(Conv2D(64,(3,3), padding='same', input_shape=(48, 48,1)))\n", + "\n", + "# Normalization\n", + "model.add(BatchNormalization())\n", + "\n", + "# Applying Non Linear Activation Function \"relu\"\n", + "model.add(Activation('relu')) \n", + "\n", + "# Adding a Max Pool Layer of size (2,2)\n", + "model.add(MaxPooling2D(pool_size=(2, 2)))\n", + "\n", + "# Adding a dropout layer \n", + "model.add(Dropout(0.25))\n", + "\n", + "\n", + "\n", + "\n", + "# 2nd Convolution layer\n", + "\n", + "# There are 128 (5,5) filters with \"same\" Padding \n", + "model.add(Conv2D(128,(5,5), padding='same'))\n", + "\n", + "# Normalization\n", + "model.add(BatchNormalization())\n", + "\n", + "# Applying Non Linear Activation Function \"relu\"\n", + "model.add(Activation('relu'))\n", + "\n", + "# Adding a Max Pool Layer of size (2,2)\n", + "model.add(MaxPooling2D(pool_size=(2, 2)))\n", + "\n", + "# Adding a dropout layer \n", + "model.add(Dropout(0.25))\n", + "\n", + "\n", + "\n", + "\n", + "# 3rd Convolution layer\n", + "\n", + "# There are 512 (3,3) filters with \"same\" Padding \n", + "model.add(Conv2D(512,(3,3), padding='same'))\n", + "\n", + "# Normalization\n", + "model.add(BatchNormalization())\n", + "\n", + "# Applying Non Linear Activation Function \"relu\"\n", + "model.add(Activation('relu'))\n", + "\n", + "# Adding a Max Pool Layer of size (2,2)\n", + "model.add(MaxPooling2D(pool_size=(2, 2)))\n", + "\n", + "# Adding a dropout layer \n", + "model.add(Dropout(0.5))\n", + "\n", + "\n", + "\n", + "# Flattening\n", + "model.add(Flatten())\n", + "\n", + "\n", + "# Fully connected layer 1st layer of 1024 neurons\n", + "model.add(Dense(1024))\n", + "\n", + "# Normalization\n", + "model.add(BatchNormalization())\n", + "\n", + "# Applying Non Linear Activation Function \"relu\"\n", + "model.add(Activation('relu'))\n", + "\n", + "# Adding a dropout layer \n", + "model.add(Dropout(0.25))\n", + "\n", + "\n", + "\n", + "# Fully connected layer 2nd layer of 512 neurons\n", + "model.add(Dense(512))\n", + "\n", + "# Normalization\n", + "model.add(BatchNormalization())\n", + "\n", + "# Applying Non Linear Activation Function \"relu\"\n", + "model.add(Activation('relu'))\n", + "\n", + "# Adding a dropout layer \n", + "model.add(Dropout(0.25))\n", + "\n", + "# Adding a final Dense Layer with 7 outputs corresponding to 7 different emotions with a \"softmax\" Activation Function \n", + "model.add(Dense(7, activation='softmax'))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.016157, + "end_time": "2020-12-28T06:13:58.455449", + "exception": false, + "start_time": "2020-12-28T06:13:58.439292", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Compiling the Model\n", + "- Let us use Adam Optimizer." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:58.499946Z", + "iopub.status.busy": "2020-12-28T06:13:58.499095Z", + "iopub.status.idle": "2020-12-28T06:13:58.525958Z", + "shell.execute_reply": "2020-12-28T06:13:58.525508Z" + }, + "papermill": { + "duration": 0.054079, + "end_time": "2020-12-28T06:13:58.526049", + "exception": false, + "start_time": "2020-12-28T06:13:58.471970", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Model: \"sequential\"\n", + "_________________________________________________________________\n", + "Layer (type) Output Shape Param # \n", + "=================================================================\n", + "conv2d (Conv2D) (None, 48, 48, 64) 640 \n", + "_________________________________________________________________\n", + "batch_normalization (BatchNo (None, 48, 48, 64) 256 \n", + "_________________________________________________________________\n", + "activation (Activation) (None, 48, 48, 64) 0 \n", + "_________________________________________________________________\n", + "max_pooling2d (MaxPooling2D) (None, 24, 24, 64) 0 \n", + "_________________________________________________________________\n", + "dropout (Dropout) (None, 24, 24, 64) 0 \n", + "_________________________________________________________________\n", + "conv2d_1 (Conv2D) (None, 24, 24, 128) 204928 \n", + "_________________________________________________________________\n", + "batch_normalization_1 (Batch (None, 24, 24, 128) 512 \n", + "_________________________________________________________________\n", + "activation_1 (Activation) (None, 24, 24, 128) 0 \n", + "_________________________________________________________________\n", + "max_pooling2d_1 (MaxPooling2 (None, 12, 12, 128) 0 \n", + "_________________________________________________________________\n", + "dropout_1 (Dropout) (None, 12, 12, 128) 0 \n", + "_________________________________________________________________\n", + "conv2d_2 (Conv2D) (None, 12, 12, 512) 590336 \n", + "_________________________________________________________________\n", + "batch_normalization_2 (Batch (None, 12, 12, 512) 2048 \n", + "_________________________________________________________________\n", + "activation_2 (Activation) (None, 12, 12, 512) 0 \n", + "_________________________________________________________________\n", + "max_pooling2d_2 (MaxPooling2 (None, 6, 6, 512) 0 \n", + "_________________________________________________________________\n", + "dropout_2 (Dropout) (None, 6, 6, 512) 0 \n", + "_________________________________________________________________\n", + "flatten (Flatten) (None, 18432) 0 \n", + "_________________________________________________________________\n", + "dense (Dense) (None, 1024) 18875392 \n", + "_________________________________________________________________\n", + "batch_normalization_3 (Batch (None, 1024) 4096 \n", + "_________________________________________________________________\n", + "activation_3 (Activation) (None, 1024) 0 \n", + "_________________________________________________________________\n", + "dropout_3 (Dropout) (None, 1024) 0 \n", + "_________________________________________________________________\n", + "dense_1 (Dense) (None, 512) 524800 \n", + "_________________________________________________________________\n", + "batch_normalization_4 (Batch (None, 512) 2048 \n", + "_________________________________________________________________\n", + "activation_4 (Activation) (None, 512) 0 \n", + "_________________________________________________________________\n", + "dropout_4 (Dropout) (None, 512) 0 \n", + "_________________________________________________________________\n", + "dense_2 (Dense) (None, 7) 3591 \n", + "=================================================================\n", + "Total params: 20,208,647\n", + "Trainable params: 20,204,167\n", + "Non-trainable params: 4,480\n", + "_________________________________________________________________\n" + ] + } + ], + "source": [ + "# let us choose a Learning rate of 0.001\n", + "opt = Adam(lr=0.001)\n", + "\n", + "# As we have Categorical Values we will use 'categorical_crossentropy' loss function\n", + "model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy'])\n", + "\n", + "# Let us check the details of the Model\n", + "model.summary()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 0.016812, + "end_time": "2020-12-28T06:13:58.559674", + "exception": false, + "start_time": "2020-12-28T06:13:58.542862", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Training Model" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:13:58.599453Z", + "iopub.status.busy": "2020-12-28T06:13:58.598955Z", + "iopub.status.idle": "2020-12-28T06:43:45.773208Z", + "shell.execute_reply": "2020-12-28T06:43:45.771929Z" + }, + "papermill": { + "duration": 1787.1968, + "end_time": "2020-12-28T06:43:45.773312", + "exception": false, + "start_time": "2020-12-28T06:13:58.576512", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 1/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.7309 - accuracy: 0.3453\n", + "Epoch 00001: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 173s 773ms/step - loss: 1.7309 - accuracy: 0.3453 - val_loss: 2.0262 - val_accuracy: 0.3184\n", + "Epoch 2/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.4109 - accuracy: 0.4604\n", + "Epoch 00002: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 1.4109 - accuracy: 0.4604 - val_loss: 1.5959 - val_accuracy: 0.3605\n", + "Epoch 3/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.2835 - accuracy: 0.5121\n", + "Epoch 00003: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 1.2835 - accuracy: 0.5121 - val_loss: 1.3339 - val_accuracy: 0.4830\n", + "Epoch 4/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.2058 - accuracy: 0.5390\n", + "Epoch 00004: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 117ms/step - loss: 1.2058 - accuracy: 0.5390 - val_loss: 1.2540 - val_accuracy: 0.5269\n", + "Epoch 5/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.1519 - accuracy: 0.5631\n", + "Epoch 00005: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 1.1519 - accuracy: 0.5631 - val_loss: 1.2873 - val_accuracy: 0.5112\n", + "Epoch 6/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.1142 - accuracy: 0.5768\n", + "Epoch 00006: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 119ms/step - loss: 1.1142 - accuracy: 0.5768 - val_loss: 1.1969 - val_accuracy: 0.5437\n", + "Epoch 7/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.0753 - accuracy: 0.5895\n", + "Epoch 00007: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 1.0753 - accuracy: 0.5895 - val_loss: 1.3344 - val_accuracy: 0.4796\n", + "Epoch 8/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.0482 - accuracy: 0.6038\n", + "Epoch 00008: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 1.0482 - accuracy: 0.6038 - val_loss: 1.2293 - val_accuracy: 0.5354\n", + "Epoch 9/60\n", + "224/224 [==============================] - ETA: 0s - loss: 1.0181 - accuracy: 0.6146\n", + "Epoch 00009: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 1.0181 - accuracy: 0.6146 - val_loss: 1.1289 - val_accuracy: 0.5741\n", + "Epoch 10/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.9887 - accuracy: 0.6277\n", + "Epoch 00010: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.9887 - accuracy: 0.6277 - val_loss: 1.1017 - val_accuracy: 0.5915\n", + "Epoch 11/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.9615 - accuracy: 0.6331\n", + "Epoch 00011: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.9615 - accuracy: 0.6331 - val_loss: 1.1315 - val_accuracy: 0.5738\n", + "Epoch 12/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.9346 - accuracy: 0.6482\n", + "Epoch 00012: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.9346 - accuracy: 0.6482 - val_loss: 1.1946 - val_accuracy: 0.5485\n", + "Epoch 13/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.9059 - accuracy: 0.6594\n", + "Epoch 00013: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.9059 - accuracy: 0.6594 - val_loss: 1.1641 - val_accuracy: 0.5855\n", + "Epoch 14/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.8868 - accuracy: 0.6651\n", + "Epoch 00014: saving model to fer_model_weights.h5\n", + "\n", + "Epoch 00014: ReduceLROnPlateau reducing learning rate to 0.00020000000949949026.\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.8868 - accuracy: 0.6651 - val_loss: 1.1449 - val_accuracy: 0.5721\n", + "Epoch 15/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.7936 - accuracy: 0.7041\n", + "Epoch 00015: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 124ms/step - loss: 0.7936 - accuracy: 0.7041 - val_loss: 0.9920 - val_accuracy: 0.6383\n", + "Epoch 16/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.7611 - accuracy: 0.7167\n", + "Epoch 00016: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 123ms/step - loss: 0.7611 - accuracy: 0.7167 - val_loss: 0.9873 - val_accuracy: 0.6440\n", + "Epoch 17/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.7357 - accuracy: 0.7238\n", + "Epoch 00017: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 125ms/step - loss: 0.7357 - accuracy: 0.7238 - val_loss: 1.0202 - val_accuracy: 0.6391\n", + "Epoch 18/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.7179 - accuracy: 0.7335\n", + "Epoch 00018: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.7179 - accuracy: 0.7335 - val_loss: 1.0358 - val_accuracy: 0.6328\n", + "Epoch 19/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.7059 - accuracy: 0.7389\n", + "Epoch 00019: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 30s 133ms/step - loss: 0.7059 - accuracy: 0.7389 - val_loss: 1.0019 - val_accuracy: 0.6436\n", + "Epoch 20/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6914 - accuracy: 0.7420\n", + "Epoch 00020: saving model to fer_model_weights.h5\n", + "\n", + "Epoch 00020: ReduceLROnPlateau reducing learning rate to 4.0000001899898055e-05.\n", + "224/224 [==============================] - 39s 173ms/step - loss: 0.6914 - accuracy: 0.7420 - val_loss: 1.0018 - val_accuracy: 0.6455\n", + "Epoch 21/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6578 - accuracy: 0.7585\n", + "Epoch 00021: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 125ms/step - loss: 0.6578 - accuracy: 0.7585 - val_loss: 1.0060 - val_accuracy: 0.6490\n", + "Epoch 22/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6506 - accuracy: 0.7584\n", + "Epoch 00022: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.6506 - accuracy: 0.7584 - val_loss: 0.9919 - val_accuracy: 0.6516\n", + "Epoch 23/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6428 - accuracy: 0.7622\n", + "Epoch 00023: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 123ms/step - loss: 0.6428 - accuracy: 0.7622 - val_loss: 0.9840 - val_accuracy: 0.6533\n", + "Epoch 24/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6411 - accuracy: 0.7634\n", + "Epoch 00024: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 125ms/step - loss: 0.6411 - accuracy: 0.7634 - val_loss: 0.9923 - val_accuracy: 0.6519\n", + "Epoch 25/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6308 - accuracy: 0.7661\n", + "Epoch 00025: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 116ms/step - loss: 0.6308 - accuracy: 0.7661 - val_loss: 0.9936 - val_accuracy: 0.6537\n", + "Epoch 26/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6337 - accuracy: 0.7669\n", + "Epoch 00026: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 117ms/step - loss: 0.6337 - accuracy: 0.7669 - val_loss: 0.9976 - val_accuracy: 0.6535\n", + "Epoch 27/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6258 - accuracy: 0.7678\n", + "Epoch 00027: saving model to fer_model_weights.h5\n", + "\n", + "Epoch 00027: ReduceLROnPlateau reducing learning rate to 1e-05.\n", + "224/224 [==============================] - 27s 119ms/step - loss: 0.6258 - accuracy: 0.7678 - val_loss: 0.9910 - val_accuracy: 0.6525\n", + "Epoch 28/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6278 - accuracy: 0.7675\n", + "Epoch 00028: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 119ms/step - loss: 0.6278 - accuracy: 0.7675 - val_loss: 0.9928 - val_accuracy: 0.6539\n", + "Epoch 29/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6213 - accuracy: 0.7696\n", + "Epoch 00029: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 0.6213 - accuracy: 0.7696 - val_loss: 0.9926 - val_accuracy: 0.6536\n", + "Epoch 30/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6199 - accuracy: 0.7714\n", + "Epoch 00030: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 116ms/step - loss: 0.6199 - accuracy: 0.7714 - val_loss: 0.9934 - val_accuracy: 0.6535\n", + "Epoch 31/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6182 - accuracy: 0.7748\n", + "Epoch 00031: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 119ms/step - loss: 0.6182 - accuracy: 0.7748 - val_loss: 0.9932 - val_accuracy: 0.6530\n", + "Epoch 32/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6193 - accuracy: 0.7701\n", + "Epoch 00032: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.6193 - accuracy: 0.7701 - val_loss: 0.9927 - val_accuracy: 0.6530\n", + "Epoch 33/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6172 - accuracy: 0.7717\n", + "Epoch 00033: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6172 - accuracy: 0.7717 - val_loss: 0.9932 - val_accuracy: 0.6533\n", + "Epoch 34/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6160 - accuracy: 0.7694\n", + "Epoch 00034: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 0.6160 - accuracy: 0.7694 - val_loss: 0.9949 - val_accuracy: 0.6535\n", + "Epoch 35/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6206 - accuracy: 0.7720\n", + "Epoch 00035: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 0.6206 - accuracy: 0.7720 - val_loss: 0.9939 - val_accuracy: 0.6535\n", + "Epoch 36/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6073 - accuracy: 0.7773\n", + "Epoch 00036: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.6073 - accuracy: 0.7773 - val_loss: 0.9952 - val_accuracy: 0.6553\n", + "Epoch 37/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6151 - accuracy: 0.7738\n", + "Epoch 00037: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.6151 - accuracy: 0.7738 - val_loss: 0.9963 - val_accuracy: 0.6540\n", + "Epoch 38/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6106 - accuracy: 0.7756\n", + "Epoch 00038: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6106 - accuracy: 0.7756 - val_loss: 0.9938 - val_accuracy: 0.6553\n", + "Epoch 39/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6063 - accuracy: 0.7766\n", + "Epoch 00039: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 119ms/step - loss: 0.6063 - accuracy: 0.7766 - val_loss: 0.9962 - val_accuracy: 0.6535\n", + "Epoch 40/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6048 - accuracy: 0.7764\n", + "Epoch 00040: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6048 - accuracy: 0.7764 - val_loss: 0.9963 - val_accuracy: 0.6551\n", + "Epoch 41/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5996 - accuracy: 0.7816\n", + "Epoch 00041: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.5996 - accuracy: 0.7816 - val_loss: 0.9968 - val_accuracy: 0.6537\n", + "Epoch 42/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6054 - accuracy: 0.7752\n", + "Epoch 00042: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6054 - accuracy: 0.7752 - val_loss: 0.9968 - val_accuracy: 0.6535\n", + "Epoch 43/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5984 - accuracy: 0.7805\n", + "Epoch 00043: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 116ms/step - loss: 0.5984 - accuracy: 0.7805 - val_loss: 0.9963 - val_accuracy: 0.6542\n", + "Epoch 44/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6056 - accuracy: 0.7773\n", + "Epoch 00044: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6056 - accuracy: 0.7773 - val_loss: 0.9982 - val_accuracy: 0.6542\n", + "Epoch 45/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6022 - accuracy: 0.7783\n", + "Epoch 00045: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 0.6022 - accuracy: 0.7783 - val_loss: 0.9953 - val_accuracy: 0.6543\n", + "Epoch 46/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6034 - accuracy: 0.7750\n", + "Epoch 00046: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 121ms/step - loss: 0.6034 - accuracy: 0.7750 - val_loss: 0.9967 - val_accuracy: 0.6547\n", + "Epoch 47/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5958 - accuracy: 0.7831\n", + "Epoch 00047: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 118ms/step - loss: 0.5958 - accuracy: 0.7831 - val_loss: 0.9976 - val_accuracy: 0.6536\n", + "Epoch 48/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5952 - accuracy: 0.7803\n", + "Epoch 00048: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.5952 - accuracy: 0.7803 - val_loss: 0.9975 - val_accuracy: 0.6536\n", + "Epoch 49/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.6009 - accuracy: 0.7782\n", + "Epoch 00049: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.6009 - accuracy: 0.7782 - val_loss: 0.9974 - val_accuracy: 0.6535\n", + "Epoch 50/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5952 - accuracy: 0.7806\n", + "Epoch 00050: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 117ms/step - loss: 0.5952 - accuracy: 0.7806 - val_loss: 1.0017 - val_accuracy: 0.6551\n", + "Epoch 51/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5930 - accuracy: 0.7803\n", + "Epoch 00051: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 119ms/step - loss: 0.5930 - accuracy: 0.7803 - val_loss: 1.0000 - val_accuracy: 0.6549\n", + "Epoch 52/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5940 - accuracy: 0.7792\n", + "Epoch 00052: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 117ms/step - loss: 0.5940 - accuracy: 0.7792 - val_loss: 1.0026 - val_accuracy: 0.6547\n", + "Epoch 53/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5930 - accuracy: 0.7827\n", + "Epoch 00053: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.5930 - accuracy: 0.7827 - val_loss: 1.0017 - val_accuracy: 0.6557\n", + "Epoch 54/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5890 - accuracy: 0.7820\n", + "Epoch 00054: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 118ms/step - loss: 0.5890 - accuracy: 0.7820 - val_loss: 0.9975 - val_accuracy: 0.6540\n", + "Epoch 55/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5933 - accuracy: 0.7808\n", + "Epoch 00055: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 116ms/step - loss: 0.5933 - accuracy: 0.7808 - val_loss: 1.0008 - val_accuracy: 0.6530\n", + "Epoch 56/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5892 - accuracy: 0.7836\n", + "Epoch 00056: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 122ms/step - loss: 0.5892 - accuracy: 0.7836 - val_loss: 1.0003 - val_accuracy: 0.6539\n", + "Epoch 57/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5866 - accuracy: 0.7817\n", + "Epoch 00057: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.5866 - accuracy: 0.7817 - val_loss: 1.0028 - val_accuracy: 0.6551\n", + "Epoch 58/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5915 - accuracy: 0.7816\n", + "Epoch 00058: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 27s 120ms/step - loss: 0.5915 - accuracy: 0.7816 - val_loss: 1.0009 - val_accuracy: 0.6549\n", + "Epoch 59/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5854 - accuracy: 0.7861\n", + "Epoch 00059: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 26s 116ms/step - loss: 0.5854 - accuracy: 0.7861 - val_loss: 1.0026 - val_accuracy: 0.6544\n", + "Epoch 60/60\n", + "224/224 [==============================] - ETA: 0s - loss: 0.5861 - accuracy: 0.7844\n", + "Epoch 00060: saving model to fer_model_weights.h5\n", + "224/224 [==============================] - 28s 123ms/step - loss: 0.5861 - accuracy: 0.7844 - val_loss: 1.0035 - val_accuracy: 0.6557\n", + "CPU times: user 14min 56s, sys: 2min 38s, total: 17min 35s\n", + "Wall time: 29min 47s\n" + ] + } + ], + "source": [ + "%%time\n", + "\n", + "# Let us train the Model 60 times\n", + "epochs = 60\n", + "\n", + "steps_per_epoch = train_generator.n//train_generator.batch_size\n", + "validation_steps = validation_generator.n//validation_generator.batch_size\n", + "\n", + "# Create a Callback which reduces the Learning rate by a factor of \"0.2\" when the val_loss does not decrease\n", + "# after 4 epochs also and allowing the minimum value of Learning Rate to be 0.00001\n", + "reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2,\n", + " patience=4, min_lr=0.00001, mode='auto', verbose=1)\n", + "\n", + "\n", + "# Create another Callback which saves the Model Weights by monitoring the Val_Accuracy\n", + "checkpoint = ModelCheckpoint(\"fer_model_weights.h5\", monitor='val_accuracy',\n", + " save_weights_only=True, mode='max', verbose=1)\n", + "\n", + "# List of callbacks \n", + "callbacks = [checkpoint, reduce_lr]\n", + "\n", + "# Fitting the model .\n", + "history = model.fit(\n", + " x=train_generator,\n", + " steps_per_epoch=steps_per_epoch,\n", + " epochs=epochs,\n", + " validation_data=validation_generator,\n", + " validation_steps=validation_steps,\n", + " callbacks=callbacks\n", + ")" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 3.822211, + "end_time": "2020-12-28T06:43:53.815155", + "exception": false, + "start_time": "2020-12-28T06:43:49.992944", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Accuracy and Loss Curves" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:44:01.674545Z", + "iopub.status.busy": "2020-12-28T06:44:01.673621Z", + "iopub.status.idle": "2020-12-28T06:44:01.948408Z", + "shell.execute_reply": "2020-12-28T06:44:01.948854Z" + }, + "papermill": { + "duration": 4.056361, + "end_time": "2020-12-28T06:44:01.948977", + "exception": false, + "start_time": "2020-12-28T06:43:57.892616", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "data": { + "image/png": "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xZUNDEiIxHUgVk8OrQJac3MzhYWFNDQ0+DsU1UtERUWRkZFBeHi4148J2IR+wJmKWmeJagtdBaDCwkLi4+PJzMxsb6SooGWMoaysjMLCQoYN836gR8B2uRRXNXYYstg6S1QTugo8DQ0NJCcnazJXAIgIycnJ3f7FFpAJ3RjjeR0XCYWYFP8FptQh0GSu3PXk/yEgE3pVg4P65pYDx6DrLFGlVBALyOzXNgZdZ4kq5RNlZWVMmTKFKVOmkJaWxuDBg9tuNzU1dfnYnJwcfvrTnx70OWbOnOmrcFUnAvKg6J6OY9DB9qH3H+qniJQKbMnJyaxZswaABQsWEBcXx5133tl2v8PhICzMc7rIysoiKyvroM+xfPly3wR7BLW0tBAaGurvMLwWkAm92OPJoffAUcf6KSKlfOe3764nd3eVT8scPyiB//3BhG49Zt68eSQlJbF69WqmTZvGZZddxu233059fT3R0dE8++yzjBkzhqVLl/LQQw+xaNEiFixYwI4dO8jLy2PHjh3cfvvtba33uLg4ampqWLp0KQsWLCAlJYV169Yxffp0XnrpJUSE9957j5/97GekpKQwbdo08vLyWLRo0X5x5efnc9VVV1FbWwvAY4891tb6/+Mf/8iLL75ISEgI55xzDg888ABbt25l/vz5lJSUEBoayuuvv87OnTvbYga49dZbycrKYt68eWRmZnLttdeyePFibr31Vqqrq3nqqadoampi5MiRvPjii8TExFBcXMz8+fPJy8sD4IknnuD9998nJSWF2267DYBf//rXDBw40KtfML4QkAm99dRzA1qXznU0Qn25jkFXysc2b97MkiVLCA0NpaqqimXLlhEWFsaSJUv41a9+xRtvvHHAYzZu3Minn35KdXU1Y8aM4aabbjpgLPXq1atZv349gwYN4oQTTuDLL78kKyuLH//4xyxbtoxhw4Yxd+5cjzENGDCAjz76iKioKLZs2cLcuXPJycnh/fff5+2332bFihXExMRQXl4OwBVXXMHdd9/N7NmzaWhowOl0snPnTo9lt4qKiuKLL74AbHfUDTfcAMA999zD008/zU9+8hN++tOfcsopp/DWW2/R0tJCTU0NgwYN4qKLLuK2227D6XSycOFCvvnmm26/7j0VsAk9KTaCyDDXT6EaHbKo+o7utqQPp0suuaSty6GyspKrr76aLVu2ICI0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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "acc = history.history['accuracy']\n", + "val_acc = history.history['val_accuracy']\n", + "loss = history.history['loss']\n", + "val_loss = history.history['val_loss']\n", + "\n", + "epochs = range(len(acc))\n", + "\n", + "plt.plot(epochs, acc, label=\"Training accuracy\")\n", + "plt.plot(epochs, val_acc, label=\"Validation accuracy\")\n", + "plt.title('Training and validation accuracy')\n", + "plt.legend()\n", + "plt.show()\n", + "\n", + "plt.plot(epochs, loss, label=\"Training loss\")\n", + "plt.plot(epochs, val_loss, label=\"Validation loss\")\n", + "plt.title('Training and validation loss')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 4.045429, + "end_time": "2020-12-28T06:44:09.798667", + "exception": false, + "start_time": "2020-12-28T06:44:05.753238", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Model Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:44:17.432902Z", + "iopub.status.busy": "2020-12-28T06:44:17.432321Z", + "iopub.status.idle": "2020-12-28T06:44:42.151128Z", + "shell.execute_reply": "2020-12-28T06:44:42.151566Z" + }, + "papermill": { + "duration": 28.559636, + "end_time": "2020-12-28T06:44:42.151700", + "exception": false, + "start_time": "2020-12-28T06:44:13.592064", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train accuracy = 87.54 , Validation accuracy = 65.60\n" + ] + } + ], + "source": [ + "train_loss, train_accu = model.evaluate_generator(train_generator)\n", + "test_loss, test_accu = model.evaluate_generator(validation_generator)\n", + "print(\"Train accuracy = {:.2f} , Validation accuracy = {:.2f}\".format(train_accu*100, test_accu*100))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 3.815154, + "end_time": "2020-12-28T06:44:49.800353", + "exception": false, + "start_time": "2020-12-28T06:44:45.985199", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "Classification Report and Confusion Matrix for Validation set" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:44:58.157309Z", + "iopub.status.busy": "2020-12-28T06:44:58.156400Z", + "iopub.status.idle": "2020-12-28T06:45:03.745626Z", + "shell.execute_reply": "2020-12-28T06:45:03.744498Z" + }, + "papermill": { + "duration": 9.430745, + "end_time": "2020-12-28T06:45:03.745735", + "exception": false, + "start_time": "2020-12-28T06:44:54.314990", + "status": "completed" + }, + "tags": [] + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Classification Report\n", + " precision recall f1-score support\n", + "\n", + " angry 0.58 0.55 0.57 958\n", + " disgust 0.82 0.65 0.72 111\n", + " fear 0.57 0.40 0.47 1024\n", + " happy 0.83 0.85 0.84 1774\n", + " neutral 0.57 0.66 0.61 1233\n", + " sad 0.52 0.56 0.54 1247\n", + " surprise 0.77 0.80 0.79 831\n", + "\n", + " accuracy 0.66 7178\n", + " macro avg 0.67 0.64 0.65 7178\n", + "weighted avg 0.66 0.66 0.65 7178\n", + "\n", + "____________________________________\n", + "Confusion Matrix\n", + "[[ 528 7 81 61 120 145 16]\n", + " [ 19 72 3 3 8 5 1]\n", + " [ 95 4 408 47 132 230 108]\n", + " [ 33 0 22 1516 102 67 34]\n", + " [ 68 1 53 82 819 193 17]\n", + " [ 140 1 96 66 224 699 21]\n", + " [ 21 3 53 43 27 17 667]]\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "y_pred = model.predict(validation_generator)\n", + "y_pred = np.argmax(y_pred, axis=1)\n", + "\n", + "class_labels = validation_generator.class_indices\n", + "class_labels = {v:k for k,v in class_labels.items()}\n", + "\n", + "print('Classification Report')\n", + "target_names = list(class_labels.values())\n", + "print(classification_report(validation_generator.classes, y_pred, target_names=target_names))\n", + "\n", + "print(\"____________________________________\")\n", + "\n", + "cm_test = confusion_matrix(validation_generator.classes, y_pred)\n", + "print('Confusion Matrix')\n", + "print(cm_test)\n", + "\n", + "plt.figure(figsize=(8,8))\n", + "plt.imshow(cm_test, interpolation='nearest')\n", + "plt.colorbar()\n", + "tick_mark = np.arange(len(target_names))\n", + "_ = plt.xticks(tick_mark, target_names, rotation=90)\n", + "_ = plt.yticks(tick_mark, target_names)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "papermill": { + "duration": 3.770776, + "end_time": "2020-12-28T06:45:11.343751", + "exception": false, + "start_time": "2020-12-28T06:45:07.572975", + "status": "completed" + }, + "tags": [] + }, + "source": [ + "### Represent Model as JSON String" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2020-12-28T06:45:19.192965Z", + "iopub.status.busy": "2020-12-28T06:45:19.191645Z", + "iopub.status.idle": "2020-12-28T06:45:19.194265Z", + "shell.execute_reply": "2020-12-28T06:45:19.194679Z" + }, + "papermill": { + "duration": 3.775941, + "end_time": "2020-12-28T06:45:19.194835", + "exception": false, + "start_time": "2020-12-28T06:45:15.418894", + "status": "completed" + }, + "tags": [] + }, + "outputs": [], + "source": [ + "# Converting the model into JSON format and storing it in \"fer_model.json\" file. \n", + "model_json = model.to_json()\n", + "with open(\"fer_model.json\", \"w\") as json_file:\n", + " json_file.write(model_json)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.6" + }, + "papermill": { + "duration": 1936.322999, + "end_time": "2020-12-28T06:45:24.867173", + "environment_variables": {}, + "exception": null, + "input_path": "__notebook__.ipynb", + "output_path": "__notebook__.ipynb", + "parameters": {}, + "start_time": "2020-12-28T06:13:08.544174", + "version": "2.1.0" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/Sejal_Tuned_FER_Model/fer_model.json b/Sejal_Tuned_FER_Model/fer_model.json new file mode 100644 index 0000000..3e1de57 --- /dev/null +++ b/Sejal_Tuned_FER_Model/fer_model.json @@ -0,0 +1 @@ +{"class_name": "Sequential", "config": {"name": "sequential", "layers": [{"class_name": "InputLayer", "config": {"batch_input_shape": [null, 48, 48, 1], "dtype": "float32", "sparse": false, "ragged": false, "name": "conv2d_input"}}, {"class_name": "Conv2D", "config": {"name": "conv2d", "trainable": true, "batch_input_shape": [null, 48, 48, 1], "dtype": "float32", "filters": 64, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "MaxPooling2D", "config": {"name": "max_pooling2d", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Dropout", "config": {"name": "dropout", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "Conv2D", "config": {"name": "conv2d_1", "trainable": true, "dtype": "float32", "filters": 128, "kernel_size": [5, 5], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_1", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_1", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "Conv2D", "config": {"name": "conv2d_2", "trainable": true, "dtype": "float32", "filters": 512, "kernel_size": [3, 3], "strides": [1, 1], "padding": "same", "data_format": "channels_last", "dilation_rate": [1, 1], "groups": 1, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": true, "dtype": "float32", "axis": [3], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_2", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "MaxPooling2D", "config": {"name": "max_pooling2d_2", "trainable": true, "dtype": "float32", "pool_size": [2, 2], "padding": "valid", "strides": [2, 2], "data_format": "channels_last"}}, {"class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "dtype": "float32", "rate": 0.5, "noise_shape": null, "seed": null}}, {"class_name": "Flatten", "config": {"name": "flatten", "trainable": true, "dtype": "float32", "data_format": "channels_last"}}, {"class_name": "Dense", "config": {"name": "dense", "trainable": true, "dtype": "float32", "units": 1024, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization_3", "trainable": true, "dtype": "float32", "axis": [1], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_3", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Dropout", "config": {"name": "dropout_3", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "Dense", "config": {"name": "dense_1", "trainable": true, "dtype": "float32", "units": 512, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}, {"class_name": "BatchNormalization", "config": {"name": "batch_normalization_4", "trainable": true, "dtype": "float32", "axis": [1], "momentum": 0.99, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}}, {"class_name": "Activation", "config": {"name": "activation_4", "trainable": true, "dtype": "float32", "activation": "relu"}}, {"class_name": "Dropout", "config": {"name": "dropout_4", "trainable": true, "dtype": "float32", "rate": 0.25, "noise_shape": null, "seed": null}}, {"class_name": "Dense", "config": {"name": "dense_2", "trainable": true, "dtype": "float32", "units": 7, "activation": "softmax", "use_bias": true, "kernel_initializer": {"class_name": "GlorotUniform", "config": {"seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}}]}, "keras_version": "2.4.0", "backend": "tensorflow"} \ No newline at end of file diff --git a/Sejal_Tuned_FER_Model/fer_model_weights.h5 b/Sejal_Tuned_FER_Model/fer_model_weights.h5 new file mode 100644 index 0000000..9f478f0 Binary files /dev/null and b/Sejal_Tuned_FER_Model/fer_model_weights.h5 differ