diff --git "a/res.ipynb" "b/res.ipynb" deleted file mode 100644--- "a/res.ipynb" +++ /dev/null @@ -1,1179 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 2, - "id": "48cc854c", - "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import matplotlib.pyplot as plt\n", - "import torch as t\n", - "from datasets import load_dataset\n", - "import os\n", - "from torchvision import transforms, datasets" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "c65dc116", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Using device: mps\n" - ] - } - ], - "source": [ - "device = t.device(\"cuda\" if t.cuda.is_available() else\n", - " \"mps\" if t.backends.mps.is_available() else\n", - " \"cpu\")\n", - "\n", - "print(f\"Using device: {device}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "id": "c4f23bb8", - "metadata": {}, - "outputs": [], - "source": [ - "import torch.nn as nn\n", - "\n", - "class BottleneckBlock(nn.Module):\n", - " expansion = 4\n", - "\n", - " def __init__(self, in_channels, mid_channels, stride=1):\n", - " super(BottleneckBlock, self).__init__()\n", - " \n", - " out_channels = mid_channels * self.expansion\n", - "\n", - " \n", - " self.conv1 = nn.Conv2d(in_channels, mid_channels, kernel_size=1, bias=False)\n", - " self.bn1 = nn.BatchNorm2d(mid_channels)\n", - " \n", - " self.conv2 = nn.Conv2d(mid_channels, mid_channels, kernel_size=3, stride=stride, padding=1, bias=False)\n", - " self.bn2 = nn.BatchNorm2d(mid_channels)\n", - " \n", - " self.conv3 = nn.Conv2d(mid_channels, out_channels, kernel_size=1, bias=False)\n", - " self.bn3 = nn.BatchNorm2d(out_channels)\n", - " \n", - " self.relu = nn.ReLU(inplace=True)\n", - "\n", - " self.shortcut = nn.Sequential()\n", - "\n", - " if stride != 1 or in_channels != out_channels:\n", - " self.shortcut = nn.Sequential(\n", - " nn.Conv2d(in_channels, out_channels, kernel_size=1, stride=stride, bias=False),\n", - " nn.BatchNorm2d(out_channels)\n", - " )\n", - "\n", - " def forward(self, x):\n", - " identity = x\n", - "\n", - " out = self.conv1(x)\n", - " out = self.bn1(out)\n", - " out = self.relu(out)\n", - "\n", - " out = self.conv2(out)\n", - " out = self.bn2(out)\n", - " out = self.relu(out)\n", - "\n", - " out = self.conv3(out)\n", - " out = self.bn3(out)\n", - " \n", - " identity = self.shortcut(identity)\n", - "\n", - " out += identity\n", - " out = self.relu(out)\n", - "\n", - " return out \n", - " \n", - "\n", - "class ResNet50(nn.Module):\n", - " def __init__(self, num_classes=16, channels_img=3):\n", - " super(ResNet50, self).__init__()\n", - " \n", - " self.in_channels = 64\n", - "\n", - " self.conv1 = nn.Conv2d(channels_img, 64, kernel_size=7, stride=2, padding=3, bias=False)\n", - " self.bn1 = nn.BatchNorm2d(64)\n", - " self.relu = nn.ReLU(inplace=True)\n", - " self.maxpool = nn.MaxPool2d(kernel_size=3, stride=2, padding=1)\n", - "\n", - " self.stage1 = self._make_layer(mid_channels=64, num_blocks=3, stride=1)\n", - " \n", - " self.stage2 = self._make_layer(mid_channels=128, num_blocks=4, stride=2)\n", - " \n", - " self.stage3 = self._make_layer(mid_channels=256, num_blocks=6, stride=2)\n", - " \n", - " self.stage4 = self._make_layer(mid_channels=512, num_blocks=3, stride=2)\n", - "\n", - " self.avgpool = nn.AdaptiveAvgPool2d((1, 1))\n", - "\n", - " self.fc = nn.Linear(512 * 4, num_classes) # 512*4 = 2048\n", - "\n", - " def _make_layer(self, mid_channels, num_blocks, stride):\n", - " layers = []\n", - " \n", - " layers.append(BottleneckBlock(self.in_channels, mid_channels, stride))\n", - " \n", - " self.in_channels = mid_channels * 4\n", - "\n", - " for _ in range(num_blocks - 1):\n", - " layers.append(BottleneckBlock(self.in_channels, mid_channels, stride=1))\n", - "\n", - " return nn.Sequential(*layers)\n", - "\n", - " def forward(self, x):\n", - " # Stem\n", - " x = self.conv1(x)\n", - " x = self.bn1(x)\n", - " x = self.relu(x)\n", - " x = self.maxpool(x)\n", - "\n", - " # Stages\n", - " x = self.stage1(x)\n", - " x = self.stage2(x)\n", - " x = self.stage3(x)\n", - " x = self.stage4(x)\n", - "\n", - " # Head\n", - " x = self.avgpool(x)\n", - " x = t.flatten(x, 1) # Flatten from (N, 2048, 1, 1) to (N, 2048)\n", - " x = self.fc(x)\n", - "\n", - " return x \n", - "\n", - " " - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "id": "7b8d02be", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "ResNet50(\n", - " (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n", - " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n", - " (stage1): Sequential(\n", - " (0): BottleneckBlock(\n", - " (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (1): BottleneckBlock(\n", - " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (2): BottleneckBlock(\n", - " (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " )\n", - " (stage2): Sequential(\n", - " (0): BottleneckBlock(\n", - " (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", - " (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (1): BottleneckBlock(\n", - " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (2): BottleneckBlock(\n", - " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (3): BottleneckBlock(\n", - " (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " )\n", - " (stage3): Sequential(\n", - " (0): BottleneckBlock(\n", - " (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", - " (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (1): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (2): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (3): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (4): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (5): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " )\n", - " (stage4): Sequential(\n", - " (0): BottleneckBlock(\n", - " (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential(\n", - " (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n", - " (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " )\n", - " )\n", - " (1): BottleneckBlock(\n", - " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " (2): BottleneckBlock(\n", - " (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n", - " (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n", - " (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", - " (relu): ReLU(inplace=True)\n", - " (shortcut): Sequential()\n", - " )\n", - " )\n", - " (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n", - " (fc): Linear(in_features=2048, out_features=16, bias=True)\n", - ")\n" - ] - } - ], - "source": [ - "resnet50 = ResNet50().to(device)\n", - "print(resnet50)\n" - ] - }, - { - "cell_type": "markdown", - "id": "cc70660c", - "metadata": {}, - "source": [ - "## model loading" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "fda1cd94", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Success! Keys remapped and model loaded.\n" - ] - } - ], - "source": [ - "import torch\n", - "\n", - "# Load the state_dict\n", - "checkpoint_path = \"/Users/arpit-zstch1557/.cache/huggingface/hub/models--arpit-gour02--document-classification/snapshots/513288d93433d338d3df97b3c62b1b0375dd0d6c/resnet50_epoch_5.pth\"\n", - "state_dict = torch.load(checkpoint_path, map_location=device, weights_only=False)\n", - "\n", - "new_state_dict = {}\n", - "for key, value in state_dict.items():\n", - " new_key = key.replace(\"layer\", \"stage\")\n", - " new_state_dict[new_key] = value\n", - "\n", - "try:\n", - " resnet50.load_state_dict(new_state_dict)\n", - " resnet50.eval()\n", - " print(\"Success! Keys remapped and model loaded.\")\n", - "except Exception as e:\n", - " print(f\"Structural mismatch still exists: {e}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "id": "56438cc9", - "metadata": {}, - "outputs": [], - "source": [ - "def force_3_channels(tensor):\n", - " if tensor.shape[0] == 1:\n", - " return tensor.repeat(3, 1, 1)\n", - " return tensor\n", - "\n", - "\n", - "data_transforms = {\n", - " 'train': transforms.Compose([\n", - " transforms.Resize((224, 224)),\n", - " transforms.ColorJitter(brightness=0.2, contrast=0.2),\n", - " transforms.RandomRotation(degrees=2),\n", - " transforms.ToTensor(),\n", - " transforms.Lambda(force_3_channels),\n", - " transforms.Normalize(mean=[0.485, 0.456, 0.406], \n", - " std=[0.229, 0.224, 0.225])\n", - " ]),\n", - " \n", - " 'val': transforms.Compose([\n", - " transforms.Resize((224, 224)),\n", - " transforms.ToTensor(),\n", - " transforms.Lambda(force_3_channels),\n", - " transforms.Normalize(mean=[0.485, 0.456, 0.406], \n", - " std=[0.229, 0.224, 0.225])\n", - " ]),\n", - "\n", - " 'test': transforms.Compose([\n", - " transforms.Resize((224, 224)),\n", - " transforms.ToTensor(),\n", - " transforms.Lambda(force_3_channels),\n", - " transforms.Normalize(mean=[0.485, 0.456, 0.406], \n", - " std=[0.229, 0.224, 0.225])\n", - " ])\n", - "}" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "id": "e8f19c6d", - "metadata": {}, - "outputs": [], - "source": [ - "from torch.utils.data import DataLoader\n", - "\n", - "test = datasets.ImageFolder(\"./rvl_cdip_data/test\", transform=data_transforms[\"test\"])\n", - "test_dataloader = DataLoader(test, batch_size=64, num_workers=0)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "id": "c26c6a6d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "39999" - ] - }, - "execution_count": 9, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(test)" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "id": "fc87a69f", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "0, torch.Size([64, 3, 224, 224]), torch.Size([64])\n", - "1, torch.Size([64, 3, 224, 224]), torch.Size([64])\n" - ] - } - ], - "source": [ - "for idx, (images, labels) in enumerate(test_dataloader):\n", - " print(f\"{idx}, {images.size()}, {labels.size()}\")\n", - " if idx == 1:\n", - " break" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "id": "1c553fd3", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Input shape: torch.Size([64, 3, 224, 224])\n", - "Output shape: torch.Size([64, 16])\n" - ] - } - ], - "source": [ - "dummy_input = torch.randn(64, 3, 224, 224).to(device)\n", - "\n", - "#Forward pass\n", - "output = resnet50(dummy_input)\n", - "\n", - "print(\"Input shape:\", dummy_input.shape)\n", - "print(\"Output shape:\", output.shape)\n" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "id": "a56bfe1a", - "metadata": {}, - "outputs": [], - "source": [ - "loss_fn = nn.CrossEntropyLoss()\n", - "optimizer = torch.optim.SGD(resnet50.parameters(), lr=0.01, momentum=0.9)" - ] - }, - { - "cell_type": "markdown", - "id": "5e7a8a67", - "metadata": {}, - "source": [ - "## testing" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "id": "b7edfe3d", - "metadata": {}, - "outputs": [], - "source": [ - "def test_loop(dataloader, model, loss_fn, device):\n", - " resnet50.eval()\n", - " correct = 0\n", - " total = 0\n", - " \n", - " with torch.no_grad():\n", - " for idx, (images, labels) in enumerate(test_dataloader):\n", - " # print(idx)\n", - " images, labels = images.to(device), labels.to(device)\n", - " logits = model(images)\n", - "\n", - " _, pred_indices = torch.max(logits, 1)\n", - "\n", - " total += images.size(0)\n", - " correct += (pred_indices == labels).sum().item()\n", - " # print(correct)\n", - "\n", - " acc = (correct/total)*100\n", - " print(f\"Test Accuracy: {acc:.2f}%\")\n", - " return acc\n", - "\n", - "\n", - "\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "id": "cfaf14e7", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Test Accuracy: 85.68%\n" - ] - }, - { - "data": { - "text/plain": [ - "85.68214205355133" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test_loop(test_dataloader, resnet50, loss_fn, device)" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "a0a54cb8", - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": 15, - "id": "2e8c9010", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Generating Confusion Matrix... (This takes a minute)\n" - ] - }, - { - "data": { - "application/vnd.jupyter.widget-view+json": { - "model_id": "b71bb882434e4c1798ee59bef038a306", - "version_major": 2, - "version_minor": 0 - }, - "text/plain": [ - " 0%| | 0/625 [00:00" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from sklearn.metrics import confusion_matrix\n", - "import seaborn as sns\n", - "import numpy as np\n", - "from tqdm.auto import tqdm\n", - "\n", - "def plot_confusion_matrix(model, loader, device, classes):\n", - " y_true = []\n", - " y_pred = []\n", - " \n", - " print(\"Generating Confusion Matrix... (This takes a minute)\")\n", - " model.eval()\n", - " with torch.no_grad():\n", - " for inputs, labels in tqdm(loader, leave=False):\n", - " inputs = inputs.to(device)\n", - " outputs = model(inputs)\n", - " _, preds = torch.max(outputs, 1)\n", - " \n", - " y_true.extend(labels.cpu().numpy())\n", - " y_pred.extend(preds.cpu().numpy())\n", - " \n", - " # Compute Matrix\n", - " cm = confusion_matrix(y_true, y_pred)\n", - " \n", - " plt.figure(figsize=(14, 10))\n", - " \n", - " sns.heatmap(\n", - " cm, \n", - " annot=True, \n", - " fmt='d', \n", - " cmap='Blues', \n", - " xticklabels=classes, \n", - " yticklabels=classes,\n", - " annot_kws={\"size\": 8} \n", - " )\n", - " \n", - " plt.xlabel('Predicted')\n", - " plt.ylabel('True')\n", - " plt.title('Confusion Matrix: ResNet-50 on RVL-CDIP')\n", - " plt.xticks(rotation=45, ha='right') \n", - " plt.show()\n", - " \n", - "# Run it\n", - "plot_confusion_matrix(resnet50, test_dataloader, device, test.classes)\n" - ] - }, - { - "cell_type": "markdown", - "id": "ae49f07b", - "metadata": {}, - "source": [ - "## Class-wise Accuracy" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "452cedaa", - "metadata": {}, - "outputs": [], - "source": [ - "from collections import Counter\n", - "\n", - "total_per_class = Counter(test.targets)\n", - "\n", - "correct_per_class = {}\n", - "for idx, (images, labels) in enumerate(test_dataloader):\n", - " images, labels = images.to(device), labels.to(device)\n", - " logits = resnet50(images)\n", - " _, pred_indices = torch.max(logits, 1)\n", - " \n", - " for label, pred in zip(labels, pred_indices):\n", - " label_item = label.item()\n", - " pred_item = pred.item()\n", - " \n", - " if label_item == pred_item:\n", - " if label_item in correct_per_class:\n", - " correct_per_class[label_item] += 1\n", - " else:\n", - " correct_per_class[label_item] = 1" - ] - }, - { - "cell_type": "code", - "execution_count": 27, - "id": "f4ef7597", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "dict_items([(0, 2515), (1, 2505), (2, 2516), (3, 2527), (4, 2506), (5, 2532), (6, 2477), (7, 2464), (8, 2492), (9, 2463), (10, 2489), (11, 2435), (12, 2537), (13, 2571), (14, 2498), (15, 2472)])\n", - "dict_items([(0, 2118), (1, 2229), (2, 2467), (3, 2084), (4, 2032), (5, 2409), (6, 2184), (7, 1936), (8, 2248), (9, 2078), (10, 1906), (11, 1893), (12, 2379), (13, 2385), (14, 1704), (15, 2220)])\n" - ] - } - ], - "source": [ - "print(total_per_class.items())\n", - "print(correct_per_class.items())" - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "id": "e964c40a", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Class: 0 , Accuracy: 84.21%\n", - "Class: 1 , Accuracy: 88.98%\n", - "Class: 2 , Accuracy: 98.05%\n", - "Class: 3 , Accuracy: 82.47%\n", - "Class: 4 , Accuracy: 81.09%\n", - "Class: 5 , Accuracy: 95.14%\n", - "Class: 6 , Accuracy: 88.17%\n", - "Class: 7 , Accuracy: 78.57%\n", - "Class: 8 , Accuracy: 90.21%\n", - "Class: 9 , Accuracy: 84.37%\n", - "Class: 10 , Accuracy: 76.58%\n", - "Class: 11 , Accuracy: 77.74%\n", - "Class: 12 , Accuracy: 93.77%\n", - "Class: 13 , Accuracy: 92.77%\n", - "Class: 14 , Accuracy: 68.21%\n", - "Class: 15 , Accuracy: 89.81%\n" - ] - } - ], - "source": [ - "for (cls_idx, total), (cls_idx, correct) in zip(total_per_class.items(), correct_per_class.items()):\n", - " print(f\"Class: {cls_idx} , Accuracy: {(correct/total)*100:.2f}%\")" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "id": "1f57b36d", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['advertisement',\n", - " 'budget',\n", - " 'email',\n", - " 'file folder',\n", - " 'form',\n", - " 'handwritten',\n", - " 'invoice',\n", - " 'letter',\n", - " 'memo',\n", - " 'news article',\n", - " 'presentation',\n", - " 'questionnaire',\n", - " 'resume',\n", - " 'scientific publication',\n", - " 'scientific report',\n", - " 'specification']" - ] - }, - "execution_count": 44, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "test.classes" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "id": "0e93b237", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Evaluating...\n", - "\n", - "CLASS NAME | TOTAL | CORRECT | ACCURACY \n", - "-----------------------------------------------------------------\n", - "advertisement | 2515 | 2118 | 84.21% ⚠️\n", - "budget | 2505 | 2229 | 88.98% ⚠️\n", - "email | 2516 | 2467 | 98.05% ✅\n", - "file folder | 2527 | 2084 | 82.47% ⚠️\n", - "form | 2506 | 2032 | 81.09% ⚠️\n", - "handwritten | 2532 | 2409 | 95.14% ✅\n", - "invoice | 2477 | 2184 | 88.17% ⚠️\n", - "letter | 2464 | 1936 | 78.57% ❌\n", - "memo | 2492 | 2248 | 90.21% ✅\n", - "news article | 2463 | 2078 | 84.37% ⚠️\n", - "presentation | 2489 | 1906 | 76.58% ❌\n", - "questionnaire | 2435 | 1893 | 77.74% ❌\n", - "resume | 2537 | 2379 | 93.77% ✅\n", - "scientific publication | 2571 | 2385 | 92.77% ✅\n", - "scientific report | 2498 | 1704 | 68.21% ❌\n", - "specification | 2472 | 2220 | 89.81% ⚠️\n" - ] - } - ], - "source": [ - "from collections import Counter\n", - "import torch\n", - "\n", - "# 1. SETUP: Reverse the mapping to get Names from Numbers\n", - "# test.class_to_idx is {'email': 2, ...} -> we want {2: 'email', ...}\n", - "idx_to_class = {v: k for k, v in test.class_to_idx.items()}\n", - "\n", - "# 2. CALCULATE TOTALS\n", - "# (Assumes 'test' is an ImageFolder or similar dataset with .targets)\n", - "total_per_class = Counter(test.targets)\n", - "correct_per_class = {}\n", - "\n", - "resnet50.eval()\n", - "\n", - "# 3. EVALUATION LOOP\n", - "print(\"Evaluating...\")\n", - "with torch.no_grad():\n", - " for images, labels in test_dataloader:\n", - " images, labels = images.to(device), labels.to(device)\n", - " \n", - " logits = resnet50(images)\n", - " _, preds = torch.max(logits, 1)\n", - " \n", - " # Vectorized check for correctness\n", - " matches = (preds == labels)\n", - " \n", - " # Update correct counts\n", - " for label, is_correct in zip(labels, matches):\n", - " if is_correct:\n", - " label_item = label.item()\n", - " correct_per_class[label_item] = correct_per_class.get(label_item, 0) + 1\n", - "\n", - "# 4. FINAL REPORT (The Fixed Logic)\n", - "print(f\"\\n{'CLASS NAME':<25} | {'TOTAL':<8} | {'CORRECT':<8} | {'ACCURACY':<10}\")\n", - "print(\"-\" * 65)\n", - "\n", - "# Sort by index (0, 1, 2...) to keep it organized\n", - "for cls_idx in sorted(total_per_class.keys()):\n", - " \n", - " # Get Name\n", - " class_name = idx_to_class[cls_idx]\n", - " \n", - " # Get Stats\n", - " total = total_per_class[cls_idx]\n", - " correct = correct_per_class.get(cls_idx, 0) # Safety: defaults to 0 if none correct\n", - " \n", - " # Calculate\n", - " acc = (correct / total) * 100\n", - " \n", - " # Grade\n", - " grade = \"✅\" if acc > 90 else \"⚠️\" if acc > 80 else \"❌\"\n", - " \n", - " print(f\"{class_name:<25} | {total:<8} | {correct:<8} | {acc:.2f}% {grade}\")" - ] - }, - { - "cell_type": "code", - "execution_count": 49, - "id": "dfa49598", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "\n", - "DETAILED CLASSIFICATION REPORT\n", - "------------------------------------------------------------\n", - " precision recall f1-score support\n", - "\n", - " advertisement 0.903 0.842 0.872 2515\n", - " budget 0.782 0.890 0.832 2505\n", - " email 0.976 0.981 0.978 2516\n", - " file folder 0.855 0.825 0.840 2527\n", - " form 0.725 0.811 0.766 2506\n", - " handwritten 0.892 0.951 0.921 2532\n", - " invoice 0.874 0.882 0.878 2477\n", - " letter 0.939 0.786 0.856 2464\n", - " memo 0.955 0.902 0.928 2492\n", - " news article 0.924 0.844 0.882 2463\n", - " presentation 0.782 0.766 0.774 2489\n", - " questionnaire 0.841 0.777 0.808 2435\n", - " resume 0.927 0.938 0.932 2537\n", - "scientific publication 0.840 0.928 0.882 2571\n", - " scientific report 0.631 0.682 0.656 2498\n", - " specification 0.934 0.898 0.916 2472\n", - "\n", - " accuracy 0.857 39999\n", - " macro avg 0.861 0.856 0.857 39999\n", - " weighted avg 0.861 0.857 0.858 39999\n", - "\n", - "------------------------------------------------------------\n", - "Top-1 Accuracy: 85.68%\n", - "Top-3 Accuracy: 95.62% (How often the right answer is in the top 3)\n", - "------------------------------------------------------------\n" - ] - } - ], - "source": [ - "from sklearn.metrics import classification_report, top_k_accuracy_score\n", - "import torch\n", - "\n", - "class_names = [\n", - " 'advertisement', \n", - " 'budget', \n", - " 'email', \n", - " 'file folder', \n", - " 'form', \n", - " 'handwritten', \n", - " 'invoice', \n", - " 'letter', \n", - " 'memo', \n", - " 'news article', \n", - " 'presentation', \n", - " 'questionnaire', \n", - " 'resume', \n", - " 'scientific publication', \n", - " 'scientific report', \n", - " 'specification'\n", - "]\n", - "# 1. GATHER PREDICTIONS\n", - "y_true = []\n", - "y_pred = []\n", - "y_score = [] # Needed for Top-3 accuracy (probabilities)\n", - "\n", - "resnet50.eval()\n", - "with torch.no_grad():\n", - " for images, labels in test_dataloader:\n", - " images = images.to(device)\n", - " labels = labels.to(device)\n", - " \n", - " outputs = resnet50(images)\n", - " probabilities = torch.nn.functional.softmax(outputs, dim=1)\n", - " _, preds = torch.max(outputs, 1)\n", - " \n", - " y_true.extend(labels.cpu().numpy())\n", - " y_pred.extend(preds.cpu().numpy())\n", - " y_score.extend(probabilities.cpu().numpy())\n", - "\n", - "# 2. PRINT THE REPORT (Precision, Recall, F1)\n", - "print(\"\\nDETAILED CLASSIFICATION REPORT\")\n", - "print(\"-\" * 60)\n", - "# target_names=class_names maps numbers back to 'Email', 'Resume' etc.\n", - "print(classification_report(y_true, y_pred, target_names=class_names, digits=3))\n", - "\n", - "# 3. CALCULATE TOP-3 ACCURACY\n", - "top1 = top_k_accuracy_score(y_true, y_score, k=1)\n", - "top3 = top_k_accuracy_score(y_true, y_score, k=3)\n", - "\n", - "print(\"-\" * 60)\n", - "print(f\"Top-1 Accuracy: {top1*100:.2f}%\")\n", - "print(f\"Top-3 Accuracy: {top3*100:.2f}% (How often the right answer is in the top 3)\")\n", - "print(\"-\" * 60)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "id": "aa700138", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "✅ File Loaded Successfully!\n", - "Data Keys Found: ['train_loss', 'train_acc', 'val_loss', 'val_acc']\n", - "✅ Graph saved to: results/loss_and_acc_curve.png\n" - ] - }, - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import torch\n", - "import matplotlib.pyplot as plt\n", - "import seaborn as sns\n", - "\n", - "# --- 1. Load the History File ---\n", - "file_path = '/Users/arpit-zstch1557/Projects/document-classification/training_history.pth'\n", - "\n", - "try:\n", - " # Load data (map_location='cpu' ensures it works even without GPU)\n", - " history = torch.load(file_path, map_location='cpu')\n", - " print(\"✅ File Loaded Successfully!\")\n", - " print(f\"Data Keys Found: {list(history.keys())}\")\n", - " \n", - " # Handle cases where history might be nested under a 'history' key\n", - " if 'history' in history:\n", - " history = history['history']\n", - " \n", - "except Exception as e:\n", - " print(f\"❌ Error loading file: {e}\")\n", - " exit()\n", - "\n", - "# --- 2. Setup Plot Style ---\n", - "sns.set_style(\"whitegrid\") # Makes it look academic/professional\n", - "plt.figure(figsize=(14, 6)) # Wide layout for side-by-side plots\n", - "\n", - "# --- 3. Plot Loss Curves (Left Side) ---\n", - "plt.subplot(1, 2, 1)\n", - "# Try to find standard keys (adapt if your keys are named differently)\n", - "t_loss = history.get('train_loss') or history.get('loss')\n", - "v_loss = history.get('val_loss') or history.get('validation_loss')\n", - "\n", - "if t_loss: plt.plot(t_loss, label='Training Loss', color='blue', linewidth=2, marker='o', markersize=4)\n", - "if v_loss: plt.plot(v_loss, label='Validation Loss', color='red', linewidth=2, linestyle='--', marker='s', markersize=4)\n", - "\n", - "plt.title('Loss during Training', fontsize=14, fontweight='bold')\n", - "plt.xlabel('Epochs', fontsize=12)\n", - "plt.ylabel('Loss', fontsize=12)\n", - "plt.legend()\n", - "plt.grid(True, linestyle='--', alpha=0.7)\n", - "\n", - "# --- 4. Plot Accuracy Curves (Right Side) ---\n", - "plt.subplot(1, 2, 2)\n", - "t_acc = history.get('train_acc') or history.get('accuracy') or history.get('acc')\n", - "v_acc = history.get('val_acc') or history.get('validation_accuracy') or history.get('val_accuracy')\n", - "\n", - "if t_acc: plt.plot(t_acc, label='Training Accuracy', color='green', linewidth=2, marker='o', markersize=4)\n", - "if v_acc: plt.plot(v_acc, label='Validation Accuracy', color='orange', linewidth=2, linestyle='--', marker='s', markersize=4)\n", - "\n", - "plt.title('Accuracy during Training', fontsize=14, fontweight='bold')\n", - "plt.xlabel('Epochs', fontsize=12)\n", - "plt.ylabel('Accuracy', fontsize=12)\n", - "plt.legend()\n", - "plt.grid(True, linestyle='--', alpha=0.7)\n", - "\n", - "# --- 5. Save and Show ---\n", - "plt.tight_layout()\n", - "output_path = 'results/loss_and_acc_curve.png'\n", - "plt.savefig(output_path, dpi=300)\n", - "print(f\"✅ Graph saved to: {output_path}\")\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "6fdbdefa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[1.098800715803532,\n", - " 0.6109571453126136,\n", - " 0.4965410860932533,\n", - " 0.42825428385224623,\n", - " 0.37778599239479677]" - ] - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "04495800", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[0.6943156488895417,\n", - " 0.8044540574789047,\n", - " 0.5931311735272408,\n", - " 0.4671015265010297,\n", - " 0.5441862164806575]" - ] - }, - "execution_count": 4, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "d81c1298", - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "lab_env", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.13.11" - } - }, - "nbformat": 4, - "nbformat_minor": 5 -}