{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "CFkmw1GyQaDr" }, "source": [ "EfficientNet-V2-S + ConvNeXt Fusion (Multimodal Ensemble)\n", "\n", "This notebook implements a **feature-level fusion** of two pretrained backbones:\n", "- **EfficientNet-V2-S** (torchvision) — compound-scaled CNN with depthwise convolutions\n", "- **ConvNeXt-Small** (HuggingFace) — transformer-inspired CNN with large kernels + LayerNorm\n", "\n", "Both backbones process the **same image** independently. Their feature vectors are **concatenated** and passed through a shared fusion head for classification.\n", "\n", "```\n", "Image ──► EfficientNet-V2-S (frozen except last 3 blocks) ──► feature_eff (1280-d)\n", " │\n", " ── concat ──► Fusion Head ──► num_classes\n", " │\n", "Image ──► ConvNeXt-Small (frozen except stages 2 & 3) ──► feature_cnx (768-d)\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "hIG2Yl9kQaDs", "outputId": "99970c42-69a3-42e2-959e-dbe25f96d4e6" }, "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: transformers in /usr/local/lib/python3.12/dist-packages (5.0.0)\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.1)\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: filelock in /usr/local/lib/python3.12/dist-packages (from transformers) (3.29.0)\n", "Requirement already satisfied: huggingface-hub<2.0,>=1.3.0 in /usr/local/lib/python3.12/dist-packages (from transformers) (1.11.0)\n", "Requirement already satisfied: pyyaml>=5.1 in /usr/local/lib/python3.12/dist-packages (from transformers) (6.0.3)\n", "Requirement already satisfied: regex!=2019.12.17 in /usr/local/lib/python3.12/dist-packages (from transformers) (2025.11.3)\n", "Requirement already satisfied: tokenizers<=0.23.0,>=0.22.0 in /usr/local/lib/python3.12/dist-packages (from transformers) (0.22.2)\n", "Requirement already satisfied: typer-slim in /usr/local/lib/python3.12/dist-packages (from transformers) (0.24.0)\n", "Requirement already satisfied: safetensors>=0.4.3 in /usr/local/lib/python3.12/dist-packages (from transformers) (0.7.0)\n", "Requirement already satisfied: tqdm>=4.27 in /usr/local/lib/python3.12/dist-packages (from transformers) (4.67.3)\n", "Requirement already satisfied: fsspec>=2023.5.0 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub<2.0,>=1.3.0->transformers) (2025.3.0)\n", "Requirement already satisfied: hf-xet<2.0.0,>=1.4.3 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub<2.0,>=1.3.0->transformers) (1.4.3)\n", "Requirement already satisfied: httpx<1,>=0.23.0 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub<2.0,>=1.3.0->transformers) (0.28.1)\n", "Requirement already satisfied: typer in /usr/local/lib/python3.12/dist-packages (from huggingface-hub<2.0,>=1.3.0->transformers) (0.24.2)\n", "Requirement already satisfied: typing-extensions>=4.1.0 in /usr/local/lib/python3.12/dist-packages (from huggingface-hub<2.0,>=1.3.0->transformers) (4.15.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", "Requirement already satisfied: anyio in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.3.0->transformers) (4.13.0)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.3.0->transformers) (2026.4.22)\n", "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.3.0->transformers) (1.0.9)\n", "Requirement already satisfied: idna in /usr/local/lib/python3.12/dist-packages (from httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.3.0->transformers) (3.13)\n", "Requirement already satisfied: h11>=0.16 in /usr/local/lib/python3.12/dist-packages (from httpcore==1.*->httpx<1,>=0.23.0->huggingface-hub<2.0,>=1.3.0->transformers) (0.16.0)\n", "Requirement already satisfied: click>=8.2.1 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub<2.0,>=1.3.0->transformers) (8.3.3)\n", "Requirement already satisfied: shellingham>=1.3.0 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub<2.0,>=1.3.0->transformers) (1.5.4)\n", "Requirement already satisfied: rich>=12.3.0 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub<2.0,>=1.3.0->transformers) (13.9.4)\n", "Requirement already satisfied: annotated-doc>=0.0.2 in /usr/local/lib/python3.12/dist-packages (from typer->huggingface-hub<2.0,>=1.3.0->transformers) (0.0.4)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.12/dist-packages (from rich>=12.3.0->typer->huggingface-hub<2.0,>=1.3.0->transformers) (4.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.12/dist-packages (from rich>=12.3.0->typer->huggingface-hub<2.0,>=1.3.0->transformers) (2.20.0)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.12/dist-packages (from markdown-it-py>=2.2.0->rich>=12.3.0->typer->huggingface-hub<2.0,>=1.3.0->transformers) (0.1.2)\n" ] } ], "source": [ "!pip install matplotlib scikit-learn transformers" ] }, { "cell_type": "markdown", "metadata": { "id": "XvT9wBUXQaDt" }, "source": [ "# Connecting to Google Drive" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "abIc7LfHQaDt", "outputId": "7754e21d-9509-4a4c-f294-be3746bac106" }, "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", "metadata": { "id": "YXWunW1vQaDu" }, "source": [ "# Importing necessary libraries" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "UEdoGDNUQaDu" }, "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, models\n", "from tqdm import tqdm\n", "import matplotlib.pyplot as plt\n", "import random\n", "import os\n", "import seaborn as sns\n", "from sklearn.metrics import confusion_matrix, classification_report\n", "from transformers import get_cosine_schedule_with_warmup\n", "from transformers import ConvNextModel, ConvNextImageProcessor" ] }, { "cell_type": "markdown", "metadata": { "id": "jiSes_YDQaDv" }, "source": [ "# Loading the ConvNeXt processor" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 208, "referenced_widgets": [ "3cb15ef1c7264f1185a7fc6b5d7c2df3", "b53f782eee9644b5ad1eaaed362bea07", "2de9e107e7414f8898a97b979c56fe29", "6ac3f2449f524cd8967ac2858db401a5", "2f9f1bdcce60481b8cf28c941b68a308", "1f641e6227a74723b221bbeff1b02e13", "f4b9970a61b8444e87f28b5dae0eee96", "9aa552394c384c2dbc1c5bb15e4190ee", "f8296d1a2f134a26b8e5103f73073c81", "e30a9b9dc8db49acbb92ac7729f3b894", "5ace66a707064845a87141f4705d4208" ] }, "id": "5TwotVj2QaDw", "outputId": "ce25488f-76a3-4a63-a03a-caa4c1942a8d" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.12/dist-packages/huggingface_hub/utils/_auth.py:93: UserWarning: \n", "The secret `HF_TOKEN` does not exist in your Colab secrets.\n", "To authenticate with the Hugging Face Hub, create a token in your settings tab (https://huggingface.co/settings/tokens), set it as secret in your Google Colab and restart your session.\n", "You will be able to reuse this secret in all of your notebooks.\n", "Please note that authentication is recommended but still optional to access public models or datasets.\n", " warnings.warn(\n", "Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n", "WARNING:huggingface_hub.utils._http:Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3cb15ef1c7264f1185a7fc6b5d7c2df3", "version_major": 2, "version_minor": 0 }, "text/plain": [ "preprocessor_config.json: 0%| | 0.00/266 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "labels = ['Training Data', 'Testing Data']\n", "sizes = [len(train_dataset), len(test_dataset)]\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", "metadata": { "id": "qBrUGzexQaDy" }, "source": [ "# Class distribution" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 536 }, "id": "BtgvcIqWQaDy", "outputId": "008b1209-a0c5-4904-8816-0f95df4f01cf" }, "outputs": [ { "data": { "image/png": "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lZ6enuH54+PjlZCQIH9//yw/FgDg34GiDQBwOLf2GP5zD+H169f17bffPvDnfvfdd1W0aFH16tVLR48ezbD93LlzGjp06B3vn1n2bdu2KSYmxm7chQsX7JadnJxss2LfOjz79jEFCxZUuXLlsnX49u327t2r999/X15eXgoPD7/juL///jvDHtpbM6bfev5bs4hnVnxz4scff9Sff/5pW96+fbu2bdumpk2b2taVLVtWv/76q86fP29bt3fvXm3evNnusbKTrVmzZpKkUaNG2a0fMWKEJCk0NDRbrwMA8Ojj8l4AAIfz9NNPy8vLS2FhYXrvvfdksVg0Y8aMh3JorpeXlxYuXKhmzZqpevXqatu2rYKCgiRJu3fv1uzZsxUcHHzH+7/44otasGCBXn75ZYWGhurkyZMaN26cAgIC7A65fuutt3Tx4kU1aNBAxYsX1++//66vv/5a1atXV+XKlSXdnHSrfv36CgoKkre3t3bu3Kn58+erW7duWXotP//8s5KTk5WWlqYLFy5o8+bN+umnn+Th4aGFCxfKz8/vjvedNm2avv32W7388ssqW7asLl26pO+++07u7u62Yurq6qqAgAD98MMPqlChgry9vVWlShVVqVIlS/luV65cOdWtW1ddu3ZVSkqKRo0apcKFC6tv3762MZ06ddKIESMUEhKizp0769y5cxo3bpyeeOIJJSUl2cZlJ1u1atUUFhamCRMm2E5b2L59u6ZNm6aWLVvq+eefz9HrAQA8uijaAACHU7hwYS1ZskS9evXSgAED5OXlpbZt26phw4ZZOtz5ftWuXVsHDhzQ559/rqVLl2rGjBlycnJS5cqV1b9//7sW3Q4dOiguLk7jx4/XihUrFBAQoO+//17z5s3T+vXrbePatm2rCRMm6Ntvv1VCQoL8/Pz02muvadCgQbbzmt977z399NNPWrlypVJSUuTv76+hQ4eqT58+WXodo0ePliTly5dPnp6eqly5sgYPHqwuXbqoSJEid73vrbI5Z84cxcfHy8PDQ7Vq1dLMmTNVunRp27iJEyeqe/fu6tmzp65fv66BAwfmuGi3b99eTk5OGjVqlM6dO6datWrpm2++UdGiRW1jKleurOnTpysqKkoREREKCAjQjBkzNGvWLLt/3+xmmzhxosqUKaOpU6favoSIjIzUwIEDc/RaAACPNouVmTkAAAAAADAM52gDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGcsjraKenp+vMmTMqVKiQLBaL2XEAAAAAAI84q9WqS5cuqVixYnJyuvs+a4cs2mfOnFGJEiXMjgEAAAAA+Jc5ffq0ihcvftcxDlm0CxUqJOnmC3R3dzc5DQAAAADgUZeUlKQSJUrY+ujdOGTRvnW4uLu7O0UbAAAAAPDQZOX0ZSZDAwAAAADAQBRtAAAAAAAMRNEGAAAAAMBAFG0AAAAAAAxE0QYAAAAAwEAUbQAAAAAADETRBgAAAADAQBRtAAAAAAAMRNEGAAAAAMBAFG0AAAAAAAxE0QYAAAAAwED3VbSHDRsmi8Wi999/37YuOTlZ4eHhKly4sAoWLKjWrVsrPj7e7n6xsbEKDQ2Vm5ubfHx81KdPH6Wmpt5PFAAAAAAAcoUcF+0dO3Zo/PjxCgwMtFvfs2dPLV68WPPmzdOGDRt05swZtWrVyrY9LS1NoaGhun79urZs2aJp06Zp6tSpioqKyvmrAAAAAAAgl8hR0b58+bLatGmj7777Tl5eXrb1iYmJmjRpkkaMGKEGDRooKChIU6ZM0ZYtW7R161ZJ0sqVK3Xo0CF9//33ql69upo2baqPP/5YY8aM0fXr1415VQAAAAAAmCRHRTs8PFyhoaFq1KiR3fpdu3bpxo0bdusrVaqkkiVLKiYmRpIUExOjqlWrytfX1zYmJCRESUlJOnjwYKbPl5KSoqSkJLsbAAAAAAC5Ud7s3mHOnDnavXu3duzYkWFbXFycnJ2d5enpabfe19dXcXFxtjH/LNm3tt/alpno6GgNHjw4u1FzhVL9l5odAQY7NSzU7AhAjvD76NHD7yMAAHKnbO3RPn36tHr06KGZM2cqf/78DypTBpGRkUpMTLTdTp8+/dCeGwAAAACA7MhW0d61a5fOnTunJ598Unnz5lXevHm1YcMGjR49Wnnz5pWvr6+uX7+uhIQEu/vFx8fLz89PkuTn55dhFvJby7fG3M7FxUXu7u52NwAAAAAAcqNsFe2GDRtq//792rNnj+1Ws2ZNtWnTxvZzvnz5tGbNGtt9jhw5otjYWAUHB0uSgoODtX//fp07d842ZtWqVXJ3d1dAQIBBLwsAAAAAAHNk6xztQoUKqUqVKnbrChQooMKFC9vWd+7cWREREfL29pa7u7u6d++u4OBg1alTR5LUuHFjBQQEqF27dho+fLji4uI0YMAAhYeHy8XFxaCXBQAAAACAObI9Gdq9jBw5Uk5OTmrdurVSUlIUEhKib7/91rY9T548WrJkibp27arg4GAVKFBAYWFhGjJkiNFRAAAAAAB46O67aK9fv95uOX/+/BozZozGjBlzx/v4+/tr2bJl9/vUAAAAAADkOjm6jjYAAAAAAMgcRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwULaK9tixYxUYGCh3d3e5u7srODhY//vf/2zb69evL4vFYnd799137R4jNjZWoaGhcnNzk4+Pj/r06aPU1FRjXg0AAAAAACbLm53BxYsX17Bhw1S+fHlZrVZNmzZNL730kn755Rc98cQTkqQuXbpoyJAhtvu4ubnZfk5LS1NoaKj8/Py0ZcsWnT17Vu3bt1e+fPn06aefGvSSAAAAAAAwT7aKdvPmze2WP/nkE40dO1Zbt261FW03Nzf5+fllev+VK1fq0KFDWr16tXx9fVW9enV9/PHH6tevnwYNGiRnZ+ccvgwAAAAAAHKHHJ+jnZaWpjlz5ujKlSsKDg62rZ85c6Yee+wxValSRZGRkbp69aptW0xMjKpWrSpfX1/bupCQECUlJengwYN3fK6UlBQlJSXZ3QAAAAAAyI2ytUdbkvbv36/g4GAlJyerYMGCWrhwoQICAiRJb775pvz9/VWsWDHt27dP/fr105EjR7RgwQJJUlxcnF3JlmRbjouLu+NzRkdHa/DgwdmNCgAAAADAQ5ftol2xYkXt2bNHiYmJmj9/vsLCwrRhwwYFBATo7bffto2rWrWqihYtqoYNG+r48eMqW7ZsjkNGRkYqIiLCtpyUlKQSJUrk+PEAAAAAAHhQsn3ouLOzs8qVK6egoCBFR0erWrVq+uqrrzIdW7t2bUnSb7/9Jkny8/NTfHy83Zhby3c6r1uSXFxcbDOd37oBAAAAAJAb3fd1tNPT05WSkpLptj179kiSihYtKkkKDg7W/v37de7cOduYVatWyd3d3Xb4OQAAAAAAjixbh45HRkaqadOmKlmypC5duqRZs2Zp/fr1WrFihY4fP65Zs2apWbNmKly4sPbt26eePXvq2WefVWBgoCSpcePGCggIULt27TR8+HDFxcVpwIABCg8Pl4uLywN5gQAAAAAAPEzZKtrnzp1T+/btdfbsWXl4eCgwMFArVqzQCy+8oNOnT2v16tUaNWqUrly5ohIlSqh169YaMGCA7f558uTRkiVL1LVrVwUHB6tAgQIKCwuzu+42AAAAAACOLFtFe9KkSXfcVqJECW3YsOGej+Hv769ly5Zl52kBAAAAAHAY932ONgAAAAAA+P8o2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGCiv2QEA3Fup/kvNjgCDnRoWanYEAAAAPCDs0QYAAAAAwEAUbQAAAAAADETRBgAAAADAQBRtAAAAAAAMRNEGAAAAAMBAFG0AAAAAAAxE0QYAAAAAwEAUbQAAAAAADETRBgAAAADAQBRtAAAAAAAMRNEGAAAAAMBAFG0AAAAAAAxE0QYAAAAAwEAUbQAAAAAADJStoj127FgFBgbK3d1d7u7uCg4O1v/+9z/b9uTkZIWHh6tw4cIqWLCgWrdurfj4eLvHiI2NVWhoqNzc3OTj46M+ffooNTXVmFcDAAAAAIDJslW0ixcvrmHDhmnXrl3auXOnGjRooJdeekkHDx6UJPXs2VOLFy/WvHnztGHDBp05c0atWrWy3T8tLU2hoaG6fv26tmzZomnTpmnq1KmKiooy9lUBAAAAAGCSvNkZ3Lx5c7vlTz75RGPHjtXWrVtVvHhxTZo0SbNmzVKDBg0kSVOmTFHlypW1detW1alTRytXrtShQ4e0evVq+fr6qnr16vr444/Vr18/DRo0SM7Ozsa9MgAAAAAATJDjc7TT0tI0Z84cXblyRcHBwdq1a5du3LihRo0a2cZUqlRJJUuWVExMjCQpJiZGVatWla+vr21MSEiIkpKSbHvFM5OSkqKkpCS7GwAAAAAAuVG2i/b+/ftVsGBBubi46N1339XChQsVEBCguLg4OTs7y9PT0268r6+v4uLiJElxcXF2JfvW9lvb7iQ6OloeHh62W4kSJbIbGwAAAACAhyLbRbtixYras2ePtm3bpq5duyosLEyHDh16ENlsIiMjlZiYaLudPn36gT4fAAAAAAA5la1ztCXJ2dlZ5cqVkyQFBQVpx44d+uqrr/Taa6/p+vXrSkhIsNurHR8fLz8/P0mSn5+ftm/fbvd4t2YlvzUmMy4uLnJxccluVAAAAAAAHrr7vo52enq6UlJSFBQUpHz58mnNmjW2bUeOHFFsbKyCg4MlScHBwdq/f7/OnTtnG7Nq1Sq5u7srICDgfqMAAAAAAGC6bO3RjoyMVNOmTVWyZEldunRJs2bN0vr167VixQp5eHioc+fOioiIkLe3t9zd3dW9e3cFBwerTp06kqTGjRsrICBA7dq10/DhwxUXF6cBAwYoPDycPdYAAAAAgEdCtor2uXPn1L59e509e1YeHh4KDAzUihUr9MILL0iSRo4cKScnJ7Vu3VopKSkKCQnRt99+a7t/njx5tGTJEnXt2lXBwcEqUKCAwsLCNGTIEGNfFQAAAAAAJslW0Z40adJdt+fPn19jxozRmDFj7jjG399fy5Yty87TAgAAAADgMO77HG0AAAAAAPD/UbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA2WraEdHR+upp55SoUKF5OPjo5YtW+rIkSN2Y+rXry+LxWJ3e/fdd+3GxMbGKjQ0VG5ubvLx8VGfPn2Umpp6/68GAAAAAACT5c3O4A0bNig8PFxPPfWUUlNT9cEHH6hx48Y6dOiQChQoYBvXpUsXDRkyxLbs5uZm+zktLU2hoaHy8/PTli1bdPbsWbVv31758uXTp59+asBLAgAAAADAPNkq2suXL7dbnjp1qnx8fLRr1y49++yztvVubm7y8/PL9DFWrlypQ4cOafXq1fL19VX16tX18ccfq1+/fho0aJCcnZ0z3CclJUUpKSm25aSkpOzEBgAAAADgobmvc7QTExMlSd7e3nbrZ86cqccee0xVqlRRZGSkrl69atsWExOjqlWrytfX17YuJCRESUlJOnjwYKbPEx0dLQ8PD9utRIkS9xMbAAAAAIAHJlt7tP8pPT1d77//vp555hlVqVLFtv7NN9+Uv7+/ihUrpn379qlfv346cuSIFixYIEmKi4uzK9mSbMtxcXGZPldkZKQiIiJsy0lJSZRtAAAAAECulOOiHR4ergMHDmjTpk12699++23bz1WrVlXRokXVsGFDHT9+XGXLls3Rc7m4uMjFxSWnUQEAAAAAeGhydOh4t27dtGTJEq1bt07Fixe/69jatWtLkn777TdJkp+fn+Lj4+3G3Fq+03ndAAAAAAA4imwVbavVqm7dumnhwoVau3atSpcufc/77NmzR5JUtGhRSVJwcLD279+vc+fO2casWrVK7u7uCggIyE4cAAAAAABynWwdOh4eHq5Zs2Zp0aJFKlSokO2cag8PD7m6uur48eOaNWuWmjVrpsKFC2vfvn3q2bOnnn32WQUGBkqSGjdurICAALVr107Dhw9XXFycBgwYoPDwcA4PBwAAAAA4vGzt0R47dqwSExNVv359FS1a1Hb74YcfJEnOzs5avXq1GjdurEqVKqlXr15q3bq1Fi9ebHuMPHnyaMmSJcqTJ4+Cg4PVtm1btW/f3u662wAAAAAAOKps7dG2Wq133V6iRAlt2LDhno/j7++vZcuWZeepAQAAAABwCPd1HW0AAAAAAGCPog0AAAAAgIFyfB1tAADw71Oq/1KzI8BAp4aFPvTn5D306OF9BCOY8T56kNijDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYKFtFOzo6Wk899ZQKFSokHx8ftWzZUkeOHLEbk5ycrPDwcBUuXFgFCxZU69atFR8fbzcmNjZWoaGhcnNzk4+Pj/r06aPU1NT7fzUAAAAAAJgsW0V7w4YNCg8P19atW7Vq1SrduHFDjRs31pUrV2xjevbsqcWLF2vevHnasGGDzpw5o1atWtm2p6WlKTQ0VNevX9eWLVs0bdo0TZ06VVFRUca9KgAAAAAATJI3O4OXL19utzx16lT5+Pho165devbZZ5WYmKhJkyZp1qxZatCggSRpypQpqly5srZu3ao6depo5cqVOnTokFavXi1fX19Vr15dH3/8sfr166dBgwbJ2dk5w/OmpKQoJSXFtpyUlJST1woAAAAAwAN3X+doJyYmSpK8vb0lSbt27dKNGzfUqFEj25hKlSqpZMmSiomJkSTFxMSoatWq8vX1tY0JCQlRUlKSDh48mOnzREdHy8PDw3YrUaLE/cQGAAAAAOCByXHRTk9P1/vvv69nnnlGVapUkSTFxcXJ2dlZnp6edmN9fX0VFxdnG/PPkn1r+61tmYmMjFRiYqLtdvr06ZzGBgAAAADggcrWoeP/FB4ergMHDmjTpk1G5smUi4uLXFxcHvjzAAAAAABwv3K0R7tbt25asmSJ1q1bp+LFi9vW+/n56fr160pISLAbHx8fLz8/P9uY22chv7V8awwAAAAAAI4qW0XbarWqW7duWrhwodauXavSpUvbbQ8KClK+fPm0Zs0a27ojR44oNjZWwcHBkqTg4GDt379f586ds41ZtWqV3N3dFRAQcD+vBQAAAAAA02Xr0PHw8HDNmjVLixYtUqFChWznVHt4eMjV1VUeHh7q3LmzIiIi5O3tLXd3d3Xv3l3BwcGqU6eOJKlx48YKCAhQu3btNHz4cMXFxWnAgAEKDw/n8HAAAAAAgMPLVtEeO3asJKl+/fp266dMmaIOHTpIkkaOHCknJye1bt1aKSkpCgkJ0bfffmsbmydPHi1ZskRdu3ZVcHCwChQooLCwMA0ZMuT+XgkAAAAAALlAtoq21Wq955j8+fNrzJgxGjNmzB3H+Pv7a9myZdl5agAAAAAAHMJ9XUcbAAAAAADYo2gDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYKBsF+2NGzeqefPmKlasmCwWi3788Ue77R06dJDFYrG7NWnSxG7MxYsX1aZNG7m7u8vT01OdO3fW5cuX7+uFAAAAAACQG2S7aF+5ckXVqlXTmDFj7jimSZMmOnv2rO02e/Zsu+1t2rTRwYMHtWrVKi1ZskQbN27U22+/nf30AAAAAADkMnmze4emTZuqadOmdx3j4uIiPz+/TLcdPnxYy5cv144dO1SzZk1J0tdff61mzZrpiy++ULFixbIbCQAAAACAXOOBnKO9fv16+fj4qGLFiuratasuXLhg2xYTEyNPT09byZakRo0aycnJSdu2bcv08VJSUpSUlGR3AwAAAAAgNzK8aDdp0kTTp0/XmjVr9Nlnn2nDhg1q2rSp0tLSJElxcXHy8fGxu0/evHnl7e2tuLi4TB8zOjpaHh4etluJEiWMjg0AAAAAgCGyfej4vbz++uu2n6tWrarAwECVLVtW69evV8OGDXP0mJGRkYqIiLAtJyUlUbYBAAAAALnSA7+8V5kyZfTYY4/pt99+kyT5+fnp3LlzdmNSU1N18eLFO57X7eLiInd3d7sbAAAAAAC50QMv2n/88YcuXLigokWLSpKCg4OVkJCgXbt22casXbtW6enpql279oOOAwAAAADAA5XtQ8cvX75s2zstSSdPntSePXvk7e0tb29vDR48WK1bt5afn5+OHz+uvn37qly5cgoJCZEkVa5cWU2aNFGXLl00btw43bhxQ926ddPrr7/OjOMAAAAAAIeX7T3aO3fuVI0aNVSjRg1JUkREhGrUqKGoqCjlyZNH+/btU4sWLVShQgV17txZQUFB+vnnn+Xi4mJ7jJkzZ6pSpUpq2LChmjVrprp162rChAnGvSoAAAAAAEyS7T3a9evXl9VqveP2FStW3PMxvL29NWvWrOw+NQAAAAAAud4DP0cbAAAAAIB/E4o2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYCCKNgAAAAAABqJoAwAAAABgIIo2AAAAAAAGomgDAAAAAGAgijYAAAAAAAaiaAMAAAAAYKBsF+2NGzeqefPmKlasmCwWi3788Ue77VarVVFRUSpatKhcXV3VqFEjHTt2zG7MxYsX1aZNG7m7u8vT01OdO3fW5cuX7+uFAAAAAACQG2S7aF+5ckXVqlXTmDFjMt0+fPhwjR49WuPGjdO2bdtUoEABhYSEKDk52TamTZs2OnjwoFatWqUlS5Zo48aNevvtt3P+KgAAAAAAyCXyZvcOTZs2VdOmTTPdZrVaNWrUKA0YMEAvvfSSJGn69Ony9fXVjz/+qNdff12HDx/W8uXLtWPHDtWsWVOS9PXXX6tZs2b64osvVKxYsft4OQAAAAAAmMvQc7RPnjypuLg4NWrUyLbOw8NDtWvXVkxMjCQpJiZGnp6etpItSY0aNZKTk5O2bduW6eOmpKQoKSnJ7gYAAAAAQG5kaNGOi4uTJPn6+tqt9/X1tW2Li4uTj4+P3fa8efPK29vbNuZ20dHR8vDwsN1KlChhZGwAAAAAAAzjELOOR0ZGKjEx0XY7ffq02ZEAAAAAAMiUoUXbz89PkhQfH2+3Pj4+3rbNz89P586ds9uempqqixcv2sbczsXFRe7u7nY3AAAAAAByI0OLdunSpeXn56c1a9bY1iUlJWnbtm0KDg6WJAUHByshIUG7du2yjVm7dq3S09NVu3ZtI+MAAAAAAPDQZXvW8cuXL+u3336zLZ88eVJ79uyRt7e3SpYsqffff19Dhw5V+fLlVbp0aX300UcqVqyYWrZsKUmqXLmymjRpoi5dumjcuHG6ceOGunXrptdff50ZxwEAAAAADi/bRXvnzp16/vnnbcsRERGSpLCwME2dOlV9+/bVlStX9PbbbyshIUF169bV8uXLlT9/ftt9Zs6cqW7duqlhw4ZycnJS69atNXr0aANeDgAAAAAA5sp20a5fv76sVusdt1ssFg0ZMkRDhgy54xhvb2/NmjUru08NAAAAAECu5xCzjgMAAAAA4Cgo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBKNoAAAAAABiIog0AAAAAgIEo2gAAAAAAGIiiDQAAAACAgSjaAAAAAAAYiKINAAAAAICBDC/agwYNksVisbtVqlTJtj05OVnh4eEqXLiwChYsqNatWys+Pt7oGAAAAAAAmOKB7NF+4okndPbsWdtt06ZNtm09e/bU4sWLNW/ePG3YsEFnzpxRq1atHkQMAAAAAAAeurwP5EHz5pWfn1+G9YmJiZo0aZJmzZqlBg0aSJKmTJmiypUra+vWrapTp86DiAMAAAAAwEPzQPZoHzt2TMWKFVOZMmXUpk0bxcbGSpJ27dqlGzduqFGjRraxlSpVUsmSJRUTE3PHx0tJSVFSUpLdDQAAAACA3Mjwol27dm1NnTpVy5cv19ixY3Xy5EnVq1dPly5dUlxcnJydneXp6Wl3H19fX8XFxd3xMaOjo+Xh4WG7lShRwujYAAAAAAAYwvBDx5s2bWr7OTAwULVr15a/v7/mzp0rV1fXHD1mZGSkIiIibMtJSUmUbQAAAABArvTAL+/l6empChUq6LfffpOfn5+uX7+uhIQEuzHx8fGZntN9i4uLi9zd3e1uAAAAAADkRg+8aF++fFnHjx9X0aJFFRQUpHz58mnNmjW27UeOHFFsbKyCg4MfdBQAAAAAAB44ww8d7927t5o3by5/f3+dOXNGAwcOVJ48efTGG2/Iw8NDnTt3VkREhLy9veXu7q7u3bsrODiYGccBAAAAAI8Ew4v2H3/8oTfeeEMXLlxQkSJFVLduXW3dulVFihSRJI0cOVJOTk5q3bq1UlJSFBISom+//dboGAAAAAAAmMLwoj1nzpy7bs+fP7/GjBmjMWPGGP3UAAAAAACY7oGfow0AAAAAwL8JRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwkKlFe8yYMSpVqpTy58+v2rVra/v27WbGAQAAAADgvplWtH/44QdFRERo4MCB2r17t6pVq6aQkBCdO3fOrEgAAAAAANw304r2iBEj1KVLF3Xs2FEBAQEaN26c3NzcNHnyZLMiAQAAAABw3/Ka8aTXr1/Xrl27FBkZaVvn5OSkRo0aKSYmJsP4lJQUpaSk2JYTExMlSUlJSQ8+7H1KT7lqdgQYzIz3He+jRw/vIxiB9xHuF+8hGIH3EYzgCN3uVkar1XrPsaYU7b/++ktpaWny9fW1W+/r66tff/01w/jo6GgNHjw4w/oSJUo8sIzAnXiMMjsBHgW8j2AE3ke4X7yHYATeRzCCI72PLl26JA8Pj7uOMaVoZ1dkZKQiIiJsy+np6bp48aIKFy4si8ViYjLckpSUpBIlSuj06dNyd3c3Ow4cEO8hGIH3EYzA+whG4H0EI/A+yl2sVqsuXbqkYsWK3XOsKUX7scceU548eRQfH2+3Pj4+Xn5+fhnGu7i4yMXFxW6dp6fng4yIHHJ3d+eXAO4L7yEYgfcRjMD7CEbgfQQj8D7KPe61J/sWUyZDc3Z2VlBQkNasWWNbl56erjVr1ig4ONiMSAAAAAAAGMK0Q8cjIiIUFhammjVrqlatWho1apSuXLmijh07mhUJAAAAAID7ZlrRfu2113T+/HlFRUUpLi5O1atX1/LlyzNMkAbH4OLiooEDB2Y4xB/IKt5DMALvIxiB9xGMwPsIRuB95Lgs1qzMTQ4AAAAAALLElHO0AQAAAAB4VFG0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAANRtAEAAAAAMJBp19GGY0pKSsryWHd39weYBADspaamav369Tp+/LjefPNNFSpUSGfOnJG7u7sKFixodjwA/zLJycnKnz+/2TEAmITraCNbnJycZLFY7jrGarXKYrEoLS3tIaWCo9m3b1+WxwYGBj7AJHhU/P7772rSpIliY2OVkpKio0ePqkyZMurRo4dSUlI0btw4syMiF6pRo8Y9/6bdsnv37gecBo+C9PR0ffLJJxo3bpzi4+Ntv4s++ugjlSpVSp07dzY7InKpVq1aZXnsggULHmASGIU92siWdevWmR0Bj4Dq1avLYrHYvpS5G76wQVb06NFDNWvW1N69e1W4cGHb+pdfflldunQxMRlys5YtW9p+Tk5O1rfffquAgAAFBwdLkrZu3aqDBw/qP//5j0kJ4WiGDh2qadOmafjw4Xa/e6pUqaJRo0ZRtHFHHh4eZkeAwdijDeCh+/33320///LLL+rdu7f69Olj+3AbExOjL7/8UsOHD7f7IAzcSeHChbVlyxZVrFhRhQoV0t69e1WmTBmdOnVKAQEBunr1qtkRkcu99dZbKlq0qD7++GO79QMHDtTp06c1efJkk5LBkZQrV07jx49Xw4YN7X4X/frrrwoODtbff/9tdkQADwl7tHHfrl69qtjYWF2/ft1uPYf84k78/f1tP7/66qsaPXq0mjVrZlsXGBioEiVK6KOPPqJoI0vS09MzPfrhjz/+UKFChUxIBEczb9487dy5M8P6tm3bqmbNmhRtZMmff/6pcuXKZVifnp6uGzdumJAIgFko2six8+fPq2PHjvrf//6X6XYO+UVW7N+/X6VLl86wvnTp0jp06JAJieCIGjdurFGjRmnChAmSJIvFosuXL2vgwIF2X+IAd+Lq6qrNmzerfPnydus3b97MhFbIsoCAAP388892XyhL0vz581WjRg2TUsERzZ8/X3Pnzs10ZxZzRjgGijZy7P3331dCQoK2bdum+vXra+HChYqPj9fQoUP15Zdfmh0PDqJy5cqKjo7WxIkT5ezsLEm6fv26oqOjVblyZZPTwVF8+eWXCgkJUUBAgJKTk/Xmm2/q2LFjeuyxxzR79myz48EBvP/+++ratat2796tWrVqSZK2bdumyZMn66OPPjI5HRxFVFSUwsLC9Oeffyo9PV0LFizQkSNHNH36dC1ZssTseHAQo0eP1ocffqgOHTpo0aJF6tixo44fP64dO3YoPDzc7HjIIs7RRo4VLVpUixYtUq1ateTu7q6dO3eqQoUK+umnnzR8+HBt2rTJ7IhwANu3b1fz5s1ltVptpxvs27dPFotFixcvtn3gBe4lNTVVc+bM0b59+3T58mU9+eSTatOmjVxdXc2OBgcxd+5cffXVVzp8+LCkm18E9ujRQ//3f/9ncjI4kp9//llDhgzR3r17bb+LoqKi1LhxY7OjwUFUqlRJAwcO1BtvvGF3rn9UVJQuXryob775xuyIyAKKNnLM3d1d+/btU6lSpeTv769Zs2bpmWee0cmTJ/XEE08w+RCy7MqVK5o5c6Z+/fVXSTc/3L755psqUKCAyckAAAAeLjc3Nx0+fFj+/v7y8fHRqlWrVK1aNR07dkx16tTRhQsXzI6ILODQceRYxYoVdeTIEZUqVUrVqlXT+PHjVapUKY0bN05FixY1Ox4cSIECBfT222+bHQMO7Keffsp0vcViUf78+VWuXLlM5wIA/ikhIUHz58/XiRMn1Lt3b3l7e2v37t3y9fXV448/bnY8AP8Sfn5+unjxovz9/VWyZElt3bpV1apV08mTJ8U+UsdB0UaO9ejRQ2fPnpV08/InTZo00cyZM+Xs7KypU6eaGw4OZcaMGRo/frxOnDihmJgY+fv7a+TIkSpTpoxeeukls+PBAbRs2dJ2bfZ/+uf12uvWrasff/xRXl5eJqVEbrZv3z41atRIHh4eOnXqlN566y15e3trwYIFio2N1fTp082OCAfg5eUli8WSYf0/v/Tr0KGDOnbsaEI6OIoGDRrop59+Uo0aNdSxY0f17NlT8+fP186dO9WqVSuz4yGLnMwOAMfVtm1bdejQQZIUFBSk33//XTt27NDp06f12muvmRsODmPs2LGKiIhQ06ZN9ffff9tmq/fy8tKoUaPMDQeHsWrVKj311FNatWqVEhMTlZiYqFWrVql27dpasmSJNm7cqAsXLqh3795mR0UuFRERoQ4dOujYsWN2s4w3a9ZMGzduNDEZHElUVJScnJwUGhqqwYMHa/DgwQoNDZWTk5PCw8NVoUIFde3aVd99953ZUZGLTZgwQR9++KEkKTw8XJMnT1blypU1ZMgQjR071uR0yCrO0QZgqoCAAH366adq2bKl3YQfBw4cUP369fXXX3+ZHREOoEqVKpowYYKefvppu/WbN2/W22+/rYMHD2r16tXq1KmTYmNjTUqJ3MzDw0O7d+9W2bJl7X4X/f7776pYsaKSk5PNjggH0Lp1a73wwgt699137daPHz9eK1eu1H//+199/fXXmjBhgvbv329SSgAPA4eOI8esVqvmz5+vdevW6dy5c0pPT7fbvmDBApOSwZGcPHky02uLuri46MqVKyYkgiM6fvy43N3dM6x3d3fXiRMnJEnly5fnixvckYuLi5KSkjKsP3r0qIoUKWJCIjiiFStW6LPPPsuwvmHDhurVq5ekm0dJ9O/f/2FHg4NJTk7Wvn37Mv2M3aJFC5NSITso2six999/X+PHj9fzzz8vX1/fTM9JAu6ldOnS2rNnj/z9/e3WL1++nOtoI8uCgoLUp08fTZ8+3VaKzp8/r759++qpp56SJB07dkwlSpQwMyZysRYtWmjIkCGaO3eupJvn1MbGxqpfv35q3bq1yengKLy9vbV48WL17NnTbv3ixYvl7e0t6eaVNgoVKmRGPDiI5cuXq3379pl+OWyxWGyn2SF3o2gjx2bMmKEFCxaoWbNmZkeBA4uIiFB4eLiSk5NltVq1fft2zZ49W9HR0Zo4caLZ8eAgJk2apJdeeknFixe3lenTp0+rTJkyWrRokSTp8uXLGjBggJkxkYt9+eWXeuWVV+Tj46Nr167pueeeU1xcnIKDg/XJJ5+YHQ8O4qOPPlLXrl21bt061apVS5K0Y8cOLVu2TOPGjZN0c06J5557zsyYyOW6d++uV199VVFRUfL19TU7DnKIc7SRY6VLl9b//vc/VapUyewocHAzZ87UoEGDdPz4cUlSsWLFNHjwYHXu3NnkZHAk6enpWrlypY4ePSrp5iUIX3jhBTk5Me8nsm7Tpk3at2+fLl++rCeffFKNGjUyOxIczObNm/XNN9/oyJEjkm7+LurevXuGOSSAO3F3d9cvv/yismXLmh0F94GijRybNm2ali9frsmTJ8vV1dXsOHgEXL16VZcvX5aPj4/ZUQAAAEzRqVMnPfPMM+xwcHAUbeTYtWvX9PLLL2vz5s0qVaqU8uXLZ7d99+7dJiUD8G905coVbdiwQbGxsbp+/brdtvfee8+kVHAka9as0Zo1azKdfGjy5MkmpYKjSk5OzvC7KLNJG4HbXb16Va+++qqKFCmiqlWrZviMzd80x8A52sixsLAw7dq1S23btmUyNORYfHy8evfubftwe/t3f0z4gaz45Zdf1KxZM129elVXrlyRt7e3/vrrL7m5ucnHx4cPJbinwYMHa8iQIapZs6aKFi3K3zTkyNWrV9W3b1/NnTtXFy5cyLCdv2nIitmzZ2vlypXKnz+/1q9fb/f7yGKx8DfNQbBHGzlWoEABrVixQnXr1jU7ChxY06ZNFRsbq27dumX64fall14yKRkcSf369VWhQgWNGzdOHh4e2rt3r/Lly6e2bduqR48eatWqldkRkcsVLVpUw4cPV7t27cyOAgcWHh6udevW6eOPP1a7du00ZswY/fnnnxo/fryGDRumNm3amB0RDsDPz0/vvfee+vfvzzwjDoyijRyrVKmS5s6dq8DAQLOjwIEVKlRIP//8s6pXr252FDgwT09Pbdu2TRUrVpSnp6diYmJUuXJlbdu2TWFhYfr111/NjohcrnDhwtq+fTuTD+G+lCxZUtOnT1f9+vXl7u6u3bt3q1y5cpoxY4Zmz56tZcuWmR0RDsDb21s7duzg95GD4ysS5NiXX36pvn376tSpU2ZHgQMrUaJEhsPFgezKly+f7Vt/Hx8fxcbGSpI8PDx0+vRpM6PBQbz11luaNWuW2THg4C5evKgyZcpIunk+9sWLFyVJdevW1caNG82MBgcSFhamH374wewYuE+co40ca9u2ra5evaqyZcvKzc0tw0QNt/64AHczatQo9e/fX+PHj1epUqXMjgMHVaNGDe3YsUPly5fXc889p6ioKP3111+aMWOGqlSpYnY85FIRERG2n9PT0zVhwgStXr1agYGBGf6mjRgx4mHHgwMqU6aMTp48qZIlS9qO/KtVq5YWL14sT09Ps+PBQaSlpWn48OFasWIFv48cGIeOI8emTZt21+1hYWEPKQkcjZeXl9252FeuXFFqaipf2CDHdu7cqUuXLun555/XuXPn1L59e23ZskXly5fXpEmTODUBmXr++eezNM5isWjt2rUPOA0eBSNHjlSePHn03nvvafXq1WrevLmsVqtu3LihESNGqEePHmZHhAO42+8mfh85Doo2cuTGjRt655139NFHH6l06dJmx4GDudeXNP/EFza4X9euXZOrq6vZMQD8C/3+++/atWuXypUrx5w2yJK0tDRt3rxZVatWlZeXl9lxcB8o2sgxDw8P7dmzh6INwHTvvfeeRo8enWH9lStX9OKLL2rdunUmpIIjS0pK0tq1a1WpUiVVqlTJ7DhwEOvWrbvj3sgxY8YoPDz8ISeCI8qfP78OHz7MZ2wHx2RoyLGWLVvqxx9/NDsGHNzu3bu1f/9+2/KiRYvUsmVLffDBB7p+/bqJyeBIli5dqoEDB9qtu3z5spo0aaLU1FSTUsGR/N///Z+++eYbSTePgqhZs6b+7//+T1WrVtV///tfk9PBUbRq1Uq7du3KsP6rr75SZGSkCYngiKpUqaITJ06YHQP3iaKNHCtfvryGDBmiV155RdHR0Ro9erTdDciKd955R0ePHpUknThxQq+99prc3Nw0b9489e3b1+R0cBQrV67Ud999p1GjRkmSLl26pMaNG8tisWj58uXmhoND2Lhxo+rVqydJWrhwoaxWqxISEjR69GgNHTrU5HRwFJ9//rmaNm1qd0nBL7/8UlFRUVq6dKmJyeBIhg4dqt69e2vJkiU6e/askpKS7G5wDBw6jhy72+EsFouFb+KQJR4eHtq9e7fKli2rzz77TGvXrtWKFSu0efNmvf7661yaCVm2b98+Pf/88xo4cKBmz54tFxcXLV26VAUKFDA7GhyAq6urjh49qhIlSqh9+/YqVqyYhg0bptjYWAUEBOjy5ctmR4SDGD58uEaPHq1Nmzbphx9+0Keffqply5bpmWeeMTsaHMSty1VKsps81mq1ymKxKC0tzYxYyCYu74UcO3nypNkR8AiwWq1KT0+XJK1evVovvviipJvX1/7rr7/MjAYHExgYqCVLluiFF15Q7dq1tWTJEiZBQ5aVKFFCMTEx8vb21vLlyzVnzhxJ0t9//638+fObnA6OpG/fvrpw4YJq1qyptLQ0rVixQnXq1DE7FhwI84o8GijaMMStAyP++a0bkBU1a9bU0KFD1ahRI23YsEFjx46VdPOLHF9fX5PTITerUaNGpr9zXFxcdObMGbu9R7t3736Y0eCA3n//fbVp00YFCxaUv7+/6tevL+nmIeVVq1Y1NxxytcxOl3v88cfl5uamZ599Vtu3b9f27dsl3Zy4EbiX5557zuwIMACHjuO+TJ8+XZ9//rmOHTsmSapQoYL69Omjdu3amZwMjmLfvn1q06aNYmNjFRERYZvQqnv37rpw4YJmzZplckLkVoMHD87y2NsnSgMys3PnTp0+fVovvPCCChYsKOnmRHuenp4c9os7yurM0JxWh+xISEjQpEmTdPjwYUnSE088oU6dOsnDw8PkZMgqijZybMSIEfroo4/UrVs32weQTZs2acyYMRo6dKh69uxpckI4suTkZOXJk0f58uUzOwoAAMBDs3PnToWEhMjV1VW1atWSJO3YsUPXrl3TypUr9eSTT5qcEFlB0UaOlS5dWoMHD1b79u3t1k+bNk2DBg3iHG4AgMPo1KnTXbdPnjz5ISUB8G9Xr149lStXTt99953y5r15pm9qaqreeustnThxQhs3bjQ5IbKCc7SRY2fPntXTTz+dYf3TTz+ts2fPmpAIjsjJyemu5/YzsyayIi0tTSNHjtTcuXMVGxub4RrsFy9eNCkZHMXff/9tt3zjxg0dOHBACQkJatCggUmp4Ij++OMP/fTTT5n+LhoxYoRJqeBIdu7caVeyJSlv3rzq27evatasaWIyZAdFGzlWrlw5zZ07Vx988IHd+h9++EHly5c3KRUczcKFC+2Wb9y4oV9++UXTpk3L1jm4+HcbPHiwJk6cqF69emnAgAH68MMPderUKf3444+KiooyOx4cwO2/iyQpPT1dXbt2VdmyZU1IBEe0Zs0atWjRQmXKlNGvv/6qKlWq6NSpU7JarRzuiyxzd3dXbGysKlWqZLf+9OnTKlSokEmpkF0cOo4c++9//6vXXntNjRo1sp2jvXnzZq1Zs0Zz587Vyy+/bHJCOLJZs2bphx9+0KJFi8yOAgdQtmxZjR49WqGhoSpUqJD27NljW7d161Ym1UOOHTlyRPXr1+dILWRJrVq11LRpUw0ePFiFChXS3r175ePjozZt2qhJkybq2rWr2RHhAN577z0tXLhQX3zxhe3o0c2bN6tPnz5q3bq1Ro0aZW5AZAlFG/dl165dGjlypG1GxMqVK6tXr16qUaOGycng6E6cOKHAwEBdvnzZ7ChwAAUKFNDhw4dVsmRJFS1aVEuXLtWTTz6pEydOqEaNGkpMTDQ7IhzUsmXLFBYWpvPnz5sdBQ7gn1/0eXl5adOmTXriiSe0d+9evfTSSzp16pTZEeEArl+/rj59+mjcuHFKTU2VJOXLl09du3bVsGHD5OLiYnJCZAWHjuO+BAUF6fvvvzc7Bh4x165d0+jRo/X444+bHQUOonjx4jp79qxKliypsmXL2mZl3bFjBx9IkCURERF2y1arVWfPntXSpUsVFhZmUio4mgIFCtjOyy5atKiOHz+uJ554QpL0119/mRkNDsTZ2VlfffWVoqOjdfz4cUk3j9xyc3MzORmyg6INwFReXl52k6FZrVZdunRJbm5ufImDLHv55Ze1Zs0a1a5dW927d1fbtm01adIkxcbGcqlBZMkvv/xit+zk5KQiRYroyy+/vOeM5MAtderU0aZNm1S5cmU1a9ZMvXr10v79+7VgwQLVqVPH7HhwMG5ubqpatarZMZBDHDqObLvXLNGSZLFYbIe6AHczbdo0u+VbH25r164tLy8vk1LB0cXExCgmJkbly5dX8+bNzY6DXM5qter06dMqUqSIXF1dzY4DB3bixAldvnxZgYGBunLlinr16qUtW7aofPnyGjFihPz9/c2OiFwsK1/qWSwWTZo06SGkwf2iaCPb7jY5VUxMjEaPHq309HQlJyc/xFRwRKmpqfr000/VqVMnFS9e3Ow4AP6l0tPTlT9/fh08eJCrZgAwzd0mEk5LS9Pq1auVkpLCpU8dBEUbhjhy5Ij69++vxYsXq02bNhoyZAjf2iJLChUqpP3796tUqVJmR4GDmzFjhsaNG6eTJ08qJiZG/v7+GjVqlEqXLq2XXnrJ7HjI5Z544glNmjSJw3tx3xISEjR//nwdP35cffr0kbe3t3bv3i1fX1/mHkGOLFq0SB988IHOnDmjfv36qX///mZHQhY4mR0Aju3MmTPq0qWLqlatqtTUVO3Zs0fTpk2jZCPLGjRooA0bNpgdAw5u7NixioiIULNmzZSQkGD7tt/T05PLoCBLhg0bpj59+ujAgQNmR4ED27dvnypUqKDPPvtMX3zxhRISEiRJCxYsUGRkpLnh4HA2b96sevXq6c0339SLL76oEydOULIdCHu0kSOJiYn69NNP9fXXX6t69er67LPPVK9ePbNjwQGNGzdOgwcPVps2bRQUFKQCBQrYbW/RooVJyeBIAgIC9Omnn6ply5a2a9eWKVNGBw4cUP369ZntF/fk5eWlq1evKjU1Vc7OzhnO1b548aJJyeBIGjVqpCeffFLDhw+3+120ZcsWvfnmm1zeC1ly6NAh9evXT8uXL1f79u01ePBgTrFzQMw6jmwbPny4PvvsM/n5+Wn27Nkckon78p///EeSNGLEiAzbLBYL5yEhS06ePKkaNWpkWO/i4qIrV66YkAiOhiMfYIQdO3Zo/PjxGdY//vjjiouLMyERHMnp06cVFRWl77//Xi+++KL27dunypUrmx0LOUTRRrb1799frq6uKleunKZNm5Zh1uhbFixY8JCTwRGlp6ebHQGPgNKlS2vPnj0ZTltZvnw5H1KQJVwrG0ZwcXFRUlJShvVHjx5VkSJFTEgER1KxYkVZLBZFRETomWee0bFjx3Ts2LEM4zjazzFQtJFt7du3v+flvQDgYYqIiFB4eLiSk5NltVq1fft2zZ49W9HR0Zo4caLZ8ZCLnTlzRiNGjFBUVJTc3d3ttiUmJmro0KHq3bu3fH19TUoIR9KiRQsNGTJEc+fOlXTzyKzY2Fj169dPrVu3NjkdcrtbV+z5/PPP9fnnn2c6hqP9HAfnaOOB++OPP1SsWDE5OTH3Hv6/tWvXqlu3btq6dWumH26ffvppjR07Vs8++6xJCeFoZs6cqUGDBun48eOSpGLFimnw4MHq3LmzycmQm/Xu3VtJSUmaMGFCptvfffddeXh46LPPPnvIyeCIEhMT9corr2jnzp26dOmSihUrpri4OAUHB2vZsmUZ5iEB8OiiaOOBc3d31549e1SmTBmzoyAXadGihZ5//nn17Nkz0+2jR4/WunXrtHDhwoecDI4mNTVVs2bNUkhIiHx9fXX16lVdvnxZPj4+ZkeDA6hSpYrGjRununXrZrp9y5Yt6tKliw4ePPiQk8GRbd68WXv37tXly5f15JNPqlGjRmZHwiMoNDRUEydOVNGiRc2OgkxQtPHA/XPWTeAWf3//u54/++uvv6px48aKjY19yMngiNzc3HT48GEuLYhsK1CggA4fPqySJUtmuj02NlaVK1dmUj3c040bN+Tq6qo9e/aoSpUqZsfBvwCfsXM3juUFYIr4+Hjly5fvjtvz5s2r8+fPP8REcGS1atXSL7/8YnYMOCBXV9e7XnLp1KlTGS71BWQmX758KlmyJOfPApDEZGgATPL444/rwIEDKleuXKbb9+3bx6FQyLL//Oc/6tWrl/74449Mr8ceGBhoUjLkdrVr19aMGTPuOB/E9OnTVatWrYecCo7qww8/1AcffKAZM2bI29vb7DgATETRBmCKZs2a6aOPPlKTJk2UP39+u23Xrl3TwIED9eKLL5qUDo7m9ddflyS99957tnUWi0VWq5UZWnFXvXv31gsvvCAPDw/16dPHNrt4fHy8hg8frqlTp2rlypUmp4Sj+Oabb/Tbb7+pWLFi8vf3z/Cl3+7du01KBuBho2jjgeNSYMjMgAEDtGDBAlWoUEHdunVTxYoVJd08N3vMmDFKS0vThx9+aHJKOIqTJ0+aHQEO6vnnn9eYMWPUo0cPjRw5Uu7u7rJYLEpMTFS+fPn09ddfq0GDBmbHhINo2bKl2REA5BJMhoZsO3HihEqXLp3lAs1EDbiT33//XV27dtWKFSt061eRxWJRSEiIxowZo9KlS5ucEMC/xZ9//qm5c+fqt99+k9VqVYUKFfTKK6+oePHiZkcDAJtr167Z5o3gM3buRtFGtuXJk0dnz561XTrntdde0+jRo22H293u9OnTKlasmPLkyfMwY8KB/P3337YPt+XLl5eXl1eGMVyPHXdz4cIFFS5cWNLN3znfffedrl27phYtWqhevXomp8OjhMvpIDtOnDiha9euqXLlyvz9wn1JSUnRN998o88//1xxcXGSpOjoaHXt2lWenp7mhkOm+D8e2Xb7dzPLli2762VPSpQoQcnGXXl5eempp55SrVq1Mi3ZkhQQEHDXmYHx77R//36VKlVKPj4+qlSpkvbs2aOnnnpKI0eO1IQJE/T888/rxx9/NDsmHiEbN27UtWvXzI6BXObGjRsaOHCgmjdvrk8++URpaWl64403VL58eQUGBqpKlSr8DcM9paSkKDIyUjVr1tTTTz9t+/s1ZcoUlS5dWqNGjVLPnj1t4yMjIynZuRhFG4BD4OAbZKZv376qWrWqNm7cqPr16+vFF19UaGioEhMT9ffff+udd97RsGHDzI4J4BHXv39/jR07Vn5+fpo8ebJatWqlX375RbNmzdKcOXOUN29e5h3BPUVFRWns2LEqVaqUTp06pVdffVVvv/22Ro4cqREjRujUqVPq16+f2TGRRUyGhmyzWCwZzs9mwjMAZtixY4fWrl2rwMBAVatWTRMmTNB//vMf2yGa3bt3V506dUxOCeBRN3/+fE2dOlXNmjXT0aNHValSJS1dulRNmzaVJPn4+KhNmzYmp0RuN2/ePE2fPl0tWrTQgQMHFBgYqNTUVO3du5fP2g6Ioo1ss1qt6tChg1xcXCRJycnJevfddzNcwmLBggVmxAPwL3Lx4kX5+flJkgoWLKgCBQrYnX7g5eWlS5cumRUPwL/EmTNnVK1aNUlShQoV5OLionLlytm2V6hQwXZeLXAnf/zxh4KCgiRJVapUkYuLi3r27EnJdlAUbWRbWFiY3XLbtm1NSgIAGY+o4QMJgIctLS1N+fLlsy3nzZvXbn4aJycnToHCPaWlpcnZ2dm2nDdvXhUsWNDERLgfFG1k25QpU8yOgH8hyhPu5G5H2KSkpJgZDY+If15OB7iTFStWyMPDQ5KUnp6uNWvW6MCBA5KkhIQEE5PBUXDU6KOFy3sBMAXXY4cROnbsmKVxfEGInOByOsiqrFy6y2KxKC0t7SGkgaPib9qjhaINwBRcjx1m4HrsuF1KSooGDRqkVatWydnZWX379lXLli01ZcoUffjhh8qTJ4+6devGTL8AgGzhkwYAU3A9dpiB67HjdlxOB2YIDQ3V2bNnzY4B4AHiHG0AwL8GB3HhdlxOB2bYuHGjrl27ZnYMAA8Qe7QBmILrsQPIDbicDgDgQWCPNgBTMLMmgNyAy+kAAB4EijYAU3A9dgC5AV/6AQAeBIo2AFNwaQqYgcOBcTu+9AMAPAgUbQCAw8ru9diZDA2340s/PCzXrl2Tq6ur2TEAPCRMhgYAcFjly5fX+fPnbcuvvfaa4uPj7zj+0KFD8vf3fxjRAEDSzWu1f/nllypdurRt3QcffCBvb28TUwF40CjaAACHxfXYAeQGKSkpioyMVM2aNfX000/rxx9/lHTziInSpUtr1KhR6tmzp218ZGSkPD09zQkL4KHg0HEAAADgPkRFRWn8+PFq1KiRtmzZoldffVUdO3bU1q1bNWLECL366qt8yQf8y1C0AQAOi+uxA8gN5s2bp+nTp6tFixY6cOCAAgMDlZqaqr179/I7CfiXsliZGQYA4KCcnJzUtGlT26WZFi9erAYNGnBpJgAPlbOzs06ePKnHH39ckuTq6qrt27eratWqJicDYBb2aAMAHBaXZgKQG6SlpcnZ2dm2nDdvXhUsWNDERADMxh5tAAAA4D5wdA2A27FHGwAAALgPHF0D4Hbs0QYAAAAAwEBcRxsAAAAAAANRtAEAAAAAMBBFGwAAAAAAA1G0AQAAAAAwEEUbAAAAAAADUbQBAAAAADAQRRsAAAAAAAP9P9NXlrutUw5eAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "def plot_class_distribution(data_path):\n", " classes = os.listdir(data_path)\n", " counts = []\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", " 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": 12, "metadata": { "id": "CNhT3zd_QaDy" }, "outputs": [], "source": [ "train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True,\n", " num_workers=2, pin_memory=True, persistent_workers=True)\n", "eval_loader = DataLoader(test_dataset, batch_size=32,\n", " num_workers=2, pin_memory=True, persistent_workers=True)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "VBsi11SlQaDy", "outputId": "311fb87a-1edf-4ff5-faef-4ce4f5ab7dfe" }, "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": "markdown", "metadata": { "id": "98-UOkhyQaDy" }, "source": [ "# Model — EfficientNet-V2-S + ConvNeXt-Small Fusion\n", "\n", "## Architecture\n", "```\n", "Image ──► EfficientNet-V2-S backbone ──► avgpool ──► (1280,)\n", " ↓\n", " concat → (2048,)\n", " ↓\n", " Fusion Head\n", " ↓\n", " num_classes logits\n", " ↑\n", "Image ──► ConvNeXt-Small backbone ──► avgpool ──► (768,)\n", "```\n", "\n", "## Freezing strategy\n", "- **EfficientNet**: freeze all → unfreeze features[5], [6], [7]\n", "- **ConvNeXt**: freeze all → unfreeze stages[2], stages[3], layernorm" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 376, "referenced_widgets": [ "a0ff7c32ef7f4a01a842fdcb12493b6d", "78bc2bffdd774be58fc03e57be7f3e74", "a8dd92a5d0db4295bb76d69de00b4d74", "84a1060a9ab54cc2ab329e8fc34eabfa", "2203a85147af470693c9f67287b62aab", "3f04bb9c094c420b8dd8adad4e7589f4", "7be5a10d81d04ceebe7fc2383b8525e2", "81535ab05c2348fbbd3d4ee08329e612", "08634704e0ef414885aa60c9f6e67cbb", "65c4371fb09942538a7668672791bc36", "1fe72a572d7f4b809cad329698e4d44c", "c437ec6db6644aa4893ad970b2281737", "4cf49acf032b42f498c005843855b156", "23995e67141846fcb43573c3d374ead8", "6d241e5c00cb4dda91788a9b2ed0e9f1", "6f97e3c8b8e545f1bb8c7705479ad856", "502ba5a2b65b424ea6463a7f11396a5b", "9d9e1ea9820c4949b05cc02bda7ca5a9", "72b7b071d54240a8a8e30b2e2ddf404c", "635f44dd9ce0447b919a8a2c3cce9ad7", "0cbab6837bea407c905c36c67d585a42", "495994ef62034c66a4cd9888c6c26e12", "e6da36544f41498d91760de226dee668", "56139c8fbb944f41abede3ab84e67fcc", "621b963777d04737802863d1e4c42453", "9b7b5c3fce7e4e5aacc43576c87c6ca4", "856e806f75db4583bb97431df345cb0b", "e1c7b9dd75d04971801a00b0283f9f97", "5a76346db1224f0e81e28236e217c587", "81953d68e2104af79fd5bffc06d53bd4", "7ab36715a0c74ebc8a7bbcff27ff19a3", "1e2d71e62f2e4ec6b7e6efff540c65a6", "674c4f1da00c4b5494aeca3600477174" ] }, "id": "hGGqeFxGQaDy", "outputId": "d079991e-9aaa-43cf-8aa6-ad7782b5fbd0" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Downloading: \"https://download.pytorch.org/models/efficientnet_v2_s-dd5fe13b.pth\" to /root/.cache/torch/hub/checkpoints/efficientnet_v2_s-dd5fe13b.pth\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "100%|██████████| 82.7M/82.7M [00:00<00:00, 181MB/s]\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "a0ff7c32ef7f4a01a842fdcb12493b6d", "version_major": 2, "version_minor": 0 }, "text/plain": [ "config.json: 0.00B [00:00, ?B/s]" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "c437ec6db6644aa4893ad970b2281737", "version_major": 2, "version_minor": 0 }, "text/plain": [ "model.safetensors: 0%| | 0.00/201M [00:00= self.patience:\n", " self.early_stop = True\n", " else:\n", " self.best_score = val_acc\n", " self.counter = 0" ] }, { "cell_type": "markdown", "metadata": { "id": "EO_BG4lTQaDz" }, "source": [ "# Training Function" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "id": "atUfmDu7QaDz" }, "outputs": [], "source": [ "def train_model(\n", " model,\n", " epochs,\n", " train_loader,\n", " eval_loader,\n", " optimizer,\n", " criterion,\n", " device,\n", " patience=7,\n", " checkpoint_model_name=\"model\"\n", "):\n", "\n", " print(\"Starting training...\")\n", " print(f\"Epochs: {epochs} | Device: {device}\")\n", " print(\"-\" * 60)\n", "\n", " # ------------------------- SCHEDULER -------------------------\n", " num_training_steps = epochs * len(train_loader)\n", " num_warmup_steps = int(0.1 * num_training_steps)\n", "\n", " scheduler = get_cosine_schedule_with_warmup(\n", " optimizer,\n", " num_warmup_steps=num_warmup_steps,\n", " num_training_steps=num_training_steps\n", " )\n", "\n", " early_stopping = EarlyStopping(patience=patience)\n", "\n", " train_losses, train_accs = [], []\n", " val_losses, val_accs = [], []\n", "\n", " best_acc = 0.0\n", "\n", " # ------------------------- TRAIN LOOP -------------------------\n", " for epoch in range(epochs):\n", "\n", " # --------------------- TRAIN ---------------------\n", " model.train()\n", " running_loss, correct, total = 0, 0, 0\n", "\n", " for batch in tqdm(train_loader, desc=f\"Epoch {epoch+1} Training\"):\n", "\n", " images_eff = batch['pixel_values_eff'].to(device)\n", " images_cnx = batch['pixel_values_cnx'].to(device)\n", " labels = batch['labels'].to(device)\n", "\n", " optimizer.zero_grad(set_to_none=True)\n", "\n", " logits = model(images_eff, images_cnx) # forward both branches\n", "\n", " loss = criterion(logits, labels)\n", " loss.backward()\n", "\n", " optimizer.step()\n", " scheduler.step()\n", "\n", " running_loss += loss.item()\n", " preds = torch.argmax(logits, dim=1)\n", " correct += (preds == labels).sum().item()\n", " total += labels.size(0)\n", "\n", " train_loss = running_loss / len(train_loader)\n", " train_acc = 100 * correct / total\n", "\n", " train_losses.append(train_loss)\n", " train_accs.append(train_acc)\n", "\n", " # --------------------- VALIDATION ---------------------\n", " model.eval()\n", " val_running_loss, val_correct, val_total = 0, 0, 0\n", "\n", " all_preds, all_labels = [], []\n", "\n", " with torch.no_grad():\n", " for batch in tqdm(eval_loader, desc=f\"Epoch {epoch+1} Validation\"):\n", "\n", " images_eff = batch['pixel_values_eff'].to(device)\n", " images_cnx = batch['pixel_values_cnx'].to(device)\n", " labels = batch['labels'].to(device)\n", "\n", " logits = model(images_eff, images_cnx)\n", "\n", " loss = criterion(logits, labels)\n", " val_running_loss += loss.item()\n", "\n", " preds = torch.argmax(logits, dim=1)\n", " val_correct += (preds == labels).sum().item()\n", " val_total += labels.size(0)\n", "\n", " all_preds.extend(preds.cpu().numpy())\n", " all_labels.extend(labels.cpu().numpy())\n", "\n", " val_loss = val_running_loss / len(eval_loader)\n", " val_acc = 100 * val_correct / val_total\n", "\n", " val_losses.append(val_loss)\n", " val_accs.append(val_acc)\n", "\n", " print(\n", " f\"Results \"\n", " f\"Train Loss: {train_loss:.4f} | Train Acc: {train_acc:.2f}% || \"\n", " f\"Val Loss: {val_loss:.4f} | Val Acc: {val_acc:.2f}%\"\n", " )\n", " print(\"-\" * 60)\n", "\n", " # --------------------- SAVE BEST MODEL (BY ACCURACY) ---------------------\n", " if val_acc > best_acc:\n", " best_acc = val_acc\n", "\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", " \"val_acc\": val_acc\n", " }, f\"checkpoints/{checkpoint_model_name}.pt\")\n", "\n", " print(f\"Best model saved (Acc: {val_acc:.2f}%)\")\n", "\n", " # --------------------- EARLY STOPPING ---------------------\n", " early_stopping(val_acc)\n", "\n", " if early_stopping.early_stop:\n", " print(f\"Early stopping at epoch {epoch+1}\")\n", " break\n", "\n", " return (\n", " train_losses,\n", " train_accs,\n", " val_losses,\n", " val_accs,\n", " all_preds,\n", " all_labels\n", " )" ] }, { "cell_type": "markdown", "metadata": { "id": "nXdEtymaQaDz" }, "source": [ "# Train Model" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "z-cjjLNNQaDz", "outputId": "87a56605-8276-49fd-9413-76f3fe6b0019" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Starting training...\n", "Epochs: 100 | Device: cuda\n", "------------------------------------------------------------\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 1 Training: 100%|██████████| 58/58 [04:59<00:00, 5.16s/it]\n", "Epoch 1 Validation: 100%|██████████| 15/15 [01:33<00:00, 6.26s/it]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.8193 | Train Acc: 20.22% || Val Loss: 1.7239 | Val Acc: 29.78%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 29.78%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 2 Training: 100%|██████████| 58/58 [01:16<00:00, 1.33s/it]\n", "Epoch 2 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.58it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.7095 | Train Acc: 30.33% || Val Loss: 1.5493 | Val Acc: 37.61%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 37.61%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 3 Training: 100%|██████████| 58/58 [01:15<00:00, 1.31s/it]\n", "Epoch 3 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.41it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.5294 | Train Acc: 43.15% || Val Loss: 1.2945 | Val Acc: 51.74%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 51.74%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 4 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 4 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.36it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.2871 | Train Acc: 56.90% || Val Loss: 1.1316 | Val Acc: 58.26%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 58.26%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 5 Training: 100%|██████████| 58/58 [01:16<00:00, 1.32s/it]\n", "Epoch 5 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.37it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.1067 | Train Acc: 61.52% || Val Loss: 1.0254 | Val Acc: 63.70%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 63.70%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 6 Training: 100%|██████████| 58/58 [01:16<00:00, 1.32s/it]\n", "Epoch 6 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.61it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 1.0052 | Train Acc: 70.05% || Val Loss: 0.9696 | Val Acc: 67.61%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 67.61%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 7 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 7 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.56it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.9395 | Train Acc: 71.63% || Val Loss: 0.9395 | Val Acc: 72.83%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 72.83%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 8 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 8 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.44it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.8603 | Train Acc: 77.01% || Val Loss: 0.9061 | Val Acc: 73.04%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 73.04%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 9 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 9 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.36it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.7849 | Train Acc: 81.74% || Val Loss: 0.8620 | Val Acc: 77.17%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 77.17%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 10 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 10 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.33it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.7274 | Train Acc: 85.16% || Val Loss: 0.8499 | Val Acc: 78.91%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 78.91%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 11 Training: 100%|██████████| 58/58 [01:16<00:00, 1.31s/it]\n", "Epoch 11 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.41it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.6703 | Train Acc: 87.61% || Val Loss: 0.9828 | Val Acc: 75.65%\n", "------------------------------------------------------------\n", " EarlyStopping: 1/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 12 Training: 100%|██████████| 58/58 [01:15<00:00, 1.31s/it]\n", "Epoch 12 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.34it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.6314 | Train Acc: 90.38% || Val Loss: 0.8680 | Val Acc: 81.30%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 81.30%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 13 Training: 100%|██████████| 58/58 [01:16<00:00, 1.33s/it]\n", "Epoch 13 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.57it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.5780 | Train Acc: 93.64% || Val Loss: 0.8751 | Val Acc: 81.30%\n", "------------------------------------------------------------\n", " EarlyStopping: 1/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 14 Training: 100%|██████████| 58/58 [01:16<00:00, 1.32s/it]\n", "Epoch 14 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.49it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.5575 | Train Acc: 94.29% || Val Loss: 0.8805 | Val Acc: 80.22%\n", "------------------------------------------------------------\n", " EarlyStopping: 2/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 15 Training: 100%|██████████| 58/58 [01:15<00:00, 1.31s/it]\n", "Epoch 15 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.41it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.5222 | Train Acc: 96.03% || Val Loss: 0.8766 | Val Acc: 84.35%\n", "------------------------------------------------------------\n", "Best model saved (Acc: 84.35%)\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 16 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 16 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.43it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.5277 | Train Acc: 95.27% || Val Loss: 0.8721 | Val Acc: 82.17%\n", "------------------------------------------------------------\n", " EarlyStopping: 1/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 17 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 17 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.55it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4932 | Train Acc: 97.28% || Val Loss: 0.8962 | Val Acc: 81.74%\n", "------------------------------------------------------------\n", " EarlyStopping: 2/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 18 Training: 100%|██████████| 58/58 [01:16<00:00, 1.31s/it]\n", "Epoch 18 Validation: 100%|██████████| 15/15 [00:09<00:00, 1.51it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4769 | Train Acc: 98.42% || Val Loss: 0.8951 | Val Acc: 81.74%\n", "------------------------------------------------------------\n", " EarlyStopping: 3/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 19 Training: 100%|██████████| 58/58 [01:16<00:00, 1.32s/it]\n", "Epoch 19 Validation: 100%|██████████| 15/15 [00:10<00:00, 1.43it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4729 | Train Acc: 98.37% || Val Loss: 0.8778 | Val Acc: 83.04%\n", "------------------------------------------------------------\n", " EarlyStopping: 4/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 20 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 20 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.33it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4656 | Train Acc: 98.86% || Val Loss: 0.9270 | Val Acc: 81.96%\n", "------------------------------------------------------------\n", " EarlyStopping: 5/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 21 Training: 100%|██████████| 58/58 [01:15<00:00, 1.30s/it]\n", "Epoch 21 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.31it/s]\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4505 | Train Acc: 99.51% || Val Loss: 0.9856 | Val Acc: 80.65%\n", "------------------------------------------------------------\n", " EarlyStopping: 6/7\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Epoch 22 Training: 100%|██████████| 58/58 [01:15<00:00, 1.29s/it]\n", "Epoch 22 Validation: 100%|██████████| 15/15 [00:11<00:00, 1.34it/s]" ] }, { "name": "stdout", "output_type": "stream", "text": [ "Results Train Loss: 0.4657 | Train Acc: 98.53% || Val Loss: 1.0003 | Val Acc: 80.87%\n", "------------------------------------------------------------\n", " EarlyStopping: 7/7\n", "Early stopping at epoch 22\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "train_losses, train_accuracy, eval_losses, eval_accuracies, all_preds, all_labels = train_model(\n", " model = model,\n", " train_loader = train_loader,\n", " eval_loader = eval_loader,\n", " optimizer = optimizer,\n", " criterion = criterion,\n", " device = device,\n", " epochs = 100,\n", " patience = 7,\n", " checkpoint_model_name = 'best_fusion_model'\n", ")" ] }, { "cell_type": "markdown", "metadata": { "id": "Vx89B4AqQaDz" }, "source": [ "# Plotting the loss and accuracy" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 433 }, "id": "J9UFxWV0QaDz", "outputId": "57d7dd29-8f5c-4542-d677-92c2b8ec2548" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABKUAAAHqCAYAAADVi/1VAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjAsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvlHJYcgAAAAlwSFlzAAAPYQAAD2EBqD+naQAA4DRJREFUeJzs3Xd0FGUXx/HvpheSQIAEAoHQm/Qm0gWkCFKli4CIKKio6CuiiIhiF1EEC1W6IIiCFKmKdAgtIJ2EJISaTurO+8fKYgQUyCab8vucMyeTmWfv3t0wZHL3KSbDMAxERERERERERESykYO9ExARERERERERkfxHRSkREREREREREcl2KkqJiIiIiIiIiEi2U1FKRERERERERESynYpSIiIiIiIiIiKS7VSUEhERERERERGRbKeilIiIiIiIiIiIZDsVpUREREREREREJNupKCUiIiIiIiIiItlORSkREREREREREcl2KkqJSJaYNWsWJpOJ3bt32zuVOxIcHEz//v0JDAzE1dUVX19fWrduzcyZM0lPT7d3eiIiIpKLfPnll5hMJho2bGjvVHKlqKgoRo0aReXKlfHw8MDT05O6desyYcIEoqOj7Z2eiNiQk70TEBGxt2+//ZZhw4bh7+/PY489RoUKFYiLi2P9+vU88cQTREZG8tprr9k7TREREckl5s2bR1BQEDt37uTEiROUL1/e3inlGrt27aJDhw7Ex8fTv39/6tatC8Du3bt577332LJlC2vXrrVzliJiKypKiUi+tn37doYNG0ajRo1YtWoVXl5e1nMjR45k9+7dHDp0yCbPlZCQgKenp01iiYiISM50+vRp/vjjD3744Qeeeuop5s2bx5tvvmnvtG4pp92bREdH07VrVxwdHdm3bx+VK1fOcP6dd97hm2++sclz5bTXLpJfafieiNjVvn37aN++Pd7e3hQoUIBWrVqxffv2DG1SU1N56623qFChAm5ubhQuXJgmTZqwbt06a5vz588zaNAgSpYsiaurK8WLF6dz586cOXPmX5//rbfewmQyMW/evAwFqevq1avHwIEDAdi0aRMmk4lNmzZlaHPmzBlMJhOzZs2yHhs4cCAFChTg5MmTdOjQAS8vL/r168eIESMoUKAAiYmJNz1Xnz59KFasWIbhgr/88gtNmzbF09MTLy8vHn74YQ4fPvyvr0lERETs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nDVr1vDGG28wceJENmzYQO3atW8Zt3z58jg5OXHw4ME7yuN2n0r+/ZPPv3N1dcXB4eba//33309QUBCLFy+mb9++/PTTT1y7ds36aRyA2WwGLPNKFStW7KYYtrxBFRERkczbsGEDkZGRLFy4kIULF950ft68eTz00EM2fU5b3Jukp6fTpk0brly5wv/+9z8qV66Mp6cn4eHhDBw40HpPcjcGDBjA888/z7lz50hOTmb79u188cUX//m4ypUrExwcTEpKCi4uLnf9vNfd7vX/vUfYda6urnTp0oVly5bx5ZdfEhUVxdatW3n33Xetba6/B6NGjaJt27a3jP1fBTcRuTX9VSMidlG0aFE8PDz4888/bzp39OhRHBwcCAwMtB7z9fVl0KBBDBo0iPj4eJo1a8a4ceOsRSmAcuXK8dJLL/HSSy9x/PhxatWqxccff8zcuXNvmYOHhwcPPvggGzZsICwsLMPz3UqhQoUAy2o5f3f27Nk7fdlWPXv25LPPPiM2NpZFixYRFBTE/fffn+G1APj5+dG6deu7ji8iIiLZa968efj5+TFlypSbzv3www8sW7aMadOm4e7uTrly5TKs6nYr5cqVY8eOHaSmpuLs7HzLNra4Nzl48CDHjh1j9uzZDBgwwHr876scA9bpFv4rb4DevXvz4osvsmDBAq5du4azs3OGD99up1OnTmzbto2lS5fSp0+f/2xfqFChm157SkoKkZGR//nYv+vVqxezZ89m/fr1HDlyBMMwMuR7/bU7OzvrvkzExjR8T0TswtHRkYceeogff/yRM2fOWI9HRUUxf/58mjRpYh1ed/ny5QyPLVCgAOXLlyc5ORmwrFyXlJSUoU25cuXw8vKytrmdN998E8MweOyxxzLM8XTdnj17mD17NgClS5fG0dGRLVu2ZGjz5Zdf3tmL/ptevXqRnJzM7NmzWb16NT179sxwvm3btnh7e/Puu++Smpp60+MvXrx4188pIiIiWePatWv88MMPdOzYkR49ety0jRgxgri4OOvQ/e7du7N//36WLVt2UyzDMKxtLl26dMseRtfb2OLe5PocS9djXt//7LPPMrQrWrQozZo1Y8aMGYSGht4yn+uKFClC+/btmTt3LvPmzaNdu3YUKVLkP3MZNmwYxYsX56WXXuLYsWM3nb9w4QITJkywfl+uXLmbXvvXX399255St9O6dWt8fX1ZtGgRixYtokGDBhmG+vn5+dGiRQu++uqrWxa8dF8mcu/UU0pEstSMGTNYvXr1Tceff/55JkyYwLp162jSpAnPPPMMTk5OfPXVVyQnJ/PBBx9Y21atWpUWLVpQt25dfH192b17N0uWLGHEiBEAHDt2jFatWtGzZ0+qVq2Kk5MTy5YtIyoqit69e/9rfg888ABTpkzhmWeeoXLlyjz22GNUqFCBuLg4Nm3axIoVK6w3Pz4+Pjz66KN8/vnnmEwmypUrx88//3xPcwjUqVOH8uXLM2bMGJKTk2/69NDb25upU6fy2GOPUadOHXr37k3RokUJDQ1l5cqVNG7c+I66wYuIiEjWW7FiBXFxcTzyyCO3PH///fdTtGhR5s2bR69evXj55ZdZsmQJjz76KIMHD6Zu3bpcuXKFFStWMG3aNGrWrMmAAQOYM2cOL774Ijt37qRp06YkJCTw66+/8swzz9C5c2eb3JtUrlyZcuXKMWrUKMLDw/H29mbp0qW3XDxm8uTJNGnShDp16jB06FDKlCnDmTNnWLlyJcHBwRnaDhgwgB49egDw9ttv31EuhQoVYtmyZXTo0IFatWrRv39/6tatC8DevXtZsGABjRo1srYfMmQIw4YNo3v37rRp04b9+/ezZs2aOyqA/Z2zszPdunVj4cKFJCQk8NFHH93UZsqUKTRp0oTq1avz5JNPUrZsWaKioti2bRvnzp1j//79d/WcIvIXu637JyJ52vWld2+3hYWFGYZhGHv37jXatm1rFChQwPDw8DBatmxp/PHHHxliTZgwwWjQoIFRsGBBw93d3ahcubLxzjvvGCkpKYZhGMalS5eM4cOHG5UrVzY8PT0NHx8fo2HDhsbixYvvON89e/YYffv2NQICAgxnZ2ejUKFCRqtWrYzZs2cb6enp1nYXL140unfvbnh4eBiFChUynnrqKePQoUO3XHbZ09PzX59zzJgxBmCUL1/+tm02btxotG3b1vDx8THc3NyMcuXKGQMHDjR27959x69NREREslanTp0MNzc3IyEh4bZtBg4caDg7OxuXLl0yDMMwLl++bIwYMcIoUaKE4eLiYpQsWdJ4/PHHrecNwzASExONMWPGGGXKlDGcnZ2NYsWKGT169DBOnjxpbWOLe5OQkBCjdevWRoECBYwiRYoYTz75pLF///6bYhiGYRw6dMjo2rWrUbBgQcPNzc2oVKmS8cYbb9wUMzk52ShUqJDh4+NjXLt27U7eRquIiAjjhRdeMCpWrGi4ubkZHh4eRt26dY133nnHiImJsbZLT083/ve//xlFihQxPDw8jLZt2xonTpwwSpcubTz++OPWdtfvS3ft2nXb51y3bp0BGCaTyXqf+k8nT540BgwYYBQrVsxwdnY2SpQoYXTs2NFYsmTJXb0+EbnBZBj/6GspIiIiIiIikglpaWkEBATQqVMnpk+fbu90RCSH0pxSIiIiIiIiYlPLly/n4sWLGSZPFxH5J/WUEhEREREREZvYsWMHBw4c4O2336ZIkSLs3bvX3imJSA6mnlIiIiIiIiJiE1OnTuXpp5/Gz8+POXPm2DsdEcnh1FNKRERERERERESynXpKiYiIiIiIiIhItlNRSkREREREREREsp2TvRPIbmazmYiICLy8vDCZTPZOR0RERHIgwzCIi4sjICAABwd9hvd3upcSERGR/3Kn91L5rigVERFBYGCgvdMQERGRXCAsLIySJUvaO40cRfdSIiIicqf+614q3xWlvLy8AMsb4+3tbedsREREJCeKjY0lMDDQet8gN+heSkRERP7Lnd5L5bui1PVu5t7e3rqREhERkX+l4Wk3072UiIiI3Kn/upfSJAkiIiIiIiIiIpLtVJQSEREREREREZFsp6KUiIiIiIiIiIhku3w3p5SIiEhmpKenk5qaau80xAZcXFz+dYliyRxdK7mPrgkREcluKkqJiIjcAcMwOH/+PNHR0fZORWzEwcGBMmXK4OLiYu9U8hRdK7mXrgkREcluKkqJiIjcget/ZPv5+eHh4aFV2XI5s9lMREQEkZGRlCpVSj9PG9K1kjvpmhAREXtQUUpEROQ/pKenW//ILly4sL3TERspWrQoERERpKWl4ezsbO908gRdK7mbrgkREcluGjQuIiLyH67Pi+Ph4WHnTMSWrg9RSk9Pt3MmeYeuldxN14SIiGQ3FaVERETukIaz5C36eWYdvbe5k35uIiKS3VSUEhEREckFtmzZQqdOnQgICMBkMrF8+fIM5w3DYOzYsRQvXhx3d3dat27N8ePHM7S5cuUK/fr1w9vbm4IFC/LEE08QHx+fja9CRERE5AYVpUREROSuBAUFMWnSJHunke8kJCRQs2ZNpkyZcsvzH3zwAZMnT2batGns2LEDT09P2rZt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OnViypQpt31McnIyycnJ1u9jY2OzI1VqBRbkjY5VGfvjYSb+cpSagQWpH+SbLc8tIiJyrz755BMGDx7MAw88QJEiRfjf//6XZb8758+ff1OB5O233+b1119n8eLFjB07lrfffpvixYszfvx4Bg4cCEDBggX54YcfGDduHElJSVSoUIEFCxZQrVo1jhw5wpYtW5g0aRKxsbGULl2ajz/++K56Zov8l+y4TmbMmEHXrl1v+Ql69+7deeyxx7h06RKPP/44SUlJfPrpp4waNYoiRYrQo0cPa9ulS5cyatQo+vTpQ0JCAuXLl+e9996zaa4iIvfCbDY4eTGeXWeusvvMFXafvUrolUR7p2V1vdjk7+2G319f/b1dKepl+ern7UbRAq64ODnYO1WreylUuTjaN3+TkUPWSDaZTP850XlISAitW7fmhRdeoG3btkRGRvLyyy9Tv379m5bHvW7cuHG89dZbNx2PiYnB2ztrJyE3DIPnFwazYn8Efl6urHyuKUW97n31GhERsY+kpCTrald/Hwoludu//VxjY2Px8fHJlvuF3Obf3htdK7mbfn4ikpWS09I5eC7GWoTaE3qV6MTUDG1MJihXtAAujg6YDQOzYZBuNjAbkG627BuGQbphkG7mxnnzX20NA7OZv87futSRG4tNtvb3QlXnWiWy5LXe6b1UruopNXHiRBo3bszLL78MWMbJe3p60rRpUyZMmJBhCeTrRo8enWEOidjYWAIDA7MlX5PJxMRu1QmJjOXEhXieW7CP755ogJOdK5EiIiIiIiIiWSk6MYU9Z69ai1AHwmNIScs41NnN2YHagYWoF1SIekG+1C5V0KYLhf2zWOXoYMrTxaY79fceVfaWq4pSiYmJODllTPn6hKe36/Dl6uqKq6v9eid5ujoxrX8dHvliK9tOXebTX4/xctvKdstHRERERERExJYMwyDsyjV2n71iLUIdvxB/U7siBVyoV9rXWoSqFuCNcxZ22nBwMOGAKXcVPvIZu/5s/mtp49GjRxMeHs6cOXMA6NSpE08++SRTp061Dt8bOXIkDRo0yNKljDOrvJ8X73evwbML9jFl40nqlCpEqyr+9k5LRERERERE5K6lpZs5EhnH7rNX2H3mKrvOXOFCXPJN7coW9aT+X0Wo+kG+lC7soZXpJQO7FqX+a2njyMhIQkNDrecHDhxIXFwcX3zx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", "text/plain": [ "
" ] }, "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", "metadata": { "id": "bPbPHC5eQaDz" }, "source": [ "# Confusion Matrix & Classification Report" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "id": "_qXAbeBMQaDz" }, "outputs": [], "source": [ "def print_classification_report(all_labels, all_preds):\n", " class_names = train_dataset.dataset.classes\n", " report = classification_report(\n", " all_labels,\n", " all_preds,\n", " target_names=class_names\n", " )\n", " print(report)\n", "\n", "def plot_confusion_matrix_normalized(all_labels, all_preds):\n", " class_names = train_dataset.dataset.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\",\n", " xticklabels=class_names, yticklabels=class_names)\n", " plt.xlabel(\"Predicted\")\n", " plt.ylabel(\"True\")\n", " plt.title(\"Confusion Matrix\")\n", " plt.show()" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000, "referenced_widgets": [ "6cbff488f4f24dde8ca3f4ebcd36c5ea", "38294808ce794659bc53070b5d878bab", "cc2e3d368e074fda8661b5c3674c3c22", "217daf5f4af94f258980f82aeacdf8d8", "54f1a103feba456fab993880b1ecfa96", "90980cd77e1e4116aef3377c99424911", "e6c61f38fd474613b1308407d69177df", "8f827b632f6d49948a021666de6ea747", "8dea9a685bdd4c4597baf02dc5c2e3b8", "db337c30d78d49548cb6ee1aef0ad391", "32072b76478f4a27b0160d485f6c3877" ] }, "id": "UowDvFrke6yQ", "outputId": "46740101-9bfe-46a6-a936-a32a7ff5abf2" }, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "6cbff488f4f24dde8ca3f4ebcd36c5ea", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Loading weights: 0%| | 0/342 [00:00" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loaded_model = FusionClassifier(\n", " num_classes=len(class_to_idx),\n", " convnext_model_name=convnext_model_name\n", ").to(device)\n", "\n", "checkpoint_path = \"checkpoints/best_fusion_model.pt\"\n", "checkpoint = torch.load(checkpoint_path)\n", "loaded_model.load_state_dict(checkpoint['model_state_dict'])\n", "\n", "print(f\"Best model loaded from {checkpoint_path} (Validation Accuracy: {checkpoint['val_acc']:.2f}%) at epoch {checkpoint['epoch']+1}\")\n", "\n", "loaded_model.eval()\n", "\n", "all_labels_loaded_model = []\n", "all_preds_loaded_model = []\n", "\n", "with torch.no_grad():\n", " for batch in tqdm(eval_loader, desc=\"Making predictions on eval_loader\"):\n", " images_eff = batch['pixel_values_eff'].to(device)\n", " images_cnx = batch['pixel_values_cnx'].to(device)\n", " labels = batch['labels'].to(device)\n", "\n", " logits = loaded_model(images_eff, images_cnx)\n", " preds = torch.argmax(logits, dim=1)\n", "\n", " all_labels_loaded_model.extend(labels.cpu().numpy())\n", " all_preds_loaded_model.extend(preds.cpu().numpy())\n", "\n", "print(\"\\n--- Classification Report (from loaded model) ---\")\n", "print_classification_report(all_labels_loaded_model, all_preds_loaded_model)\n", "\n", "print(\"\\n--- Confusion Matrix (from loaded model) ---\")\n", "plot_confusion_matrix_normalized(all_labels_loaded_model, all_preds_loaded_model)" ] } ], "metadata": { "accelerator": "GPU", "colab": { "gpuType": "T4", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "name": "python3" }, "language_info": { "name": "python", "version": "3.10.0" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "08634704e0ef414885aa60c9f6e67cbb": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "0cbab6837bea407c905c36c67d585a42": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1e2d71e62f2e4ec6b7e6efff540c65a6": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1f641e6227a74723b221bbeff1b02e13": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1fe72a572d7f4b809cad329698e4d44c": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "217daf5f4af94f258980f82aeacdf8d8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_db337c30d78d49548cb6ee1aef0ad391", "placeholder": "​", "style": "IPY_MODEL_32072b76478f4a27b0160d485f6c3877", "value": " 342/342 [00:00<00:00, 815.19it/s, Materializing param=layernorm.weight]" } }, "2203a85147af470693c9f67287b62aab": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "23995e67141846fcb43573c3d374ead8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_72b7b071d54240a8a8e30b2e2ddf404c", "max": 200935760, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_635f44dd9ce0447b919a8a2c3cce9ad7", "value": 200935760 } }, "2de9e107e7414f8898a97b979c56fe29": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9aa552394c384c2dbc1c5bb15e4190ee", "max": 266, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_f8296d1a2f134a26b8e5103f73073c81", "value": 266 } }, "2f9f1bdcce60481b8cf28c941b68a308": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "32072b76478f4a27b0160d485f6c3877": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "38294808ce794659bc53070b5d878bab": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_90980cd77e1e4116aef3377c99424911", "placeholder": "​", "style": "IPY_MODEL_e6c61f38fd474613b1308407d69177df", "value": "Loading weights: 100%" } }, "3cb15ef1c7264f1185a7fc6b5d7c2df3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_b53f782eee9644b5ad1eaaed362bea07", "IPY_MODEL_2de9e107e7414f8898a97b979c56fe29", "IPY_MODEL_6ac3f2449f524cd8967ac2858db401a5" ], "layout": "IPY_MODEL_2f9f1bdcce60481b8cf28c941b68a308" } }, "3f04bb9c094c420b8dd8adad4e7589f4": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "495994ef62034c66a4cd9888c6c26e12": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4cf49acf032b42f498c005843855b156": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_502ba5a2b65b424ea6463a7f11396a5b", "placeholder": "​", "style": "IPY_MODEL_9d9e1ea9820c4949b05cc02bda7ca5a9", "value": "model.safetensors: 100%" } }, "502ba5a2b65b424ea6463a7f11396a5b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "54f1a103feba456fab993880b1ecfa96": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "56139c8fbb944f41abede3ab84e67fcc": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e1c7b9dd75d04971801a00b0283f9f97", "placeholder": "​", "style": "IPY_MODEL_5a76346db1224f0e81e28236e217c587", "value": "Loading weights: 100%" } }, "5a76346db1224f0e81e28236e217c587": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "5ace66a707064845a87141f4705d4208": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "621b963777d04737802863d1e4c42453": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_81953d68e2104af79fd5bffc06d53bd4", "max": 342, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_7ab36715a0c74ebc8a7bbcff27ff19a3", "value": 342 } }, "635f44dd9ce0447b919a8a2c3cce9ad7": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "65c4371fb09942538a7668672791bc36": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "674c4f1da00c4b5494aeca3600477174": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "6ac3f2449f524cd8967ac2858db401a5": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e30a9b9dc8db49acbb92ac7729f3b894", "placeholder": "​", "style": "IPY_MODEL_5ace66a707064845a87141f4705d4208", "value": " 266/266 [00:00<00:00, 9.81kB/s]" } }, "6cbff488f4f24dde8ca3f4ebcd36c5ea": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_38294808ce794659bc53070b5d878bab", "IPY_MODEL_cc2e3d368e074fda8661b5c3674c3c22", "IPY_MODEL_217daf5f4af94f258980f82aeacdf8d8" ], "layout": "IPY_MODEL_54f1a103feba456fab993880b1ecfa96" } }, "6d241e5c00cb4dda91788a9b2ed0e9f1": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_0cbab6837bea407c905c36c67d585a42", "placeholder": "​", "style": "IPY_MODEL_495994ef62034c66a4cd9888c6c26e12", "value": " 201M/201M [00:02<00:00, 336MB/s]" } }, "6f97e3c8b8e545f1bb8c7705479ad856": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "72b7b071d54240a8a8e30b2e2ddf404c": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "78bc2bffdd774be58fc03e57be7f3e74": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_3f04bb9c094c420b8dd8adad4e7589f4", "placeholder": "​", "style": "IPY_MODEL_7be5a10d81d04ceebe7fc2383b8525e2", "value": "config.json: " } }, "7ab36715a0c74ebc8a7bbcff27ff19a3": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "7be5a10d81d04ceebe7fc2383b8525e2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "81535ab05c2348fbbd3d4ee08329e612": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "81953d68e2104af79fd5bffc06d53bd4": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "84a1060a9ab54cc2ab329e8fc34eabfa": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_65c4371fb09942538a7668672791bc36", "placeholder": "​", "style": "IPY_MODEL_1fe72a572d7f4b809cad329698e4d44c", "value": " 69.6k/? [00:00<00:00, 5.82MB/s]" } }, "856e806f75db4583bb97431df345cb0b": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8dea9a685bdd4c4597baf02dc5c2e3b8": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "8f827b632f6d49948a021666de6ea747": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "90980cd77e1e4116aef3377c99424911": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9aa552394c384c2dbc1c5bb15e4190ee": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9b7b5c3fce7e4e5aacc43576c87c6ca4": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1e2d71e62f2e4ec6b7e6efff540c65a6", "placeholder": "​", "style": "IPY_MODEL_674c4f1da00c4b5494aeca3600477174", "value": " 342/342 [00:00<00:00, 603.91it/s, Materializing param=layernorm.weight]" } }, "9d9e1ea9820c4949b05cc02bda7ca5a9": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "a0ff7c32ef7f4a01a842fdcb12493b6d": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_78bc2bffdd774be58fc03e57be7f3e74", "IPY_MODEL_a8dd92a5d0db4295bb76d69de00b4d74", "IPY_MODEL_84a1060a9ab54cc2ab329e8fc34eabfa" ], "layout": "IPY_MODEL_2203a85147af470693c9f67287b62aab" } }, "a8dd92a5d0db4295bb76d69de00b4d74": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_81535ab05c2348fbbd3d4ee08329e612", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_08634704e0ef414885aa60c9f6e67cbb", "value": 1 } }, "b53f782eee9644b5ad1eaaed362bea07": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1f641e6227a74723b221bbeff1b02e13", "placeholder": "​", "style": "IPY_MODEL_f4b9970a61b8444e87f28b5dae0eee96", "value": "preprocessor_config.json: 100%" } }, "c437ec6db6644aa4893ad970b2281737": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_4cf49acf032b42f498c005843855b156", "IPY_MODEL_23995e67141846fcb43573c3d374ead8", "IPY_MODEL_6d241e5c00cb4dda91788a9b2ed0e9f1" ], "layout": "IPY_MODEL_6f97e3c8b8e545f1bb8c7705479ad856" } }, "cc2e3d368e074fda8661b5c3674c3c22": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8f827b632f6d49948a021666de6ea747", "max": 342, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_8dea9a685bdd4c4597baf02dc5c2e3b8", "value": 342 } }, "db337c30d78d49548cb6ee1aef0ad391": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e1c7b9dd75d04971801a00b0283f9f97": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e30a9b9dc8db49acbb92ac7729f3b894": { "model_module": "@jupyter-widgets/base", "model_module_version": "1.2.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e6c61f38fd474613b1308407d69177df": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "e6da36544f41498d91760de226dee668": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_56139c8fbb944f41abede3ab84e67fcc", "IPY_MODEL_621b963777d04737802863d1e4c42453", "IPY_MODEL_9b7b5c3fce7e4e5aacc43576c87c6ca4" ], "layout": "IPY_MODEL_856e806f75db4583bb97431df345cb0b" } }, "f4b9970a61b8444e87f28b5dae0eee96": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "DescriptionStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "f8296d1a2f134a26b8e5103f73073c81": { "model_module": "@jupyter-widgets/controls", "model_module_version": "1.5.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 }