Last active
September 16, 2024 03:13
-
-
Save ZhiyaoShu/c991e1e432656cec00f5bfce5b8ac5ea to your computer and use it in GitHub Desktop.
Facial Emotion Detection.ipynb
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "view-in-github", | |
"colab_type": "text" | |
}, | |
"source": [ | |
"<a href=\"https://colab.research.google.com/gist/ZhiyaoShu/c991e1e432656cec00f5bfce5b8ac5ea/facial_emotion_detection-3.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "bg-DvjFCyXSr" | |
}, | |
"source": [ | |
"# **Facial Emotion Detection**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "jxmZseK0E_1s" | |
}, | |
"source": [ | |
"While text and voice have been the primary modes of communication, visual postures, especially facial expressions, convey a significant portion of our emotions. With the advent of Deep Learning and Artificial Emotional Intelligence, the possibility of machines recognizing and responding to human emotions has become a reality. This project is part of the real-time senoring systems project as the upstream to tests different methods and create a model that can accurately detect and categorize ideal facial emotions collecting by the camera." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "DYdEI31whyE-" | |
}, | |
"source": [ | |
"## **About the dataset**\n", | |
"\n", | |
"There are four classes of emotion types\n", | |
"\n", | |
"**‘happy’**: Images of people who have happy facial expressions.<br>\n", | |
"**‘sad’**: Images of people with sad or upset facial expressions.<br>\n", | |
"**‘surprise’**: Images of people who have shocked or surprised facial expressions.<br>\n", | |
"**‘neutral’**: Images of people showing no prominent emotion in their facial expression at all.<br>\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "JQi_degJC3dm", | |
"outputId": "228a8de8-e2bb-416f-f6f9-066ba283ecbc" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Mounted at /content/drive\n" | |
] | |
} | |
], | |
"source": [ | |
"from google.colab import drive\n", | |
"drive.mount('/content/drive')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "UC8-yLUUCcWh" | |
}, | |
"source": [ | |
"## **Importing the Libraries**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "30fd2144", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "4f7b7a8d-d736-48ea-df1e-fff74ae30430" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Num GPUs Available: 1\n" | |
] | |
} | |
], | |
"source": [ | |
"import cv2\n", | |
"import numpy as np\n", | |
"import os\n", | |
"os.environ['TF_USE_FUSED_CONV_OPS'] = '0'\n", | |
"import tensorflow as tf\n", | |
"print(\"Num GPUs Available: \", len(tf.config.list_physical_devices('GPU')))\n", | |
"import time\n", | |
"\n", | |
"from tensorflow.keras.models import Sequential\n", | |
"from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization, Input\n", | |
"import matplotlib.pyplot as plt\n", | |
"import seaborn as sns\n", | |
"import torch.nn.functional as F\n", | |
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", | |
"from tensorflow.keras.models import Sequential\n", | |
"from tensorflow.keras.layers import Conv2D, DepthwiseConv2D, MaxPooling2D, Flatten, Dense, Dropout, GlobalAveragePooling2D\n", | |
"from tensorflow.python.client import device_lib\n", | |
"from tensorflow.keras.optimizers import Adam\n", | |
"from tensorflow.keras.preprocessing.image import ImageDataGenerator\n", | |
"from tensorflow.keras.applications import VGG16,vgg16\n", | |
"from tensorflow.keras.models import Model\n", | |
"from tensorflow.keras.applications import ResNet50V2\n", | |
"from tensorflow.keras.models import Model\n", | |
"from tensorflow.keras.applications import EfficientNetB0\n", | |
"from tensorflow.keras.layers import Activation\n", | |
"from sklearn.metrics import confusion_matrix\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "nCqJk2XpCnJi" | |
}, | |
"source": [ | |
"### **Let us load and unzip the data**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "sMfr4tK04C0o", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 406 | |
}, | |
"outputId": "4f867204-82d9-4158-c32c-00bd04f22774" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 20 Axes>" | |
], | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
], | |
"source": [ | |
"import random\n", | |
"\n", | |
"# Load datasets\n", | |
"train_path = '/content/drive/MyDrive/Facial_emotion_images (1)/train'\n", | |
"test_path = '/content/drive/MyDrive/Facial_emotion_images (1)/test'\n", | |
"validation_path = '/content/drive/MyDrive/Facial_emotion_images (1)/validation'\n", | |
"categories = ['happy', 'sad', 'surprise', 'neutral']\n", | |
"\n", | |
"# Display\n", | |
"def display_sample_images(path, categories, num_images=5):\n", | |
" fig, axes = plt.subplots(len(categories), num_images)\n", | |
" for i, category in enumerate(categories):\n", | |
" image_folder = os.path.join(path, category)\n", | |
" image_files = os.listdir(image_folder)[:num_images]\n", | |
" for j, image_file in enumerate(image_files):\n", | |
" img = cv2.imread(os.path.join(image_folder, image_file))\n", | |
" axes[i, j].imshow(img)\n", | |
" axes[i, j].axis('off')\n", | |
"\n", | |
" plt.show()\n", | |
"\n", | |
"# Display 20 images from each category in the training set\n", | |
"display_sample_images(train_path, categories, num_images=5)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ZZMfyOH4-YSp" | |
}, | |
"source": [ | |
"## **Checking Distribution of Classes**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "m7rCOsTl-HbZ", | |
"outputId": "16763fbb-1305-4838-c50d-85f9605a33a7" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"{'happy': 3976, 'sad': 3982, 'surprise': 3173, 'neutral': 3978}\n" | |
] | |
} | |
], | |
"source": [ | |
"class_distribution={}\n", | |
"for category in categories:\n", | |
" class_distribution[category]=len(os.listdir(os.path.join(train_path,category)))\n", | |
"\n", | |
"print(class_distribution)\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "L18CyrI_LliG" | |
}, | |
"source": [ | |
"## **Create traditonal random forest model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"# Set seed for numpy and tensflow\n", | |
"\n", | |
"np.random.seed(42)\n", | |
"tf.random.set_seed(42)\n" | |
], | |
"metadata": { | |
"id": "GFAEOwBt_5r3" | |
}, | |
"execution_count": null, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "fEHdD_WYLliG", | |
"outputId": "9315ce00-31d4-4ae5-f4a9-270482f2b07a", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
} | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Test Accuracy: 0.640625\n", | |
" precision recall f1-score support\n", | |
"\n", | |
" happy 0.66 0.66 0.66 32\n", | |
" sad 0.47 0.50 0.48 32\n", | |
" surprise 0.81 0.91 0.85 32\n", | |
" neutral 0.62 0.50 0.55 32\n", | |
"\n", | |
" accuracy 0.64 128\n", | |
" macro avg 0.64 0.64 0.64 128\n", | |
"weighted avg 0.64 0.64 0.64 128\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"import cv2\n", | |
"from sklearn.ensemble import RandomForestClassifier\n", | |
"from sklearn.metrics import classification_report, accuracy_score\n", | |
"from sklearn.model_selection import train_test_split\n", | |
"\n", | |
"# Data augmentation\n", | |
"datagen = ImageDataGenerator(\n", | |
" rescale=1./255, # Rescale pixel values to [0,1]\n", | |
" rotation_range=20, # Randomly rotate images\n", | |
" width_shift_range=0.2, # Randomly shift images horizontally\n", | |
" height_shift_range=0.2, # Randomly shift images vertically\n", | |
" horizontal_flip=True, # Randomly flip images horizontally\n", | |
" validation_split=0.2 # Set validation split\n", | |
")\n", | |
"\n", | |
"# Define a function for data processing\n", | |
"def process_data(path, categories):\n", | |
" data = []\n", | |
" labels = []\n", | |
" for i, category in enumerate(categories):\n", | |
" image_folder = os.path.join(path,category)\n", | |
" images = os.listdir (image_folder)\n", | |
"\n", | |
" for image in images:\n", | |
" image_path = os.path.join(image_folder, image)\n", | |
" img = cv2.imread(image_path)\n", | |
" img = cv2.resize(img, (64, 64))\n", | |
" data.append(img)\n", | |
" labels.append(i)\n", | |
" return np.array(data), np.array(labels)\n", | |
"\n", | |
"# Load and preprocess the dataset\n", | |
"X_train, y_train = process_data(train_path, categories)\n", | |
"X_train = X_train.reshape(len(X_train), -1)\n", | |
"\n", | |
"X_val, y_val = process_data(validation_path, categories)\n", | |
"X_val = X_val.reshape(len(X_val), -1)\n", | |
"\n", | |
"X_test, y_test = process_data(test_path, categories)\n", | |
"X_test = X_test.reshape(len(X_test), -1)\n", | |
"\n", | |
"# Initialize a Random Forest classifier\n", | |
"clf = RandomForestClassifier(n_estimators=100, random_state=42)\n", | |
"\n", | |
"# Fit the classifier to the training data\n", | |
"clf.fit(X_train, y_train)\n", | |
"\n", | |
"# Reshape the data for Random Forest (flatten the images)\n", | |
"X_test = np.array(X_test).reshape(len(X_test), -1)\n", | |
"\n", | |
"\n", | |
"# Make predictions on the test data\n", | |
"y_pred = clf.predict(X_test)\n", | |
"\n", | |
"# Evaluate the model\n", | |
"accuracy = accuracy_score(y_test, y_pred)\n", | |
"classification_rep = classification_report(y_test, y_pred, target_names=categories)\n", | |
"\n", | |
"print(\"Test Accuracy:\", accuracy)\n", | |
"print(classification_rep)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"from sklearn.metrics import confusion_matrix\n", | |
"import seaborn as sns\n", | |
"import matplotlib.pyplot as plt\n", | |
"\n", | |
"# Generate confusion matrix\n", | |
"cm = confusion_matrix(y_test, y_pred, labels=[0,1,2,3])\n", | |
"\n", | |
"# Plot confusion matrix\n", | |
"plt.figure(figsize=(10,7))\n", | |
"sns.heatmap(cm, annot=True, fmt='d', xticklabels=categories, yticklabels=categories)\n", | |
"plt.xlabel('Predicted')\n", | |
"plt.ylabel('Actual')\n", | |
"plt.show()" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 619 | |
}, | |
"id": "d54nTqQCTeId", | |
"outputId": "5db8d8ee-675b-4815-a80c-c83f29cae913" | |
}, | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 1000x700 with 2 Axes>" | |
], | |
"image/png": "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ZAAAAHAnhhP/54pcooOwdetW3X///QoODta+ffv03HPPKV++fJozZ44OHDig6dOnmx0RAAAAcAsu0UHo06ePnnnmGe3atcth16LWrVtr1apVJiYDAACAu7EahtMersglCoTff/9dL7zwwjXjRYsW1dGjR01IBAAAALgnl5hi5O3trXPnzl0z/vfff6tgwYImJAIAAIC7ctW1Ac7iEh2ENm3aaOjQoUpNTZUkWSwWHThwQK+//ro6dOhgcjoAAADAfbhEgTBmzBglJycrJCREly5dUkREhMqWLauAgACNGDHC7HgAAABwI+6+BsElphgFBQVp6dKlWrt2rf744w8lJyerZs2aat68udnRAAAAALfiEgWCJMXGxio2NlbHjx+X1WrVjh07NGPGDEnSlClTTE4HAAAAd+HuaxBcokAYMmSIhg4dqtq1a6tw4cKyWCxmRwIAAADckksUCJMmTdK0adPUsWNHs6MAAADAzRmG1ewIpnKJRcpXrlzRvffea3YMAAAAwO25RIHQrVs323oDAAAAAOZxiSlGly9f1qeffqply5apWrVqyp07t8PrY8eONSkZAAAA3I2VRcrm27p1q6pXry5J2r59u8NrLFgGAAAAnMclCoTly5ebHQEAAACQJBkuegMzZ3GJNQgAAAAAXINLdBAAAAAAV+HuaxDoIAAAAACwoYMAAAAA2GENAgAAAABkoIMAAAAA2LHSQQAAAACAdHQQAAAAADsGuxgBAAAAQDo6CAAAAIAddjECAAAAgAx0EAAAAAA73EkZAAAAADLQQQAAAADssAYBAAAAADLQQQAAAADscCdlAAAAAMhAgQAAAADAhilGAAAAgB0WKQMAAABABjoIAAAAgB1ulAYAAAAAGeggAAAAAHZYgwAAAAAAGeggAAAAAHa4URoAAAAAZKCDAAAAANgx2MUIAAAAANLRQQAAAADssAYBAAAAADLQQQAAAADscB8EAAAAAMhABwEAAACwwy5GAAAAAJCBDgIAAABghzUIAAAAAJCBAgEAAACADVOMAAAAADtMMQIAAACADHQQAAAAADvu3T+ggwAAAADAjsVw90lWkCSlpKQoJiZGAwYMkLe3t9lxkIPxWYOz8FmDs/BZQ05DgQBJ0rlz5xQUFKSzZ88qMDDQ7DjIwfiswVn4rMFZ+Kwhp2GKEQAAAAAbCgQAAAAANhQIAAAAAGwoECBJ8vb21uDBg1lchTuOzxqchc8anIXPGnIaFikDAAAAsKGDAAAAAMCGAgEAAACADQUCAAAAABsKhLtUkyZN1KtXL7NjAHeMxWLRvHnzzI4BN/DOO++oevXqZscArlGqVCl98MEHZseAG6JAAAC4tX79+ik2NtbsGMgB+OUdcgoKBADAXe3KlSu3dJ5hGLp69aoCAgKUP3/+bE4F/Ld/PneAK6NAuItZrVb1799f+fLlU2hoqN555x3ba2PHjlXVqlXl7++v4sWL66WXXlJycrLt9WnTpik4OFjz5s1TuXLl5OPjo8jISB08eNB2zD9t98mTJ6t48eLy8/PTo48+qrNnz0qSVq1apdy5c+vo0aMOuXr16qVGjRrd2S8eLmfWrFmqWrWqfH19lT9/fjVv3lwXLlzQ77//rgceeEAFChRQUFCQIiIitHnzZodzd+3apcaNG8vHx0eVK1fW0qVLTfoq4CzX+7z8129go6Oj1aVLF9vzUqVKadiwYerUqZMCAwP1/PPPa9++fbJYLPruu+907733ysfHR1WqVNHKlStt561YsUIWi0WLFi1SrVq15O3trTVr1lwzxWjFihWqW7eu/P39FRwcrPvuu0/79++3vf7DDz+oZs2a8vHxUenSpTVkyBD+wXcXaNKkiXr27Hndn5tJSUnq1q2bChYsqMDAQDVr1kx//PGH7fUuXbooOjra4T179eqlJk2a2F5fuXKlPvzwQ1ksFlksFu3bt++6n7s9e/aobdu2KlSokAICAlSnTh0tW7bMCX8TwM1RINzFvvzyS/n7+2vDhg167733NHToUNs/rDw8PDR+/Hj9+eef+vLLL/XLL7+of//+DudfvHhRI0aM0PTp07V27VolJSXp8ccfdzhm9+7dmjlzphYsWKDFixdry5YteumllyRJjRs3VunSpfXVV1/Zjk9NTdU333yjrl273uGvHq4kMTFRTzzxhLp27ar4+HitWLFC7du3l2EYOn/+vDp37qw1a9Zo/fr1KleunFq3bq3z589LSi9027dvLy8vL23YsEGTJk3S66+/bvJXhDvpRp+XzBo9erTCw8O1ZcsWDRw40Db+2muvqW/fvtqyZYsaNGigqKgonTp1yuHcN954QyNHjlR8fLyqVavm8NrVq1cVHR2tiIgIbd26VevWrdPzzz8vi8UiSVq9erU6deqkV199VX/99ZcmT56sadOmacSIEbfxNwJnudHPzUceeUTHjx/XokWLtGnTJtWsWVP333+/Tp8+nan3/vDDD9WgQQM999xzSkxMVGJioooXL257/d+fu+TkZLVu3VqxsbHasmWLWrZsqaioKB04cOCOfO1Alhi4K0VERBgNGzZ0GKtTp47x+uuv/+fx//vf/4z8+fPbnk+dOtWQZKxfv942Fh8fb0gyNmzYYBiGYQwePNjw9PQ0Dh06ZDtm0aJFhoeHh5GYmGgYhmGMGjXKqFSpku312bNnGwEBAUZycvLtf5G4a2zatMmQZOzbt++mx6alpRl58uQxFixYYBiGYSxZssTIlSuXcfjwYdsxixYtMiQZc+fOvVORYaIbfV4iIiKMV1991WGsbdu2RufOnW3PS5YsaURHRzsck5CQYEgyRo4caRtLTU01ihUrZowaNcowDMNYvny5IcmYN2+ew7mDBw82wsPDDcMwjFOnThmSjBUrVvxn9vvvv9949913Hca++uoro3Dhwjf8mmG+G/3cXL16tREYGGhcvnzZ4fUyZcoYkydPNgzDMDp37my0bdvW4fVXX33ViIiIcLjGvz+/1/vc/Zd77rnH+Oijj2zPS5YsaYwbN+7mXxyQzegg3MX+/ZuvwoUL6/jx45KkZcuW6f7771fRokWVJ08edezYUadOndLFixdtx+fKlUt16tSxPa9YsaKCg4MVHx9vGytRooSKFi1qe96gQQNZrVbt3LlTUnpLdffu3Vq/fr2k9KlLjz76qPz9/bP/C4bLCg8P1/3336+qVavqkUce0WeffaYzZ85Iko4dO6bnnntO5cqVU1BQkAIDA5WcnGz7LVl8fLyKFy+uIkWK2N6vQYMGpnwdcI4bfV4yq3bt2v85bv/ZyZUrl2rXru3wPe1G50pSvnz51KVLF0VGRioqKkoffvihEhMTba//8ccfGjp0qAICAmyPf35jbP/9Fa7pej83//jjDyUnJyt//vwO/20TEhK0Z8+ebLn2vz93ycnJ6tevnypVqqTg4GAFBAQoPj6eDgJcAgXCXSx37twOzy0Wi6xWq/bt26eHHnpI1apV0+zZs7Vp0yZNmDBB0q0v5ruekJAQRUVFaerUqTp27JgWLVrE9CI35OnpqaVLl2rRokWqXLmyPvroI1WoUEEJCQnq3Lmz4uLi9OGHH+rXX39VXFyc8ufPn+2fRdw9bvR58fDwuGaqUWpq6jXvcTu/hLjZuVOnTtW6det077336vvvv1f58uVtvwRJTk7WkCFDFBcXZ3ts27ZNu3btko+Pzy1ngnNc7+dmcnKyChcu7PDfNS4uTjt37tRrr70mSZn+bF7Pvz93/fr109y5c/Xuu+9q9erViouLU9WqVfneCJeQy+wAyH6bNm2S1WrVmDFj5OGRXgPOnDnzmuOuXr2qjRs3qm7dupKknTt3KikpSZUqVbIdc+DAAR05csT2293169fLw8NDFSpUsB3TrVs3PfHEEypWrJjKlCmj++67705+eXBRFotF9913n+677z4NGjRIJUuW1Ny5c7V27Vp98sknat26tSTp4MGDOnnypO28SpUq6eDBg0pMTFThwoUlyfaPMeRc1/u8FCxY0OE39mlpadq+fbuaNm2aqfddv369GjduLCn9e9ymTZv08ssvZzlfjRo1VKNGDQ0YMEANGjTQjBkzVL9+fdWsWVM7d+5U2bJls/yecF01a9bU0aNHlStXLpUqVeo/jylYsKC2b9/uMBYXF+dQdHh5eSktLS1T11y7dq26dOmidu3aSUovPvft23dL+YHsRoGQA5UtW1apqan66KOPFBUVpbVr12rSpEnXHJc7d2698sorGj9+vHLlyqWXX35Z9evXtxUMkuTj46POnTtr9OjROnfunHr27KlHH31UoaGhtmMiIyMVGBio4cOHa+jQoU75GuFaNmzYoNjYWLVo0UIhISHasGGDTpw4oUqVKqlcuXL66quvVLt2bZ07d06vvfaafH19bec2b95c5cuXV+fOnfX+++/r3Llzeuutt0z8anCn3ejz4u/vrz59+ujHH39UmTJlNHbsWCUlJWX6vSdMmKBy5cqpUqVKGjdunM6cOZOlrmZCQoI+/fRTtWnTRkWKFNHOnTu1a9cuderUSZI0aNAgPfTQQypRooQefvhheXh46I8//tD27ds1fPjwrP5VwEU0b95cDRo0UHR0tN577z2VL19eR44c0Y8//qh27dqpdu3aatasmd5//31Nnz5dDRo00Ndff63t27erRo0atvcpVaqUNmzYoH379ikgIED58uW77jXLlSunOXPmKCoqShaLRQMHDpTVanXGlwvcFFOMcqDw8HCNHTtWo0aNUpUqVfTNN98oJibmmuP8/Pz0+uuv68knn9R9992ngIAAff/9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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "J7NKTPgdEsgt" | |
}, | |
"source": [ | |
"## **Creating our Data Loaders**\n", | |
"\n", | |
"I chose to load image data to grayscale as it needs less channels and" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "d97fee2d", | |
"outputId": "8e0adca3-d7a9-4129-f3ab-645b4c9288b6" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"\n", | |
"Load data to grayscale\n", | |
"Found 15109 images belonging to 4 classes.\n", | |
"Found 4977 images belonging to 4 classes.\n", | |
"Found 128 images belonging to 4 classes.\n" | |
] | |
} | |
], | |
"source": [ | |
"datagen = ImageDataGenerator(\n", | |
" rescale=1./255, # Rescale pixel values to [0,1]\n", | |
" rotation_range=20, # Randomly rotate images\n", | |
" width_shift_range=0.2, # Randomly shift images horizontally\n", | |
" height_shift_range=0.2, # Randomly shift images vertically\n", | |
" horizontal_flip=True, # Randomly flip images horizontally\n", | |
" validation_split=0.2 # Set validation split\n", | |
")\n", | |
"\n", | |
"# Create data loaders\n", | |
"def data_loader(color_mode):\n", | |
" train_loader=datagen.flow_from_directory(\n", | |
" train_path,\n", | |
" target_size=(48,48),\n", | |
" batch_size=32,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale',\n", | |
" )\n", | |
" validation_loader=datagen.flow_from_directory(\n", | |
" validation_path,\n", | |
" target_size=(48,48),\n", | |
" batch_size=32,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale',\n", | |
" )\n", | |
" test_loader=datagen.flow_from_directory(\n", | |
" test_path,\n", | |
" target_size=(48,48),\n", | |
" batch_size=32,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale',\n", | |
" )\n", | |
"\n", | |
" return train_loader, validation_loader, test_loader\n", | |
"\n", | |
"print('\\nLoad data to grayscale')\n", | |
"train_loader, validation_loader, test_loader = data_loader('grayscale')" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "_qGpQC3q1avy" | |
}, | |
"source": [ | |
"## **Model Building**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "0feec0a7" | |
}, | |
"source": [ | |
"### **Creating the Base Neural Network**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "LCTOhY8X5-O0", | |
"outputId": "e6876446-f961-49f0-92a3-ac2abdc984ac" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"\n", | |
"Base Model for Grayscale:\n", | |
"Model: \"sequential\"\n", | |
"_________________________________________________________________\n", | |
" Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
" conv2d (Conv2D) (None, 46, 46, 32) 320 \n", | |
" \n", | |
" max_pooling2d (MaxPooling2 (None, 23, 23, 32) 0 \n", | |
" D) \n", | |
" \n", | |
" conv2d_1 (Conv2D) (None, 21, 21, 64) 18496 \n", | |
" \n", | |
" max_pooling2d_1 (MaxPoolin (None, 10, 10, 64) 0 \n", | |
" g2D) \n", | |
" \n", | |
" conv2d_2 (Conv2D) (None, 8, 8, 128) 73856 \n", | |
" \n", | |
" max_pooling2d_2 (MaxPoolin (None, 4, 4, 128) 0 \n", | |
" g2D) \n", | |
" \n", | |
" flatten (Flatten) (None, 2048) 0 \n", | |
" \n", | |
" dense (Dense) (None, 512) 1049088 \n", | |
" \n", | |
" dropout (Dropout) (None, 512) 0 \n", | |
" \n", | |
" dense_1 (Dense) (None, 4) 2052 \n", | |
" \n", | |
"=================================================================\n", | |
"Total params: 1143812 (4.36 MB)\n", | |
"Trainable params: 1143812 (4.36 MB)\n", | |
"Non-trainable params: 0 (0.00 Byte)\n", | |
"_________________________________________________________________\n" | |
] | |
} | |
], | |
"source": [ | |
"from IPython.core.interactiveshell import SeparateUnicode\n", | |
"\n", | |
"def base_model(input_shape, classes):\n", | |
" model=Sequential([\n", | |
" # First convolutional layer\n", | |
" Conv2D(32,(3,3), activation='relu', input_shape=input_shape),\n", | |
" MaxPooling2D(2,2),\n", | |
"\n", | |
" # Second convolutional layer\n", | |
" Conv2D(64, (3,3), activation='relu'),\n", | |
" MaxPooling2D(2, 2),\n", | |
"\n", | |
" # Third convolutional layer\n", | |
" Conv2D(128, (3,3), activation='relu'),\n", | |
" MaxPooling2D(2, 2),\n", | |
"\n", | |
" Flatten(),\n", | |
" Dense(512,activation='relu'),\n", | |
" Dropout(0.5),\n", | |
"\n", | |
" Dense(classes, activation='softmax')\n", | |
" ])\n", | |
"\n", | |
" return model\n", | |
"\n", | |
"classes = 4\n", | |
"input_shape = (48, 48, 1)\n", | |
"# Create models for both RGB and grayscale\n", | |
"model = base_model(input_shape, classes)\n", | |
"\n", | |
"# Build model\n", | |
"model.build((48, 48, 1))\n", | |
"\n", | |
"# model_rgb.summary()\n", | |
"print(\"\\nBase Model for Grayscale:\")\n", | |
"model.summary()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "vgOwCHZxqAlG" | |
}, | |
"source": [ | |
"### **Compiling and Training the Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"id": "bgalU3ydsMAk", | |
"outputId": "9e7fd01f-0ab3-4d94-e205-f9ddb97f9183" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Epoch 1/10\n", | |
"473/473 [==============================] - 1272s 3s/step - loss: 1.1836 - accuracy: 0.4422 - val_loss: 1.1292 - val_accuracy: 0.4770\n", | |
"Epoch 2/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 1.1075 - accuracy: 0.4980 - val_loss: 1.1435 - val_accuracy: 0.4673\n", | |
"Epoch 3/10\n", | |
"473/473 [==============================] - 29s 62ms/step - loss: 1.0422 - accuracy: 0.5388 - val_loss: 0.9969 - val_accuracy: 0.5738\n", | |
"Epoch 4/10\n", | |
"473/473 [==============================] - 29s 60ms/step - loss: 0.9957 - accuracy: 0.5669 - val_loss: 1.0825 - val_accuracy: 0.5174\n", | |
"Epoch 5/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.9635 - accuracy: 0.5825 - val_loss: 0.9180 - val_accuracy: 0.6102\n", | |
"Epoch 6/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.9417 - accuracy: 0.6006 - val_loss: 0.8745 - val_accuracy: 0.6434\n", | |
"Epoch 7/10\n", | |
"473/473 [==============================] - 28s 59ms/step - loss: 0.9182 - accuracy: 0.6102 - val_loss: 0.8648 - val_accuracy: 0.6313\n", | |
"Epoch 8/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.8976 - accuracy: 0.6198 - val_loss: 0.8697 - val_accuracy: 0.6426\n", | |
"Epoch 9/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.8842 - accuracy: 0.6248 - val_loss: 0.8854 - val_accuracy: 0.6243\n", | |
"Epoch 10/10\n", | |
"473/473 [==============================] - 28s 59ms/step - loss: 0.8695 - accuracy: 0.6338 - val_loss: 0.8283 - val_accuracy: 0.6582\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<keras.src.callbacks.History at 0x7adadec9caf0>" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 12 | |
} | |
], | |
"source": [ | |
"# Compile the model\n", | |
"model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", | |
"\n", | |
"# Train the model\n", | |
"model.fit(train_loader, epochs=10, validation_data=validation_loader)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "CR2yf3zH7uje" | |
}, | |
"source": [ | |
"### **Evaluating the Model on the Test Set**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "gffvQXr-70Hm", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "4559d859-704b-4f59-819c-de2a8e62b9ad" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 62s 21s/step - loss: 0.8728 - accuracy: 0.6094\n", | |
"Epoch 1/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.8552 - accuracy: 0.6415 - val_loss: 0.8547 - val_accuracy: 0.6446\n", | |
"Epoch 2/10\n", | |
"473/473 [==============================] - 29s 60ms/step - loss: 0.8522 - accuracy: 0.6459 - val_loss: 0.8012 - val_accuracy: 0.6651\n", | |
"Epoch 3/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.8381 - accuracy: 0.6495 - val_loss: 0.8146 - val_accuracy: 0.6661\n", | |
"Epoch 4/10\n", | |
"473/473 [==============================] - 29s 60ms/step - loss: 0.8273 - accuracy: 0.6564 - val_loss: 0.8437 - val_accuracy: 0.6456\n", | |
"Epoch 5/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.8274 - accuracy: 0.6561 - val_loss: 0.7960 - val_accuracy: 0.6775\n", | |
"Epoch 6/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.8185 - accuracy: 0.6607 - val_loss: 0.7979 - val_accuracy: 0.6681\n", | |
"Epoch 7/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.8032 - accuracy: 0.6686 - val_loss: 0.7646 - val_accuracy: 0.6856\n", | |
"Epoch 8/10\n", | |
"473/473 [==============================] - 28s 60ms/step - loss: 0.8026 - accuracy: 0.6666 - val_loss: 0.7538 - val_accuracy: 0.6886\n", | |
"Epoch 9/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.7900 - accuracy: 0.6720 - val_loss: 0.7892 - val_accuracy: 0.6815\n", | |
"Epoch 10/10\n", | |
"473/473 [==============================] - 29s 60ms/step - loss: 0.7964 - accuracy: 0.6721 - val_loss: 0.7739 - val_accuracy: 0.6898\n", | |
"RGB Model - Test Loss: 0.8728\n", | |
"RGB Model - Test Accuracy: 60.94%\n" | |
] | |
} | |
], | |
"source": [ | |
"test_loss, test_accuracy = model.evaluate(test_loader)\n", | |
"\n", | |
"# Save the history\n", | |
"history = model.fit(train_loader, epochs=10, validation_data=validation_loader)\n", | |
"\n", | |
"print(f\"RGB Model - Test Loss: {test_loss:.4f}\")\n", | |
"print(f\"RGB Model - Test Accuracy: {test_accuracy*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"#Extract training and validation accuracy from history\n", | |
"train_acc = history.history['accuracy']\n", | |
"val_acc = history.history['val_accuracy']\n", | |
"\n", | |
"#Extract training and validation loss from history\n", | |
"train_loss = history.history['loss']\n", | |
"val_loss = history.history['val_loss']\n", | |
"\n", | |
"epochs_range = range(1, len(train_acc) + 1)\n", | |
"\n", | |
"# Plot training & validation accuracy values\n", | |
"plt.title('Training Accuracies')\n", | |
"plt.plot(epochs_range, train_acc, label='Training Accuracy')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Accuracy')\n", | |
"plt.legend()\n", | |
"\n", | |
"# Plot training & validation loss values\n", | |
"plt.title('Training Loss')\n", | |
"plt.plot(epochs_range, train_loss, label='Training Loss')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Loss')\n", | |
"plt.legend()\n", | |
"\n", | |
"plt.show()" | |
], | |
"metadata": { | |
"id": "E-del-4aJUjg", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 472 | |
}, | |
"outputId": "b97d1296-2024-4275-8bff-25d6fa379926" | |
}, | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
], | |
"image/png": "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RkJCAm3atGHlypX2idHx8fH2gFVk3759rF+/nlWrVhU7nqurK7/++ivvvPMOycnJREVFcdttt/Hss8/qWkAiIiIClLEHyGq18txzz/HKK6+Qnp4OgJ+fH0888QRPPvlkscBS06gHSEREpOap9B6gJ598koULF/LCCy/QpUsXANavX8/06dPJzs7m+eefL8thRURERKpEmXqAoqKiWLBggf0u8EU+//xzHnnkEY4fP15hBTqDeoBERERqnqv5/i7TWNXZs2dLnOjctGlTzp49W5ZDioiIiFSZMgWg1q1bM2/evGLt8+bNo1WrVuUuSkRERKQylWkO0Isvvkj//v1Zs2aN/Xo9Gzdu5NixY6xYsaJCCxQRERGpaGXqAerevTv79+9n0KBBJCcnk5yczB133MHu3bt57733KrpGERERkQpV5gshluSXX37hxhtvvORNR2sKTYIWERGpeSp9ErSIiIhITaYAJCIiIqajACQiIiKmc1Vngd1xxx2XXZ+cnFyeWkRERESqxFUFoICAgCuuHzFiRLkKEhEREalsVxWAFi1aVFl1iIiIiFQZzQESERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER01EAEhEREdNRABIRERHTUQASERER06kWAei1116jfv36eHl5ERsby5YtWy65bY8ePbBYLMWW/v3727ex2WxMmzaNyMhIvL296dWrFwcOHKiKjyIiIiI1gNMD0IcffsiECRN4+umn2bZtG61bt6Z3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3nrrLWeXZVqdO3dm7dq17N+/H4BffvmF9evX07dvXydXJocPHyYhIcHh362AgABiY2PZuHFjldSgm6FKmVitVsaPH0+XLl1o0aKFs8sxraVLl7Jt2za2bt3q7FIEOHToEPPnz2fChAn885//ZOvWrTz66KN4eHgwcuRIZ5dnOpMnTyY1NZWmTZvi6upKQUEBzz//PMOGDXN2aaaXkJAAQHh4uEN7eHi4fV1lUwCSMhkzZgy7du1i/fr1zi7FtI4dO8Zjjz3G6tWr8fLycnY5gvEfg/bt2zNz5kwA2rZty65du1iwYIECkBN89NFHLFmyhA8++IDmzZuzY8cOxo8fT1RUlH4foiEwuXpjx47lyy+/5LvvvuO6665zdjmm9fPPP3Pq1CluvPFG3NzccHNz4/vvv+fVV1/Fzc2NgoICZ5doOpGRkdxwww0Obc2aNSM+Pt5JFZnb//3f/zF58mSGDBlCy5Ytue+++3j88ceJi4tzdmmmFxERAUBiYqJDe2Jion1dZVMAklKz2WyMHTuWTz/9lG+//ZYGDRo4uyRT69mzJzt37mTHjh32pX379gwbNowdO3bg6urq7BJNp0uXLsUuDbF//37q1avnpIrMLTMzExcXx685V1dXrFarkyqSIg0aNCAiIoK1a9fa21JTU9m8eTOdOnWqkho0BCalNmbMGD744AM+//xz/Pz87OO0AQEBeHt7O7k68/Hz8ys2/8rX15fg4GDNy3KSxx9/nM6dOzNz5kzuvvtutmzZwptvvsmbb77p7NJMacCAATz//PPUrVuX5s2bs337dmbPns3999/v7NJMIT09nYMHD9pfHz58mB07dhAUFETdunUZP348zz33HI0bN6ZBgwZMnTqVqKgo+5lilc4mUkpAicuiRYucXZoU6t69u+2xxx5zdhmm9sUXX9hatGhh8/T0tDVt2tT25ptvOrsk00pNTbU99thjtrp169q8vLxsDRs2tD355JO2nJwcZ5dmCt99912J3xkjR4602Ww2m9VqtU2dOtUWHh5u8/T0tPXs2dO2b9++KqtP1wESERER09EcIBERETEdBSARERExHQUgERERMR0FIBERETEdBSARERExHQUgERERMR0FIBERETEdBSARkVKwWCx89tlnzi5DRCqIApCIVHujRo3CYrEUW/r06ePs0kSkhtK9wESkRujTpw+LFi1yaPP09HRSNSJS06kHSERqBE9PTyIiIhyW2rVrA8bw1Pz58+nbty/e3t40bNiQTz75xGH/nTt3csstt+Dt7U1wcDAPPfQQ6enpDtu8/fbbNG/eHE9PTyIjIxk7dqzD+jNnzjBo0CB8fHxo3Lgxy5cvr9wPLSKVRgFIRK4JU6dOZfDgwfzyyy8MGzaMIUOGsGfPHgAyMjLo3bs3tWvXZuvWrXz88cesWbPGIeDMnz+fMWPG8NBDD7Fz506WL19Oo0aNHN7jmWee4e677+bXX3+lX79+DBs2jLNnz1bp5xSRClJlt10VESmjkSNH2lxdXW2+vr4Oy/PPP2+z2Ww2wPb3v//dYZ/Y2Fjbww8/bLPZbLY333zTVrt2bVt6erp9/VdffWVzcXGxJSQk2Gw2my0qKsr25JNPXrIGwPbUU0/ZX6enp9sA29dff11hn1NEqo7mAIlIjfCnP/2J+fPnO7QFBQXZn3fq1MlhXadOndixYwcAe/bsoXXr1vj6+trXd+nSBavVyr59+7BYLJw4cYKePXtetoZWrVrZn/v6+uLv78+pU6fK+pFExIkUgESkRvD19S02JFVRvL29S7Wdu7u7w2uLxYLVaq2MkkSkkmkOkIhcEzZt2lTsdbNmzQBo1qwZv/zyCxkZGfb1GzZswMXFhSZNmuDn50f9+vVZu3ZtldYsIs6jHiARqRFycnJISEhwaHNzcyMkJASAjz/+mPbt29O1a1eWLFnCli1bWLhwIQDDhg3j6aefZuTIkUyfPp3Tp08zbtw47rvvPsLDwwGYPn06f//73wkLC6Nv376kpaWxYcMGxo0bV7UfVESqhAKQiNQIK1euJDIy0qGtSZMm7N27FzDO0Fq6dCmPPPIIkZGR/Pe//+WGG24AwMfHh2+++YbHHnuMDh064OPjw+DBg5k9e7b9WCNHjiQ7O5t//etfTJw4kZCQEO68886q+4AiUqUsNpvN5uwiRETKw2Kx8OmnnzJw4EBnlyIiNYTmAImIiIjpKACJiIiI6WgOkIjUeBrJF5GrpR4gERERMR0FIBERETEdBSARERExHQUgERERMR0FIBERETEdBSARERExHQUgERERMR0FIBERETEdBSARERExnf8PuurbDk6l5O0AAAAASUVORK5CYII=\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "SoqluqR-RMbk" | |
}, | |
"source": [ | |
"**Observations and Insights:** I chose rgb which have 3 channels to test the accuracy. And the result of 57.03% is moderate, especially considering that random guessing would yield 25% accuracy for a 4-class problem. A test loss of 0.9089 indicates that the model's predictions are somewhat off from the true labels on average. " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "12efb6c8" | |
}, | |
"source": [ | |
"## **Creating the second Convolutional Neural Network**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "7887b475", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "25ac45e3-1b84-47b0-b767-9f220bf1eff4" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Model: \"sequential_3\"\n", | |
"_________________________________________________________________\n", | |
" Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
" conv2d_14 (Conv2D) (None, 48, 48, 64) 640 \n", | |
" \n", | |
" batch_normalization_12 (Ba (None, 48, 48, 64) 256 \n", | |
" tchNormalization) \n", | |
" \n", | |
" conv2d_15 (Conv2D) (None, 48, 48, 64) 36928 \n", | |
" \n", | |
" max_pooling2d_14 (MaxPooli (None, 24, 24, 64) 0 \n", | |
" ng2D) \n", | |
" \n", | |
" dropout_6 (Dropout) (None, 24, 24, 64) 0 \n", | |
" \n", | |
" conv2d_16 (Conv2D) (None, 24, 24, 128) 73856 \n", | |
" \n", | |
" batch_normalization_13 (Ba (None, 24, 24, 128) 512 \n", | |
" tchNormalization) \n", | |
" \n", | |
" conv2d_17 (Conv2D) (None, 24, 24, 128) 147584 \n", | |
" \n", | |
" batch_normalization_14 (Ba (None, 24, 24, 128) 512 \n", | |
" tchNormalization) \n", | |
" \n", | |
" max_pooling2d_15 (MaxPooli (None, 12, 12, 128) 0 \n", | |
" ng2D) \n", | |
" \n", | |
" dropout_7 (Dropout) (None, 12, 12, 128) 0 \n", | |
" \n", | |
" conv2d_18 (Conv2D) (None, 12, 12, 128) 147584 \n", | |
" \n", | |
" batch_normalization_15 (Ba (None, 12, 12, 128) 512 \n", | |
" tchNormalization) \n", | |
" \n", | |
" conv2d_19 (Conv2D) (None, 12, 12, 128) 147584 \n", | |
" \n", | |
" batch_normalization_16 (Ba (None, 12, 12, 128) 512 \n", | |
" tchNormalization) \n", | |
" \n", | |
" max_pooling2d_16 (MaxPooli (None, 6, 6, 128) 0 \n", | |
" ng2D) \n", | |
" \n", | |
" dropout_8 (Dropout) (None, 6, 6, 128) 0 \n", | |
" \n", | |
" flatten_5 (Flatten) (None, 4608) 0 \n", | |
" \n", | |
" dense_15 (Dense) (None, 512) 2359808 \n", | |
" \n", | |
" batch_normalization_17 (Ba (None, 512) 2048 \n", | |
" tchNormalization) \n", | |
" \n", | |
" dropout_9 (Dropout) (None, 512) 0 \n", | |
" \n", | |
" dense_16 (Dense) (None, 256) 131328 \n", | |
" \n", | |
" batch_normalization_18 (Ba (None, 256) 1024 \n", | |
" tchNormalization) \n", | |
" \n", | |
" dropout_10 (Dropout) (None, 256) 0 \n", | |
" \n", | |
" dense_17 (Dense) (None, 4) 1028 \n", | |
" \n", | |
"=================================================================\n", | |
"Total params: 3051716 (11.64 MB)\n", | |
"Trainable params: 3049028 (11.63 MB)\n", | |
"Non-trainable params: 2688 (10.50 KB)\n", | |
"_________________________________________________________________\n" | |
] | |
} | |
], | |
"source": [ | |
"def large_model(input_shape):\n", | |
" model=Sequential([\n", | |
" # First convolutional block\n", | |
" Conv2D(64,(3,3),activation='relu',padding='same', input_shape=input_shape), BatchNormalization(),\n", | |
" Conv2D(64,(3,3),activation='relu',padding='same', input_shape=input_shape),\n", | |
" MaxPooling2D(2, 2),\n", | |
" Dropout(0.25),\n", | |
"\n", | |
" # Second convolutional block\n", | |
" Conv2D(128, (3,3), activation='relu', padding='same'),\n", | |
" BatchNormalization(),\n", | |
" Conv2D(128, (3,3), activation='relu', padding='same'),\n", | |
" BatchNormalization(),\n", | |
" MaxPooling2D(2, 2),\n", | |
" Dropout(0.25),\n", | |
"\n", | |
" # Third convolutional block\n", | |
" Conv2D(128, (3,3), activation='relu', padding='same'),\n", | |
" BatchNormalization(),\n", | |
" Conv2D(128, (3,3), activation='relu', padding='same'),\n", | |
" BatchNormalization(),\n", | |
" MaxPooling2D(2, 2),\n", | |
" Dropout(0.25),\n", | |
"\n", | |
" # Flatten and fully connected layers\n", | |
" Flatten(),\n", | |
" Dense(512, activation='relu'),\n", | |
" BatchNormalization(),\n", | |
" Dropout(0.5),\n", | |
" Dense(256, activation='relu'),\n", | |
" BatchNormalization(),\n", | |
" Dropout(0.5),\n", | |
"\n", | |
" # Output layer\n", | |
" Dense(4, activation='softmax')\n", | |
"\n", | |
" ])\n", | |
" return model\n", | |
"\n", | |
"# Create models for both RGB scale\n", | |
"large_model = large_model(input_shape=(48, 48, 1))\n", | |
"large_model.summary()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "T2d7wYiTk5uW" | |
}, | |
"source": [ | |
"### **Compiling and Training the Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "5f79add6", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "5fa85095-0d44-4521-a06f-c7d935c55af0" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Epoch 1/10\n", | |
"473/473 [==============================] - 35s 63ms/step - loss: 1.7389 - accuracy: 0.2902 - val_loss: 1.3357 - val_accuracy: 0.3703\n", | |
"Epoch 2/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 1.3981 - accuracy: 0.3213 - val_loss: 1.2817 - val_accuracy: 0.3705\n", | |
"Epoch 3/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 1.2537 - accuracy: 0.4080 - val_loss: 1.2134 - val_accuracy: 0.4356\n", | |
"Epoch 4/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 1.1010 - accuracy: 0.5029 - val_loss: 1.0254 - val_accuracy: 0.5381\n", | |
"Epoch 5/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.9985 - accuracy: 0.5671 - val_loss: 1.0109 - val_accuracy: 0.5523\n", | |
"Epoch 6/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.9248 - accuracy: 0.6064 - val_loss: 0.9187 - val_accuracy: 0.6156\n", | |
"Epoch 7/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.8751 - accuracy: 0.6313 - val_loss: 0.8529 - val_accuracy: 0.6397\n", | |
"Epoch 8/10\n", | |
"473/473 [==============================] - 29s 60ms/step - loss: 0.8371 - accuracy: 0.6488 - val_loss: 0.7787 - val_accuracy: 0.6757\n", | |
"Epoch 9/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.8178 - accuracy: 0.6593 - val_loss: 0.9770 - val_accuracy: 0.5861\n", | |
"Epoch 10/10\n", | |
"473/473 [==============================] - 29s 61ms/step - loss: 0.7948 - accuracy: 0.6715 - val_loss: 0.9204 - val_accuracy: 0.6186\n" | |
] | |
}, | |
{ | |
"output_type": "execute_result", | |
"data": { | |
"text/plain": [ | |
"<keras.src.callbacks.History at 0x7adae5d931f0>" | |
] | |
}, | |
"metadata": {}, | |
"execution_count": 58 | |
} | |
], | |
"source": [ | |
"# Compile the grayscale model\n", | |
"large_model.compile(loss='categorical_crossentropy', optimizer=Adam(), metrics=['accuracy'])\n", | |
"\n", | |
"# Train the grayscale model\n", | |
"large_model.fit(train_loader, epochs=10, validation_data=validation_loader)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "VeiN9vSy744e" | |
}, | |
"source": [ | |
"### **Evaluating the Model on the Test Set**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "YBNeB-Em7xBy", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "e8df4e99-1dd4-4624-b404-34082f4cd4c8" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 0s 44ms/step - loss: 0.8921 - accuracy: 0.6719\n", | |
"Epoch 1/10\n", | |
"473/473 [==============================] - 31s 65ms/step - loss: 1.4202 - accuracy: 0.3990 - val_loss: 1.3996 - val_accuracy: 0.2289\n", | |
"Epoch 2/10\n", | |
"473/473 [==============================] - 31s 65ms/step - loss: 1.1373 - accuracy: 0.5025 - val_loss: 1.5681 - val_accuracy: 0.2461\n", | |
"Epoch 3/10\n", | |
"473/473 [==============================] - 31s 66ms/step - loss: 1.0235 - accuracy: 0.5625 - val_loss: 1.3701 - val_accuracy: 0.3331\n", | |
"Epoch 4/10\n", | |
"473/473 [==============================] - 31s 66ms/step - loss: 0.9632 - accuracy: 0.5996 - val_loss: 1.8935 - val_accuracy: 0.1941\n", | |
"Epoch 5/10\n", | |
"473/473 [==============================] - 31s 66ms/step - loss: 0.9043 - accuracy: 0.6240 - val_loss: 1.6475 - val_accuracy: 0.2301\n", | |
"Epoch 6/10\n", | |
"473/473 [==============================] - 31s 66ms/step - loss: 0.8612 - accuracy: 0.6445 - val_loss: 1.3736 - val_accuracy: 0.3615\n", | |
"Epoch 7/10\n", | |
"473/473 [==============================] - 31s 65ms/step - loss: 0.8317 - accuracy: 0.6601 - val_loss: 1.4716 - val_accuracy: 0.1638\n", | |
"Epoch 8/10\n", | |
"473/473 [==============================] - 31s 65ms/step - loss: 0.8221 - accuracy: 0.6688 - val_loss: 1.6250 - val_accuracy: 0.1601\n", | |
"Epoch 9/10\n", | |
"473/473 [==============================] - 30s 64ms/step - loss: 0.7948 - accuracy: 0.6748 - val_loss: 1.8836 - val_accuracy: 0.1601\n", | |
"Epoch 10/10\n", | |
"473/473 [==============================] - 31s 66ms/step - loss: 0.7841 - accuracy: 0.6850 - val_loss: 1.6020 - val_accuracy: 0.2092\n", | |
"Large Model - Test Loss: 0.8921\n", | |
"Large Model - Test Accuracy: 67.19%\n" | |
] | |
} | |
], | |
"source": [ | |
"test_loss, test_accuracy = large_model.evaluate(test_loader)\n", | |
"\n", | |
"history = model.fit(train_loader, epochs=10, validation_data=validation_loader)\n", | |
"print(f\"Large Model - Test Loss: {test_loss:.4f}\")\n", | |
"print(f\"Large Model - Test Accuracy: {test_accuracy*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"train_acc = history.history['accuracy']\n", | |
"val_acc = history.history['val_accuracy']\n", | |
"\n", | |
"#Extract training and validation loss from history\n", | |
"train_loss = history.history['loss']\n", | |
"val_loss = history.history['val_loss']\n", | |
"\n", | |
"epochs_range = range(1, len(train_acc) + 1)\n", | |
"\n", | |
"# Plot training & validation accuracy values\n", | |
"plt.title('Training Accuracies')\n", | |
"plt.plot(epochs_range, train_acc, label='Training Accuracy')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Accuracy')\n", | |
"plt.legend()\n", | |
"\n", | |
"# Plot training & validation loss values\n", | |
"plt.title('Training Loss')\n", | |
"plt.plot(epochs_range, train_loss, label='Training Loss')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Loss')\n", | |
"plt.legend()\n", | |
"\n", | |
"plt.show()" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 472 | |
}, | |
"id": "Rs3oNE3K47pK", | |
"outputId": "3669e1e4-7a5b-4a40-94d0-dd5dd8c997b8" | |
}, | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 1 Axes>" | |
], | |
"image/png": "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r18/nnnmGSwWCx9//HGFGhYaO3Ys33//PZ06deLJJ5/EZrMxY8YMmjdvzpYtW4r1GFlZWbzyyisF2mvUqMFTTz3F5MmTGTBgAJ07d6Z3797OU8Hr16/Ps88+C8CePXu49dZbue+++2jatCleXl58+eWXJCQk8MADDwDw4Ycf8s4779CrVy9iYmJITk5m9uzZBAUFcccdd5TaeyJSFSjciEiJ1KxZk2+++YbnnnuOl156ierVq/PQQw9x66230rVrV3eXB0Dr1q359ttvGTZsGKNGjSI6Oprx48ezc+fOYp3NBUZv1KhRowq0x8TE8NRTT9G/f3/8/Px49dVXGT58OP7+/vTq1YvJkyc7z4CKjo6md+/erFy5ko8//hgvLy+aNGnCp59+yr333gsYE4rXr1/PggULSEhIIDg4mHbt2jF//nwaNGhQau+JSFWga0uJSJXTs2dPduzYwd69e91dioiUAc25ERFTO3/+vMv23r17Wbp0KTfddJN7ChKRMqeeGxExtcjISPr370/Dhg05ePAgM2fOJCMjg82bN9O4cWN3lyciZUBzbkTE1Lp168Z///tf4uPjsVqtdOjQgYkTJyrYiJiYem5ERETEVDTnRkRERExF4UZERERMpcrNubHb7Rw7dozAwEAsFou7yxEREZFicDgcJCcnU7t2bTw8iu6bqXLh5tixY0RHR7u7DBERESmBw4cPU6dOnSL3qXLhJjAwEDDenKCgIDdXIyIiIsWRlJREdHS083O8KFUu3OQORQUFBSnciIiIVDLFmVKiCcUiIiJiKgo3IiIiYioKNyIiImIqCjciIiJiKgo3IiIiYioKNyIiImIqCjciIiJiKgo3IiIiYioKNyIiImIqCjciIiJiKm4NN//73//o0aMHtWvXxmKxsGjRokses2rVKq699lqsViuNGjVi3rx5ZV6niIiIVB5uDTepqanExcXx9ttvF2v//fv3c+edd3LzzTezZcsWhgwZwqOPPsqyZcvKuFIRERGpLNx64czu3bvTvXv3Yu8/a9YsGjRowJQpUwCIjY1l9erV/Pvf/6Zr165lVWax2O0Oth45R9PaQVi9PN1ai4iISFVWqa4Kvm7dOrp06eLS1rVrV4YMGXLRYzIyMsjIyHBuJyUllUlt+0+n0uudtVTztBAbGURcnRDiokNoFR1Mw9AAPDwufRVTERERuXKV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iIiImIrCjYiIiJiKwo2IiIiYisKNiIiImIrCjYiIiJiKwo2IiIiYisKNiIiImIrCjYiIiJiKwo2IiIiYisKNiIiImIrCjYiIiJiKwo2IiIiYisKNiIiImIrCjYiIiJiKwo2IiIiYitvDzdtvv039+vXx8fGhffv2rF+/vsj9p02bxtVXX42vry/R0dE8++yzpKenl1O1IiIiUtG5NdwsXLiQoUOHMmbMGDZt2kRcXBxdu3blxIkThe7/ySefMGLECMaMGcPOnTuZM2cOCxcu5IUXXijnykVERKSicmu4mTp1Ko899hgDBgygadOmzJo1Cz8/Pz744INC91+7di2dOnXiwQcfpH79+tx+++307t37kr09IiIiUnW4LdxkZmayceNGunTpkleMhwddunRh3bp1hR7TsWNHNm7c6Awzf/31F0uXLuWOO+646PNkZGSQlJTkchMRERHz8nLXE586dQqbzUZ4eLhLe3h4OLt27Sr0mAcffJBTp05x/fXX43A4yM7O5oknnihyWGrSpEmMGzeuVGsXERGRisvtE4ovx6pVq5g4cSLvvPMOmzZt4osvvmDJkiW8/PLLFz1m5MiRJCYmOm+HDx8ux4pFRESkvLmt5yY0NBRPT08SEhJc2hMSEoiIiCj0mFGjRvHwww/z6KOPAtCiRQtSU1N5/PHHefHFF/HwKJjVrFYrVqu19F+AiIiIVEhu67nx9vamdevWrFy50tlmt9tZuXIlHTp0KPSYtLS0AgHG09MTAIfDUXbFioiISKXhtp4bgKFDh9KvXz/atGlDu3btmDZtGqmpqQwYMACAvn37EhUVxaRJkwDo0aMHU6dO5ZprrqF9+/bs27ePUaNG0aNHD2fIERERkarNreHm/vvv5+TJk4wePZr4+HhatWrFd99955xkfOjQIZeempdeegmLxcJLL73E0aNHqVWrFj169GDChAnuegkiIiJSwVgcVWw8JykpieDgYBITEwkKCnJ3OSIiIlIMl/P5XanOlhIRERG5FIUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVt4ebt99+m/r16+Pj40P79u1Zv359kfufO3eOgQMHEhkZidVq5aqrrmLp0qXlVK2IiIhUdF7ufPKFCxcydOhQZs2aRfv27Zk2bRpdu3Zl9+7dhIWFFdg/MzOT2267jbCwMD7//HOioqI4ePAgISEh5V+8iIiIVEgWh8PhcNeTt2/fnrZt2zJjxgwA7HY70dHRPP3004wYMaLA/rNmzeL1119n165dVKtWrUTPmZSURHBwMImJiQQFBV1R/SIiIlI+Lufz223DUpmZmWzcuJEuXbrkFePhQZcuXVi3bl2hxyxevJgOHTowcOBAwsPDad68ORMnTsRms130eTIyMkhKSnK5iYiIiHm5LdycOnUKm81GeHi4S3t4eDjx8fGFHvPXX3/x+eefY7PZWLp0KaNGjWLKlCm88sorF32eSZMmERwc7LxFR0eX6usQERGRisXtE4ovh91uJywsjPfee4/WrVtz//338+KLLzJr1qyLHjNy5EgSExOdt8OHD5djxSIiIlLe3DahODQ0FE9PTxISElzaExISiIiIKPSYyMhIqlWrhqenp7MtNjaW+Ph4MjMz8fb2LnCM1WrFarWWbvEiIiJSYbmt58bb25vWrVuzcuVKZ5vdbmflypV06NCh0GM6derEvn37sNvtzrY9e/YQGRlZaLARERGRqsetw1JDhw5l9uzZfPjhh+zcuZMnn3yS1NRUBgwYAEDfvn0ZOXKkc/8nn3ySM2fOMHjwYPbs2cOSJUuYOHEiAwcOdNdLEBERkQrGrevc3H///Zw8eZLRo0cTHx9Pq1at+O6775yTjA8dOoSHR17+io6OZtmyZTz77LO0bNmSqKgoBg8ezPDhw931EkRERKSCces6N+6gdW5EREQqn0qxzo2IiIhIWVC4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVMpUbg5fPgwR44ccW6vX7+eIUOG8N5775VaYSIiIiIlUaJw8+CDD/Ljjz8CEB8fz2233cb69et58cUXGT9+fKkWKCIiInI5ShRutm/fTrt27QD49NNPad68OWvXrmX+/PnMmzevNOsTERERuSwlCjdZWVlYrVYAVqxYwf/93/8B0KRJE44fP1561YmIiIhcphKFm2bNmjFr1ix+/vlnli9fTrdu3QA4duwYNWvWLNUCRURERC5HicLN5MmTeffdd7npppvo3bs3cXFxACxevNg5XCUiIiLiDhaHw+EoyYE2m42kpCSqV6/ubDtw4AB+fn6EhYWVWoGlLSkpieDgYBITEwkKCnJ3OSIiIlIMl/P5XaKem/Pnz5ORkeEMNgcPHmTatGns3r27QgcbERERMb8ShZu7776bjz76CIBz587Rvn17pkyZQs+ePZk5c2apFigiIiJyOUoUbjZt2sQNN9wAwOeff054eDgHDx7ko48+4q233irVAkVEREQuR4nCTVpaGoGBgQB8//333HPPPXh4eHDddddx8ODBUi1QRERE5HKUKNw0atSIRYsWcfjwYZYtW8btt98OwIkTJzRJV0RERNyqROFm9OjRDBs2jPr169OuXTs6dOgAGL0411xzTakWKCIiInI5SnwqeHx8PMePHycuLg4PDyMjrV+/nqCgIJo0aVKqRZYmnQouIiJS+VzO57dXSZ8kIiKCiIgI59XB69SpowX8RERExO1KNCxlt9sZP348wcHB1KtXj3r16hESEsLLL7+M3W4v7RpFREREiq1EPTcvvvgic+bM4dVXX6VTp04ArF69mrFjx5Kens6ECRNKtUgRERGR4irRnJvatWsza9Ys59XAc3311Vc89dRTHD16tNQKLG2acyMiIlL5lPnlF86cOVPopOEmTZpw5syZkjykiIiISKkoUbiJi4tjxowZBdpnzJhBy5Ytr7goERERkZIq0Zyb1157jTvvvJMVK1Y417hZt24dhw8fZunSpaVaoIiIiMjlKFHPTefOndmzZw+9evXi3LlznDt3jnvuuYcdO3bw8ccfl3aNIiIiIsVW4kX8CrN161auvfZabDZbaT1kqdOEYhERkcqnzCcUi4iIiFRUCjciIiJiKgo3IiIiYiqXdbbUPffcU+T9586du5JaRERERK7YZYWb4ODgS97ft2/fKypIRERE5EpcVriZO3duWdUhIiIiUio050ZERERMReFGRERETEXhRkRERExF4UZERERMReFGRERETEXhRkRERExF4UZERERMReFGRERETEXhRkRERExF4UZERERMReFGRERETEXhRkRERExF4UZERERMpUKEm7fffpv69evj4+ND+/btWb9+fbGOW7BgARaLhZ49e5ZtgSIiIlJpuD3cLFy4kKFDhzJmzBg2bdpEXFwcXbt25cSJE0Ued+DAAYYNG8YNN9xQTpWKiIhIZeD2cDN16lQee+wxBgwYQNOmTZk1axZ+fn588MEHFz3GZrPRp08fxo0bR8OGDcuxWhEREano3BpuMjMz2bhxI126dHG2eXh40KVLF9atW3fR48aPH09YWBj/+Mc/yqNMERERqUS83Pnkp06dwmazER4e7tIeHh7Orl27Cj1m9erVzJkzhy1bthTrOTIyMsjIyHBuJyUllbheERERqfjcPix1OZKTk3n44YeZPXs2oaGhxTpm0qRJBAcHO2/R0dFlXKWIiIi4k1t7bkJDQ/H09CQhIcGlPSEhgYiIiAL7//nnnxw4cIAePXo42+x2OwBeXl7s3r2bmJgYl2NGjhzJ0KFDndtJSUkKOCIiIibm1nDj7e1N69atWblypfN0brvdzsqVKxk0aFCB/Zs0acK2bdtc2l566SWSk5N58803Cw0tVqsVq9VaJvWLiIhIxePWcAMwdOhQ+vXrR5s2bWjXrh3Tpk0jNTWVAQMGANC3b1+ioqKYNGkSPj4+NG/e3OX4kJAQgALtIiIiUjW5Pdzcf//9nDx5ktGjRxMfH0+rVq347rvvnJOMDx06hIdHpZoaJCIiIm5kcTgcDncXUZ6SkpIIDg4mMTGRoKAgd5cjIiIixXA5n9/qEhERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgRERERU1G4EREREVNRuBERERFTUbgREbkcGSlwai84HO6uREQuwsvdBYiIVAqZabBhNqyeBufPQFgzuP5ZaNYLPPWrVKQisTgcVevPj6SkJIKDg0lMTCQoKMjd5YhIRZedARvnwf/egNQTOY0WIOdXZ/X60PEZaNUHqvm4p0aRKuByPr8VbkRECmPLgi3z4afXIemI0RZSF24aCY27wm8fwK8zIe20cV9AOHQYCG0eAWug++oWKSt2G2SdNwJ/9nnISofsnFvW+Xzfp4NvCDS+rVSfXuGmCAo3IlIkuw22fQ6rJsHZ/UZbYG3o/C9o9RB4eeftm5kKmz6CtdMh6ajR5hMM7f4J7Z8A/5rlX7+Yn8NhhO/snKCRGyyKGzwKvT//cbmPm+76HPas4tcY3R7+8X2pvuxKF27efvttXn/9deLj44mLi2P69Om0a9eu0H1nz57NRx99xPbt2wFo3bo1EydOvOj+F1K4EZFC2e2wczH8OBFO7Tba/GvB9UON3piihpyyM2Hbp8Z8nNN7jbZqfnBtP+g4CILrlHn5UgnZ7XDuAJzYBSf+gNP7ICP5EiEk53uH3b21e3qDl49xq+YDXr7gZYVqvkZbWFPo/mqpPmWlCjcLFy6kb9++zJo1i/bt2zNt2jQ+++wzdu/eTVhYWIH9+/TpQ6dOnejYsSM+Pj5MnjyZL7/8kh07dhAVFXXJ51O4EREXDgfsWQY/vgLx24w2nxDoNBjaPQ7WgOI/lt0GO7+G1VPh+FajzaMaxN0PnZ6F0EalXr5UAg6H0bN3Yme+2x9wag9kpV3543v5Fh4w8gePaj752nL2K7S9iMDiPM4HPDyvvO7LVKnCTfv27Wnbti0zZswAwG63Ex0dzdNPP82IESMuebzNZqN69erMmDGD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U6dOBZZG2LNnD/Xq1XNTRVVbWloaHh6uH2Genp7Y7XY3VSS5GjRoQEREBCtXrnS2JSUl8euvv9KhQ4dyqUHDUuI0cOBAPvnkE7766isCAwOdY6PBwcH4+vq6ubqqJTAwsMBcJ39/f2rWrKk5UG7y7LPP0rFjRyZOnMh9993H+vXree+993jvvffcXVqV1KNHDyZMmEDdunVp1qwZmzdvZurUqTzyyCPuLq1KSElJYd++fc7t/fv3s2XLFmrUqEHdunUZMmQIr7zyCo0bN6ZBgwaMGjWK2rVrO8+oKnMOkRxAobe5c+e6uzRxOBydO3d2DB482N1lVGlff/21o3nz5g6r1epo0qSJ47333nN3SVVWUlKSY/DgwY66des6fHx8HA0bNnS8+OKLjoyMDHeXViX8+OOPhX5e9OvXz+FwOBx2u90xatQoR3h4uMNqtTpuvfVWx+7du8utPq1zIyIiIqaiOTciIiJiKgo3IiIiYioKNyIiImIqCjciIiJiKgo3IiIiYioKNyIiImIqCjciIiJiKgo3IlLlWSwWFi1a5O4yRKSUKNyIiFv1798fi8VS4NatWzd3lyYilZSuLSUibtetWzfmzp3r0ma1Wt1UjYhUduq5ERG3s1qtREREuNyqV68OGENGM2fOpHv37vj6+tKwYUM+//xzl+O3bdvGLbfcgq+vLzVr1uTxxx8nJSXFZZ8PPviAZs2aYbVaiYyMZNCgQS73nzp1il69euHn50fjxo1ZvHhx2b5oESkzCjciUuGNGjWKe++9l61bt9KnTx8eeOABdu7cCUBqaipdu3alevXqbNiwgc8++4wVK1a4hJeZM2cycOBAHn/8cbZt28bixYtp1KiRy3OMGzeO++67j99//5077riDPn36cObMmXJ9nSJSSsrtEp0iIoXo16+fw9PT0+Hv7+9ymzBhgsPhMK5W/8QTT7gc0759e8eTTz7pcDgcjvfee89RvXp1R0pKivP+JUuWODw8PBzx8fEOh8PhqF27tuPFF1+8aA2A46WXXnJup6SkOADHt99+W2qvU0TKj+bciIjb3XzzzcycOdOlrUaNGs7vO3To4HJfhw4d2LJlCwA7d+4kLi4Of39/5/2dOnXCbreze/duLBYLx44d49Zbby2yhpYtWzq/9/f3JygoiBMnTpT0JYmIGynciIjb+fv7FxgmKi2+vr7F2q9atWou2xaLBbvdXhYliUgZ05wbEanwfvnllwLbsbGxAMTGxrJ161ZSU1Od969ZswYPDw+uvvpqAgMDqV+/PitXrizXmkXEfdRzIyJul5GRQXx8vEubl5cXoaGhAHz22We0adOG66+/nvnz57N+/XrmzJkDQJ8+fRgzZgz9+vVj7NixnDx5kqeffpqHH36Y8PBwAMaOHcsTTzxBWFgY3bt3Jzk5mTVr1vD000+X7wsVkXKhcCMibvfdd98RGRnp0nb11Veza9cuwDiTacGCBTz11FNERkby3//+l6ZNmwLg5+fHsmXLGDx4MG3btsXPz497772XqVOnOh+rX79+pKen8+9//5thw4YRGhrK3/72t/J7gSJSriwOh8Ph7iJERC7GYrHw5Zdf0rNnT3eXIiKVhObciIiIiKko3IiIiIipaM6NiFRoGjkXkculnhsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETEVhRsRERExFYUbERERMRWFGxERETGV/w9phgbdfHNNMAAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "SjKlBaZDpWoV" | |
}, | |
"source": [ | |
"## **Building a Complex Neural Network Architecture**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "-bMFUj3Fpe75" | |
}, | |
"source": [ | |
"In this section, we will build a more complex Convolutional Neural Network Model that has close to as many parameters as we had in our Transfer Learning Models. However, we will have only 1 input channel for our input images." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ejGfyYSbtx-F" | |
}, | |
"source": [ | |
"### **Creating our Data Loaders**\n", | |
"\n", | |
"In this section, we are creating data loaders which we will use as inputs to the more Complicated Convolutional Neural Network. We will go ahead with color_mode = 'grayscale'." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "xj1hM5_ttx-F" | |
}, | |
"outputs": [], | |
"source": [ | |
"from tensorflow._api.v2 import test\n", | |
"# Define the ImageDataGenerator\n", | |
"datagen = ImageDataGenerator(\n", | |
" rescale=1./255, # Rescale pixel values to [0,1]\n", | |
" validation_split=0.2 # Set validation split\n", | |
")\n", | |
"def grayscale_data_loader(train_path, validation_path, test_path):\n", | |
" target_size=(224,224)\n", | |
" batch_size=32\n", | |
"\n", | |
" # Training data loader\n", | |
" train_loader = datagen.flow_from_directory(\n", | |
" train_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale',\n", | |
" subset='training'\n", | |
" )\n", | |
"\n", | |
" # Validation data loader\n", | |
" validation_loader = datagen.flow_from_directory(\n", | |
" validation_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale',\n", | |
" subset='validation'\n", | |
" )\n", | |
"\n", | |
" # Test data loader\n", | |
" test_loader = datagen.flow_from_directory(\n", | |
" test_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" color_mode='grayscale'\n", | |
" )\n", | |
"\n", | |
" return train_loader, validation_loader, test_loader\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Ft5U6f1Wie2R" | |
}, | |
"source": [ | |
"### **Model Building**\n" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "37f9194d", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "2fa12c82-8c06-493a-b66b-8ebe54c5656c" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Model: \"sequential_2\"\n", | |
"_________________________________________________________________\n", | |
" Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
" conv2d_9 (Conv2D) (None, 224, 224, 32) 320 \n", | |
" \n", | |
" batch_normalization_7 (Bat (None, 224, 224, 32) 128 \n", | |
" chNormalization) \n", | |
" \n", | |
" activation (Activation) (None, 224, 224, 32) 0 \n", | |
" \n", | |
" max_pooling2d_6 (MaxPoolin (None, 112, 112, 32) 0 \n", | |
" g2D) \n", | |
" \n", | |
" conv2d_10 (Conv2D) (None, 112, 112, 32) 9248 \n", | |
" \n", | |
" batch_normalization_8 (Bat (None, 112, 112, 32) 128 \n", | |
" chNormalization) \n", | |
" \n", | |
" activation_1 (Activation) (None, 112, 112, 32) 0 \n", | |
" \n", | |
" max_pooling2d_7 (MaxPoolin (None, 56, 56, 32) 0 \n", | |
" g2D) \n", | |
" \n", | |
" conv2d_11 (Conv2D) (None, 56, 56, 32) 9248 \n", | |
" \n", | |
" batch_normalization_9 (Bat (None, 56, 56, 32) 128 \n", | |
" chNormalization) \n", | |
" \n", | |
" activation_2 (Activation) (None, 56, 56, 32) 0 \n", | |
" \n", | |
" max_pooling2d_8 (MaxPoolin (None, 28, 28, 32) 0 \n", | |
" g2D) \n", | |
" \n", | |
" conv2d_12 (Conv2D) (None, 28, 28, 32) 9248 \n", | |
" \n", | |
" batch_normalization_10 (Ba (None, 28, 28, 32) 128 \n", | |
" tchNormalization) \n", | |
" \n", | |
" activation_3 (Activation) (None, 28, 28, 32) 0 \n", | |
" \n", | |
" max_pooling2d_9 (MaxPoolin (None, 14, 14, 32) 0 \n", | |
" g2D) \n", | |
" \n", | |
" conv2d_13 (Conv2D) (None, 14, 14, 32) 9248 \n", | |
" \n", | |
" batch_normalization_11 (Ba (None, 14, 14, 32) 128 \n", | |
" tchNormalization) \n", | |
" \n", | |
" activation_4 (Activation) (None, 14, 14, 32) 0 \n", | |
" \n", | |
" max_pooling2d_10 (MaxPooli (None, 7, 7, 32) 0 \n", | |
" ng2D) \n", | |
" \n", | |
" flatten_2 (Flatten) (None, 1568) 0 \n", | |
" \n", | |
" dense_5 (Dense) (None, 512) 803328 \n", | |
" \n", | |
" dense_6 (Dense) (None, 4) 2052 \n", | |
" \n", | |
"=================================================================\n", | |
"Total params: 843332 (3.22 MB)\n", | |
"Trainable params: 843012 (3.22 MB)\n", | |
"Non-trainable params: 320 (1.25 KB)\n", | |
"_________________________________________________________________\n" | |
] | |
} | |
], | |
"source": [ | |
"model=Sequential()\n", | |
"\n", | |
"# Define 5 convolutional blocks\n", | |
"for _ in range(5):\n", | |
" model.add(Conv2D(32, (3, 3), padding='same', input_shape=(224, 224, 1)))\n", | |
" model.add(BatchNormalization())\n", | |
" model.add(Activation('relu'))\n", | |
" model.add(MaxPooling2D(pool_size=(2, 2)))\n", | |
"\n", | |
"# Flatten and add fully connected layers\n", | |
"model.add(Flatten())\n", | |
"model.add(Dense(512, activation='relu'))\n", | |
"model.add(Dense(4, activation='softmax'))\n", | |
"\n", | |
"# Compile the model\n", | |
"model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", | |
"\n", | |
"# Display the model architecture\n", | |
"model.summary()" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "fyc0B--hwTHS" | |
}, | |
"source": [ | |
"### **Compiling and Training the Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "0edabf52", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "6edd6ac8-ee54-4d38-cead-dfedb571ae8e" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Found 12089 images belonging to 4 classes.\n", | |
"Found 994 images belonging to 4 classes.\n", | |
"Found 128 images belonging to 4 classes.\n", | |
"Epoch 1/10\n", | |
"378/378 [==============================] - 23s 49ms/step - loss: 1.2468 - accuracy: 0.4837 - val_loss: 1.4818 - val_accuracy: 0.2575\n", | |
"Epoch 2/10\n", | |
"378/378 [==============================] - 16s 43ms/step - loss: 0.9080 - accuracy: 0.6226 - val_loss: 0.9190 - val_accuracy: 0.6177\n", | |
"Epoch 3/10\n", | |
"378/378 [==============================] - 17s 45ms/step - loss: 0.8085 - accuracy: 0.6613 - val_loss: 0.9614 - val_accuracy: 0.5936\n", | |
"Epoch 4/10\n", | |
"378/378 [==============================] - 17s 46ms/step - loss: 0.7411 - accuracy: 0.6930 - val_loss: 0.8683 - val_accuracy: 0.6439\n", | |
"Epoch 5/10\n", | |
"378/378 [==============================] - 17s 46ms/step - loss: 0.6814 - accuracy: 0.7234 - val_loss: 1.0170 - val_accuracy: 0.6006\n", | |
"Epoch 6/10\n", | |
"378/378 [==============================] - 17s 45ms/step - loss: 0.6304 - accuracy: 0.7413 - val_loss: 0.9100 - val_accuracy: 0.6459\n", | |
"Epoch 7/10\n", | |
"378/378 [==============================] - 17s 46ms/step - loss: 0.5621 - accuracy: 0.7715 - val_loss: 0.9252 - val_accuracy: 0.6761\n", | |
"Epoch 8/10\n", | |
"378/378 [==============================] - 17s 44ms/step - loss: 0.5185 - accuracy: 0.7908 - val_loss: 0.9214 - val_accuracy: 0.6730\n", | |
"Epoch 9/10\n", | |
"378/378 [==============================] - 17s 45ms/step - loss: 0.4577 - accuracy: 0.8200 - val_loss: 0.9789 - val_accuracy: 0.6378\n", | |
"Epoch 10/10\n", | |
"378/378 [==============================] - 17s 45ms/step - loss: 0.3917 - accuracy: 0.8464 - val_loss: 0.9863 - val_accuracy: 0.6539\n" | |
] | |
} | |
], | |
"source": [ | |
"train_loader, validation_loader, test_loader = grayscale_data_loader(train_path, validation_path, test_path)\n", | |
"\n", | |
"model.compile(optimizer='adam',\n", | |
" loss='categorical_crossentropy',\n", | |
" metrics=['accuracy'])\n", | |
"\n", | |
"history = model.fit(train_loader, validation_data=validation_loader, epochs=10)\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "BbAqrAQQVjIR" | |
}, | |
"source": [ | |
"### **Evaluating the Model on Test Set**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "uO26AYRuVm7F", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "1ea57160-836b-40b7-ed55-4337fdba119b" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 0s 42ms/step - loss: 0.8394 - accuracy: 0.6797\n", | |
"Complex CNN Model - Test Loss: 0.8394\n", | |
"Complex CNN Model - Test Accuracy: 67.97%\n" | |
] | |
} | |
], | |
"source": [ | |
"# Evaluate the Model\n", | |
"test_loss, test_accuracy = model.evaluate(test_loader)\n", | |
"\n", | |
"# Print the Results\n", | |
"print(f\"Complex CNN Model - Test Loss: {test_loss:.4f}\")\n", | |
"print(f\"Complex CNN Model - Test Accuracy: {test_accuracy*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "81uYGSmHwxfD" | |
}, | |
"source": [ | |
"**Observations and Insights:** Both training and validation accuracies show consistent improvement over epochs, indicating that the model is learning effectively from the training data and generalizing well to the validation data." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"train_acc = history.history['accuracy']\n", | |
"val_acc = history.history['val_accuracy']\n", | |
"\n", | |
"#Extract training and validation loss from history\n", | |
"train_loss = history.history['loss']\n", | |
"val_loss = history.history['val_loss']\n", | |
"\n", | |
"epochs_range = range(1, len(train_acc) + 1)\n", | |
"\n", | |
"# Plot training & validation accuracy values\n", | |
"plt.title('Training Accuracies')\n", | |
"plt.plot(epochs_range, train_acc, label='Training Accuracy')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Accuracy')\n", | |
"plt.legend()\n", | |
"\n", | |
"# Plot training & validation loss values\n", | |
"plt.title('Training Loss')\n", | |
"plt.plot(epochs_range, train_loss, label='Training Loss')\n", | |
"plt.xlabel('Epoch')\n", | |
"plt.ylabel('Loss')\n", | |
"plt.legend()\n", | |
"\n", | |
"plt.show()" | |
], | |
"metadata": { | |
"id": "FTQE3Pxf5Dhd" | |
}, | |
"execution_count": null, | |
"outputs": [] | |
}, | |
{ | |
"cell_type": "code", | |
"source": [ | |
"# Get labels from the test set\n", | |
"true_labels = test_loader.classes\n", | |
"\n", | |
"# Predict classes\n", | |
"predictions = model.predict(test_loader)\n", | |
"predicted_labels = np.argmax(predictions, axis=1)\n", | |
"\n", | |
"# Confusion matrix\n", | |
"cm = confusion_matrix(true_labels, predicted_labels)\n", | |
"\n", | |
"# Plot the confusion matrix\n", | |
"labels = ['happy', 'sad', 'surprise', 'neutral']\n", | |
"\n", | |
"sns.heatmap(cm, annot=True, fmt='g', cmap='Blues', xticklabels=labels, yticklabels=labels)\n", | |
"\n", | |
"plt.title('Confusion Matrix')\n", | |
"plt.ylabel('True label')\n", | |
"plt.xlabel('Predicted label')\n", | |
"plt.show()" | |
], | |
"metadata": { | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 489 | |
}, | |
"id": "qfGOIWPWafnz", | |
"outputId": "4b75d9eb-cf8a-4cd8-f243-5edb3a929462" | |
}, | |
"execution_count": null, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 0s 47ms/step\n" | |
] | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 2 Axes>" | |
], | |
"image/png": "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\n" | |
}, | |
"metadata": {} | |
} | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "S1LQ64iTsSH0" | |
}, | |
"source": [ | |
"## **Think About It:**\n", | |
"\n", | |
"* Did the models have a satisfactory performance? If not, then what are the possible reasons?\n", | |
"* Which Color mode showed better overall performance? What are the possible reasons? Do you think having 'rgb' color mode is needed because the images are already black and white?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "boQi7epI3Lsu" | |
}, | |
"source": [ | |
"## **Transfer Learning Architectures**\n", | |
"There are several pretrained architectures have been existed for facial recognition : VGG16, ResNet v2, and Efficient Net selected.These models have been trained on massive image datasets, which can reduce the amount of labeled data and training time for my project.\n", | |
"\n", | |
"Here I start test the three models to see" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "7kMsvUQuD89r" | |
}, | |
"source": [ | |
"### **Creating our Data Loaders for Transfer Learning Architectures**\n", | |
"\n", | |
"In this section, we are creating data loaders that we will use as inputs to our Neural Network. We will have to go with color_mode = 'rgb' as this is the required format for the transfer learning architectures." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "hWmbGuuRD89r", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "23c8293e-d5f3-4b7e-a04e-651d02683b01" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Found 12089 images belonging to 4 classes.\n", | |
"Found 994 images belonging to 4 classes.\n", | |
"Found 128 images belonging to 4 classes.\n" | |
] | |
} | |
], | |
"source": [ | |
"datagen = ImageDataGenerator(\n", | |
" rescale=1./255, # Rescale pixel values to [0,1]\n", | |
" rotation_range=20, # Randomly rotate images\n", | |
" width_shift_range=0.2, # Randomly shift images horizontally\n", | |
" height_shift_range=0.2, # Randomly shift images vertically\n", | |
" horizontal_flip=True, # Randomly flip images horizontally\n", | |
" validation_split=0.2 # Set validation split\n", | |
")\n", | |
"# Data augmentation\n", | |
"datagen_transfer = ImageDataGenerator(\n", | |
" preprocessing_function=vgg16.preprocess_input,\n", | |
" validation_split=0.2\n", | |
")\n", | |
"\n", | |
"def transfer_loaders(train_path, validation_path, test_path):\n", | |
" target_size = (224, 224)\n", | |
" batch_size = 32\n", | |
"\n", | |
" # Training data loader\n", | |
" transfer_train_loader = datagen_transfer.flow_from_directory(\n", | |
" train_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" subset='training',\n", | |
" color_mode='rgb'\n", | |
" )\n", | |
" # Validation data loader\n", | |
" transfer_validation_loader = datagen_transfer.flow_from_directory(\n", | |
" validation_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" subset='validation',\n", | |
" color_mode='rgb'\n", | |
" )\n", | |
" transfer_test_loader = datagen_transfer.flow_from_directory(\n", | |
" test_path,\n", | |
" target_size=target_size,\n", | |
" batch_size=batch_size,\n", | |
" class_mode='categorical',\n", | |
" )\n", | |
" return transfer_train_loader, transfer_validation_loader, transfer_test_loader\n", | |
"\n", | |
"# Create the data loaders using the transfer_loaders function\n", | |
"transfer_train_loader, transfer_validation_loader, transfer_test_loader = transfer_loaders(train_path, validation_path, test_path)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "vaUYQdkf7pDG" | |
}, | |
"source": [ | |
"## **VGG16 Model**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ThCSNrWC4HW0" | |
}, | |
"source": [ | |
"### **Importing the VGG16 Architecture**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "7c83c83e", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "9166e2e4-463b-4a0f-8dca-7eca1dbd2d2a" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/vgg16/vgg16_weights_tf_dim_ordering_tf_kernels_notop.h5\n", | |
"58889256/58889256 [==============================] - 3s 0us/step\n", | |
"Model: \"vgg16\"\n", | |
"_________________________________________________________________\n", | |
" Layer (type) Output Shape Param # \n", | |
"=================================================================\n", | |
" input_1 (InputLayer) [(None, 224, 224, 3)] 0 \n", | |
" \n", | |
" block1_conv1 (Conv2D) (None, 224, 224, 64) 1792 \n", | |
" \n", | |
" block1_conv2 (Conv2D) (None, 224, 224, 64) 36928 \n", | |
" \n", | |
" block1_pool (MaxPooling2D) (None, 112, 112, 64) 0 \n", | |
" \n", | |
" block2_conv1 (Conv2D) (None, 112, 112, 128) 73856 \n", | |
" \n", | |
" block2_conv2 (Conv2D) (None, 112, 112, 128) 147584 \n", | |
" \n", | |
" block2_pool (MaxPooling2D) (None, 56, 56, 128) 0 \n", | |
" \n", | |
" block3_conv1 (Conv2D) (None, 56, 56, 256) 295168 \n", | |
" \n", | |
" block3_conv2 (Conv2D) (None, 56, 56, 256) 590080 \n", | |
" \n", | |
" block3_conv3 (Conv2D) (None, 56, 56, 256) 590080 \n", | |
" \n", | |
" block3_pool (MaxPooling2D) (None, 28, 28, 256) 0 \n", | |
" \n", | |
" block4_conv1 (Conv2D) (None, 28, 28, 512) 1180160 \n", | |
" \n", | |
" block4_conv2 (Conv2D) (None, 28, 28, 512) 2359808 \n", | |
" \n", | |
" block4_conv3 (Conv2D) (None, 28, 28, 512) 2359808 \n", | |
" \n", | |
" block4_pool (MaxPooling2D) (None, 14, 14, 512) 0 \n", | |
" \n", | |
" block5_conv1 (Conv2D) (None, 14, 14, 512) 2359808 \n", | |
" \n", | |
" block5_conv2 (Conv2D) (None, 14, 14, 512) 2359808 \n", | |
" \n", | |
" block5_conv3 (Conv2D) (None, 14, 14, 512) 2359808 \n", | |
" \n", | |
" block5_pool (MaxPooling2D) (None, 7, 7, 512) 0 \n", | |
" \n", | |
"=================================================================\n", | |
"Total params: 14714688 (56.13 MB)\n", | |
"Trainable params: 14714688 (56.13 MB)\n", | |
"Non-trainable params: 0 (0.00 Byte)\n", | |
"_________________________________________________________________\n" | |
] | |
} | |
], | |
"source": [ | |
"# Load the VGG16 Model:\n", | |
"vgg_model=VGG16(weights='imagenet', include_top=False, input_shape=(224,224,3))\n", | |
"vgg_model.summary()\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "X76HMyZX4edM" | |
}, | |
"source": [ | |
"### **Model Building**\n", | |
"\n", | |
"- Import VGG16 upto the layer of your choice and add Fully Connected layers on top of it." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "8b123bc6" | |
}, | |
"outputs": [], | |
"source": [ | |
"# Get the output of the selected layer\n", | |
"layer_output=vgg_model.get_layer('block4_pool').output\n", | |
"\n", | |
"# Flatten the output\n", | |
"x=Flatten()(layer_output)\n", | |
"\n", | |
"# Add a dense layer with 128 units\n", | |
"x=Dense(128,activation='relu')(x)\n", | |
"\n", | |
"# Add a dense layer with 128 units\n", | |
"x=Dense(256,activation='relu')(x)\n", | |
"\n", | |
"# Add the output layer with 4 units\n", | |
"x=Dense(4,activation='softmax')(x)\n", | |
"\n", | |
"vggmodel=Model(inputs=vgg_model.input,outputs=x)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "t6vK7u7w8GsM" | |
}, | |
"source": [ | |
"### **Compiling and Training the VGG16 Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "86b249f1" | |
}, | |
"outputs": [], | |
"source": [ | |
"vggmodel.compile(optimizer='adam',\n", | |
" loss='categorical_crossentropy',\n", | |
" metrics=['accuracy'])" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Un-19jPckK07" | |
}, | |
"source": [ | |
"### **Evaluating the VGG16 model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "t6Y_bSLCkcvr", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "233e9618-621b-40a3-bc25-cc3ed40e403a" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Epoch 1/10\n", | |
"473/473 [==============================] - 73s 140ms/step - loss: 4.5302 - accuracy: 0.2596 - val_loss: 1.3686 - val_accuracy: 0.3667\n", | |
"Epoch 2/10\n", | |
"473/473 [==============================] - 64s 134ms/step - loss: 1.3908 - accuracy: 0.2613 - val_loss: 1.3709 - val_accuracy: 0.2443\n", | |
"Epoch 3/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3822 - accuracy: 0.2604 - val_loss: 1.3762 - val_accuracy: 0.2443\n", | |
"Epoch 4/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3823 - accuracy: 0.2583 - val_loss: 1.3712 - val_accuracy: 0.2443\n", | |
"Epoch 5/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3821 - accuracy: 0.2607 - val_loss: 1.3759 - val_accuracy: 0.2289\n", | |
"Epoch 6/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3822 - accuracy: 0.2608 - val_loss: 1.3761 - val_accuracy: 0.2443\n", | |
"Epoch 7/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3820 - accuracy: 0.2686 - val_loss: 1.3754 - val_accuracy: 0.2289\n", | |
"Epoch 8/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3823 - accuracy: 0.2634 - val_loss: 1.3677 - val_accuracy: 0.3667\n", | |
"Epoch 9/10\n", | |
"473/473 [==============================] - 63s 134ms/step - loss: 1.3823 - accuracy: 0.2596 - val_loss: 1.3720 - val_accuracy: 0.2289\n", | |
"Epoch 10/10\n", | |
"473/473 [==============================] - 64s 135ms/step - loss: 1.3822 - accuracy: 0.2636 - val_loss: 1.3689 - val_accuracy: 0.3667\n", | |
"4/4 [==============================] - 0s 83ms/step - loss: 1.3914 - accuracy: 0.2500\n", | |
"VGG16 Model - Test Loss: 1.3914\n", | |
"VGG16 Model - Test Accuracy: 25.00%\n" | |
] | |
} | |
], | |
"source": [ | |
"# Train the model\n", | |
"history = vggmodel.fit(\n", | |
" transfer_train_loader,\n", | |
" epochs=10,\n", | |
" validation_data=transfer_validation_loader\n", | |
")\n", | |
"\n", | |
"# Evaluate the model\n", | |
"test_loss, test_accuracy = vggmodel.evaluate(transfer_test_loader)\n", | |
"\n", | |
"# Print the results\n", | |
"print(f\"VGG16 Model - Test Loss: {test_loss:.4f}\")\n", | |
"print(f\"VGG16 Model - Test Accuracy: {test_accuracy*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "tW6kPSky59Gv" | |
}, | |
"source": [ | |
"**Think About It:**\n", | |
"\n", | |
"- What do you infer from the general trend in the training performance?\n", | |
"- Is the training accuracy consistently improving?\n", | |
"- Is the validation accuracy also improving similarly?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "YuTi6OAx8q_r" | |
}, | |
"source": [ | |
"**Observations and Insights:** The first epoch had a very high value, which also took the longest time. There maybe some overfitting based on the discrepancy of training and validation matriccs. Maybe the VGG model is not suitable for the task. The overall accuracy is not satisfied." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "AfC2Kx0v7Sa1" | |
}, | |
"source": [ | |
"**Note: You can even go back and build your own architecture on top of the VGG16 Transfer layer and see if you can improve the performance**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "E0Mew4Cc7u7k" | |
}, | |
"source": [ | |
"## **ResNet V2 Model**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "ay4RedCQlL4O" | |
}, | |
"source": [ | |
"### **Model Building**\n", | |
"\n", | |
"- Import Resnet v2 upto the layer of your choice and add Fully Connected layers on top of it." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "911d3335", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "9fd14dd1-9ecf-42d0-90b3-d41fb489aade" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Downloading data from https://storage.googleapis.com/tensorflow/keras-applications/resnet/resnet50v2_weights_tf_dim_ordering_tf_kernels_notop.h5\n", | |
"94668760/94668760 [==============================] - 4s 0us/step\n" | |
] | |
} | |
], | |
"source": [ | |
"v2_model = ResNet50V2(\n", | |
" weights='imagenet',\n", | |
" include_top=False,\n", | |
" input_shape=(224,224,3)\n", | |
")\n", | |
"\n", | |
"output_resnet_layer = v2_model.get_layer('conv4_block3_out').output\n", | |
"\n", | |
"# Flatten the output of the desired layer\n", | |
"x_resnet = Flatten()(output_resnet_layer)\n", | |
"\n", | |
"# Add another dense layer with 128 units\n", | |
"x_resnet = Dense(128, activation='relu')(x_resnet)\n", | |
"\n", | |
"# Add a dense layer with 256 units\n", | |
"x_resnet = Dense(256, activation='relu')(x_resnet)\n", | |
"\n", | |
"# Add the output layer with 4 units\n", | |
"x_resnet = Dense(4, activation='softmax')(x_resnet)\n", | |
"\n", | |
"model_resnet = Model(inputs=v2_model.input, outputs=x_resnet)\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "Tmtcd1ZElpJy" | |
}, | |
"source": [ | |
"### **Compiling and Training the Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "fe959789", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "00fa3195-c3f3-4793-b3e3-1015324780c3" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Epoch 1/10\n", | |
"4/4 [==============================] - 29s 4s/step - loss: 24.8420 - accuracy: 0.2266 - val_loss: 322.8929 - val_accuracy: 0.2443\n", | |
"Epoch 2/10\n", | |
"4/4 [==============================] - 10s 3s/step - loss: 34.8737 - accuracy: 0.1797 - val_loss: 1040.6208 - val_accuracy: 0.2427\n", | |
"Epoch 3/10\n", | |
"4/4 [==============================] - 11s 4s/step - loss: 16.6747 - accuracy: 0.3438 - val_loss: 13852.0234 - val_accuracy: 0.3253\n", | |
"Epoch 4/10\n", | |
"4/4 [==============================] - 11s 3s/step - loss: 3.0789 - accuracy: 0.4688 - val_loss: 119997.1719 - val_accuracy: 0.3329\n", | |
"Epoch 5/10\n", | |
"4/4 [==============================] - 11s 3s/step - loss: 2.3403 - accuracy: 0.6719 - val_loss: 125957.9766 - val_accuracy: 0.2883\n", | |
"Epoch 6/10\n", | |
"4/4 [==============================] - 11s 4s/step - loss: 1.0975 - accuracy: 0.7500 - val_loss: 206765.4688 - val_accuracy: 0.2504\n", | |
"Epoch 7/10\n", | |
"4/4 [==============================] - 11s 4s/step - loss: 1.5307 - accuracy: 0.6562 - val_loss: 162392.0781 - val_accuracy: 0.2487\n", | |
"Epoch 8/10\n", | |
"4/4 [==============================] - 10s 3s/step - loss: 0.8820 - accuracy: 0.7812 - val_loss: 69317.2891 - val_accuracy: 0.2576\n", | |
"Epoch 9/10\n", | |
"4/4 [==============================] - 11s 3s/step - loss: 0.5991 - accuracy: 0.8594 - val_loss: 16517.6758 - val_accuracy: 0.2789\n", | |
"Epoch 10/10\n", | |
"4/4 [==============================] - 11s 4s/step - loss: 0.3320 - accuracy: 0.9609 - val_loss: 6480.1533 - val_accuracy: 0.2712\n" | |
] | |
} | |
], | |
"source": [ | |
"# Compile the model\n", | |
"model_resnet.compile(optimizer='adam',\n", | |
" loss='categorical_crossentropy',\n", | |
" metrics=['accuracy'])\n", | |
"\n", | |
"# Train the model\n", | |
"history_resnet=model_resnet.fit(\n", | |
" transfer_test_loader,\n", | |
" epochs=10,\n", | |
" validation_data=transfer_validation_loader\n", | |
")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "McHEzBlhxw39" | |
}, | |
"source": [ | |
"### **Evaluating the ResNet Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "IEl6IQf0xwci", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "b5f8a935-d4a5-4437-ef91-79b4ba9b3e5a" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 0s 76ms/step - loss: 6210.7051 - accuracy: 0.2344\n", | |
"ResNetV2 Model - Test Loss: 6210.7051\n", | |
"ResNetV2 Model - Test Accuracy: 23.44%\n" | |
] | |
} | |
], | |
"source": [ | |
"test_loss_resnet, test_accuracy_resnet = model_resnet.evaluate(transfer_test_loader)\n", | |
"\n", | |
"\n", | |
"# Print the Results\n", | |
"print(f\"ResNetV2 Model - Test Loss: {test_loss_resnet:.4f}\")\n", | |
"print(f\"ResNetV2 Model - Test Accuracy: {test_accuracy_resnet*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "3htKZRdomiOY" | |
}, | |
"source": [ | |
"**Observations and Insights:** The low validation and test accuracies indicate a overfitting training. The ResNetV2 model is not suitable for the datasets.\n", | |
"\n", | |
"**Note: You can even go back and build your own architecture on top of the ResNet Transfer layer and see if you can improve the performance.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "FmnDG4ZbncoR" | |
}, | |
"source": [ | |
"## **EfficientNet Model**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "6kDNE8pVngqC" | |
}, | |
"source": [ | |
"### **Model Building**\n", | |
"\n", | |
"- Import EfficientNet upto the layer of your choice and add Fully Connected layers on top of it." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "2b27a6e1" | |
}, | |
"outputs": [], | |
"source": [ | |
"from keras.api._v2.keras import activations\n", | |
"from tensorflow.python.ops.variables import global_variables\n", | |
"eff_model=EfficientNetB0(weights='imagenet', include_top=False, input_shape=(224,224,3))\n", | |
"\n", | |
"# Add custom layers\n", | |
"x = GlobalAveragePooling2D()(eff_model.output)\n", | |
"x = Dense(1024, activation='relu')(x)\n", | |
"prediction=Dense(4, activation='softmax')(x)\n", | |
"model=Model(eff_model.input, outputs=prediction)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "hVv4Df_In32Y" | |
}, | |
"source": [ | |
"### **Compiling and Training the Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "dc326cd3", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "15110022-8848-4321-9ea4-54d17020214f" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"Epoch 1/10\n", | |
"4/4 [==============================] - 39s 1s/step - loss: 1.4036 - accuracy: 0.3359 - val_loss: 1.4729 - val_accuracy: 0.2606\n", | |
"Epoch 2/10\n", | |
"4/4 [==============================] - 2s 772ms/step - loss: 0.5550 - accuracy: 0.8438 - val_loss: 1.6517 - val_accuracy: 0.2998\n", | |
"Epoch 3/10\n", | |
"4/4 [==============================] - 3s 791ms/step - loss: 0.1202 - accuracy: 0.9844 - val_loss: 1.8548 - val_accuracy: 0.3350\n", | |
"Epoch 4/10\n", | |
"4/4 [==============================] - 3s 798ms/step - loss: 0.0245 - accuracy: 1.0000 - val_loss: 2.2195 - val_accuracy: 0.3521\n", | |
"Epoch 5/10\n", | |
"4/4 [==============================] - 3s 794ms/step - loss: 0.0232 - accuracy: 0.9922 - val_loss: 2.6487 - val_accuracy: 0.3742\n", | |
"Epoch 6/10\n", | |
"4/4 [==============================] - 2s 774ms/step - loss: 0.0221 - accuracy: 0.9922 - val_loss: 2.5616 - val_accuracy: 0.3924\n", | |
"Epoch 7/10\n", | |
"4/4 [==============================] - 2s 760ms/step - loss: 0.0074 - accuracy: 1.0000 - val_loss: 2.4071 - val_accuracy: 0.4336\n", | |
"Epoch 8/10\n", | |
"4/4 [==============================] - 2s 751ms/step - loss: 0.0200 - accuracy: 0.9922 - val_loss: 2.4100 - val_accuracy: 0.4507\n", | |
"Epoch 9/10\n", | |
"4/4 [==============================] - 3s 796ms/step - loss: 0.0252 - accuracy: 0.9844 - val_loss: 2.6063 - val_accuracy: 0.4416\n", | |
"Epoch 10/10\n", | |
"4/4 [==============================] - 3s 787ms/step - loss: 0.0739 - accuracy: 0.9766 - val_loss: 3.1100 - val_accuracy: 0.4215\n" | |
] | |
} | |
], | |
"source": [ | |
"model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])\n", | |
"\n", | |
"history = model.fit(transfer_test_loader,\n", | |
" validation_data=transfer_validation_loader,\n", | |
" epochs=10)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "2xjrzYpgoQnN" | |
}, | |
"source": [ | |
"### **Evaluating the EfficientnetNet Model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "WJVFenvnoQnN", | |
"colab": { | |
"base_uri": "https://localhost:8080/" | |
}, | |
"outputId": "ebf85be3-9646-4e5c-bc8c-11b51108032b" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 0s 73ms/step - loss: 1.5182 - accuracy: 0.6562\n", | |
"EfficientNet Model - Test Loss: 1.5182\n", | |
"EfficientNet Model - Test Accuracy: 65.62%\n" | |
] | |
} | |
], | |
"source": [ | |
"test_loss, test_accuracy = model.evaluate(transfer_test_loader)\n", | |
"print(f\"EfficientNet Model - Test Loss: {test_loss:.4f}\")\n", | |
"print(f\"EfficientNet Model - Test Accuracy: {test_accuracy*100:.2f}%\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "GNWc6agwxJ_z" | |
}, | |
"source": [ | |
"## **Plotting the Confusion Matrix for the chosen final model**" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"id": "SFTRyIk-yjoQ", | |
"colab": { | |
"base_uri": "https://localhost:8080/", | |
"height": 489 | |
}, | |
"outputId": "1d7a3b8a-7a07-4e29-a750-569e41dde3a0" | |
}, | |
"outputs": [ | |
{ | |
"output_type": "stream", | |
"name": "stdout", | |
"text": [ | |
"4/4 [==============================] - 2s 66ms/step\n" | |
] | |
}, | |
{ | |
"output_type": "display_data", | |
"data": { | |
"text/plain": [ | |
"<Figure size 640x480 with 2 Axes>" | |
], | |
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAhIAAAHHCAYAAADqJrG+AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZC0lEQVR4nO3dd1gU1/4G8HdoC9JREVAEFEQQRYnYUMFoNHbkGmOJIkZN0VgIakguKliIxu41lhQs0SQmKrbYS+xGUSwRsYGgotgAQSmy8/vDuL+sgMKyyyzL+7nPPE/2zOzMO7vX9es5Z2YEURRFEBEREalAT+oAREREVHmxkCAiIiKVsZAgIiIilbGQICIiIpWxkCAiIiKVsZAgIiIilbGQICIiIpWxkCAiIiKVsZAgIiIilbGQINKgq1evonPnzrC0tIQgCIiNjVXr/pOTkyEIAlauXKnW/VZmAQEBCAgIkDoGUZXBQoJ03vXr1/HRRx+hXr16MDY2hoWFBfz8/LBw4UI8e/ZMo8cODg7GhQsXMGPGDKxZswbNmzfX6PEq0tChQyEIAiwsLIr9HK9evQpBECAIAubMmVPm/d+5cwdTp05FfHy8GtISkaYYSB2ASJO2b9+O9957DzKZDEOGDIGXlxfy8/Nx5MgRTJgwAX///TdWrFihkWM/e/YMx48fx1dffYXRo0dr5BhOTk549uwZDA0NNbL/NzEwMMDTp0+xdetW9OvXT2nd2rVrYWxsjNzcXJX2fefOHURGRsLZ2RlNmzYt9ft2796t0vGISDUsJEhnJSUloX///nBycsL+/fthb2+vWDdq1Chcu3YN27dv19jx79+/DwCwsrLS2DEEQYCxsbHG9v8mMpkMfn5++Pnnn4sUEuvWrUP37t2xYcOGCsny9OlTVKtWDUZGRhVyPCJ6gUMbpLNmz56N7Oxs/PDDD0pFxEuurq4YO3as4vXz588xbdo01K9fHzKZDM7Ozvjyyy+Rl5en9D5nZ2f06NEDR44cQYsWLWBsbIx69eph9erVim2mTp0KJycnAMCECRMgCAKcnZ0BvBgSePnf/zZ16lQIgqDUtmfPHrRt2xZWVlYwMzODu7s7vvzyS8X6kuZI7N+/H+3atYOpqSmsrKzQu3dvJCQkFHu8a9euYejQobCysoKlpSVCQkLw9OnTkj/YVwwcOBA7duxARkaGou3UqVO4evUqBg4cWGT7R48eISwsDI0bN4aZmRksLCzQtWtXnDt3TrHNwYMH4evrCwAICQlRDJG8PM+AgAB4eXkhLi4O7du3R7Vq1RSfy6tzJIKDg2FsbFzk/Lt06QJra2vcuXOn1OdKREWxkCCdtXXrVtSrVw9t2rQp1fbDhw/H5MmT4ePjg/nz58Pf3x/R0dHo379/kW2vXbuGvn374p133sHcuXNhbW2NoUOH4u+//wYABAUFYf78+QCAAQMGYM2aNViwYEGZ8v/999/o0aMH8vLyEBUVhblz56JXr144evToa9+3d+9edOnSBenp6Zg6dSpCQ0Nx7Ngx+Pn5ITk5ucj2/fr1w5MnTxAdHY1+/fph5cqViIyMLHXOoKAgCIKAjRs3KtrWrVuHhg0bwsfHp8j2N27cQGxsLHr06IF58+ZhwoQJuHDhAvz9/RV/qXt4eCAqKgoAMHLkSKxZswZr1qxB+/btFft5+PAhunbtiqZNm2LBggXo0KFDsfkWLlyImjVrIjg4GIWFhQCA5cuXY/fu3Vi8eDEcHBxKfa5EVAyRSAdlZmaKAMTevXuXavv4+HgRgDh8+HCl9rCwMBGAuH//fkWbk5OTCEA8dOiQoi09PV2UyWTi559/rmhLSkoSAYjffPON0j6Dg4NFJyenIhmmTJki/vuP5Pz580UA4v3790vM/fIYMTExiramTZuKtra24sOHDxVt586dE/X09MQhQ4YUOd6wYcOU9tmnTx+xevXqJR7z3+dhamoqiqIo9u3bV+zYsaMoiqJYWFgo2tnZiZGRkcV+Brm5uWJhYWGR85DJZGJUVJSi7dSpU0XO7SV/f38RgLhs2bJi1/n7+yu17dq1SwQgTp8+Xbxx44ZoZmYmBgYGvvEciejN2CNBOikrKwsAYG5uXqrt//jjDwBAaGioUvvnn38OAEXmUnh6eqJdu3aK1zVr1oS7uztu3LihcuZXvZxbsXnzZsjl8lK9Jy0tDfHx8Rg6dChsbGwU7U2aNME777yjOM9/+/jjj5Vet2vXDg8fPlR8hqUxcOBAHDx4EHfv3sX+/ftx9+7dYoc1gBfzKvT0Xvz0FBYW4uHDh4phmzNnzpT6mDKZDCEhIaXatnPnzvjoo48QFRWFoKAgGBsbY/ny5aU+FhGVjIUE6SQLCwsAwJMnT0q1/c2bN6GnpwdXV1eldjs7O1hZWeHmzZtK7XXr1i2yD2trazx+/FjFxEW9//778PPzw/Dhw1GrVi30798f69evf21R8TKnu7t7kXUeHh548OABcnJylNpfPRdra2sAKNO5dOvWDebm5vj111+xdu1a+Pr6FvksX5LL5Zg/fz7c3Nwgk8lQo0YN1KxZE+fPn0dmZmapj1m7du0yTaycM2cObGxsEB8fj0WLFsHW1rbU7yWikrGQIJ1kYWEBBwcHXLx4sUzve3WyY0n09fWLbRdFUeVjvBy/f8nExASHDh3C3r17MXjwYJw/fx7vv/8+3nnnnSLblkd5zuUlmUyGoKAgrFq1Cps2bSqxNwIAZs6cidDQULRv3x4//fQTdu3ahT179qBRo0al7nkBXnw+ZXH27Fmkp6cDAC5cuFCm9xJRyVhIkM7q0aMHrl+/juPHj79xWycnJ8jlcly9elWp/d69e8jIyFBcgaEO1tbWSlc4vPRqrwcA6OnpoWPHjpg3bx4uXbqEGTNmYP/+/Thw4ECx+36ZMzExsci6y5cvo0aNGjA1NS3fCZRg4MCBOHv2LJ48eVLsBNWXfv/9d3To0AE//PAD+vfvj86dO6NTp05FPpPSFnWlkZOTg5CQEHh6emLkyJGYPXs2Tp06pbb9E1VlLCRIZ02cOBGmpqYYPnw47t27V2T99evXsXDhQgAvuuYBFLmyYt68eQCA7t27qy1X/fr1kZmZifPnzyva0tLSsGnTJqXtHj16VOS9L2/M9OolqS/Z29ujadOmWLVqldJfzBcvXsTu3bsV56kJHTp0wLRp0/C///0PdnZ2JW6nr69fpLfjt99+w+3bt5XaXhY8xRVdZTVp0iSkpKRg1apVmDdvHpydnREcHFzi50hEpccbUpHOql+/PtatW4f3338fHh4eSne2PHbsGH777TcMHToUAODt7Y3g4GCsWLECGRkZ8Pf3x19//YVVq1YhMDCwxEsLVdG/f39MmjQJffr0wZgxY/D06VMsXboUDRo0UJpsGBUVhUOHDqF79+5wcnJCeno6vv32W9SpUwdt27Ytcf/ffPMNunbtitatW+PDDz/Es2fPsHjxYlhaWmLq1KlqO49X6enp4b///e8bt+vRoweioqIQEhKCNm3a4MKFC1i7di3q1auntF39+vVhZWWFZcuWwdzcHKampmjZsiVcXFzKlGv//v349ttvMWXKFMXlqDExMQgICEBERARmz55dpv0R0SskvmqESOOuXLkijhgxQnR2dhaNjIxEc3Nz0c/PT1y8eLGYm5ur2K6goECMjIwUXVxcRENDQ9HR0VEMDw9X2kYUX1z+2b179yLHefWyw5Iu/xRFUdy9e7fo5eUlGhkZie7u7uJPP/1U5PLPffv2ib179xYdHBxEIyMj0cHBQRwwYIB45cqVIsd49RLJvXv3in5+fqKJiYloYWEh9uzZU7x06ZLSNi+P9+rlpTExMSIAMSkpqcTPVBSVL/8sSUmXf37++eeivb29aGJiIvr5+YnHjx8v9rLNzZs3i56enqKBgYHSefr7+4uNGjUq9pj/3k9WVpbo5OQk+vj4iAUFBUrbjR8/XtTT0xOPHz/+2nMgotcTRLEMM6qIiIiI/oVzJIiIiEhlLCSIiIhIZSwkiIiISGUsJIiIiHTUoUOH0LNnTzg4OEAQBMTGxhbZJiEhAb169YKlpSVMTU3h6+uLlJSUUh+DhQQREZGOysnJgbe3N5YsWVLs+uvXr6Nt27Zo2LAhDh48iPPnzyMiIgLGxsalPgav2iAiIqoCBEHApk2bEBgYqGjr378/DA0NsWbNGpX3yx4JIiKiSiIvLw9ZWVlKi6p3aJXL5di+fTsaNGiALl26wNbWFi1btix2+ON1dPLOliG/8IE82mJp38ZSR6B/cf7kd6kj0D+6diz6hFaSRkx/zf9OmTQbrZb9TOpdA5GRkUptU6ZMUemutenp6cjOzsbXX3+N6dOnY9asWdi5cyeCgoJw4MAB+Pv7l2o/OllIEBER6aLw8HCEhoYqtclkMpX29fJpu71798b48eMBvHiez7Fjx7Bs2TIWEkRERFpDUM9MAplMpnLh8KoaNWrAwMAAnp6eSu0eHh44cuRIqffDQoKIiEjTBEHqBEUYGRnB19cXiYmJSu1XrlyBk5NTqffDQoKIiEjT1NQjUVbZ2dm4du2a4nVSUhLi4+NhY2ODunXrYsKECXj//ffRvn17dOjQATt37sTWrVtx8ODBUh+DhQQREZGOOn36NDp06KB4/XJ+RXBwMFauXIk+ffpg2bJliI6OxpgxY+Du7o4NGzagbdu2pT4GCwkiIiJNk2hoIyAgAG+6XdSwYcMwbNgwlY/BQoKIiEjTJBraqAi6e2ZERESkceyRICIi0jQtvGpDXVhIEBERaRqHNoiIiIiKYo8EERGRpnFog4iIiFTGoQ0iIiKiotgjQUREpGkc2iAiIiKV6fDQBgsJIiIiTdPhHgndLZGIiIhI49gjQUREpGkc2iAiIiKV6XAhobtnRkRERBrHHgkiIiJN09PdyZYsJIiIiDSNQxtERERERbFHgoiISNN0+D4SLCSIiIg0jUMbREREREVpRSHh7++P1atX49mzZ1JHISIiUj9BUM+ihbSikGjWrBnCwsJgZ2eHESNG4MSJE1JHIiIiUh9BTz2LFtKKVAsWLMCdO3cQExOD9PR0tG/fHp6enpgzZw7u3bsndTwiIqLyYY+E5hkYGCAoKAibN2/GrVu3MHDgQERERMDR0RGBgYHYv3+/1BGJiIjoFVpTSLz0119/YcqUKZg7dy5sbW0RHh6OGjVqoEePHggLC5M6HhERUdnp8NCGVlz+mZ6ejjVr1iAmJgZXr15Fz5498fPPP6NLly4Q/unKGTp0KN59913MmTNH4rRERERlpKXDEuqgFYVEnTp1UL9+fQwbNgxDhw5FzZo1i2zTpEkT+Pr6SpCOiIiISqIVhcS+ffvQrl27125jYWGBAwcOVFAiIiIiNdLSYQl10IpC4mURkZ6ejsTERACAu7s7bG1tpYxFRESkHjo8tKEVJdKTJ08wePBg1K5dG/7+/vD390ft2rXxwQcfIDMzU+p4REREVAKtKCSGDx+OkydPYtu2bcjIyEBGRga2bduG06dP46OPPpI6HhERUfnwqg3N2rZtG3bt2oW2bdsq2rp06YLvvvsO7777roTJiIiI1EBLiwB10Iozq169OiwtLYu0W1pawtraWoJEREREVBpa0SPx3//+F6GhoVizZg3s7OwAAHfv3sWECRMQEREhcbqKZWyghz6Na8GnjgUsZAZIyXiGdWfSkPSIDzSraHGnT2Hljz8g4dJF3L9/H/MXLcHbHTtJHatKaOVWA592aYAmTtawszLB0CXHsDP+jmJ9WE9P9Patg9o21ZD/XI7zNx8jOvZvnE16JGHqqoO/UyrQ4cmWWlFILF26FNeuXUPdunVRt25dAEBKSgpkMhnu37+P5cuXK7Y9c+aMVDErREiL2qhtaYzvTqQi49lztHa2QliAC77acQUZz55LHa9KefbsKdzd3REY9B+Ejh0tdZwqpZrMAH/fysTPR5MR82mbIuuv33uCL3+Ox837OTAx0sfITm74dVw7tP5qBx5m50uQuGrh75QKdHhoQysKicDAQKkjaAVDfQFv1bHEosM3ceX+UwDA5ovpaOpggbddq2PjBT7ArCK1beePtu38pY5RJe2/eBf7L94tcf2mv1KVXk9Zfw6D2rnAo44VjlxO13S8Ko2/Uypij4RmTZkyReoIWkFfEKCvJ6BALldqzy+Uw61mNYlSEWk3Q30Bg9vXQ+bTfFy6lSF1HJ3H3yl6lVb1tZw+fRpr1qzBmjVrEBcXV6r35OXlISsrS2kpLKicXZu5z+W49iAHvRrZwsrYAIIAtHaygmv1arA0NpQ6HpFWeaeJPa4vDsTNb4MwspMb3p9/GI84rKFx/J1SkUSXfx46dAg9e/aEg4MDBEFAbGxsidt+/PHHEAQBCxYsKNMxtKKQuHXrFtq1a4cWLVpg7NixGDt2LHx9fdG2bVvcunXrte+Njo6GpaWl0nJ+8/cVlFz9Vpx4cb7zAz3w3Xte6NSgOk6mZEAURYmTEWmXo5fT0TFqD3rMOoADf9/Fio9aoYa5TOpYVQJ/p1QgCOpZyignJwfe3t5YsmTJa7fbtGkTTpw4AQcHhzIfQyuGNoYPH46CggIkJCTA3d0dAJCYmIiQkBAMHz4cO3fuLPG94eHhCA0NVWobvfmqRvNq0v3sfMzanwQjfQEmhvrIzH2OT9o44n4O/6VF9G9P8wuRfD8HyfdzcObGIxyb3gUD2jpj8Y5EqaPpPP5OVR5du3ZF165dX7vN7du38dlnn2HXrl3o3r17mY+hFYXEn3/+iWPHjimKCODFszYWL178xod5yWQyyGTK/wrRNzTSSM6KlF8oIr/wOaoZ6sHLzhzrz6VJHYlIq+kJAmQG+lLHqFL4O1V6gpomW+bl5SEvL0+prbi/B0tLLpdj8ODBmDBhAho1aqTSPrSikHB0dERBQUGR9sLCQpW6WSozLzszAMDdJ3mwNZPh/aZ2SMvKw5EbjyVOVvU8zclBSkqK4vXtW7dwOSEBlpaWsK9i/7+saNVk+nCxNVO8rlvDFI0cLZGRk4/H2fkY290Du87dQXpGLmzMjBDSoT7srE2wNe71Q6GkHvydKjt1FRLR0dGIjIxUapsyZQqmTp2q0v5mzZoFAwMDjBkzRuVMWlFIfPPNN/jss8+wZMkSNG/eHMCLiZdjx47FnDlzJE5XsUwM9dHXuxasTQyRk1+IuNQsbLhwF4Uceqxwf/99EcNDhihez5kdDQDo1bsPps38WqpYVUJTJxtsnPD/l95Gve8NAPj1WDImrjkDVztz9GvdGjZmRnick4/45McInH0QiXeypIpcpfB3SjrFDeer2hsRFxeHhQsX4syZM+UqdARRC2bHWFtb4+nTp3j+/DkMDF7UNi//29TUVGnbR4/efOe6kF8uaCQnld3Svo2ljkD/4vzJ71JHoH907ej+5o2oQsT01/zvlOl7MWrZT85vISq/VxAEbNq0SXHvpgULFiA0NBR6ev9/3UVhYSH09PTg6OiI5OTkUu1XK3okynqpCRERUWWirqENdRo8eDA6dVK+7X+XLl0wePBghISUvmDRikIiODhY6ghEREQ6Jzs7G9euXVO8TkpKQnx8PGxsbFC3bl1Ur15daXtDQ0PY2dkpXfzwJlpRSPxbbm4u8vOVLyGysLCQKA0REVH5SdUjcfr0aXTo0EHx+uX8iuDgYKxcuVItx9CKQiInJweTJk3C+vXr8fDhwyLrCwsLJUhFRESkHlIVEgEBAWW6UVhp50X8m1bc2XLixInYv38/li5dCplMhu+//x6RkZFwcHDA6tWrpY5HRERULoIgqGXRRlrRI7F161asXr0aAQEBCAkJQbt27eDq6gonJyesXbsWgwYNkjoiERERFUMreiQePXqEevXqAXgxH+LlJZ5t27bFoUOHpIxGRERUfoKaFi2kFYVEvXr1kJSUBABo2LAh1q9fD+BFT4WVlZWEyYiIiMpPl4c2tKKQCAkJwblz5wAAX3zxBZYsWQJjY2OMHz8eEyZMkDgdERERlUQr5kiMHz9e8d+dOnXC5cuXERcXB1dXVzRp0kTCZEREROWnrb0J6qAVhQQA7Nu3D/v27UN6ejrkcrnSuh9//FGiVEREROXHQkLDIiMjERUVhebNm8Pe3l6nP3AiIiJdohWFxLJly7By5UoMHjxY6ihERERqp8v/QNaKQiI/Px9t2rSROgYREZFm6G4doR1XbQwfPhzr1q2TOgYRERGVkWQ9Ei8fHAIAcrkcK1aswN69e9GkSRMYGhoqbTtv3ryKjkdERKQ2HNrQgLNnzyq9btq0KQDg4sWLSu26/OETEVHVoMt/l0lWSBw4cECqQxMREVUoXS4ktGKOBBEREVVOWnHVBhERkU7T3Q4JFhJERESaxqENIiIiomKwR4KIiEjDdLlHgoUEERGRhulyIcGhDSIiIlIZeySIiIg0TJd7JFhIEBERaZru1hEc2iAiIiLVsUeCiIhIwzi0QURERCpjIUFEREQq0+VCgnMkiIiISGXskSAiItI03e2QYCFBRESkaRzaICIiIioGeySIiIg0TJd7JFhIEBERaZguFxIc2iAiIiKVsUeCiIhIw3S5R4KFBBERkabpbh3BoQ0iIiJSnU72SHT3qCF1BPrH7cfPpI5A/5J5+qDUEegfzYc2lzoCVSBdHtpgjwQREZGGCYKglqWsDh06hJ49e8LBwQGCICA2NlaxrqCgAJMmTULjxo1hamoKBwcHDBkyBHfu3CnTMVhIEBERaZggqGcpq5ycHHh7e2PJkiVF1j19+hRnzpxBREQEzpw5g40bNyIxMRG9evUq0zF0cmiDiIiIgK5du6Jr167FrrO0tMSePXuU2v73v/+hRYsWSElJQd26dUt1DBYSREREGlZZ5khkZmZCEARYWVmV+j0sJIiIiDRMXXVEXl4e8vLylNpkMhlkMlm5952bm4tJkyZhwIABsLCwKPX7OEeCiIiokoiOjoalpaXSEh0dXe79FhQUoF+/fhBFEUuXLi3Te9kjQUREpGHqGtoIDw9HaGioUlt5eyNeFhE3b97E/v37y9QbAbCQICIi0jh1DW2oaxjjpZdFxNWrV3HgwAFUr169zPtgIUFERKSjsrOzce3aNcXrpKQkxMfHw8bGBvb29ujbty/OnDmDbdu2obCwEHfv3gUA2NjYwMjIqFTHYCFBRESkYXp60ly1cfr0aXTo0EHx+uWwSHBwMKZOnYotW7YAAJo2bar0vgMHDiAgIKBUx2AhQUREpGFSXf0ZEBAAURRLXP+6daXFqzaIiIhIZeyRICIi0rDKckMqVbCQICIi0jAdriNYSBAREWmaLvdIcI4EERERqYw9EkRERBqmyz0SLCSIiIg0TIfrCA5tEBERkerYI0FERKRhHNogIiIilelwHcGhDSIiIlIdeySIiIg0jEMbREREpDIdriM4tEFERESqY48EERGRhnFog4iIiFSmw3UECwkiIiJN0+UeCc6RICIiIpWxR4KIiEjDdLhDgoUEERGRpnFog4iIiKgY7JEgIiLSMB3ukGAhQUREpGkc2iAiIiIqhiQ9Elu2bCn1tr169dJgEiIiIs3T4Q4JaQqJwMBApdeCIEAURaXXLxUWFlZULCIiIo3g0IaayeVyxbJ79240bdoUO3bsQEZGBjIyMvDHH3/Ax8cHO3fulCIeERERlZLkky3HjRuHZcuWoW3btoq2Ll26oFq1ahg5ciQSEhIkTEdERFR+utwjIXkhcf36dVhZWRVpt7S0RHJycoXnkVrmo/vY9dNyXIn/CwV5uahuVxtBn05CnfoNpY5W5WzftB7bY3/DvbQ7AAAnl/oYMHQkfFu3fcM7qbz8fOpj/JBO8PGsC/ualug3fgW2HjyvtI27Sy1MHxuIdj6uMDDQw+UbdzEg7Huk3n0sUeqqIWbCEDx5eK9Ie+MOPdFh8GgJElUOOlxHSF9I+Pr6IjQ0FGvWrEGtWrUAAPfu3cOECRPQokULidNVrGfZT7AiYjTqNWqG4C9nwdTCCg/TbsHE1FzqaFVSjZq1EPLxGDjUqQtRBPbt2IJp4eOw+Mdf4FTPVep4Os3URIYLV25j9ebj+HXeyCLrXerUwL4fQ7Eq9himL92OrJxceNa3R25egQRpq5b3IxZBFOWK1w9vJSN2bjjcfNtJmEr7sUdCg3788Uf06dMHdevWhaOjIwAgNTUVbm5uiI2NlTZcBTu0eR0sq9viP59+oWizsbWXMFHV1rKtv9Lr4I8+w/bY33D50gUWEhq2++gl7D56qcT1kaN7YteRv/HVws2KtqRbDyoiWpVXzcJK6XXc9l9haWuP2u5NpAlEkpO8kHB1dcX58+exZ88eXL58GQDg4eGBTp066XQFV5yE08fg5u2Ln+dNQdKlc7CwqYGWnQPh26mH1NGqvMLCQhw5sAe5uc/g0Yg/mFISBAHvtm2Eeav2YsuSUfBuWAc3bz/ENz/uLjL8QZpV+LwAl0/sR7POQVXu97qsdPnjkbyQAF78MHTu3BmdO3eWOoqkHqffwV97NsOvez/49/kAt65fxraYRdA3MIBPwLtSx6uSkq5fxecfD0F+fj5MTEwQMXMe6rrUlzpWlWZrYwZzU2OEhbyDyCXb8N+Fsejs54lf5g5Hl5GLcCTumtQRq4zrZ44h72k2PPyq9m93aehyoaUVhUROTg7+/PNPpKSkID8/X2ndmDFjXvvevLw85OXlKbUV5OfB0Eim9pyaJspF1K7vjs4DRwAAHFzckJ6ShL/2bGEhIZE6dZ3xv5hfkZOdjSMH92LujMmYvfh7FhMS0tN7cdX6toMXsHjtAQDA+Su30dK7Hkb0bctCogJdOrwLTo19YWZdXeooJCHJC4mzZ8+iW7duePr0KXJycmBjY4MHDx6gWrVqsLW1fWMhER0djcjISKW29z4KRb9PwjQZWyPMraujZh0npbaadZxw8eQhiRKRoaEhHOrUBQC4NfTE1YS/sfm3dfhsYoTEyaquB4+zUVBQiIQbaUrtiTfuok2zehKlqnqyHtxD6qWz6DaafxZKQ4c7JKR/1sb48ePRs2dPPH78GCYmJjhx4gRu3ryJt956C3PmzHnj+8PDw5GZmam09PnwswpIrn513b3w4E6qUtuDO6mwrllLokT0KrkoR0FB/ps3JI0peF6IuEs30cBJ+c+Fm5MtUtJ46WdFuXRkN0wsrODSpKXUUSoFPUFQy6KNJC8k4uPj8fnnn0NPTw/6+vrIy8uDo6MjZs+ejS+//PKN75fJZLCwsFBaKuOwBgD4dX8PqVcv4eDGn/Dw7i2cO7IXp/ZtQ8sugVJHq5Jili3Chfg43Eu7jaTrV1+8PnsaAZ27SR1N55maGKFJg9po0qA2AMC5dnU0aVAbjnbWAID5q/aibxcfhPRpg3qONfDx++3Rrb0XVqxn711FEOVyJBzdDY82naCnry91HJKY5EMbhoaGijFPW1tbpKSkwMPDA5aWlkhNTX3Du3VLHdeGGBQ2DbvXfYcDG1bB2tYe3YNHo2m7d6SOViVlPn6EudP/i0cPH8DU1Awu9Rtg2rxv4ePbWupoOs/H0wm7vx+reD077D8AgDVbTmDklJ+w5cB5fDbjF0wY1hlzJ/bFlZvpGDDhexyLvyFV5Col5dJZPHmYDs92XaSOUmloaWeCWkheSDRr1gynTp2Cm5sb/P39MXnyZDx48ABr1qyBl5eX1PEqXMO32qDhW22kjkEAxoVPlTpClXU47ipMmr3+LomrN5/A6s0nKigR/ZuT11sY8+MuqWNUKrp81YbkQxszZ86Evf2Lmy7NmDED1tbW+OSTT/DgwQMsX75c4nRERETlpyeoZymrQ4cOoWfPnnBwcIAgCEVu9CiKIiZPngx7e3uYmJigU6dOuHr1atnOreyx1KtRo0Zo2fLFZB1bW1ssW7YMkZGRmDFjBpo2bSptOCIiokosJycH3t7eWLJkSbHrZ8+ejUWLFmHZsmU4efIkTE1N0aVLF+Tm5pb6GJIPbfTu3RtBQUH4+OOPkZGRgVatWsHQ0BAPHjzAvHnz8Mknn0gdkYiIqFykGtro2rUrunbtWuw6URSxYMEC/Pe//0Xv3r0BAKtXr0atWrUQGxuL/v37l+oYkvdInDlzBu3avXjYy++//45atWrh5s2bWL16NRYtWiRxOiIiovITBPUseXl5yMrKUlpevSljaSUlJeHu3bvo1KmTos3S0hItW7bE8ePHS70fyQuJp0+fwtz8xdMtd+/ejaCgIOjp6aFVq1a4efOmxOmIiIi0R3R0NCwtLZWW6OholfZ19+5dAFA8efulWrVqKdaVhuSFhKurK2JjY5Gamopdu3YpnreRnp4OCwsLidMRERGVn6Cm/xV3E8bw8HBJz03yQmLy5MkICwuDs7MzWrZsidatX1yjv3v3bjRr1kzidEREROWnrqs2irsJo0ym2k0Y7ezsAAD37t1Tar93755iXanOTaWjq1Hfvn2RkpKC06dPY+fOnYr2jh07Yv78+RImIyIi0l0uLi6ws7PDvn37FG1ZWVk4efKk4h/1pSH5VRvAi6ro1eqnRYsWEqUhIiJSL6mu2sjOzsa1a///RNykpCTEx8fDxsYGdevWxbhx4zB9+nS4ubnBxcUFERERcHBwQGBgYKmPUapCYsuWLaXeYa9evUq9LRERUVUg1Y0tT58+jQ4dOiheh4aGAgCCg4OxcuVKTJw4ETk5ORg5ciQyMjLQtm1b7Ny5E8bGxqU+RqkKidJWJoIgoLCwsNQHJyIiIs0JCAiAKIolrhcEAVFRUYiKilL5GKUqJORyucoHICIiquq09RHg6lCuORK5ubll6v4gIiKqinS4jij7VRuFhYWYNm0aateuDTMzM9y48eKxvREREfjhhx/UHpCIiKiyEwRBLYs2KnMhMWPGDKxcuRKzZ8+GkZGRot3Lywvff/+9WsMRERGRditzIbF69WqsWLECgwYNgr6+vqLd29sbly9fVms4IiIiXaCuZ21oozLPkbh9+zZcXV2LtMvlchQUFKglFBERkS7R5cmWZe6R8PT0xOHDh4u0//7777ylNRERURVT5h6JyZMnIzg4GLdv34ZcLsfGjRuRmJiI1atXY9u2bZrISEREVKnpbn+ECj0SvXv3xtatW7F3716Ymppi8uTJSEhIwNatW/HOO+9oIiMREVGlpstXbah0H4l27dphz5496s5CRERElYzKN6Q6ffo0EhISALyYN/HWW2+pLRQREZEu0dPOzgS1KHMhcevWLQwYMABHjx6FlZUVACAjIwNt2rTBL7/8gjp16qg7IxERUaWmrcMS6lDmORLDhw9HQUEBEhIS8OjRIzx69AgJCQmQy+UYPny4JjISERGRlipzj8Sff/6JY8eOwd3dXdHm7u6OxYsXo127dmoNR0REpAt0uEOi7IWEo6NjsTeeKiwshIODg1pCERER6RIObfzLN998g88++wynT59WtJ0+fRpjx47FnDlz1BqOiIhIF+gJ6lm0Ual6JKytrZWqqZycHLRs2RIGBi/e/vz5cxgYGGDYsGEIDAzUSFAiIiLSPqUqJBYsWKDhGERERLpLl4c2SlVIBAcHazoHERGRztLdMqIcN6QCgNzcXOTn5yu1WVhYlCsQERERVR5lLiRycnIwadIkrF+/Hg8fPiyyvrCwUC3BiIiIdAUfI/4vEydOxP79+7F06VLIZDJ8//33iIyMhIODA1avXq2JjERERJWaIKhn0UZl7pHYunUrVq9ejYCAAISEhKBdu3ZwdXWFk5MT1q5di0GDBmkiJxEREWmhMvdIPHr0CPXq1QPwYj7Eo0ePAABt27bFoUOH1JuOiIhIB+jyY8TLXEjUq1cPSUlJAICGDRti/fr1AF70VLx8iBcRERH9P10e2ihzIRESEoJz584BAL744gssWbIExsbGGD9+PCZMmKD2gERERKS9yjxHYvz48Yr/7tSpEy5fvoy4uDi4urqiSZMmag1HRESkC3T5qo1y3UcCAJycnODk5KSOLERERDpJh+uI0hUSixYtKvUOx4wZo3IYIiIiXaStEyXVoVSFxPz580u1M0EQWEgQERFVIaUqJF5epUFUVmfvZEgdgf7F+/33pI5A/zid+kTqCFSBynxlQyVS7jkSRERE9Hq6PLShy0USERERaRh7JIiIiDRMT3c7JFhIEBERaZouFxIc2iAiIiKVqVRIHD58GB988AFat26N27dvAwDWrFmDI0eOqDUcERGRLuBDu/5lw4YN6NKlC0xMTHD27Fnk5eUBADIzMzFz5ky1ByQiIqrs9AT1LNqozIXE9OnTsWzZMnz33XcwNDRUtPv5+eHMmTNqDUdERESqKSwsREREBFxcXGBiYoL69etj2rRpEEVRrccp82TLxMREtG/fvki7paUlMjIy1JGJiIhIp0gxKjFr1iwsXboUq1atQqNGjXD69GmEhITA0tJSrXehLnMhYWdnh2vXrsHZ2Vmp/ciRI6hXr566chEREekMKZ7+eezYMfTu3Rvdu3cHADg7O+Pnn3/GX3/9pdbjlHloY8SIERg7dixOnjwJQRBw584drF27FmFhYfjkk0/UGo6IiEgX6KlpycvLQ1ZWltLycq7iq9q0aYN9+/bhypUrAIBz587hyJEj6Nq1q1rPrcw9El988QXkcjk6duyIp0+fon379pDJZAgLC8Nnn32m1nBERET0/6KjoxEZGanUNmXKFEydOrXItl988QWysrLQsGFD6Ovro7CwEDNmzMCgQYPUmqnMhYQgCPjqq68wYcIEXLt2DdnZ2fD09ISZmZlagxEREekKdY1shIeHIzQ0VKlNJpMVu+369euxdu1arFu3Do0aNUJ8fDzGjRsHBwcHBAcHqycQynFnSyMjI3h6eqotCBERka5S1xwJmUxWYuHwqgkTJuCLL75A//79AQCNGzfGzZs3ER0dLW0h0aFDh9feFGP//v3lCkRERETl9/TpU+jpKU+F1NfXh1wuV+txylxING3aVOl1QUEB4uPjcfHiRbVWOERERLpCiss/e/bsiRkzZqBu3bpo1KgRzp49i3nz5mHYsGFqPU6ZC4n58+cX2z516lRkZ2eXOxAREZGukeKulIsXL0ZERAQ+/fRTpKenw8HBAR999BEmT56s1uOo7emfH3zwAVq0aIE5c+aoa5dERESkInNzcyxYsAALFizQ6HHUVkgcP34cxsbG6todERGRzpDihlQVpcyFRFBQkNJrURSRlpaG06dPIyIiolxhcnNzWYwQEZHO0eE6oux3trS0tFRabGxsEBAQgD/++ANTpkwpcwC5XI5p06ahdu3aMDMzw40bNwAAERER+OGHH8q8PyIiIqo4ZeqRKCwsREhICBo3bgxra2u1BJg+fTpWrVqF2bNnY8SIEYp2Ly8vLFiwAB9++KFajkNERCQVbX0EuDqUqUdCX18fnTt3VutTPlevXo0VK1Zg0KBB0NfXV7R7e3vj8uXLajsOERGRVAQ1/U8blXlow8vLSzH8oA63b9+Gq6trkXa5XI6CggK1HYeIiEgqeoJ6Fm1U5kJi+vTpCAsLw7Zt25CWllbkKWRl5enpicOHDxdp//3339GsWbMy74+IiIgqTqnnSERFReHzzz9Ht27dAAC9evVSulW2KIoQBAGFhYVlCjB58mQEBwfj9u3bkMvl2LhxIxITE7F69Wps27atTPsiIiLSRtram6AOpS4kIiMj8fHHH+PAgQNqDdC7d29s3boVUVFRMDU1xeTJk+Hj44OtW7finXfeUeuxiIiIpPC6Z1RVdqUuJERRBAD4+/urPUS7du2wZ88ete+XiIiINKtMcyQ0UVGlpqbi1q1bitd//fUXxo0bhxUrVqj9WERERFLQ5cmWZbqPRIMGDd5YTDx69KhMAQYOHIiRI0di8ODBuHv3Ljp16gQvLy+sXbsWd+/eVfvDRYiIiCqaDo9slK2QiIyMhKWlpVoDXLx4ES1atAAArF+/Ho0bN8bRo0exe/dufPzxxywkiIiItFiZCon+/fvD1tZWrQEKCgogk8kAAHv37kWvXr0AAA0bNkRaWppaj0VERCQFXX5oV6nnSGhqxmmjRo2wbNkyHD58GHv27MG7774LALhz5w6qV6+ukWMSERFVJF2eI1HqQuLlVRvqNmvWLCxfvhwBAQEYMGAAvL29AQBbtmxRDHkQERGRdir10IZcLtdIgICAADx48ABZWVlKDwIbOXIkqlWrppFjEhERVSQdHtko2xwJTdHX1y/yNFFnZ2dpwhAREamZnpY+cEsdJCkkfHx8sG/fPlhbW6NZs2avnX9x5syZCkxGRESkfuyRULPevXsrrtQIDAyUIgIRERGpgSSFxJQpUwAAhYWF6NChA5o0aQIrKyspohAREWmctl5xoQ6SzpHQ19dH586dkZCQwELiH5mP7mPXT8txJf4vFOTlorpdbQR9Ogl16jeUOlqVxO9DGk0dLfFBS0e41zJDTXMZJm64iENXHyrWBzSogT7N7NHQzhyWJoYY/ONpXE3PkTBx1WJsoIc+jWvBp44FLGQGSMl4hnVn0pD06JnU0bSWLt9HQvLJll5eXrhx4wZcXFykjiK5Z9lPsCJiNOo1aobgL2fB1MIKD9NuwcTUXOpoVRK/D+mYGOrj6r1sbD2fhllBXkXWGxvq4dytLOxLuI8vu7lLkLBqC2lRG7UtjfHdiVRkPHuO1s5WCAtwwVc7riDj2XOp41EFk7yQmD59OsLCwjBt2jS89dZbMDU1VVpvYWEhUbKKd2jzOlhWt8V/Pv1C0WZjay9hoqqN34d0jt94hOM3Sn5uz86/0wEA9payiopE/zDUF/BWHUssOnwTV+4/BQBsvpiOpg4WeNu1OjZeuCdxQu2kwx0S0hcS3bp1AwD06tVL6eoNURQhCAIKCwulilbhEk4fg5u3L36eNwVJl87BwqYGWnYOhG+nHlJHq5L4fRAVpS8I0NcTUPDKvYXyC+Vwq8l7/5SEQxsadODAAakjaI3H6Xfw157N8OveD/59PsCt65exLWYR9A0M4BPwrtTxqhx+H0RF5T6X49qDHPRqZIu0zFRk5j1Hq7pWcK1eDfey86WORxKQvJDw9/cv1/vz8vKQl5en1FaQnwdDo8rX5SnKRdSu747OA0cAABxc3JCekoS/9mzhX1wS4PdBVLwVJ25hWIvamB/ogUK5iJuPn+FkSgacrE2kjqa1dLhDQvpCAgAeP36MH374AQkJCQAAT09PhISEwMbG5o3vjY6ORmRkpFLbex+Fot8nYRrJqknm1tVRs46TUlvNOk64ePKQRImqNn4fRMW7n52PWfuTYKQvwMRQH5m5z/FJG0fcz2GPRElK/WCrSkjyczt06BCcnZ2xaNEiPH78GI8fP8aiRYvg4uKCQ4fe/IMdHh6OzMxMpaXPh59VQHL1q+vuhQd3UpXaHtxJhXXNWhIlqtr4fRC9Xn6hiMzc56hmqAcvO3OcvZ0ldSSSgOSFxKhRo/D+++8jKSkJGzduxMaNG3Hjxg30798fo0aNeuP7ZTIZLCwslJbKOKwBAH7d30Pq1Us4uPEnPLx7C+eO7MWpfdvQskug1NGqJH4f0jEx1IObrSncbF9cxeVgZQw3W1PUsnjxZ9vC2AButqZwrv5ivZNNNbjZmsLG1FCyzFWJl50ZvOzMUMPUEJ61zDDp7XpIy8rDkRuPpY6mtQRBUMuijQRRU88HLyUTExPEx8fD3V35WvDExEQ0bdoUz56V/QYnv59LU1e8Cnc57hh2r/sOD+/egrWtPfy69+NVAhLSte9jzo4rUkcoFZ+6lvh2YNMi7dsv3MW07Yno3rgWIroXvSnY90eS8f2RmxWQsPw8nN88dKutfB0t0de7FqxNDJGTX4i41CxsuHAXzwo085RoTYvp31jjx1h9OvXNG5XCkOaOatmPOkk+R8LHxwcJCQlFComEhAR4e3tLlEo6Dd9qg4ZvtZE6Bv2D34c0zqRkotXXf5a4fvuFe9jO+xVI5lRqJk6lZkodo1Lh5Z8aNGbMGIwdOxbXrl1Dq1atAAAnTpzAkiVL8PXXX+P8+fOKbZs0aSJVTCIiIiqG5IXEgAEDAAATJ04sdp0gCFXy5lRERKQ7dLc/QgsKiaSkJKkjEBERaZQOj2xIW0gUFBQgMjISERERfGgXERFRJSTp5Z+GhobYsGGDlBGIiIg0Tpcv/5T8PhKBgYGIjY2VOgYREZHG6Klp0UaSz5Fwc3NDVFQUjh49WuxjxMeMGSNRMiIiosrt9u3bmDRpEnbs2IGnT5/C1dUVMTExaN68udqOIXkh8cMPP8DKygpxcXGIi4tTWicIAgsJIiKq9KQYlnj8+DH8/PzQoUMH7NixAzVr1sTVq1dhbW2t1uNIXkjwqg0iItJ1UsxumDVrFhwdHRETE6No08SFDdo65EJERETlsGXLFjRv3hzvvfcebG1t0axZM3z33XdqP47kPRLDhg177foff/yxgpIQERFphrqGNvLy8pCXl6fUJpPJIJMVfVjljRs3sHTpUoSGhuLLL7/EqVOnMGbMGBgZGSE4OFgteQAt6JF4+ejwl0t6ejr279+PjRs3IiMjQ+p4RERE5aauqzaio6NhaWmptERHRxd7TLlcDh8fH8ycORPNmjXDyJEjMWLECCxbtkyt5yZ5j8SmTZuKtMnlcnzyySeoX7++BImIiIjUS109EuHh4QgNDVVqK643AgDs7e3h6emp1Obh4aH2+zdJ3iNRHD09PYSGhmL+/PlSRyEiItIaMpkMFhYWSktJhYSfnx8SExOV2q5cuQInJye1ZtLKQgIArl+/jufPn0sdg4iIqNwENS1lMX78eJw4cQIzZ87EtWvXsG7dOqxYsQKjRo1SxykpSD608WoXjSiKSEtLw/bt29U6GYSIiEgqUtzd2tfXF5s2bUJ4eDiioqLg4uKCBQsWYNCgQWo9juSFxNmzZ5Ve6+npoWbNmpg7d+4br+ggIiKikvXo0QM9evTQ6DEkLyS2b98OURQVt8ZOTk5GbGwsnJycYGAgeTwiIqJy05PkllQVQ/I5EoGBgVizZg0AICMjA61atcLcuXMRGBiIpUuXSpyOiIio/ARBPYs2kryQOHPmDNq1awcA+P3331GrVi3cvHkTq1evxqJFiyROR0RERK8j+djB06dPYW5uDgDYvXs3goKCoKenh1atWuHmzZsSpyMiIio/gUMbmuPq6orY2FikpqZi165d6Ny5MwAgPT0dFhYWEqcjIiIqPw5taNDkyZMRFhYGZ2dntGzZEq1btwbwoneiWbNmEqcjIiKi15F8aKNv375o27Yt0tLS4O3trWjv2LEj+vTpI2EyIiIi9dDlqzYkLyQAwM7ODnZ2dkptLVq0kCgNERGRemnrsIQ6aEUhQUREpMt0uZCQfI4EERERVV7skSAiItIwXb78k4UEERGRhunpbh3BoQ0iIiJSHXskiIiINIxDG0RERKQyXrVBREREVAz2SBAREWkYhzaIiIhIZbxqg4iIiKgY7JEgIiLSMA5tEBERkcp0+aoNFhJEREQapsN1BOdIEBERkerYI0FERKRhejo8tqGThcS97DypI9A/apnJpI5ApJXsLfhnoyrR3TKCQxtERERUDjrZI0FERKRVdLhLgoUEERGRhunyfSQ4tEFEREQqY48EERGRhunwRRssJIiIiDRNh+sIDm0QERGR6tgjQUREpGk63CXBQoKIiEjDdPmqDRYSREREGqbLky05R4KIiIhUxh4JIiIiDdPhDgkWEkRERBqnw5UEhzaIiIhIZSwkiIiINExQ0//K4+uvv4YgCBg3bpx6TuofHNogIiLSMKmv2jh16hSWL1+OJk2aqH3f7JEgIiLSYdnZ2Rg0aBC+++47WFtbq33/LCSIiIg0TFDTkpeXh6ysLKUlLy/vtcceNWoUunfvjk6dOmnk3FhIEBERaZqaKono6GhYWloqLdHR0SUe9pdffsGZM2deu015cY4EERFRJREeHo7Q0FClNplMVuy2qampGDt2LPbs2QNjY2ONZWIhQUREpGHqetaGTCYrsXB4VVxcHNLT0+Hj46NoKywsxKFDh/C///0PeXl50NfXL3cmFhJEREQaJsVVGx07dsSFCxeU2kJCQtCwYUNMmjRJLUUEwEKCiIhI46S4+tPc3BxeXl5KbaampqhevXqR9vLgZEsiIiJSGXskiIiINE1LnrVx8OBBte9TskJi0aJFpd52zJgxGkxCRESkWeqabKmNJCsk5s+fX6rtBEFgIUFERKSlJCskkpKSpDo0ERFRhZL6WRuaxDkSREREGqbDdYT2FBK3bt3Cli1bkJKSgvz8fKV18+bNkygVERERvY5WFBL79u1Dr169UK9ePVy+fBleXl5ITk6GKIpKd+QiIiKqlHS4S0Ir7iMRHh6OsLAwXLhwAcbGxtiwYQNSU1Ph7++P9957T+p4RERE5SKo6X/aSCsKiYSEBAwZMgQAYGBggGfPnsHMzAxRUVGYNWuWxOmIiIioJFpRSJiamirmRdjb2+P69euKdQ8ePJAqFhERkVoIgnoWbaQVcyRatWqFI0eOwMPDA926dcPnn3+OCxcuYOPGjWjVqpXU8YiIiMpFS2sAtdCKQmLevHnIzs4GAERGRiI7Oxu//vor3NzceMUGERFVfjpcSUheSBQWFuLWrVto0qQJgBfDHMuWLZM4FREREZWG5HMk9PX10blzZzx+/FjqKERERBrBqzY0zMvLCzdu3JA6BhERkUbo8mRLrSgkpk+fjrCwMGzbtg1paWnIyspSWoiIiEg7ST5HAgC6desGAOjVqxeEf5VcoihCEAQUFhZKFa3CxUwYgicP7xVpb9yhJzoMHi1Boqot89F97PppOa7E/4WCvFxUt6uNoE8noU79hlJH02lNHS3xQUtHuNcyQ01zGSZuuIhDVx8q1gc0qIE+zezR0M4cliaGGPzjaVxNz5EwcdUhygtxaefPSIk7gNwnGTCxsIFTi45o+M77Sr/fpEyXPxmtKCQOHDggdQSt8X7EIoiiXPH64a1kxM4Nh5tvOwlTVU3Psp9gRcRo1GvUDMFfzoKphRUept2Ciam51NF0nomhPq7ey8bW82mYFeRVZL2xoR7O3crCvoT7+LKbuwQJq67EfRtw49gfaD5gPCzs6+JxyjXE/bIQhsbV4Nq+l9TxtJcOVxJaUUi4uLjA0dGxSDUriiJSU1MlSiWNahZWSq/jtv8KS1t71HZvIk2gKuzQ5nWwrG6L/3z6haLNxtZewkRVx/Ebj3D8xqMS1+/8Ox0AYG8pq6hI9I+HyQlw8GoF+0a+AABTm1pIPfsnHqVclTgZSUUr5ki4uLjg/v37RdofPXoEFxcXCRJph8LnBbh8Yj8823Zhl6EEEk4fQ+167vh53hTMHB6I/00cjlN7t0kdi0hS1Z09kH7lHJ6k3wYAZNxOwsMbCbDzeEviZNpNl6/a0IoeiZdzIV6VnZ0NY2NjCRJph+tnjiHvaTY8/DpLHaVKepx+B3/t2Qy/7v3g3+cD3Lp+GdtiFkHfwAA+Ae9KHY9IEu4d+6Ig9yl2f/0JBEEPoihHo26DUfetAKmjaTVd/regpIVEaGgoAEAQBERERKBatWqKdYWFhTh58iSaNm362n3k5eUhLy9Pqa0gPw+GRpW/y/PS4V1wauwLM+vqUkepkkS5iNr13dF54AgAgIOLG9JTkvDXni0sJKjKuhV/BKln/kSLD8JgYVcXGbdv4Hzs94pJl1T1SFpInD17FsCLHokLFy7AyMhIsc7IyAje3t4ICwt77T6io6MRGRmp1NY1ZCy6fzhO7XkrUtaDe0i9dBbdRkdIHaXKMreujpp1nJTaatZxwsWThyRKRCS9C1tj4N6xLxx92gMALB2c8fTxfVze9xsLidfQ4Q4JaQuJl1drhISEYOHChbCwsCjzPsLDwxU9Gy/9GJemlnxSunRkN0wsrODSpKXUUaqsuu5eeHBHebLvgzupsK5ZS6JERNIrzM8r0k8v6OkBoihRokpChysJrZgjERMTo/J7ZTIZZDLlYQxDo5Jne1cGolyOhKO74dGmE/T09aWOU2X5dX8PyyNG4eDGn9C4TQBuXbuMU/u2IXDk51JH03kmhnqoY22ieO1gZQw3W1Nk5T7Hvaw8WBgboJaFDDXMXvzZd7J5MSz6MCcfj3IKJMlcVdg38kXinvWoZlUTFvZ1kXHrBq4ejIVzy3ekjqbVtHWipDpoRSHx9ttvv3b9/v37KyiJdki5dBZPHqbDs10XqaNUaXVcG2JQ2DTsXvcdDmxYBWtbe3QPHo2m7fiDqWke9ub4dmBTxetxHV0BANsv3MW07Ylo51YdEd3//6Zg0wM9AQDfH0nG90duVmjWqsY76CNc2rEW8RuWIjc7EyYWNqjX5l14dO4vdTSSiCCK0vdHjR8/Xul1QUEB4uPjcfHiRQQHB2PhwoVl2t+So8lqTEflUcus8k961SVzdlyROgL94+0mvCeJtpjZrYHGj5HyKO/NG5VCXRvt+03Vih6J+fPnF9s+depUZGdnV3AaIiIi9dLdgQ0tuSFVST744AP8+OOPUscgIiKiEmhFj0RJjh8/XqVvSEVERLqBN6TSsKCgIKXXoigiLS0Np0+fRkQE76NARESVne5WElpRSFhaWiq91tPTg7u7O6KiotC5M28PTUREpK20opAoz30kiIiItJ0uD21ozWTLjIwMfP/99wgPD8ejRy9uKHXmzBncvn1b4mRERETlI6hp0UZa0SNx/vx5dOzYEVZWVkhOTsaIESNgY2ODjRs3IiUlBatXr5Y6IhERERVDK3okQkNDERISgqtXrypdpdGtWzccOsQHJBERUeUmCOpZtJFW9EicOnUKy5cvL9Jeu3Zt3L17V4JERERE6sNnbWiYTCZDVlZWkfYrV66gZs2aEiQiIiJSI92tI7RjaKNXr16IiopCQcGLp/YJgoCUlBRMmjQJ//nPfyROR0RERCXRikJi7ty5yM7Ohq2tLZ49ewZ/f3+4urrCzMwMM2bMkDoeERFRuUhx1UZ0dDR8fX1hbm4OW1tbBAYGIjExUR2no0QrhjYsLS2xZ88eHD16FOfOnUN2djZ8fHzQqVMnqaMRERGVmxQTJf/880+MGjUKvr6+eP78Ob788kt07twZly5dgqmpqdqOoxWFBADs27cP+/btQ3p6OuRyOS5fvox169YBAB/cRUREVEY7d+5Uer1y5UrY2toiLi4O7du3V9txtKKQiIyMRFRUFJo3bw57e3sI2nqNCxERkQrUddVGXl4e8vLylNpkMhlkMtkb35uZmQkAsLGxUUuWl7SikFi2bBlWrlyJwYMHSx2FiIhI/dT07+Po6GhERkYqtU2ZMgVTp0597fvkcjnGjRsHPz8/eHl5qSfMP7SikMjPz0ebNm2kjkFERKTVwsPDERoaqtRWmt6IUaNG4eLFizhy5IjaM2nFVRvDhw9XzIcgIiLSNeq6akMmk8HCwkJpeVMhMXr0aGzbtg0HDhxAnTp11H5uWtEjkZubixUrVmDv3r1o0qQJDA0NldbPmzdPomRERETlJ8XUP1EU8dlnn2HTpk04ePAgXFxcNHIcrSgkzp8/j6ZNmwIALl68qLSOEy+JiIjKbtSoUVi3bh02b94Mc3NzxSMnLC0tYWJiorbjaEUhceDAAakjEBERaYwUz9pYunQpACAgIECpPSYmBkOHDlXbcbSikCAiItJlUg1tVAStmGxJRERElRMLCSIiIlIZhzaIiIg0TJevG2AhQUREpGFSTLasKBzaICIiIpWxR4KIiEjDOLRBREREKtPhOoJDG0RERKQ69kgQERFpmg53SbCQICIi0jBetUFERERUDPZIEBERaRiv2iAiIiKV6XAdwUKCiIhI43S4kuAcCSIiIlIZeySIiIg0TJev2mAhQUREpGG6PNmSQxtERESkMkEURVHqEFRUXl4eoqOjER4eDplMJnWcKo3fhfbgd6E9+F3QSywktFRWVhYsLS2RmZkJCwsLqeNUafwutAe/C+3B74Je4tAGERERqYyFBBEREamMhQQRERGpjIWElpLJZJgyZQonMWkBfhfag9+F9uB3QS9xsiURERGpjD0SREREpDIWEkRERKQyFhJERESkMhYSahIQEIBx48ZJHYMkJAgCYmNjpY5BAKZOnYqmTZtKHYNU5OzsjAULFkgdg0qJhQQR6ZywsDDs27dP6hhVBv8hVbWxkCAirZOfn6/S+0RRxPPnz2FmZobq1aurORWVx8vvhnQPCwk1ksvlmDhxImxsbGBnZ4epU6cq1s2bNw+NGzeGqakpHB0d8emnnyI7O1uxfuXKlbCyskJsbCzc3NxgbGyMLl26IDU1VbHNy+7a5cuXw9HREdWqVUO/fv2QmZkJADh06BAMDQ1x9+5dpVzjxo1Du3btNHvyldDvv/+Oxo0bw8TEBNWrV0enTp2Qk5ODU6dO4Z133kGNGjVgaWkJf39/nDlzRum9V69eRfv27WFsbAxPT0/s2bNHorPQHiV9nsX9azUwMBBDhw5VvHZ2dsa0adMwZMgQWFhYYOTIkUhOToYgCPjll1/Qpk0bGBsbw8vLC3/++afifQcPHoQgCNixYwfeeustyGQyHDlypMjQxsGDB9GiRQuYmprCysoKfn5+uHnzpmL95s2b4ePjA2NjY9SrVw+RkZE685deQEAAxowZU+JvU0ZGBoYPH46aNWvCwsICb7/9Ns6dO6dYP3ToUAQGBirtc9y4cQgICFCs//PPP7Fw4UIIggBBEJCcnFzid3P9+nX07t0btWrVgpmZGXx9fbF3794K+CRIU1hIqNGqVatgamqKkydPYvbs2YiKilL8BaOnp4dFixbh77//xqpVq7B//35MnDhR6f1Pnz7FjBkzsHr1ahw9ehQZGRno37+/0jbXrl3D+vXrsXXrVuzcuRNnz57Fp59+CgBo37496tWrhzVr1ii2LygowNq1azFs2DANn33lkpaWhgEDBmDYsGFISEjAwYMHERQUBFEU8eTJEwQHB+PIkSM4ceIE3Nzc0K1bNzx58gTAi4IxKCgIRkZGOHnyJJYtW4ZJkyZJfEbSet3nWVpz5syBt7c3zp49i4iICEX7hAkT8Pnnn+Ps2bNo3bo1evbsiYcPHyq994svvsDXX3+NhIQENGnSRGnd8+fPERgYCH9/f5w/fx7Hjx/HyJEjIQgCAODw4cMYMmQIxo4di0uXLmH58uVYuXIlZsyYUY5PRLu87rfpvffeQ3p6Onbs2IG4uDj4+PigY8eOePToUan2vXDhQrRu3RojRoxAWloa0tLS4OjoqFj/6neTnZ2Nbt26Yd++fTh79izeffdd9OzZEykpKRo5d6oAIqmFv7+/2LZtW6U2X19fcdKkScVu/9tvv4nVq1dXvI6JiREBiCdOnFC0JSQkiADEkydPiqIoilOmTBH19fXFW7duKbbZsWOHqKenJ6alpYmiKIqzZs0SPTw8FOs3bNggmpmZidnZ2eU/SR0SFxcnAhCTk5PfuG1hYaFobm4ubt26VRRFUdy1a5doYGAg3r59W7HNjh07RADipk2bNBVZq73u8/T39xfHjh2r1Na7d28xODhY8drJyUkMDAxU2iYpKUkEIH799deKtoKCArFOnTrirFmzRFEUxQMHDogAxNjYWKX3TpkyRfT29hZFURQfPnwoAhAPHjxYbPaOHTuKM2fOVGpbs2aNaG9v/9pzrixe99t0+PBh0cLCQszNzVVaX79+fXH58uWiKIpicHCw2Lt3b6X1Y8eOFf39/ZWO8ep3XNJ3U5xGjRqJixcvVrx2cnIS58+f/+aTI63AHgk1evVfQvb29khPTwcA7N27Fx07dkTt2rVhbm6OwYMH4+HDh3j69KliewMDA/j6+ipeN2zYEFZWVkhISFC01a1bF7Vr11a8bt26NeRyORITEwG86Ga8du0aTpw4AeDFkEm/fv1gamqq/hOuxLy9vdGxY0c0btwY7733Hr777js8fvwYAHDv3j2MGDECbm5usLS0hIWFBbKzsxX/YkpISICjoyMcHBwU+2vdurUk56EtXvd5llbz5s2Lbf/3Z2tgYIDmzZsr/Zl43XsBwMbGBkOHDkWXLl3Qs2dPLFy4EGlpaYr1586dQ1RUFMzMzBTLy39d//vPZ2VW0m/TuXPnkJ2djerVqyudf1JSEq5fv66WY7/63WRnZyMsLAweHh6wsrKCmZkZEhIS2CNRibGQUCNDQ0Ol14IgQC6XIzk5GT169ECTJk2wYcMGxMXFYcmSJQBUn1RWEltbW/Ts2RMxMTG4d+8eduzYwWGNYujr62PPnj3YsWMHPD09sXjxYri7uyMpKQnBwcGIj4/HwoULcezYMcTHx6N69epq/650yes+Tz09vSJDHAUFBUX2UZ5i903vjYmJwfHjx9GmTRv8+uuvaNCggaLYzs7ORmRkJOLj4xXLhQsXcPXqVRgbG6ucSZuU9NuUnZ0Ne3t7pXOPj49HYmIiJkyYAACl/v5K8up3ExYWhk2bNmHmzJk4fPgw4uPj0bhxY/75qsQMpA5QFcTFxUEul2Pu3LnQ03tRu61fv77Ids+fP8fp06fRokULAEBiYiIyMjLg4eGh2CYlJQV37txR/Gv4xIkT0NPTg7u7u2Kb4cOHY8CAAahTpw7q168PPz8/TZ5epSUIAvz8/ODn54fJkyfDyckJmzZtwtGjR/Htt9+iW7duAIDU1FQ8ePBA8T4PDw+kpqYiLS0N9vb2AKD4S6kqK+nzrFmzplIPQGFhIS5evIgOHTqUar8nTpxA+/btAbz4MxIXF4fRo0eXOV+zZs3QrFkzhIeHo3Xr1li3bh1atWoFHx8fJCYmwtXVtcz7rOx8fHxw9+5dGBgYwNnZudhtatasiYsXLyq1xcfHKxUnRkZGKCwsLNUxjx49iqFDh6JPnz4AXhRyycnJKuUn7cBCogK4urqioKAAixcvRs+ePXH06FEsW7asyHaGhob47LPPsGjRIhgYGGD06NFo1aqVorAAAGNjYwQHB2POnDnIysrCmDFj0K9fP9jZ2Sm26dKlCywsLDB9+nRERUVVyDlWNidPnsS+ffvQuXNn2Nra4uTJk7h//z48PDzg5uaGNWvWoHnz5sjKysKECRNgYmKieG+nTp3QoEEDBAcH45tvvkFWVha++uorCc9Geq/7PE1NTREaGort27ejfv36mDdvHjIyMkq97yVLlsDNzQ0eHh6YP38+Hj9+XKZetqSkJKxYsQK9evWCg4MDEhMTcfXqVQwZMgQAMHnyZPTo0QN169ZF3759oaenh3PnzuHixYuYPn16WT+KSqVTp05o3bo1AgMDMXv2bDRo0AB37tzB9u3b0adPHzRv3hxvv/02vvnmG6xevRqtW7fGTz/9hIsXL6JZs2aK/Tg7O+PkyZNITk6GmZkZbGxsSjymm5sbNm7ciJ49e0IQBEREREAul1fE6ZKGcGijAnh7e2PevHmYNWsWvLy8sHbtWkRHRxfZrlq1apg0aRIGDhwIPz8/mJmZ4ddff1XaxtXVFUFBQejWrRs6d+6MJk2a4Ntvv1XaRk9PD0OHDkVhYaHix5KUWVhY4NChQ+jWrRsaNGiA//73v5g7dy66du2KH374AY8fP4aPjw8GDx6MMWPGwNbWVvFePT09bNq0Cc+ePUOLFi0wfPhwnZrhr4rXfZ7Dhg1DcHAwhgwZAn9/f9SrV6/UvREA8PXXX+Prr7+Gt7c3jhw5gi1btqBGjRqlfn+1atVw+fJl/Oc//0GDBg0wcuRIjBo1Ch999BGAF4X3tm3bsHv3bvj6+qJVq1aYP38+nJycyvw5VDaCIOCPP/5A+/btERISggYNGqB///64efMmatWqBeDF5xMREYGJEyfC19cXT548KfK7EhYWBn19fXh6eqJmzZqvne8wb948WFtbo02bNujZsye6dOkCHx8fjZ4naRYfI64lVq5ciXHjxr32X2pTp05FbGws4uPj37i/Dz/8EPfv38eWLVvUF5KoAiUnJ8PFxQVnz57l7a6JtBiHNnRMZmYmLly4gHXr1rGIICIijWMhoWN69+6Nv/76Cx9//DHeeecdqeMQEZGO49AGERERqYyTLYmIiEhlLCSIiIhIZSwkiIiISGUsJIiIiEhlLCSItMjQoUMRGBioeB0QEIBx48ZVeI6DBw9CEITX3tdEEATExsaWep9Tp04t9/0gkpOTIQhCqe6lQkQVg4UE0RsMHToUgiBAEAQYGRnB1dUVUVFReP78ucaPvXHjRkybNq1U25bmL38iInXjfSSISuHdd99FTEwM8vLy8Mcff2DUqFEwNDREeHh4kW3z8/NhZGSkluO+7pkFRETagD0SRKUgk8lgZ2cHJycnfPLJJ+jUqZPizqEvhyNmzJgBBwcHxZNYU1NT0a9fP1hZWcHGxga9e/dWesphYWEhQkNDYWVlherVq2PixIlFHtf86tBGXl4eJk2aBEdHR8hkMri6uuKHH35AcnKy4vkV1tbWEAQBQ4cOBQDI5XJER0fDxcUFJiYm8Pb2xu+//650nD/++AMNGjSAiYkJOnTooNLTGCdNmoQGDRqgWrVqqFevHiIiIop93PTy5cvh6OiIatWqoV+/fsjMzFRa//3338PDwwPGxsZo2LBhkWfJEJF2YSFBpAITExPk5+crXu/btw+JiYnYs2cPtm3bhoKCAnTp0gXm5uY4fPgwjh49CjMzM7z77ruK982dOxcrV67Ejz/+iCNHjuDRo0fYtGnTa487ZMgQ/Pzzz1i0aBESEhKwfPlymJmZwdHRERs2bADw4vHzaWlpWLhwIQAgOjoaq1evxrJly/D3339j/Pjx+OCDD/Dnn38CeFHwBAUFoWfPnoiPj8fw4cPxxRdflPkzMTc3x8qVK3Hp0iUsXLgQ3333HebPn6+0zbVr17B+/Xps3boVO3fuxNmzZ/Hpp58q1q9duxaTJ0/GjBkzkJCQgJkzZyIiIgKrVq0qcx4iqiAiEb1WcHCw2Lt3b1EURVEul4t79uwRZTKZGBYWplhfq1YtMS8vT/GeNWvWiO7u7qJcLle05eXliSYmJuKuXbtEURRFe3t7cfbs2Yr1BQUFYp06dRTHEkVR9Pf3F8eOHSuKoigmJiaKAMQ9e/YUm/PAgQMiAPHx48eKttzcXLFatWrisWPHlLb98MMPxQEDBoiiKIrh4eGip6en0vpJkyYV2derAIibNm0qcf0333wjvvXWW4rXU6ZMEfX19cVbt24p2nbs2CHq6emJaWlpoiiKYv369cV169Yp7WfatGli69atRVEUxaSkJBGAePbs2RKPS0QVi3MkiEph27ZtMDMzQ0FBAeRyOQYOHIipU6cq1jdu3FhpXsS5c+dw7do1mJubK+0nNzcX169fR2ZmJtLS0tCyZUvFOgMDAzRv3rzI8MZL8fHx0NfXh7+/f6lzX7t2DU+fPi3y3JX8/Hw0a9YMAJCQkKCUAwBat25d6mO89Ouvv2LRokW4fv06srOz8fz5c1hYWChtU7duXdSuXVvpOHK5HImJiTA3N8f169fx4YcfYsSIEYptnj9/DktLyzLnIaKKwUKCqBQ6dOiApUuXwsjICA4ODjAwUP6jY2pqqvQ6Ozsbb731FtauXVtkXzVr1lQpg4mJSZnfk52dDQDYvn270l/gwIt5H+py/PhxDBo0CJGRkejSpQssLS3xyy+/YO7cuWXO+t133xUpbPT19dWWlYjUi4UEUSmYmprC1dW11Nv7+Pjg119/ha2tbZF/lb9kb2+PkydPon379gBe/Ms7Li4OPj4+xW7fuHFjyOVy/Pnnn+jUqVOR9S97RAoLCxVtnp6ekMlkSElJKbEnw8PDo8gj50+cOPHmk/yXY8eOwcnJCV999ZWi7ebNm0W2S0lJwZ07d+Dg4KA4jp6eHtzd3VGrVi04ODjgxo0bGDRoUJmOT0TS4WRLIg0YNGgQatSogd69e+Pw4cNISkrCwYMHMWbMGNy6dQsAMHbsWHz99deIjY3F5cuX8emnn772HhDOzs4IDg7GsGHDEBsbq9jn+vXrAQBOTk4QBAHbtm3D/fv3kZ2dDXNzc4SFhWH8+PFYtWoVrl+/jjNnzmDx4sWKCYwff/wxrl69igkTJiAxMRHr1q3DypUry3S+bm5uSElJwS+//ILr169j0aJFxU4cNTY2RnBwMM6dO4fDhw9jzJgx6NevH+zs7AAAkZGRiI6OxqJFi3DlyhVcuHABMTExmDdvXpnyEFHFYSFBpAHVqlXDoUOHULduXQQFBcHDwwMffvghcnNzFT0Un3/+OQYPHozg4GC0bt0a5ubm6NOnz2v3u3TpUvTt2xeffvopGjZsiBEjRiAnJwcAULt2bURGRuKLL75ArVq1MHr0aADAtGnTEBERgejoaHh4eODdd9/F9u3b4eLiAuDFvIUNGzYgNjYW3t7eWLZsGWbOnFmm8+3VqxfGjx+P0aNHo2nTpjh27BgiIiKKbOfq6oqgoCB069YNnTt3RpMmTZQu7xw+fDi+//57xMTEoHHjxvD398fKlSsVWYlI+whiSTO7iIiIiN6APRJERESkMhYSREREpDIWEkRERKQyFhJERESkMhYSREREpDIWEkRERKQyFhJERESkMhYSREREpDIWEkRERKQyFhJERESkMhYSREREpDIWEkRERKSy/wPI2Oi0N00VXgAAAABJRU5ErkJggg==\n" | |
}, | |
"metadata": {} | |
} | |
], | |
"source": [ | |
"# Get labels from the test set\n", | |
"true_labels = test_loader.classes\n", | |
"\n", | |
"# Predict classes\n", | |
"predictions = model.predict(transfer_test_loader)\n", | |
"predicted_labels = np.argmax(predictions, axis=1)\n", | |
"\n", | |
"# Confusion matrix\n", | |
"cm = confusion_matrix(true_labels, predicted_labels)\n", | |
"\n", | |
"# Plot the confusion matrix\n", | |
"labels = ['happy', 'sad', 'surprise', 'neutral']\n", | |
"\n", | |
"sns.heatmap(cm, annot=True, fmt='g', cmap='Blues', xticklabels=labels, yticklabels=labels)\n", | |
"\n", | |
"plt.title('Confusion Matrix')\n", | |
"plt.ylabel('True label')\n", | |
"plt.xlabel('Predicted label')\n", | |
"plt.show()\n", | |
"\n" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "LGgvpOrP8q_x" | |
}, | |
"source": [ | |
"**Observations and Insights:** The \"surprise\" has the highest value, which means the model has better prediction the \"surprise\" class, or it maybe caused by the larger amount of images of \"surprise\" compared to other classes. The model easily misclassify the \"sad\" and \"happy\", \"surprise\" and \"happy\", also \"sad\" and \"happy\"" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "-EH3atQP8q_v" | |
}, | |
"source": [ | |
"Now that we have tried multiple pre-trained models, let's build a complex CNN architecture and see if we can get better performance." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "kWlk14FOoQnN" | |
}, | |
"source": [ | |
"**Observations and Insights:** The high training accuracy (97.66%) compared to the much lower validation accuracy (47.38%) might indicates to be overfitting the training data.The validation loss shows a consistent increasing trend, indicating that the model's predictions on the validation set are becoming less accurate over epochs.\n", | |
"\n", | |
"**Note: You can even go back and build your own architecture on top of the VGG16 Transfer layer and see if you can improve the performance.**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "fk6QAcv5odNF" | |
}, | |
"source": [ | |
"**Think About It:**\n", | |
"\n", | |
"* What is your overall performance of these Transfer Learning Architectures? Can we draw a comparison of these models' performances. Are we satisfied with the accuracies that we have received?\n", | |
"* Do you think our issue lies with 'rgb' color_mode?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "6s_baiF_KllW" | |
}, | |
"source": [ | |
"## **Conclusion:**" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"id": "MEZPA_mN0tUo" | |
}, | |
"source": [ | |
"### **Insights**\n", | |
"\n", | |
"### **Refined insights**:\n", | |
"- What are the most meaningful insights from the data relevant to the problem?\n", | |
"\n", | |
"### **Comparison of various techniques and their relative performance**:\n", | |
"- How do different techniques perform? Which one is performing relatively better? Is there scope to improve the performance further?\n", | |
"\n", | |
"### **Proposal for the final solution design**:\n", | |
"- What model do you propose to be adopted? Why is this the best solution to adopt?\n", | |
"\n", | |
"\n", | |
"##Answers:\n", | |
"* Observing each classes of datasets before start building a model can bring us a great pre-understanding of our tasks, bring intuitive hypothesis, which would also help us adjust our model. \n", | |
"* Several models have a sign of overfitting. The efficientNet model works better. satisfactory results were achieved, especially with the EfficientNet model.\n", | |
"* I would choose the EfficientNet Model, which achieved the highest test accuracy of 77.34% among all the models we discussed. This indicates that it has the best generalization capability on unseen data.\n", | |
"\n", | |
"\n", | |
"\n" | |
] | |
} | |
], | |
"metadata": { | |
"colab": { | |
"provenance": [], | |
"gpuType": "V100", | |
"machine_shape": "hm", | |
"include_colab_link": true | |
}, | |
"kernelspec": { | |
"display_name": "Python 3", | |
"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.9.7" | |
}, | |
"accelerator": "GPU" | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 0 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment