diff --git "a/Notebooks/Resnet18_fine_tuning.ipynb" "b/Notebooks/Resnet18_fine_tuning.ipynb" new file mode 100644--- /dev/null +++ "b/Notebooks/Resnet18_fine_tuning.ipynb" @@ -0,0 +1,1689 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "0944e75f", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "0944e75f", + "outputId": "11c13e70-8ad7-4e2c-83af-1d5cb1103225" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Requirement already satisfied: matplotlib in /usr/local/lib/python3.12/dist-packages (3.10.0)\n", + "Requirement already satisfied: scikit-learn in /usr/local/lib/python3.12/dist-packages (1.6.1)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.3.3)\n", + "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (4.62.1)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (1.5.0)\n", + "Requirement already satisfied: numpy>=1.23 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (2.0.2)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (26.0)\n", + "Requirement already satisfied: pillow>=8 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (11.3.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (3.3.2)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.12/dist-packages (from matplotlib) (2.9.0.post0)\n", + "Requirement already satisfied: scipy>=1.6.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn) (1.16.3)\n", + "Requirement already satisfied: joblib>=1.2.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn) (1.5.3)\n", + "Requirement already satisfied: threadpoolctl>=3.1.0 in /usr/local/lib/python3.12/dist-packages (from scikit-learn) (3.6.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.12/dist-packages (from python-dateutil>=2.7->matplotlib) (1.17.0)\n" + ] + } + ], + "source": [ + "!pip install matplotlib scikit-learn" + ] + }, + { + "cell_type": "markdown", + "id": "67a03d6f", + "metadata": {}, + "source": [ + "# Connecting to google drive to load the data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "ec16287c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ec16287c", + "outputId": "b683418d-7508-4507-9f23-48c261bd5421" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mounted at /content/drive\n" + ] + } + ], + "source": [ + "from google.colab import drive\n", + "drive.mount('/content/drive')" + ] + }, + { + "cell_type": "markdown", + "id": "25788c37", + "metadata": {}, + "source": [ + "# Organising data into train and test folders" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "079cf2a8", + "metadata": { + "id": "079cf2a8" + }, + "outputs": [], + "source": [ + "import os\n", + "import shutil\n", + "import random\n", + "\n", + "base_dir = \"/content/drive/MyDrive/dataset\"\n", + "train_dir = os.path.join(base_dir, \"train\")\n", + "val_dir = os.path.join(base_dir, \"val\")\n", + "\n", + "split_ratio = 0.8\n", + "random.seed(42)\n", + "\n", + "\n", + "os.makedirs(train_dir, exist_ok=True)\n", + "os.makedirs(val_dir, exist_ok=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "e3f426d9", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "e3f426d9", + "outputId": "5a1442eb-5df5-4cb8-efc9-031917b84dc6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "✅ Dataset split completed safely.\n" + ] + } + ], + "source": [ + "classes = [\n", + " d for d in os.listdir(base_dir)\n", + " if os.path.isdir(os.path.join(base_dir, d))\n", + " and d not in [\"train\", \"val\"]\n", + "]\n", + "\n", + "for cls in classes:\n", + " cls_path = os.path.join(base_dir, cls)\n", + " images = [f for f in os.listdir(cls_path) if os.path.isfile(os.path.join(cls_path, f))]\n", + "\n", + " random.shuffle(images)\n", + " split_idx = int(len(images) * split_ratio)\n", + "\n", + " train_images = images[:split_idx]\n", + " val_images = images[split_idx:]\n", + "\n", + " os.makedirs(os.path.join(train_dir, cls), exist_ok=True)\n", + " os.makedirs(os.path.join(val_dir, cls), exist_ok=True)\n", + "\n", + " for img in train_images:\n", + " src = os.path.join(cls_path, img)\n", + " dst = os.path.join(train_dir, cls, img)\n", + " if not os.path.exists(dst):\n", + " shutil.copy2(src, dst)\n", + "\n", + " for img in val_images:\n", + " src = os.path.join(cls_path, img)\n", + " dst = os.path.join(val_dir, cls, img)\n", + " if not os.path.exists(dst):\n", + " shutil.copy2(src, dst)\n", + "\n", + "print(\"✅ Dataset split completed safely.\")" + ] + }, + { + "cell_type": "markdown", + "id": "867ccbfb", + "metadata": {}, + "source": [ + "# Importing necessary libraries" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "74b89f59", + "metadata": { + "id": "74b89f59" + }, + "outputs": [], + "source": [ + "import torch\n", + "import torch.nn as nn\n", + "from torch.utils.data import Dataset, DataLoader\n", + "from torchvision.datasets import ImageFolder\n", + "from torchvision import transforms\n", + "from torchvision import models\n", + "from tqdm import tqdm\n", + "from torchvision import models\n", + "import torch.nn as nn\n", + "import matplotlib.pyplot as plt\n", + "import random\n", + "import json\n", + "import os\n", + "import seaborn as sns\n", + "from sklearn.metrics import confusion_matrix, classification_report\n", + "import os" + ] + }, + { + "cell_type": "markdown", + "id": "2bfa6391", + "metadata": {}, + "source": [ + "# Custom dataloader class and transforms" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "6974fc41", + "metadata": { + "id": "6974fc41" + }, + "outputs": [], + "source": [ + "\n", + "train_transforms = transforms.Compose([\n", + " transforms.Resize((128, 128)),\n", + " transforms.RandomHorizontalFlip(p=0.5),\n", + " transforms.RandomRotation(degrees=10),\n", + " transforms.ColorJitter(brightness=0.2, contrast=0.2, saturation=0.2),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize([0.485, 0.456, 0.406],\n", + " [0.229, 0.224, 0.225])\n", + "])\n", + "\n", + "\n", + "\n", + "test_transforms = transforms.Compose([\n", + " transforms.Resize((128, 128)),\n", + " transforms.ToTensor(),\n", + " transforms.Normalize([0.485, 0.456, 0.406],\n", + " [0.229, 0.224, 0.225])])" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "2ce8fccf", + "metadata": { + "id": "2ce8fccf" + }, + "outputs": [], + "source": [ + "class Car_Dataset(Dataset):\n", + " def __init__(self, dir_path, transform=None):\n", + " self.data = ImageFolder(dir_path, transform=transform)\n", + "\n", + " def __len__(self):\n", + " return len(self.data)\n", + "\n", + " def __getitem__(self, index):\n", + " return self.data[index]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "8eff3c96", + "metadata": { + "id": "8eff3c96" + }, + "outputs": [], + "source": [ + "train_path = \"/content/drive/MyDrive/dataset/train\"\n", + "test_path = \"/content/drive/MyDrive/dataset/val\"\n", + "\n", + "\n", + "train_set = Car_Dataset(dir_path=train_path, transform=train_transforms)\n", + "test_set = Car_Dataset(dir_path=test_path, transform=test_transforms)" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "568fd4ca", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "568fd4ca", + "outputId": "3bebb35d-42ce-48d7-b42d-186d438d3fb5" + }, + "outputs": [ + { + "data": { + "text/plain": [ + "{0: 'F_Breakage',\n", + " 1: 'F_Crushed',\n", + " 2: 'F_Normal',\n", + " 3: 'R_Breakage',\n", + " 4: 'R_Crushed',\n", + " 5: 'R_Normal'}" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "class_to_idx = train_set.data.class_to_idx\n", + "idx_to_class = {v: k for k, v in class_to_idx.items()}\n", + "idx_to_class" + ] + }, + { + "cell_type": "markdown", + "id": "3e77a332", + "metadata": {}, + "source": [ + "# Visualising the train test split" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "oAlhV5N90Eyz", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 521 + }, + "id": "oAlhV5N90Eyz", + "outputId": "2697a40f-cfa6-4aa0-897c-438c7d4be52e" + }, + "outputs": [ + { + "data": { + "image/png": "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H4vFclHPHWDAgAHMnTuXbdu2UVdXR3R0NHV1dfztb3/jlltuYd26dZjNZv7+978zf/58du7cyYQJE0hKSuK5557jvvvuY9myZdxwww0AjB8/HoBNmzZx8uRJ7rzzTlJSUsjIyOD5558nIyODr7/++qKGWi+77DKGDBnCpk2b2m3T3NzM/PnzsVqtPPjgg6SkpFBYWMgHH3xATU0NMTExvPTSS+ddwhgyZEir89x0000MGzaMX/7yl3i60vfpp5+yfv16HnroIUJCQnj22WdZsGABO3fuZOzYsRf0HDsS29mefPJJnnrqKebNm8d9991HdnY2zz33HLt27WLHjh2t/s6rq6tZsGABN9xwAytWrOCNN97ge9/7HuPGjePaa6+9oDhFF1DCq+6//3517o9h7ty5ClD/+7//e177xsbG847dc889Kjw8XFksFtexVatWqfT0dNf3p06dUoBKSEhQVVVVruPvvvuuAtT777/vOvbTn/70vJgAFRwcrI4fP+46duDAAQWoP//5z65jixcvVuHh4aqwsNB17NixY8pkMp13znPpuq7S0tLU8uXLWx1/7bXXFKA+++wzpZRSb7/9tgLUrl273J7Pk4iICLVq1SrX92vWrFF9+/ZVFRUVrdrdfPPNKiYmxvXaL1myRI0ZM8btuX/7298qQJ06deq829LT01s97gsvvKAANW/ePKXruuv4o48+qoxGo6qpqVFKKVVSUqJMJpNaunRpq/M9+eSTCmh1zvYA6v7772/39ocfflgB6sCBA0oppex2u7Jara3aVFdXq+TkZHXXXXe5jpWXlytA/fSnPz3vnG39zr7yyiutfqbtOfN7+9vf/rbdNkuWLFGAqq2tVUoptW3bNgWobdu2KaWU2rdvnwLU66+/7vaxzv19OOPM38Mtt9zS7m1nAxSgdu/e7TqWm5urQkND1bJly1zHzv0bdXfO9mI787tz5vesrKxMBQcHq2uuuUY5HA5Xu2eeeUYB6h//+Ifr2Jn3mX/961+uY1arVaWkpJz3Nyh6hgxZ+6iQkBDuvPPO846HhYW5/m82m6moqGD27Nk0NjaSlZXl8bwrV64kLi7O9f3s2bMBZ9GTJ/PmzWv1yXz8+PFER0e77utwONi8eTNLly4lNTXV1W7o0KEd+rStaRo33XQTH330EfX19a7j69evJy0tzTVMGBsbC8AHH3yAzWbzeN6OUErx5ptvsnjxYpRSVFRUuL7mz59PbW0te/fudT1+QUHBeUP9F+vuu+9u1VucPXs2DoeD3NxcALZs2YLdbufb3/52q/s9+OCDXRZDZGQk4PzdAuc1yuDgYMA5XF5VVYXdbmfKlCmu18OTs39nLRYLFRUVXHrppQAdPseFxHyumJgYADZs2NDm5ZCOuvfeezvc9rLLLmPy5Mmu7wcMGMCSJUvYsGHDeZeXutLmzZtpbm7mkUceaVXQtm7dOqKjo/nwww9btY+MjGx1bT44OJhp06Z16P1AdD1JyD4qLS3N9UZ4toyMDJYtW0ZMTAzR0dEkJSW5/qDOXA9zZ8CAAa2+P5Ocq6urL/i+Z+5/5r5lZWU0NTUxdOjQ89q1dawtK1eupKmpiffeew+A+vp6PvroI2666SZXspo7dy7Lly/nqaeeIjExkSVLlvDCCy9gtVo79BhtKS8vp6amhueff56kpKRWX2c+GJWVlQHwve99j8jISKZNm8awYcO4//772bFjR6cf+wxPP5szifnc1zI+Pr7Vh6yLceaDUFRUlOvYP//5T8aPH09oaCgJCQkkJSXx4Ycfduj3DaCqqoqHH36Y5ORkwsLCSEpKYtCgQUDHfmc7E/PZBg0axGOPPcbf/vY3EhMTmT9/Pn/5y18u+LHPxNwRw4YNO+/Y8OHDaWxsPK8uoCud+R0ZMWJEq+PBwcEMHjzYdfsZ/fr1O++Swdl/06JnSUL2UWf3Ks6oqalh7ty5HDhwgP/3//4f77//Pps2beI3v/kN4OzBeNJeRabqwOy3i7lvR1166aUMHDiQ1157DYD333+fpqYmVq5c6WqjaRpvvPEGX331FQ888ICrEGvy5MmtetYX4sxrd/vtt7Np06Y2v2bOnAnAqFGjyM7O5tVXX2XWrFm8+eabzJo1i5/+9KcX9dx74vX15PDhwxiNRlfy+fe//83q1asZMmQIf//73/nkk0/YtGkTV155ZYd+3wBWrFjBX//6V+69917eeustNm7c6CoG7Og5PMXcp08foqOj223z+9//noMHD/LDH/6QpqYmHnroIcaMGUNBQUGHH6etv8mL0d618+7sQZ/LF37nRAsp6vIj27dvp7Kykrfeeos5c+a4jp86dcqLUbXo06cPoaGhHD9+/Lzb2jrWnhUrVvA///M/1NXVsX79egYOHOga4jzbpZdeyqWXXsovfvEL/vOf/3Dbbbfx6quvsnbt2guOPSkpiaioKBwOB/PmzfPYPiIigpUrV7Jy5Uqam5u54YYb+MUvfsEPfvADQkNDu2VOaHp6OuB8Lc/urVVWVnZJjyYvL49PP/2Uyy67zNXbfOONNxg8eLBrzu8Z5374aO/5VldXs2XLFp566il+8pOfuI4fO3bsouMF+Oqrrzhx4kSHpq6NGzeOcePG8V//9V98+eWXzJw5k//93//l5z//udvn0BltPb+jR48SHh7uKu6Li4trc+GYc3uxFxLbmd+R7OzsVtP8mpubOXXqVId+t4X3SA/Zj5z5NHv2p9fm5maeffZZb4XUitFoZN68ebzzzjsUFRW5jh8/fpyPP/64w+dZuXIlVquVf/7zn3zyySesWLGi1e3V1dXnfYKfMGECQKeHrY1GI8uXL+fNN9/k8OHD591+9jDjudN1goODGT16NEop1zXtiIgIgC5dqeuqq67CZDLx3HPPtTreFQtQVFVVccstt+BwOPjRj37kOt7W79w333zDV1991er+Z+bIn/t827o/wB//+MeLjjk3N5fVq1cTHBzsmmbWlrq6Oux2e6tj48aNw2AwtPp9iYiI6LKf11dffdXq+nh+fj7vvvsu11xzjes1GTJkCLW1tRw8eNDVrri4mLfffvu883U0tnnz5hEcHMyf/vSnVq/53//+d2pra1m0aNFFPCvR3aSH7EdmzJhBXFwcq1at4qGHHkLTNF566SWfGl568skn2bhxIzNnzuS+++7D4XDwzDPPMHbsWPbv39+hc0yaNImhQ4fyox/9CKvV2mq4GpzXNJ999lmWLVvGkCFDMJvN/PWvfyU6OvqiFrT49a9/zbZt25g+fTrr1q1j9OjRVFVVsXfvXjZv3kxVVRUA11xzDSkpKcycOZPk5GSOHDnCM888w6JFi1w9yzMFPT/60Y+4+eabCQoKYvHixa5E3RnJyck8/PDD/P73v+f6669nwYIFHDhwgI8//pjExMQO96KOHj3Kv//9b5RS1NXVuVbqqq+v5w9/+AMLFixwtb3uuut46623WLZsGYsWLeLUqVP87//+L6NHj251eSAsLIzRo0ezfv16hg8fTnx8PGPHjmXs2LHMmTOHp59+GpvNRlpaGhs3brzgUZ29e/fy73//G13XqampYdeuXbz55puuv4EzU6zasnXrVh54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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "labels = ['Training Data', 'Testing Data']\n", + "sizes = [len(train_set), len(test_set)]\n", + "colors = ['lightgreen', 'red']\n", + "explode = (0.1, 0)\n", + "plt.figure(figsize=(6, 6))\n", + "plt.pie(sizes, explode=explode, labels=labels, colors=colors,\n", + " autopct='%1.1f%%', shadow=True, startangle=140)\n", + "plt.title('Training vs Testing Data Distribution')\n", + "plt.axis('equal')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "9614f04a", + "metadata": {}, + "source": [ + "# Ploting the image distribution across the classes" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "HDE-TtNq0I2P", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 536 + }, + "id": "HDE-TtNq0I2P", + "outputId": "08a3c870-6705-4121-92c2-8c4e9e12b46a" + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA9oAAAIHCAYAAABgwCQCAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAVXlJREFUeJzt3X18jfXjx/H3GTYbzm5km2Vm7mIxNGFFCVkMifp242ZKd75TMrcrzU1qUiElN6XcRMKXyk3uRTH3uU2Um7ZiI9pm2Nh2fn94OL9OG7a5uHb0ej4e5/HYdV2fc877cB47e5/ruj6XxWaz2QQAAAAAAAzhYnYAAAAAAABuJRRtAAAAAAAMRNEGAAAAAMBAFG0AAAAAAAxE0QYAAAAAwEAUbQAAAAAADETRBgAAAADAQBRtAAAAAAAMRNEGAAAAAMBAFG0AwC2tR48eqlKlimnP37x5czVv3ty05zfKtGnTZLFYdPTo0Rv+XP/8Pzt69KgsFovefffdG/7ckjRs2DBZLJab8lwAgFsTRRsAYAqLxVKg23fffWd21HylpKSof//+qlWrljw8PFSmTBmFhYVp5MiRSk1NNTveVX333XcO/8Zubm7y8/NT8+bN9dZbb+nkyZOGPM+5c+c0bNiwYvl/WJyzAQCcX0mzAwAA/p1mzpzpsDxjxgytXLkyz/ratWtf1/N8/PHHys3Nva7H+KetW7eqbdu2ysjIUNeuXRUWFiZJ2rZtm0aNGqX169drxYoVhj7njfDyyy/r7rvvVk5Ojk6ePKmNGzdq6NChGjNmjObOnasWLVrYx3br1k1PPPGE3NzcCvz4586d0/DhwyWpUHv1b8T/2T9dLduQIUM0ePDgG/r8AIBbG0UbAGCKrl27Oixv2rRJK1euzLP+n86dOycPD48CP0+pUqWKlO9KUlNT9cgjj6hEiRL68ccfVatWLYftb775pj7++GNDn/NGadasmR599FGHdbt27VLr1q3VuXNn/fTTT6pYsaIkqUSJEipRosQNzXP27FmVKVPG8P+zwipZsqRKluRPJABA0XHoOACg2GrevLnq1Kmj7du367777pOHh4deffVVSdLXX3+tyMhIBQQEyM3NTdWqVdMbb7yhnJwch8e42vm+U6ZMUbVq1eTm5qa7775bW7duvWamyZMn648//tCYMWPylGxJ8vPz05AhQ654/wsXLiguLk5hYWHy9PRUmTJl1KxZM61duzbP2Dlz5igsLEzlypWT1WpV3bp19f7779u3X7x4UcOHD1eNGjVUunRplS9fXk2bNtXKlSuv+TqupF69eho3bpxSU1P14Ycf2tfnd472tm3bFBERodtuu03u7u4KDg7WM888I+nSv3OFChUkScOHD7cfpj5s2DBJl/5fypYtq0OHDqlt27YqV66cunTpYt92pfPqx44dq6CgILm7u+v+++/X3r17HbZf6Zz4vz/mtbLld452dna23njjDfv7pUqVKnr11VeVlZXlMK5KlSpq166dfvjhBzVq1EilS5dW1apVNWPGjPz/wQEAtyS+rgUAFGunTp1SmzZt9MQTT6hr167y8/OTdKn4lS1bVjExMSpbtqzWrFmjuLg4paen65133rnm486ePVtnzpzRCy+8IIvFotGjR6tTp046fPjwVfeofvPNN3J3d8+zJ7ig0tPT9cknn+jJJ5/Uc889pzNnzmjq1KmKiIjQli1bVL9+fUnSypUr9eSTT6ply5Z6++23JUn79+/Xhg0b1KdPH0mXCmF8fLyeffZZNWrUSOnp6dq2bZt27NihBx98sEj5JOnRRx9Vz549tWLFCr355pv5jjlx4oRat26tChUqaPDgwfLy8tLRo0e1YMECSVKFChU0ceJE9erVS4888og6deokSQoNDbU/RnZ2tiIiItS0aVO9++671zxSYcaMGTpz5oyio6OVmZmp999/Xy1atNCePXvs74uCKEi2f3r22Wc1ffp0Pfroo+rXr582b96s+Ph47d+/XwsXLnQY++uvv9r/DaOiovTpp5+qR48eCgsL05133lngnAAAJ2YDAKAYiI6Otv3zY+n++++3SbJNmjQpz/hz587lWffCCy/YPDw8bJmZmfZ1UVFRtqCgIPvykSNHbJJs5cuXt50+fdq+/uuvv7ZJsi1atOiqOb29vW316tUr4Ku69Bruv/9++3J2drYtKyvLYcxff/1l8/Pzsz3zzDP2dX369LFZrVZbdnb2FR+7Xr16tsjIyAJnuWzt2rU2SbZ58+Zd9bG9vb3ty5999plNku3IkSM2m81mW7hwoU2SbevWrVd8jJMnT9ok2YYOHZpnW1RUlE2SbfDgwfluy+//zN3d3fb777/b12/evNkmyda3b1/7un/+e1/pMa+WbejQoQ7vxZ07d9ok2Z59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0Jdffqm33npLS5cu1b333mt2NDiJy5c9leQwsZXNZpPFYlFOTo4ZseBkPD09tWPHDlWrVk1vv/221qxZo+XLl2vDhg164oknuIyuk+DyXrguoaGhWrx4sR588EE1btxYixcvZhI0FEpgYKASEhLk4+OjZcuWac6cOZKkv/76S6VLlzY5HZzFkSNHzI6AW8DAgQN16tQpNWzYUDk5OVq+fLmaNGlidiw4EeangRFsNptyc3MlSatWrVK7du0kXfqb6c8//zQzGgqBoo1CadCggcM3tJe5ubnp2LFjDt/679ix42ZGg5N65ZVX1KVLF5UtW1ZBQUFq3ry5pEuHlNetW9fccHBKlw/Uyu93FfB3+Z1WcPvtt8vDw0P33XeftmzZoi1btki6NAEocC3333+/2RFwC2jYsKFGjhypVq1aad26dZo4caKkS18q+/n5mZwOBcWh4yiU4cOHF3jsPydKA65k27ZtSkpK0oMPPqiyZctKujTZnpeXF4dsosBmzJihd955R7/88oskqWbNmhowYIC6detmcjIUVwWdGZrTD1AYqampmjp1qvbv3y9JuvPOO/XMM8/I09PT5GRwFrt371aXLl2UmJiomJgY+9/UL730kk6dOqXZs2ebnBAFQdEGADi9MWPG6PXXX1fv3r3tX8788MMPmjBhgkaOHKm+ffuanBDAv8G2bdsUEREhd3d3NWrUSJK0detWnT9/XitWrNBdd91lckI4s8zMTJUoUUKlSpUyOwoKgKINwFTPPPPMVbd/+umnNykJnFlwcLCGDx+u7t27O6yfPn26hg0bxjncAG6KZs2aqXr16vr4449VsuSlMzSzs7P17LPP6vDhw1q/fr3JCQHcLJyjjSLLycnR2LFjNXfuXCUmJua5rt/p06dNSgZn8tdffzksX7x4UXv37lVqaqpatGhhUio4m+PHj+uee+7Js/6ee+7R8ePHTUgEZ/T777/rm2++yfczbcyYMSalgjPZtm2bQ8mWpJIlS2rgwIFq2LChicngTFxcXK46zwiz1zsHijaKbPjw4frkk0/Ur18/DRkyRK+99pqOHj2qr776SnFxcWbHg5NYuHBhnnW5ubnq1auXqlWrZkIiOKPq1atr7ty5evXVVx3Wf/nll6pRo4ZJqeBMVq9erQ4dOqhq1ar6+eefVadOHR09elQ2m43DfVFgVqtViYmJqlWr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5557Tvv27bvJyXArs1qt2rlzp6pWrWp2FBRTGzZs0K5du5SRkaG77rpLrVq1MjsSbkGRkZH65JNPVLFiRbOjoBjp0KGDHnjgAfXt2zff7ePHj9fatWu1cOHCm5wMRUHRRpF5eHho//79XDoHRVKmTBnt379flStXznd7YmKiateuzcR6MNTfZ5MGLrt48aLc3d21c+dO1alTx+w4+BfgdxHyExQUdNW5jn7++We1bt1aiYmJNzkZioJj51BkjRo10o8//mh2DDgpd3f3q14u5+jRo3ku9QUAN0KpUqVUuXJlzp8FYKqUlBSVKlXqittLliypkydP3sREuB5MhoYi++9//6t+/frp999/z/caf6GhoSYlgzNo3LixZs6cecXzjGbMmKFGjRrd5FQA/q1ee+01vfrqq5o5c6Z8fHzMjgPgX+j222/X3r17Vb169Xy37969m9MNnAhFG0X2xBNPSJJefvll+zqLxSKbzcbMmrim/v3768EHH5Snp6cGDBhgn108JSVFo0eP1rRp07RixQqTUwL4t/jwww/166+/KiAgQEFBQXm+PN6xY4dJyQD8W7Rt21avv/66HnroIZUuXdph2/nz5zV06FC1a9fOpHQoLIo2iuzIkSNmR4ATe+CBBzRhwgT16dNHY8eOldVqlcViUVpamkqVKqUPPvhALVq0MDsmbjFcCgxX0rFjR7MjAPiXGzJkiBYsWKCaNWuqd+/euuOOOyRdOjd7woQJysnJ0WuvvWZyShQUk6EBMNUff/yhuXPn6tdff5XNZlPNmjX16KOPqlKlSmZHgxM4fPiwgoODC1ygmYAIgFnOnz9vn3uE30W4kt9++029evXS8uXLdbmmWSwWRUREaMKECQoODjY5IQqKoo0iO3XqlMqXLy9JSkpK0scff6zz58+rQ4cOatasmcnpcKvhUijIT4kSJXT8+HH7pQUff/xxjR8/3n4qwj8lJSUpICBAJUqUuJkx4YQOHz6s8+fPq3bt2lx3HdclKytLH374od555x0lJydLkuLj49WrVy95eXmZGw7F1l9//WXfCVGjRg15e3vnGfP7778rICCA31HFFP8rKLQ9e/aoSpUq8vX1Va1atbRz507dfffdGjt2rKZMmaIHHnhAX331ldkxcYtZv369zp8/b3YMFDP//K546dKlV70kXGBgICUbDi5evKihQ4eqffv2evPNN5WTk6Mnn3xSNWrUUGhoqOrUqXPVKyQA0qUyHRsbq4YNG+qee+6x/x302WefKTg4WOPGjXO4NnJsbCwlG1fl7e2tu+++W40aNcq3ZEtSSEgIv5+KMYo2Cm3gwIGqW7eu1q9fr+bNm6tdu3aKjIxUWlqa/vrrL73wwgsaNWqU2TEBALimwYMHa+LEifL399enn36qTp066ccff9Ts2bM1Z84clSxZknMicU1xcXGaOHGiqlSpoqNHj+qxxx7T888/r7Fjx2rMmDE6evSoBg0aZHZM3GI4MLl4YzI0FNrWrVu1Zs0ahYaGql69epoyZYr++9//2g9beemll9SkSROTUwL4N7BYLHnOz2bCMxTG/PnzNW3aNLVt21YHDx5UrVq1tGTJErVp00aS5Ovrqy5dupicEsXdvHnzNGPGDHXo0EF79+5VaGiosrOztWvXLn4nAf9SFG0U2unTp+Xv7y9JKlu2rMqUKeNwSIu3t7fOnDljVjwA/yI2m009evSQm5ubJCkzM1MvvvhinkszLViwwIx4cALHjh1TvXr1JEk1a9aUm5ubwzVsa9asaT+vFriS33//XWFhYZKkOnXqyM3NTX379qVkA/9iFG0UCXuQABQHUVFRDstdu3Y1KQmcVU5OjkqVKmVfLlmypMN5/C4uLhyeiWvKycmRq6urfblkyZIqW7asiYkAmI2ijSK52h6krKwsM6PhFvL3S6EA+fnss8/MjoBbwPLly+Xp6SlJys3N1erVq7V3715JUmpqqonJ4Cw4ugZmYEdX8cblvVBoTz/9dIHG8QcwiopLoQC4WQpyWRyLxaKcnJybkAbOir+NYITDhw8rODi4wAWa67EXbxRt3HBc4w/5ycrK0rBhw7Ry5Uq5urpq4MCB6tixoz777DO99tprKlGihHr37s0srQAA4F+hRIkSOn78uHx9fSVJjz/+uMaPHy8/P798xyclJSkgIIDLVhZTNB/ccFzjD/nhUigAnFFkZKSOHz9udgwAt6B/7v9cunSpzp49e8XxgYGBlOxijHO0ccNx0ATyw6VQADij9evX6/z582bHAAAUc+zRBmAKLoUCAADw/ywWC1f2uYWwRxuAKbgUCgAAwP9j9vpbC0UbgCn4MAEAAPh/UVFRDstdu3Y1KQmMQNHGDcchL8gPHyYAAAD/j8u/3Voo2ii0wl7jj8nQkB8+TAA4i/Pnz8vd3d3sGAAAJ8JkaCi0GjVq6OTJk/blxx9/XCkpKVcc/9NPPykoKOhmRAMAwDBZWVl67733FBwcbF/36quvysfHx8RUAABnQNFGoXGNPwDArSIrK0uxsbFq2LCh7rnnHn311VeSLh11ExwcrHHjxqlv37728bGxsfLy8jInLADAaXDoOAAA+NeKi4vT5MmT1apVK23cuFGPPfaYnn76aW3atEljxozRY489xpfFAIBCo2ij0LjGHwDgVjFv3jzNmDFDHTp00N69exUaGqrs7Gzt2rWLzzYAQJFZbMxUhUJycXFRmzZt7JdlWrRokVq0aMFlmQAATsfV1VVHjhzR7bffLklyd3fXli1bVLduXZOTAQCcGXu0UWhclgkAcKvIycmRq6urfblkyZIqW7asiYkAALcC9mgDAIB/LY7SAgDcCOzRBgAA/1ocpQUAuBHYow0AAAAAgIG4jjYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAb6P6DIsqjqrPwRAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_class_distribution(data_path):\n", + " classes = os.listdir(data_path)\n", + " counts = []\n", + "\n", + " for cls in classes:\n", + " cls_path = os.path.join(data_path, cls)\n", + " if os.path.isdir(cls_path):\n", + " counts.append(len(os.listdir(cls_path)))\n", + "\n", + " plt.figure(figsize=(12,5))\n", + " plt.bar(classes, counts)\n", + " plt.xticks(rotation=90)\n", + " plt.title(\"Train Class Distribution\")\n", + " plt.show()\n", + "\n", + "plot_class_distribution(\"/content/drive/MyDrive/dataset/train\")" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "4fd41d48", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "4fd41d48", + "outputId": "fffadc97-1411-4790-bf6d-40d8468836b3" + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/usr/local/lib/python3.12/dist-packages/torch/utils/data/dataloader.py:424: UserWarning: This DataLoader will create 8 worker processes in total. Our suggested max number of worker in current system is 2, which is smaller than what this DataLoader is going to create. Please be aware that excessive worker creation might get DataLoader running slow or even freeze, lower the worker number to avoid potential slowness/freeze if necessary.\n", + " self.check_worker_number_rationality()\n" + ] + } + ], + "source": [ + "train_loader = DataLoader(train_set, batch_size=128, shuffle=True, num_workers=8, pin_memory=True, persistent_workers=True)\n", + "\n", + "eval_loader = DataLoader(test_set, batch_size=128, num_workers=8, pin_memory=True, persistent_workers=True)" + ] + }, + { + "cell_type": "markdown", + "id": "94b47a31", + "metadata": {}, + "source": [ + "# Initializing the model\n", + "- Again using same technique as deit transformer training only classifier and last 2 layers" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "6a6b9c1e", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "6a6b9c1e", + "outputId": "0ee65390-5eeb-46ee-df4c-3367fb16f349" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Using device: cuda\n" + ] + } + ], + "source": [ + "device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")\n", + "print(f\"Using device: {device}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "21c8a4ba", + "metadata": { + "id": "21c8a4ba" + }, + "outputs": [], + "source": [ + "class Car_Classifier_Resnet(nn.Module):\n", + " def __init__(self, num_classes):\n", + " super().__init__()\n", + "\n", + " self.model = models.resnet18(weights=\"DEFAULT\")\n", + "\n", + " for param in self.model.parameters():\n", + " param.requires_grad = False\n", + "\n", + " for param in self.model.layer3.parameters():\n", + " param.requires_grad = True\n", + "\n", + " for param in self.model.layer4.parameters():\n", + " param.requires_grad = True\n", + "\n", + " self.model.fc = nn.Sequential(\n", + " nn.Dropout(0.5),\n", + " nn.Linear(self.model.fc.in_features, 256),\n", + " nn.ReLU(),\n", + " nn.Dropout(0.3),\n", + " nn.Linear(256, num_classes)\n", + " )\n", + "\n", + " def forward(self, x):\n", + " return self.model(x)" + ] + }, + { + "cell_type": "markdown", + "id": "7aa339df", + "metadata": {}, + "source": [ + "# Again using different LR for classifier and unfreezed layers" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "5fb1adb8", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "5fb1adb8", + "outputId": "ec55c7b4-9ae0-4409-bd81-3da550f1e5d6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Downloading: \"https://download.pytorch.org/models/resnet18-f37072fd.pth\" to /root/.cache/torch/hub/checkpoints/resnet18-f37072fd.pth\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "100%|██████████| 44.7M/44.7M [00:00<00:00, 188MB/s]\n" + ] + } + ], + "source": [ + "model = Car_Classifier_Resnet(num_classes=len(class_to_idx)).to(device)\n", + "criterion = nn.CrossEntropyLoss()\n", + "optimizer = torch.optim.AdamW([\n", + " {\"params\": model.model.layer3.parameters(), \"lr\": 1e-5},\n", + " {\"params\": model.model.layer4.parameters(), \"lr\": 1e-5},\n", + " {\"params\": model.model.fc.parameters(), \"lr\": 1e-4}\n", + "])" + ] + }, + { + "cell_type": "markdown", + "id": "08c804b7", + "metadata": {}, + "source": [ + "# Code for early stopping" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "0637405a", + "metadata": { + "id": "0637405a" + }, + "outputs": [], + "source": [ + "class EarlyStopping:\n", + " def __init__(self, patience=4, min_delta=0.0):\n", + " self.patience = patience\n", + " self.min_delta = min_delta\n", + " self.counter = 0\n", + " self.best_loss = None\n", + " self.early_stop = False\n", + "\n", + " def __call__(self, val_loss):\n", + " if self.best_loss is None:\n", + " self.best_loss = val_loss\n", + " elif val_loss > self.best_loss - self.min_delta:\n", + " self.counter += 1\n", + " if self.counter >= self.patience:\n", + " self.early_stop = True\n", + " else:\n", + " self.best_loss = val_loss\n", + " self.counter = 0" + ] + }, + { + "cell_type": "markdown", + "id": "ba47e3be", + "metadata": {}, + "source": [ + "# Training function" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "7299aca8", + "metadata": { + "id": "7299aca8" + }, + "outputs": [], + "source": [ + "def train_model(model, epochs, train_loader, eval_loader, optimizer, criterion, device, patience=None, checkpoint_model_name=None):\n", + "\n", + " print(\"Starting training...\")\n", + " print(f\"Total epochs: {epochs}\")\n", + " print(f\"Training on device: {device}\")\n", + " print(\"-\"*70)\n", + "\n", + " early_stopping = EarlyStopping(patience=patience, min_delta=0.001)\n", + "\n", + " train_losses, train_accuracy = [], []\n", + " eval_losses, eval_accuracies = [], []\n", + "\n", + " best_loss = float('inf')\n", + " for epoch in range(epochs):\n", + "\n", + " # ------------------------- TRAIN -------------------------\n", + " model.train()\n", + " running_loss, total, correct = 0, 0, 0\n", + "\n", + " for images, labels in tqdm(train_loader, desc=f\"Epoch {epoch+1} Training\"):\n", + " images = images.to(device)\n", + " labels = labels.to(device)\n", + "\n", + " optimizer.zero_grad(set_to_none=True)\n", + "\n", + " outputs = model(images)\n", + " logits = outputs\n", + "\n", + " loss = criterion(logits, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + "\n", + " running_loss += loss.item()\n", + " total += labels.size(0)\n", + "\n", + " preds = torch.argmax(logits, dim=1)\n", + " correct += (preds == labels).sum().item()\n", + "\n", + " train_loss = running_loss / len(train_loader)\n", + " train_acc = 100 * correct / total\n", + "\n", + " train_losses.append(train_loss)\n", + " train_accuracy.append(train_acc)\n", + "\n", + " # ------------------------- VALIDATION -------------------------\n", + " model.eval()\n", + " ev_running_loss, ev_total, ev_correct = 0, 0, 0\n", + "\n", + " all_preds, all_labels = [], []\n", + "\n", + " with torch.no_grad():\n", + " for images, labels in tqdm(eval_loader, desc=f\"Epoch {epoch+1} Validation\"):\n", + " images = images.to(device)\n", + " labels = labels.to(device)\n", + "\n", + " outputs = model(images)\n", + " logits = outputs\n", + "\n", + " loss = criterion(logits, labels)\n", + "\n", + " ev_running_loss += loss.item()\n", + " ev_total += labels.size(0)\n", + "\n", + " preds = torch.argmax(logits, dim=1)\n", + " ev_correct += (preds == labels).sum().item()\n", + "\n", + " all_preds.extend(preds.cpu().numpy())\n", + " all_labels.extend(labels.cpu().numpy())\n", + "\n", + " eval_loss = ev_running_loss / len(eval_loader)\n", + " eval_acc = 100 * ev_correct / ev_total\n", + "\n", + " eval_losses.append(eval_loss)\n", + " eval_accuracies.append(eval_acc)\n", + "\n", + " print(f\"Results | \"\n", + " f\"Train Loss: {train_loss:.4f}, Train Acc: {train_acc:.2f}% | \"\n", + " f\"Val Loss: {eval_loss:.4f}, Val Acc: {eval_acc:.2f}%\")\n", + " print(\"-\"*70)\n", + "\n", + " # ------------------------- SAVE BEST MODEL -------------------------\n", + " if eval_loss < best_loss:\n", + " best_loss = eval_loss\n", + " os.makedirs(\"checkpoints\", exist_ok=True)\n", + "\n", + " torch.save({\n", + " 'model_state_dict': model.state_dict(),\n", + " 'optimizer_state_dict': optimizer.state_dict(),\n", + " 'epoch': epoch,\n", + " 'loss': eval_loss\n", + " }, f\"checkpoints/{checkpoint_model_name}.pt\")\n", + "\n", + " print(\"Best model saved!\")\n", + "\n", + " # ------------------------- EARLY STOPPING -------------------------\n", + " early_stopping(eval_loss)\n", + " if early_stopping.early_stop:\n", + " print(f\"Early stopping triggered at epoch {epoch+1}\")\n", + " break\n", + "\n", + " return train_losses, train_accuracy, eval_losses, eval_accuracies, all_preds, all_labels" + ] + }, + { + "cell_type": "markdown", + "id": "f1a48aa6", + "metadata": {}, + "source": [ + "# Training model" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "ce6f465c", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "ce6f465c", + "outputId": "f5d13420-dd69-4fb6-aa0f-7fa5468d74b6" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Starting training...\n", + "Total epochs: 100\n", + "Training on device: cuda\n", + "----------------------------------------------------------------------\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "\rEpoch 1 Training: 0%| | 0/14 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_training_curves(train_losses, eval_losses, train_acc, eval_acc):\n", + " epochs = range(1, len(train_losses) + 1)\n", + "\n", + " plt.figure(figsize=(12,5))\n", + "\n", + " # Loss\n", + " plt.subplot(1,2,1)\n", + " plt.plot(epochs, train_losses, label=\"Train Loss\")\n", + " plt.plot(epochs, eval_losses, label=\"Val Loss\")\n", + " plt.xlabel(\"Epochs\")\n", + " plt.ylabel(\"Loss\")\n", + " plt.title(\"Loss Curve\")\n", + " plt.legend()\n", + "\n", + " # Accuracy\n", + " plt.subplot(1,2,2)\n", + " plt.plot(epochs, train_acc, label=\"Train Acc\")\n", + " plt.plot(epochs, eval_acc, label=\"Val Acc\")\n", + " plt.xlabel(\"Epochs\")\n", + " plt.ylabel(\"Accuracy (%)\")\n", + " plt.title(\"Accuracy Curve\")\n", + " plt.legend()\n", + "\n", + " plt.tight_layout()\n", + " plt.show()\n", + "\n", + "plot_training_curves(\n", + " train_losses,\n", + " eval_losses,\n", + " train_accuracy,\n", + " eval_accuracies\n", + ")" + ] + }, + { + "cell_type": "markdown", + "id": "b2bb5f15", + "metadata": {}, + "source": [ + "# Plotting confusion matrix" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "80145373", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/", + "height": 556 + }, + "id": "80145373", + "outputId": "1315ca89-4ded-442a-e51b-196c2e60f13b" + }, + "outputs": [ + { + "data": { + "image/png": "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rLBnzx507do1X/cpsiOWoqKiYGho+NntS4+ZKE4+fvyIwYMHo0KFCujZsydq1aqFP/74Q+ywiIhIHSl4ccK0tDQkJCTIbf9eUgUA6tWrh+PHj+Phw4cAcpZrOXv2LHx8fAAAT58+RUxMDLy8vGTnmJiYoE6dOggPD8939YpsS4+trS0iIiK+uF8V9OjRAz169BA7DCIiIoXP3sprCZXAwMBc42PHjx+PhIQEVKhQAZqamsjKysKMGTNkM6w/TVj6NNP5EysrK9m+/CiySY+WltZ/WreHiIiIioa8llD59+xiANixYwe2bNmCrVu3omLFioiIiMCIESNga2sre0qCIhTZpIeIiIgKmYJbevJaQiUvY8aMwfjx42VjcypXroznz58jODgYfn5+sicXxMbGymZsf3pdrVq1fMdTZMf0EBERUSET6YGjycnJuZ6ZqampiezsbAA5z8e0trbG8eP/v4p/QkICLl68CA+P/K97xpYeIiIiElWbNm0wY8YMlC1bFhUrVsT169cxf/589O7dG0DOgr0jRozA9OnT4ezsLJuybmtrC19f33zfh0kPERER5RDpMRSLFy/G5MmTMWjQILx+/Rq2trb4+eefERAQIDtm7NixSEpKQv/+/REfH4/69evj0KFD+V6jB+DihGqDixOqFy5OqF64OKF6UerihL6rFHq9lD39v35QIeKYHiIiIlIL7N4iIiKiHHzKOhEREakFFe8qVe2UjoiIiOh/2NJDREREAHKmhqsyJj1EREQEQPWTHnZvERERkVpgSw8RERHlUO2GHiY9RERElIPdW0REREQqgC09REREBED1W3qY9BAREREA1U962L1FREREaoEtPURERARA9Vt6mPQQERFRDtXOedi9RUREROqBLT1EREQEgN1bREREpCaY9JBKuBbaQewQRNFryzWxQxDFFj93sUMQhYGUf9KI6PP4F4KIiIgAsKWHiIiI1ISqJz2cvUVERERqgS09RERElEO1G3qY9BAREVEOdm8RERERqQC29BAREREA1W/pYdJDREREAFQ/6WH3FhEREakFtvQQERFRDtVu6GHSQ0RERDnYvUVERESkAtjSQ0RERADY0kNERERqQiKRKHTLL3t7+zzPHzx4MAAgNTUVgwcPhoWFBQwNDdGxY0fExsYWuH5MeoiIiEhUly9fRnR0tGw7evQoAKBz584AgJEjR2Lv3r3YuXMnTp8+jVevXqFDhw4Fvg+7t4iIiAiAeN1blpaWcq9nzZqFcuXKoVGjRvjw4QPWrl2LrVu3omnTpgCA9evXw9XVFRcuXEDdunXzfR+29BAREVEOiWK3tLQ0JCQkyG1paWlfDCE9PR2bN29G7969IZFIcPXqVWRkZMDLy0t2TIUKFVC2bFmEh4cXqHpMeoiIiEgpgoODYWJiIrcFBwd/8Zw9e/YgPj4ePXv2BADExMRAR0cHpqamcsdZWVkhJiamQPGwe4uIiIgAKL57a8KECfD395crk0qlXzxn7dq18PHxga2trUJjAZj0EBER0f8oOumRSqVfTXL+6fnz5zh27Bh27dolK7O2tkZ6ejri4+PlWntiY2NhbW1doHjYvUVERERFwvr161GyZEl89913srKaNWtCW1sbx48fl5U9ePAAUVFR8PDwKND12dJDREREAMRdnDA7Oxvr16+Hn58ftLT+Pz0xMTFBnz594O/vD3NzcxgbG2Po0KHw8PAo0MwtgEkPERERfSLigszHjh1DVFQUevfunWtfaGgoNDQ00LFjR6SlpcHb2xvLli0r8D2Y9BAREZHoWrRoAUEQ8tynq6uLpUuXYunSpd90DyY9REREBIDP3qL/aMOGDbnWFFCEZ8+eQSKRICIiQuHXJiIi9SbWs7cKS7FIenr27JnnD/Px48dfPTcmJgZDhw6Fo6MjpFIpypQpgzZt2siNAqdvdyviKgLGDsUPbb3g7VkV58+ckNt/9tQxTBjxMzr5NIS3Z1VEPrwvUqSK41enDE4Orye3hf1UTe4YN2tDzOtQEQcG1cG+AbWxoFNF6GgWi//tCiQrKwvrVizGD74t4d3QHd07+GDj2hWfbapWNdu3boFP86aoVb0yunftjFs3b4odUqFgvdWr3qqg2Pz1bdmypdzDyKKjo+Hg4PDFc549e4aaNWvixIkTmDNnDm7duoVDhw6hSZMmsie35iUjI0PR4au81JQUODq5YMioCXnvT01BxSrV0WfgiMINTMmevk1Gh9WXZdvQnbdl+9ysDTHb1w1XouIxaPtNDNx+E3tuxECA6iUC2zatwx+7dmDY6IkI2/4H+g8eie2b12PXjq1ih6Z0hw4ewNyQYPw8aDC279wNF5cKGPhzH8TFxYkdmlKx3qpZb7b0FBFSqRTW1tZym6am5hfPGTRoECQSCS5duoSOHTuifPnyqFixIvz9/XHhwgXZcRKJBMuXL0fbtm1hYGCAGTNm5Nk9tWfPHrlf4o0bN9CkSRMYGRnB2NgYNWvWxJUrV+TOOXz4MFxdXWFoaChL3P5pzZo1cHV1ha6uLipUqJBrNPqlS5dQvXp16Orqwt3dHdevXy/Ij63Q1PKoj579h8CzUbM893u1bIMfew9A9Vp1Cjky5coSBLxPzpBtCamZsn2DGzpgV0Q0tl15iWfvUvAiPhWnHsUhI0v1kp47NyPg2bAJPOo3hLVtKTRq1gLutevh/t1bYoemdJvC1qNDpy7wbd8R5ZycMCkwCLq6utiz63exQ1Mq1ls1682kp5h69+4dDh06hMGDB8PAwCDX/n8nNFOmTEH79u1x69atPKfL5aV79+4oXbo0Ll++jKtXr2L8+PHQ1taW7U9OTsbcuXOxadMmnDlzBlFRURg9erRs/5YtWxAQEIAZM2bg3r17mDlzJiZPnoywsDAAQGJiIlq3bg03NzdcvXoVU6ZMkTufxFfKVBc7+7hjS88a+MXbGSWNdAAApnracLMxQnxKBhZ3roTf+7ljQceKqGRrJHLEylGxSjVcu3IRL6KeAQAeP3yA2zeuobZHfXEDU7KM9HTcu3sHdT3qyco0NDRQt2493LxRNL+gKALrrV71ViXFZvbWvn37YGhoKHvt4+ODnTt3fvb4x48fQxAEVKhQIV/X79atG3r16lWgmKKiojBmzBjZPZydneX2Z2RkYMWKFShXrhwAYMiQIZg6dapsf2BgIObNm4cOHToAABwcHHD37l2sXLkSfn5+2Lp1K7Kzs7F27Vro6uqiYsWK+PvvvzFw4MAvxpWWlpbrKbZpaUKBlgKnr7sX8xGzjzzGi/gUWOjroEed0ljYqTJ6b74OG5Ocn7VfnTJYcfY5Hr9JQgtXS8xrXxG9t0TgZXyqyNErVrcefZCclAi/Lm2hoaGJ7Ows9BkwDM1bthY7NKV6H/8eWVlZsLCwkCu3sLDA06dPRIpK+VhvFa530WucUahik/Q0adIEy5cvl73Oq/Xmnwo6gNLd3b3AMfn7+6Nv377YtGkTvLy80LlzZ1mCAwD6+vpyr21sbPD69WsAQFJSEiIjI9GnTx/069dPdkxmZiZMTEwAAPfu3UOVKlWgq6sr25+fJbeDg4MRFBQkVzZ8zC8YMXZSgetIn3fpebzs30+QjLsxH7G9d000KV8Cz9+lAAD23Y7Fobs5v/PHb5JQo4wJfNxKYs35KDFCVppTxw7j2KH9mDR1Nuwdy+HxwwdYGjobFpaWaPldO7HDI6J8KopdUopUbJIeAwMDODk55ft4Z2dnSCQS3L+fv1lC/06iNDQ0ciVO/x7gPGXKFHTr1g379+/HwYMHERgYiO3bt6N9+/YAINfVBeS8mT5dMzExEQCwevVq1KkjP87la2OVviavp9pGf1S9cSRFTVJ6Fv6OT4WtiS6uvfgAAHgWlyx3TNS7FFgZqV6L24rF8/BDjz5o2sIHAODoVB6xMa+wNWyNSic9ZqZm0NTUzDWINS4uDiVKlBApKuVjvdWr3qpEZcf0mJubw9vbG0uXLkVSUlKu/fHx8V8839LSEh8/fpQ7N6+1ccqXL4+RI0fiyJEj6NChA9avX5+v+KysrGBra4snT57AyclJbvs0K83V1RU3b95Eaur/d4X8cwD250ilUhgbG8tt7NpSPl1tDdiaSPEuKR0xCWl4k5iGMmZ6cseUNtVF7Me0z1yh+EpLTYWGhvyfEw0NTQjZqp1sa+vowNWtIi5eCJeVZWdn4+LFcFSpWl3EyJSL9VbdenMgczG2dOlSZGVloXbt2vj999/x6NEj3Lt3D4sWLfpqN1GdOnWgr6+PiRMnIjIyElu3bsWGDRtk+1NSUjBkyBCcOnUKz58/x7lz53D58mW4urrmO76goCAEBwdj0aJFePjwIW7duoX169dj/vz5AHLGGUkkEvTr1w93797FgQMHMHfu3P/0s1C2lORkRD68L1t/J+bVS0Q+vI/XMTmz1RISPiDy4X1E/a/f+0XUM0Q+vI93cW9Fi/lbDahvh6qljGFlJEVFGyNMa10B2dnA8Yc5dfr16it0qGaDhk4WsDXRRa+6ZVDWXA8H7sSKHLnieTRohM3rVyH87BnEvHqJv04dx85tG1G/cVOxQ1O6n/x6YddvO/Dnnt14EhmJ6VOnICUlBb7tO4gdmlKx3qpZb4lEsVtRU2y6t/4LR0dHXLt2DTNmzMCoUaMQHR0NS0tL1KxZU258UF7Mzc2xefNmjBkzBqtXr0azZs0wZcoU9O/fHwBkTZw9evRAbGwsSpQogQ4dOuQaS/Mlffv2hb6+PubMmYMxY8bAwMAAlStXxogRIwAAhoaG2Lt3LwYMGIDq1avDzc0Ns2fPRseOHf/zz0RZHt6/g7FD+8per1yck5w192mL0ZOm4cJfpzBvZoBsf3DgOADAj70H4Kc+Xx6YXVRZGkoxqWV5GOtq4UNKBm69+ojBO27iQ0rOtPXfI6Kho6WBwQ3tYaSrhcg3SRi9+y5efVC9lp5hoyZi3colWDhnOt6/f4cSJSzRpn0n9Cimv9uCaOnTCu/fvcOyJYvw9u0buFRwxbKVa2Ch4t0drLd61VtVSAR1WTJVzT17q1qzhfKr15ZrYocgii1+BR+YrwrMDXXEDoFI6XSV2FzhPOaQQq/3aE5LhV7vW6l0Sw8RERHlX1HsklKkYjumJyoqCoaGhp/doqJUa0owERERfZti29Jja2v7xSeN29raFl4wREREKqAozrhSpGKb9GhpaRVo3R4iIiL6MhXPeYpv9xYRERFRQRTblh4iIiJSLA0N1W7qYdJDREREANi9RURERKQS2NJDREREADh7i4iIiNSEiuc87N4iIiIi9cCWHiIiIgLA7i0iIiJSE6qe9LB7i4iIiNQCW3qIiIgIgOoPZGbSQ0RERADYvUVERESkEtjSQ0RERADYvUVERERqgt1bREREREr28uVL/Pjjj7CwsICenh4qV66MK1euyPYLgoCAgADY2NhAT08PXl5eePToUYHuwaSHiIiIAOR0bylyy6/379/D09MT2traOHjwIO7evYt58+bBzMxMdkxISAgWLVqEFStW4OLFizAwMIC3tzdSU1PzfR92bxEREREA8bq3Zs+ejTJlymD9+vWyMgcHB9m/BUHAggULMGnSJLRr1w4AsHHjRlhZWWHPnj3o2rVrvu7Dlh4iIiJSirS0NCQkJMhtaWlpuY77888/4e7ujs6dO6NkyZKoXr06Vq9eLdv/9OlTxMTEwMvLS1ZmYmKCOnXqIDw8PN/xMOkhIiIiAIrv3goODoaJiYncFhwcnOu+T548wfLly+Hs7IzDhw9j4MCBGDZsGMLCwgAAMTExAAArKyu586ysrGT78oPdW0RERARA8d1bEyZMgL+/v1yZVCrNdVx2djbc3d0xc+ZMAED16tVx+/ZtrFixAn5+fgqLhy09REREpBRSqRTGxsZyW15Jj42NDdzc3OTKXF1dERUVBQCwtrYGAMTGxsodExsbK9uXH2zpURMljHK/ydTBph7uYocginJN/L9+kAp6f3mJ2CEQFWtiLdPj6emJBw8eyJU9fPgQdnZ2AHIGNVtbW+P48eOoVq0aACAhIQEXL17EwIED830fJj1EREQEQLzZWyNHjkS9evUwc+ZMdOnSBZcuXcKqVauwatUqWVwjRozA9OnT4ezsDAcHB0yePBm2trbw9fXN932Y9BAREZGoatWqhd27d2PChAmYOnUqHBwcsGDBAnTv3l12zNixY5GUlIT+/fsjPj4e9evXx6FDh6Crq5vv+0gEQRCUUQEqWhLT1PPXHJ+cIXYIonBuyu4tIlWlq8TminohZxR6vfNjGyr0et+KLT1EREQEgM/eIiIiIlIJbOkhIiIiAOLN3iosTHqIiIgIALu3iIiIiFQCW3qIiIgIgOq39DDpISIiIgCqP6aH3VtERESkFtjSQ0RERADYvUVERERqQsVzHnZvERERkXpgSw8REREBYPcWERERqQkVz3nYvUVERETqgS09REREBADQUPGmHiY9REREBIDdW0REREQqgS09REREBICzt4iIiEhNaKh2zsPuLSIiIlIPbOkhIiIiAOzeIiIiIjWh4jkPu7eKm1OnTkEikSA+Pl7sUIiIiIqVYp/09OzZExKJJNf2+PHjfJ03a9YsufI9e/aofPNeYVi3ZiV++qETGtStAa9G9eA/fDCePX0idlhKl5yUhKWhs/GDbwv4NHLH0H4/4v7d22KHpVAaGhIEDPoO9/ZNwbvw+bjzZyDG92spd0xJcyOsCvoRT47MQNz5+fhjySCUK2spUsTKt33rFvg0b4pa1Suje9fOuHXzptghFQrWW/XqLVHwf0VNsU96AKBly5aIjo6W2xwcHL56nq6uLmbPno33798rNJ709HSFXq84unblMjp37YYNm3/FslXrkJmZicED+iIlOVns0JRq3sxAXL0UjgmBM7Fm8y64166HsUP74c3rWLFDU5hRPZujX6cGGDlrJ6p1mI5Ji/6Av58XBv3QSHbMjtD+cChdAp1HrETdH2YhKvodDqwYCn1dHREjV45DBw9gbkgwfh40GNt37oaLSwUM/LkP4uLixA5NqVhv1ay3hkSxW1GjEkmPVCqFtbW13KapqfnV87y8vGBtbY3g4OAvHvf777+jYsWKkEqlsLe3x7x58+T229vbY9q0aejRoweMjY3Rv39/bNiwAaampti3bx9cXFygr6+PTp06ITk5GWFhYbC3t4eZmRmGDRuGrKws2bU2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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "def plot_confusion_matrix_normalized(all_labels, all_preds):\n", + " class_names = train_set.data.classes\n", + " cm = confusion_matrix(all_labels, all_preds)\n", + " plt.figure(figsize=(6, 5))\n", + " sns.heatmap(cm, annot=True, fmt=\"d\", cmap=\"Blues\", xticklabels=class_names, yticklabels=class_names)\n", + " plt.xlabel(\"Predicted\")\n", + " plt.ylabel(\"True\")\n", + " plt.title(\"Confusion Matrix\")\n", + " plt.show()\n", + "\n", + "plot_confusion_matrix_normalized(all_labels, all_preds)" + ] + }, + { + "cell_type": "markdown", + "id": "90e575d7", + "metadata": {}, + "source": [ + "# Classification report" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "488b7a58", + "metadata": { + "colab": { + "base_uri": "https://localhost:8080/" + }, + "id": "488b7a58", + "outputId": "e8d9326f-21da-49ed-99fe-596eeb2de169" + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " precision recall f1-score support\n", + "\n", + " F_Breakage 0.84 0.78 0.81 95\n", + " F_Crushed 0.70 0.75 0.72 75\n", + " F_Normal 0.87 0.89 0.88 100\n", + " R_Breakage 0.69 0.54 0.60 54\n", + " R_Crushed 0.55 0.67 0.60 57\n", + " R_Normal 0.77 0.77 0.77 60\n", + "\n", + " accuracy 0.75 441\n", + " macro avg 0.74 0.73 0.73 441\n", + "weighted avg 0.76 0.75 0.75 441\n", + "\n" + ] + } + ], + "source": [ + "def print_classification_report(all_labels, all_preds, class_names=None):\n", + " class_names = train_set.data.classes\n", + " report = classification_report(\n", + " all_labels,\n", + " all_preds,\n", + " target_names=class_names\n", + " )\n", + " print(report)\n", + "print_classification_report(all_labels, all_preds)" + ] + } + ], + "metadata": { + "accelerator": "GPU", + "colab": { + "gpuType": "T4", + "provenance": [] + }, + "kernelspec": { + "display_name": "Python 3", + "name": "python3" + }, + "language_info": { + "name": "python" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}