{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "RYK8x1-pEn1N" }, "source": [ "# **Project 3 : Neural Network Using Fast.AI**\n", "-- Anagh Sharma\n", "\n", "---\n", "\n" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "D1QQwF0U2SuH", "outputId": "c47ab69e-6fc4-4a6e-950d-5db0346657ad" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m719.8/719.8 kB\u001b[0m \u001b[31m4.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m510.5/510.5 kB\u001b[0m \u001b[31m28.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m116.3/116.3 kB\u001b[0m \u001b[31m15.1 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m194.1/194.1 kB\u001b[0m \u001b[31m26.4 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m134.8/134.8 kB\u001b[0m \u001b[31m19.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m1.6/1.6 MB\u001b[0m \u001b[31m25.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m23.7/23.7 MB\u001b[0m \u001b[31m27.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m823.6/823.6 kB\u001b[0m \u001b[31m57.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m14.1/14.1 MB\u001b[0m \u001b[31m42.5 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m731.7/731.7 MB\u001b[0m \u001b[31m787.3 kB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m410.6/410.6 MB\u001b[0m \u001b[31m1.3 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m121.6/121.6 MB\u001b[0m \u001b[31m6.8 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m56.5/56.5 MB\u001b[0m \u001b[31m8.0 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m124.2/124.2 MB\u001b[0m \u001b[31m5.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m196.0/196.0 MB\u001b[0m \u001b[31m2.9 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m166.0/166.0 MB\u001b[0m \u001b[31m5.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m99.1/99.1 kB\u001b[0m \u001b[31m10.7 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[2K \u001b[90m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0m \u001b[32m21.1/21.1 MB\u001b[0m \u001b[31m13.2 MB/s\u001b[0m eta \u001b[36m0:00:00\u001b[0m\n", "\u001b[?25h" ] } ], "source": [ "!pip install -Uqq fastbook" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "-VqO44VoCirB", "outputId": "437bb523-d93c-49cd-c959-a052080715b3" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Mounted at /content/gdrive\n" ] } ], "source": [ "import numpy as np\n", "import pandas as pd\n", "import fastbook\n", "fastbook.setup_book()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "bvLX7Py9Djci" }, "outputs": [], "source": [ "from fastbook import *" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 54 }, "id": "408t798o_vGY", "outputId": "edd0352b-8b2f-4d4b-f1e3-b1a4b0a85583" }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "
\n", " \n", " 100.03% [15687680/15683414 00:00<00:00]\n", "
\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "MNIST dataset URL: /root/.fastai/data/mnist_png\n" ] } ], "source": [ "from fastai.vision.all import *\n", "path = untar_data(URLs.MNIST)\n", "\n", "print(f\"MNIST dataset URL: {path}\")" ] }, { "cell_type": "markdown", "metadata": { "id": "g-7kuwnRGzD7" }, "source": [ "The MNIST database is a large database of handwritten digits that is commonly used for training various image processing systems. The database is also widely used for training and testing in the field of machine learning." ] }, { "cell_type": "markdown", "metadata": { "id": "Td4L0_uFBxzB" }, "source": [ "Using fatai's untar_data procedure, we will download and decompress the data from the above url in one go. The data will only be downloaded the first time." ] }, { "cell_type": "markdown", "metadata": { "id": "2OTccHiCB_Cq" }, "source": [ "We have a different directory for every digit, each of them containing images of their corresponding digit." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "hGHH7c25VSEH" }, "outputs": [], "source": [ "block = DataBlock(\n", " blocks=(ImageBlock, CategoryBlock),\n", " get_items=get_image_files,\n", " splitter=RandomSplitter(valid_pct=0.2, seed=42),\n", " get_y=parent_label,\n", " batch_tfms=aug_transforms(mult=2., do_flip=False))" ] }, { "cell_type": "markdown", "metadata": { "id": "250juv-mCOzt" }, "source": [ "The DataBlock class is a generic container to quickly build Datasets and DataLoaders.\n", "\n", "blocks: This is the way of telling the API that our inputs are images and our targets are categories.\n", "\n", "get_items: expects a function to assemble our items inside the data block.\n", "\n", "splitter: Controls how our validation set is created.\n", "\n", "get_y: expects a function to label data according to file name.\n", "\n", "batch_tfms: These are transformations applied to batched data samples on the GPU." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "id": "NrzK6WUEXbay", "outputId": "7460415c-ba68-4dc7-c09f-e314ae083cc3" }, "outputs": [ { "data": { "image/png": "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xYowq3Sczf79+7P54MGDw6y+vr7iz81paWkJs379+h2SPUvkiS0AAABFU2wBAAAommILAABA0RRbAAAAiqbYAgAAUDTFFgAAgKIptgAAABTtkM+xzc1mSymlRx55JMyGDBkSZmeddVaYdTazKTcTcvHixWH21ltvhdl//vOf7J65OVy58+Rm1V555ZXZPc8999ww27lzZ5gtWrQozHLzg1PKz9mCI1lDQ0OYfe1rX8uuzV2TQPnWrFkTZk8++WSY1dTUZD/3vPPOC7NLL700zOrq6sLs6quvzu45evToMMvd8y1cuDDM9uzZk92TrpO7h962bVt27YMPPhhmufvD0n5/29vbwyw3k7e2trbiPVtbWyvaMzeXuCfyxBYAAICiKbYAAAAUTbEFAACgaIotAAAARVNsAQAAKJpiCwAAQNEO+bifzjzxxBNhtnbt2jCbMGFCmI0fPz67Z+614q+88kqYbdy4McxWrVqV3XPv3r1hNnbs2DDLjfuZNGlSds9jjjkmzHJje3r1iv9/x0c/+tHsnv369Quz3K9fbvwQ9AQ/+tGPwqxv377Ztb/85S+7+jhAIXL3QrnxKimltGPHjjA76qijwix3X3LKKadk9xw1alSYjRs3LsxGjBgRZnfffXd2T7qHxsbGah/hsBg5cmSYDRgwIMxy435y43xSyo8Vveeee8Ksubk5+7k9jSe2AAAAFE2xBQAAoGiKLQAAAEVTbAEAACiaYgsAAEDRFFsAAACKVvVxP9u3bw+zv/zlL2H2xhtvhFnuddoppdTU1BRmu3btCrOampowO/bYY7N7nn766WE2ceLEMDv//PPDbODAgdk9c+cdPnx4mH3rW98Ks/Xr12f3zP2e5bJly5ZlPxdKkBux9clPfjLMHnjggeznPv/88xWfCShbW1tbmG3ZsiW7dvHixWGWG8E3Y8aMMLv88suze+buTc4444ww+8IXvhBm//jHP7J7LlmyJJtDV8qNyhoyZEhFn9m7d76SnXzyyWF2wgknhNm6devCbP/+/Z0frDCe2AIAAFA0xRYAAICiKbYAAAAUTbEFAACgaIotAAAARVNsAQAAKFrVx/1UavPmzYd9z46OjjAbOXJkdu3UqVPDbPr06WGWe4X3k08+md1z27ZtYZZ7xfepp54aZp/61Keye+Zec96vX78wM+6HUuTGaN15551hlvsacddd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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "loaders = block.dataloaders(path/\"training\")\n", "loaders.train.show_batch(max_n=4, nrows=1)" ] }, { "cell_type": "markdown", "metadata": { "id": "cCjD7QIICogs" }, "source": [ "block.dataloaders creates a DataLoaders object from the source we give it. Here we gave it the training folder. The sample of images shown are outputs from the created training data loader." ] }, { "cell_type": "markdown", "metadata": { "id": "HputY70pGWpE" }, "source": [ "**Training the CNN Leaner**" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "qvluhU1EXgQV", "outputId": "65a04c8c-665e-4f24-aad9-be1d861d7f90" }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/usr/local/lib/python3.10/dist-packages/fastai/vision/learner.py:301: UserWarning: `cnn_learner` has been renamed to `vision_learner` -- please update your code\n", " warn(\"`cnn_learner` has been renamed to `vision_learner` -- please update your code\")\n", "Downloading: \"https://download.pytorch.org/models/resnet34-b627a593.pth\" to /root/.cache/torch/hub/checkpoints/resnet34-b627a593.pth\n", "100%|██████████| 83.3M/83.3M [00:00<00:00, 121MB/s]\n" ] } ], "source": [ "digits_learner = cnn_learner(loaders, resnet34, metrics=accuracy)" ] }, { "cell_type": "markdown", "metadata": { "id": "cZmLWFYhCvJ8" }, "source": [ "cnn_learner builds a convolutional neural network style learner from dataloaders and an architecture. In our case we use the ResNet architecture. The 34 refers to the number of layers in this variant of the architecture." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 471 }, "id": "uh8bmbo0YoHs", "outputId": "695a69b9-1c2c-42f9-c701-298e08dde2cc" }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "SuggestedLRs(valley=0.001737800776027143)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAG1CAYAAADwRl5QAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABZ+UlEQVR4nO3deXhU5dnH8e9M9n0lISEhYQ1r2MGgiMgmKIIbFKmgtVoRK9YXq1Rri4pgqxVbFcVdC0VBQVwQUUFAdjDIvkPClgAh+56Z948hg4EASUhyZia/z3XNhXPmzMx9HjOZO/ezmaxWqxURERERF2Q2OgARERGRuqJER0RERFyWEh0RERFxWUp0RERExGUp0RERERGXpURHREREXJYSHREREXFZSnRERETEZbkbHUB9s1gsHDt2jICAAEwmk9HhiIiISBVYrVZycnKIjo7GbK56nabBJTrHjh0jNjbW6DBERESkBlJTU4mJiany+Q0u0QkICABsDRUYGGhwNCIiIlIV2dnZxMbG2r/Hq6rBJTrl3VWBgYFKdERERJxMdYedaDCyiIiIuCwlOiIiIuKyGlzXVVWVlZVRUlJidBguy8PDAzc3N6PDEBERF6dE5zxWq5UTJ06QmZlpdCguLzg4mMaNG2uav4iI1BklOucpT3IiIiLw9fXVl3AdsFqt5Ofnk56eDkBUVJTBEYmIiKtSovMrZWVl9iQnLCzM6HBcmo+PDwDp6elERESoG0tEROqEBiP/SvmYHF9fX4MjaRjK21ljoUREpK4o0amEuqvqh9pZRETqmhIdERERcVlKdERERMRlKdGpK5YyOLgSts63/WspMzqiS4qPj2fGjBn2+yaTiYULFxoWj4iISG3QrKu6sGMRfPM4ZB87dywwGm54AdrdbFxcIiIiDYwqOrVtxyL4ZGzFJAcg+7jt+I5FxsQlIiJSxzannOG3b6/jmS92GB2KnRKd2mQps1VysFby4Nlj3zxR691Ys2bNIjo6GovFUuH48OHD+d3vfsf+/fsZPnw4kZGR+Pv706NHD7777rtqvUdqaiojR44kODiY0NBQhg8fzqFDhwBYsWIFHh4enDhxosJzHnnkEfr06XNF1yYiIs4jPbuQVftOseVIptGh2CnRqU2HV19YyanACtlHbefVojvuuIPTp0+zbNky+7GMjAy++eYbxowZQ25uLkOHDuX777/n559/5oYbbmDYsGGkpKRU6fVLSkoYPHgwAQEBrFy5kp9++gl/f39uuOEGiouLufbaa2nevDkfffRRhefMnj2b3/3ud7V6rSIi4rgKS2x/cPt4OM4isEp0alNuWu2eV0UhISEMGTKEOXPm2I/Nnz+f8PBw+vXrR6dOnfjDH/5Ahw4daNWqFc8++ywtWrRg0aKqdaN9/PHHWCwW3n77bTp27Ejbtm157733SElJYfny5QDce++9vPfee/bnfPHFFxQWFjJy5MhavVYREXFcBSW2HgtvD8dJLxwnElfgH1m751XDmDFj+PTTTykqKgJg9uzZ/OY3v8FsNpObm8ukSZNo27YtwcHB+Pv7s3PnzipXdLZs2cK+ffsICAjA398ff39/QkNDKSwsZP/+/QDcfffd7Nu3j7Vr1wLw/vvvM3LkSPz8/Gr9WkVExDEV2hMdx6noaNZVbYrrbZtdlX2cysfpmGyPx/Wu9bceNmwYVquVr776ih49erBy5UpefvllACZNmsTSpUt58cUXadmyJT4+Ptx+++0UFxdX6bVzc3Pp1q0bs2fPvuCxRo0aARAREcGwYcN47733aNasGYsXL7ZXe0REpGEoUKLj4sxutinkn4wFTFRMds5ud3DDdNt5tczb25tbb72V2bNns2/fPhISEujatSsAP/30E3fffTe33HILYEtcygcSV0XXrl35+OOPiYiIIDAw8KLn/f73v2f06NHExMTQokULrr766iu6JhERcS4ao9MQtLsZRn4IgVEVjwdG247X4To6Y8aM4auvvuLdd99lzJgx9uOtWrXis88+Izk5mS1btnDnnXdeMEPrcq8bHh7O8OHDWblyJQcPHmT58uU8/PDDHDlyxH7e4MGDCQwM5LnnnuOee+6p1WsTERHHV6gxOg1Eu5vhkW0w7ku47R3bv49srfPFAq+//npCQ0PZvXs3d955p/34v/71L0JCQujduzfDhg1j8ODB9mpPVfj6+rJixQqaNm3KrbfeStu2bbn33nspLCysUOExm83cfffdlJWVMXbs2Fq9NhERcXzliY4jVXTUdVVXzG7QrH7XkDGbzRw7duH09vj4eH744YcKxyZMmFDh/vldWVZrxTFGjRs35oMPPrhsDEePHmXo0KFERUVd9lwREXEtBcW2RMdLiY64mqysLLZu3cqcOXOqPG1dRERcS2Gp443RUaIjtWL48OGsX7+eBx54gIEDBxodjoiIGKC8oqNZV+JyNJVcRESKSs+O0fF0nCHAjhOJiIiIODV7RcfdcSo6SnQqcf5AXKkbamcREddSeLai4+2pRMcheXh4AJCfn29wJA1DeTuXt7uIiDg3R6zoaIzOr7i5uREcHEx6ejpgWz/GZDIZHJXrsVqt5Ofnk56eTnBwMG5ujvOBEBGRmrOvjOxAFR0lOudp3LgxgD3ZkboTHBxsb28REXF+jrgyshKd85hMJqKiooiIiKCkpMTocFyWh4eHKjkiIi5GKyM7ETc3N30Ri4iIVJHVanXI3csdp7YkIiIiTqukzIrl7GRaJTqVmD59OiaTiUceeeSS582bN482bdrg7e1Nx44d+frrr+snQBEREbmo8moOONYYHYeIZMOGDbz55pskJiZe8rzVq1czevRo7r33Xn7++WdGjBjBiBEj2LZtWz1FKiIiIpUpOpvomE3g6eYQ6QXgAIlObm4uY8aM4a233iIkJOSS577yyivccMMNPPbYY7Rt25Znn32Wrl278uqrr9ZTtCIiIlKZX4/PcaSlWQxPdCZMmMCNN97IgAEDLnvumjVrLjhv8ODBrFmz5qLPKSoqIjs7u8JNREREapd9DR0HGp8DBs+6mjt3Lps3b2bDhg1VOv/EiRNERkZWOBYZGcmJEycu+pxp06YxZcqUK4pTRERELs0RZ1yBgRWd1NRUJk6cyOzZs/H29q6z95k8eTJZWVn2W2pqap29l4iISEPliIsFgoEVnU2bNpGenk7Xrl3tx8rKylixYgWvvvoqRUVFF6xj07hxY9LS0iocS0tLu+Tqul5eXnh5edVu8CIiIlKBKjrn6d+/P1u3biU5Odl+6969O2PGjCE5ObnSxfqSkpL4/vvvKxxbunQpSUlJ9RW2iIiIVKLIAVdFBgMrOgEBAXTo0KHCMT8/P8LCwuzHx44dS5MmTZg2bRoAEydOpG/fvrz00kvceOONzJ07l40bNzJr1qx6j19ERETOUUWnBlJSUjh+/Lj9fu/evZkzZw6zZs2iU6dOzJ8/n4ULF16QMImIiEj9Kp915WiJjkPtdbV8+fJL3ge44447uOOOO+onIBEREamSgmLHHIzsWNGIiIiIUyosdcwxOkp0RERE5Io5ateVEh0RERG5YuXr6Ph4KtERERERF2NfMNDdsVILx4pGREREnJJ9MLIqOiIiIuJqCkvPjtFxV6IjIiIiLqa8oqMxOiIiIuJyikq1jo6IiIi4KHtFR9PLRURExNWULxjopURHREREXI0qOiIiIuKytDKyiIiIuCz7yshKdERERMTV2FdG1qwrERERcSVWq5UCVXRERETEFZWUWbFYbf+tWVciIiLiUsqrOaCuKxEREXExRWcTHbMJPN0cK7VwrGhERETE6RTYByK7YTKZDI6mIiU6IiIickXK19BxtIHIoERHRERErtCvKzqORomOiIiIXBFHXUMHlOiIiIjIFVJFR0RERFxWkYMuFghKdEREROQKqaIjIiIiLstRdy4HJToiIiJyhQqKNRhZREREXFRhqcboiIiIiIsqLNYYHREREXFRhaVnV0b2VKIjIiIiLsY+Rsfd8dIKx4tIREREnIp9ZWRVdERERMTV2NfRcVeiIyIiIi7Gvnu5KjoiIiLiarSpp4iIiLisQu11JSIiIq6qfIyOlxIdERERcTWq6IiIiIjL0qaeIiIi4rJU0RERERGXVaBZVyIiIuKKrFarKjoiIiLimorLLFistv/WrCsRERFxKeUDkUEVHREREXEx5d1WZhN4uJkMjuZCSnRERESkxn49PsdkUqJTwcyZM0lMTCQwMJDAwECSkpJYvHjxJZ8zY8YMEhIS8PHxITY2lj/96U8UFhbWU8QiIiLya+dmXDletxWAu5FvHhMTw/Tp02nVqhVWq5UPPviA4cOH8/PPP9O+ffsLzp8zZw5PPPEE7777Lr1792bPnj3cfffdmEwm/vWvfxlwBSIiIg2bIy8WCAYnOsOGDatwf+rUqcycOZO1a9dWmuisXr2aq6++mjvvvBOA+Ph4Ro8ezbp16+olXhEREamooNhx19ABBxqjU1ZWxty5c8nLyyMpKanSc3r37s2mTZtYv349AAcOHODrr79m6NChF33doqIisrOzK9xERESkdhSWnh2j46mKTqW2bt1KUlIShYWF+Pv7s2DBAtq1a1fpuXfeeSenTp3immuuwWq1UlpaygMPPMBf/vKXi77+tGnTmDJlSl2FLyIi0qAVlld03B0z0TG8opOQkEBycjLr1q1j/PjxjBs3jh07dlR67vLly3n++ed5/fXX2bx5M5999hlfffUVzz777EVff/LkyWRlZdlvqampdXUpIiIiDY4qOpfh6elJy5YtAejWrRsbNmzg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7du3r5N460pttMO0adNITU3l0KFDvPjii9x33308/fTTdRVynaiNdkhLS7P/PGRlZbFixQoSEhLqJN66VBttYbVaufvuu7n++uu566676irUOlWb3xuupCrt0rNnT7Zt28bRo0fJzc1l8eLFDB48uFrvo5Gf1XTq1CnKysqIjIyscDwyMpJdu3ZV+XWysrJYv349n376aW2HWC9qox3c3d15/vnnufbaa7FarQwaNIibbrqpLsKtU7XRFmlpadxyyy2AbcbNfffdR48ePWo91rpUW58NZ1cb7XD48GHuv/9++yDkP/7xj3Ts2LEuwq1TtdEWP/30Ex9//DGJiYn28R0fffSRU7VHbX02BgwYwJYtW8jLyyMmJoZ58+aRlJRU2+HWm6q0i7u7Oy+99BL9+vXDYrHw5z//udqzD5XoGCQoKMhh+9zr05AhQxr07JpyzZs3Z8uWLUaH4VDuvvtuo0MwTM+ePUlOTjY6DIdwzTXXYLFYjA7DIXz33XdGh2CIm2++mZtvvrnGz1fXVTWFh4fj5uZ2QZKSlpZG48aNDYqq/qkdzlFb2KgdbNQO56gtbNQOlauvdlGiU02enp5069aN77//3n7MYrHw/fffO3UJsbrUDueoLWzUDjZqh3PUFjZqh8rVV7uo66oSubm57Nu3z37/4MGDJCcnExoaStOmTXn00UcZN24c3bt3p2fPnsyYMYO8vDzuueceA6OufWqHc9QWNmoHG7XDOWoLG7VD5RyiXWo2Scy1LVu2zApccBs3bpz9nP/85z/Wpk2bWj09Pa09e/a0rl271riA64ja4Ry1hY3awUbtcI7awkbtUDlHaBftdSUiIiIuS2N0RERExGUp0RERERGXpURHREREXJYSHREREXFZSnRERETEZSnREREREZelREdERERclhIdERERcVlKdETEqcTHxzNjxgyjwxARJ6FER0QucPfddzNixAijw6jUhg0buP/+++v8feLj4zGZTJhMJnx9fenYsSNvv/12tV/HZDKxcOHC2g9QRKpEiY6IOISSkpIqndeoUSN8fX3rOBqbZ555huPHj7Nt2zZ++9vfct9997F48eJ6eW8RqR1KdESk2rZt28aQIUPw9/cnMjKSu+66i1OnTtkf/+abb7jmmmsIDg4mLCyMm266if3799sfP3ToECaTiY8//pi+ffvi7e3N7Nmz7ZWkF198kaioKMLCwpgwYUKFJOj8riuTycTbb7/NLbfcgq+vL61atWLRokUV4l20aBGtWrXC29ubfv368cEHH2AymcjMzLzkdQYEBNC4cWOaN2/O448/TmhoKEuXLrU/vmHDBgYOHEh4eDhBQUH07duXzZs3V4gV4JZbbsFkMtnvA3z++ed07doVb29vmjdvzpQpUygtLa1K84tINSjREZFqyczM5Prrr6dLly5s3LiRb775hrS0NEaOHGk/Jy8vj0cffZSNGzfy/fffYzabueWWW7BYLBVe64knnmDixIns3LmTwYMHA7Bs2TL279/PsmXL+OCDD3j//fd5//33LxnTlClTGDlyJL/88gtDhw5lzJgxZGRkAHDw4EFuv/12RowYwZYtW/jDH/7Ak08+Wa1rtlgsfPrpp5w5cwZPT0/78ZycHMaNG8eqVatYu3YtrVq1YujQoeTk5AC2RAjgvffe4/jx4/b7K1euZOzYsUycOJEdO3bw5ptv8v777zN16tRqxSUiVVCre6GLiEsYN26cdfjw4ZU+9uyzz1oHDRpU4VhqaqoVsO7evbvS55w8edIKWLdu3Wq1Wq3WgwcPWgHrjBkzLnjfuLg4a2lpqf3YHXfcYR01apT9flxcnPXll1+23wesTz31lP1+bm6uFbAuXrzYarVarY8//ri1Q4cOFd7nySeftALWM2fOVN4AZ9/H09PT6ufnZ3V3d7cC1tDQUOvevXsv+pyysjJrQECA9YsvvqgQ34IFCyqc179/f+vzzz9f4dhHH31kjYqKuuhri0jNqKIjItWyZcsWli1bhr+/v/3Wpk0bAHv31N69exk9ejTNmzcnMDDQ3mWTkpJS4bW6d+9+weu3b98eNzc3+/2oqCjS09MvGVNiYqL9v/38/AgMDLQ/Z/fu3fTo0aPC+T179qzStT722GMkJyfzww8/0KtXL15++WVatmxpfzwtLY377ruPVq1aERQURGBgILm5uRdc5/m2bNnCM888U6EN77vvPo4fP05+fn6VYhORqnE3OgARcS65ubkMGzaMF1544YLHoqKiABg2bBhxcXG89dZbREdHY7FY6NChA8XFxRXO9/Pzu+A1PDw8Ktw3mUwXdHnVxnOqIjw8nJYtW9KyZUvmzZtHx44d6d69O+3atQNg3LhxnD59mldeeYW4uDi8vLxISkq64DrPl5uby5QpU7j11lsveMzb2/uK4xaRc5ToiEi1dO3alU8//ZT4+Hjc3S/8FXL69Gl2797NW2+9RZ8+fQBYtWpVfYdpl5CQwNdff13hWPlYmeqIjY1l1KhRTJ48mc8//xyAn376iddff52hQ4cCkJqaWmFQNtiSsLKysgrHunbtyu7duytUh0SkbqjrSkQqlZWVRXJycoVbamoqEyZMICMjg9GjR7Nhwwb279/PkiVLuOeeeygrKyMkJISwsDBmzZrFvn37+OGHH3j00UcNu44//OEP7Nq1i8cff5w9e/bwySef2Ac3m0ymar3WxIkT+eKLL9i4cSMArVq14qOPPmLnzp2sW7eOMWPG4OPjU+E58fHxfP/995w4cYIzZ84A8PTTT/Phhx8yZcoUtm/fzs6dO5k7dy5PPfXUlV+wiFSgREdEKrV8+XK6dOlS4TZlyhSio6P56aefKCsrY9CgQXTs2JFHHnmE4OBgzGYzZrOZuXPnsmnTJjp06MCf/vQn/vnPfxp2Hc2aNWP+/Pl89tlnJCYmMnPmTPusKy8vr2q9Vrt27Rg0aBBPP/00AO+88w5nzpyha9eu3HXXXTz88MNERERUeM5LL73E0qVLiY2NpUuXLgAMHjyYL7/8km+//ZYePXpw1VVX8fLLLxMXF1cLVywiv2ayWq1Wo4MQEalPU6dO5Y033iA1NdXoUESkjmmMjoi4vNdff50ePXoQFhbGTz/9xD//+U8eeugho8MSkXqgREdEXN7evXt57rnnyMjIoGnTpvzf//0fkydPNjosEakH6roSERERl6XByCIiIuKylOiIiIiIy1KiIyIiIi5LiY6IiIi4LCU6IiIi4rKU6IiIiIjLUqIjIiIiLkuJjoiIiLgsJToiIiLisv4f756U20ul1CsAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "digits_learner.lr_find()" ] }, { "cell_type": "markdown", "metadata": { "id": "F0lbadBgC0LM" }, "source": [ "learn.lr_find() explores learning rates in a given range ([1e-7, 10] by default) over a number of iterations (100 default) and plots the loss versus the learning rates on a log scale." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "cNkRrOV5Y9pD", "outputId": "a3788e2c-19ca-48f1-96f7-eda87434c26c" }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracytime
00.6711290.2769270.91216701:37
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAgQAAAFfCAYAAAAxo9Q/AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABDT0lEQVR4nO3deVxU9f4/8NcZYIZ1hn2TXRBFBRdc0MoWzNRM266pfdVMy65+q2vdW3QrW35Ft9W2q3XL/LZ4Lcsl93BBU1EDQREVRVbZEWFYB5j5/P4gpybBGASGGV7Px+M8Hs45nzPn/QEfMy/O8vlIQggBIiIi6tNkpi6AiIiITI+BgIiIiBgIiIiIiIGAiIiIwEBAREREYCAgIiIiMBAQERERAGtTF9AROp0ORUVFcHJygiRJpi6HiIjIbAghUFNTA19fX8hk7Z8HMItAUFRUBH9/f1OXQUREZLYKCgrg5+fX7nazCAROTk4AWjujVCpNXA0REZH5UKvV8Pf313+XtscsAsGVywRKpZKBgIiIqBP+7JI7byokIiIiBgIiIiJiICAiIiKYyT0EV+h0nKmZiMjSaLVaNDc3m7oMs2VjYwMrK6vrfh+zCgSNLVpTl0BERF1ECIGSkhJUVVWZuhSz5+zsDG9v7+saq8e8AkGzztQlEBFRF7kSBjw9PWFvb8+B5zpBCIH6+nqUlZUBAHx8fDr9XmYWCHiGgIjIEmi1Wn0YcHNzM3U5Zs3Ozg4AUFZWBk9Pz05fPjCrmwobGAiIiCzClXsG7O3tTVyJZbjyc7yeezHMKhBoGAiIiCwKLxN0ja74OZpVIOAZAiIiou5hVoGANxUSERF1D7MKBDxDQEREliQoKAgrVqwwdRkAzOwpA95DQEREpnbzzTdj2LBhXfJF/ssvv8DBweH6i+oCRp0hWLlyJSIjI/WzDsbExGDHjh3ttl+zZg0kSTJYbG1tO11sbVNLp/clIiLqCUIItLR07PvKw8Oj1zxpYVQg8PPzwxtvvIGUlBQkJyfj1ltvxfTp05GRkdHuPkqlEsXFxfolLy+v08UWX27s9L5ERNS7CSFQ39RikkWIjg2NP3/+fOzfvx/vv/++/g/dK3/87tixAyNHjoRCocDBgwdx4cIFTJ8+HV5eXnB0dMSoUaOwe/dug/f74yUDSZLw2Wef4e6774a9vT3CwsLw448/duWPuV1GXTKYNm2awevXXnsNK1euxJEjRzB48OA295EkCd7e3kYVpdFooNFo9K/VajUA4LODOQjwdsP88cFGvR8REfV+Dc1aRLy4yyTHPv3KJNjL//wr8f3338e5c+cwZMgQvPLKKwCg/6P42Wefxdtvv42QkBC4uLigoKAAU6ZMwWuvvQaFQoEvv/wS06ZNQ2ZmJgICAto9xssvv4w333wTb731Fj788EPMmTMHeXl5cHV17ZrOtqPTNxVqtVqsW7cOdXV1iImJabddbW0tAgMD4e/v/6dnE66Ij4+HSqXSL/7+/vptL2053dmSiYiIrotKpYJcLoe9vT28vb3h7e2tHxnwlVdewcSJE9G/f3+4uroiKioKjz76KIYMGYKwsDC8+uqr6N+//5/+xT9//nzMmjULoaGheP3111FbW4tjx451e9+MvqkwPT0dMTExaGxshKOjIzZu3IiIiIg224aHh2P16tWIjIxEdXU13n77bYwbNw4ZGRnw8/Nr9xhxcXFYtmyZ/rVarTYIBfvPlePGUHfIZBzQgojIUtjZWOH0K5NMduzrFR0dbfC6trYWL730ErZt24bi4mK0tLSgoaEB+fn513yfyMhI/b8dHBygVCr1cxV0J6MDQXh4ONLS0lBdXY3vv/8e8+bNw/79+9sMBTExMQZnD8aNG4dBgwbhk08+wauvvtruMRQKBRQKRbvb560+hr/FDsATsWHGlk9ERL2UJEkdOm3fW/3xaYGnn34aCQkJePvttxEaGgo7Ozvcd999aGpquub72NjYGLyWJAk6XfePw2P0JQO5XI7Q0FCMHDkS8fHxiIqKwvvvv9+hfW1sbDB8+HBkZWUZXegfvbf73HW/BxERkbHkcjm02j9/DP7QoUOYP38+7r77bgwdOhTe3t7Izc3t/gI76boHJtLpdAY3AF6LVqtFenr6dU3P+Hv1fAyRiIh6WFBQEI4ePYrc3FxUVFS0+9d7WFgYNmzYgLS0NJw4cQKzZ8/ukb/0O8uoQBAXF4cDBw4gNzcX6enpiIuLQ2JiIubMmQMAmDt3LuLi4vTtX3nlFfz000/Izs7G8ePH8eCDDyIvLw8LFy7skuIvXm7okvchIiLqqKeffhpWVlaIiIiAh4dHu/cEvPvuu3BxccG4ceMwbdo0TJo0CSNGjOjhajvOqIs1ZWVlmDt3LoqLi6FSqRAZGYldu3Zh4sSJAID8/HzIZL9ljMuXL2PRokUoKSmBi4sLRo4cicOHD7d7E6KxSqobMcDLqUvei4iIqCMGDBiApKQkg3Xz58+/ql1QUBD27t1rsG7JkiUGr/94CaGt8RCqqqo6VaexjAoEn3/++TW3JyYmGrx+77338N577xldVEeVqDlQERERUVcwq8mNltwciih/Z0yM8AIAlDEQEBERdQmzCgSP3dIfm5eMx0Dv1ssEPENARETUNcwqEFzhqWydIOlIdiWatb33jk0iIiJzYZaBYEKYB+TWMmSV1WLPme4fvYmIiMjSmWUgCHCzx+QhrRMmXSivNXE1RERE5s8sAwEABLm1DhFZUFlv4kqIiIjMn9kGAn9XewBAwWUGAiIioutlvoHAxQ4AUFDJ0QqJiMh8BAUFYcWKFfrXkiRh06ZN7bbPzc2FJElIS0vr1rrMdlqpK2cIiqoaoNUJWHEqZCIiMkPFxcVwcXExdRnme4bAS2kLGysJLTqB4mqeJSAiIvPk7e0NhUJh6jLMNxBYyST4ubSeJcjnjYVERNQDPv30U/j6+l41a+H06dOxYMECXLhwAdOnT4eXlxccHR0xatQo7N69+5rv+cdLBseOHcPw4cNha2uL6OhopKamdkdXrmK2gQAA/H69j+D5TafwxaEcNDb/+fzURETUSwkBNNWZZmljUqG23H///bh06RL27dunX1dZWYmdO3dizpw5qK2txZQpU7Bnzx6kpqbijjvuwLRp09qdEfGPamtrceeddyIiIgIpKSl46aWX8PTTT3fqx2kss72HAPjtPoLs8jq8vOU0JADzxwebtigiIuqc5nrgdV/THPu5IkDu8KfNXFxcMHnyZKxduxa33XYbAOD777+Hu7s7brnlFshkMkRFRenbv/rqq9i4cSN+/PFHLF269E/ff+3atdDpdPj8889ha2uLwYMH4+LFi3jsscc637cOMuszBEP7qQxeH82pNFElRETUV8yZMwc//PADNBoNAOCbb77BAw88AJlMhtraWjz99NMYNGgQnJ2d4ejoiDNnznT4DMGZM2cQGRkJW1tb/bqYmJhu6ccfmfUZgntG9MN/fs5GdnkdACA57zKEEJAkPnFARGR2bOxb/1I31bE7aNq0aRBCYNu2bRg1ahR+/vlnvPfeewCAp59+GgkJCXj77bcRGhoKOzs73HfffWhqauquyruMWQcChbUV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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
epochtrain_lossvalid_lossaccuracytime
00.1821140.0715680.97775001:46
10.1652430.0624690.98041701:45
20.1277910.0347990.98941701:45
30.1124680.0378050.98883301:44
40.0925240.0299900.98983301:44
50.0673730.0280280.99116701:45
60.0599280.0237750.99325001:43
70.0622000.0269290.99108301:44
80.0358130.0188420.99475001:46
90.0443820.0164120.99450001:44
100.0295970.0164140.99475001:47
110.0319650.0160790.99508301:46
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "digits_learner.fine_tune(12, base_lr=1e-2, cbs=[ShowGraphCallback()])" ] }, { "cell_type": "markdown", "metadata": { "id": "ZGsuaCxPC_Ic" }, "source": [ "learn.fine_tune: \"Fine tune with freeze for freeze_epochs then with unfreeze for epochs using discriminative LR\"\n", "\n", "To resume, fine_tune trains the head (automatically added by cnn_learner with random weights) without the body for a few epochs (defaults to 1) and then unfreezes the Learner and trains the whole model for a number of epochs (here we chose 12) using discriminative learning rates (which means it applies different learning rates for different parts of the model).\n", "\n", "cbs expects a list of callbacks. Here we passed ShowGraphCallback which updates a graph of training and validation loss" ] }, { "cell_type": "markdown", "metadata": { "id": "dQkUAkoUDQg6" }, "source": [ "After training our model for a while, we get around 99.5% accuracy on our validation set" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "id": "DM-877Oid6kr" }, "outputs": [], "source": [ "digits_learner.export(\"/content/drive/MyDrive/digit-learner.pkl\")" ] }, { "cell_type": "markdown", "metadata": { "id": "mDU3cfP-DU-M" }, "source": [ "Saves the definition of how to create our DataLoaders on top of saving the architecture and parameters of the model." ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 506 }, "id": "nlKvijE0eNXr", "outputId": "fdc734f7-378e-45cd-c0a1-b1e8c79c82bf" }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "interp = ClassificationInterpretation.from_learner(digits_learner)\n", "interp.plot_confusion_matrix()" ] }, { "cell_type": "markdown", "metadata": { "id": "z6-tBCgfDaGG" }, "source": [ "The above confusion matrix helps us visualize where our model made mistakes. It like the most confused number were 0 with 6, 6 with 8, 5 with 3 and 7 with 2" ] }, { "cell_type": "markdown", "metadata": { "id": "0CvbfA72GK5y" }, "source": [ "**Testing the model on Unseen Data**" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "id": "6NvBXwgYesTS" }, "outputs": [], "source": [ "test_dl = digits_learner.dls.test_dl(get_image_files(path/\"testing\"), with_labels=True)" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 52 }, "id": "9kuWJi8Me0yR", "outputId": "36116111-7fcd-4bf7-8b06-85bf60a6e7db" }, "outputs": [ { "data": { "text/html": [ "\n", "\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Loss on Testing Set - 0.01529502123594284\n", "Accuracy on Testing Set - 0.9951000213623047\n" ] } ], "source": [ "testing_loss, testing_accuracy = digits_learner.validate(dl=test_dl)\n", "print(\"Loss on Testing Set - \",testing_loss)\n", "print(\"Accuracy on Testing Set - \", testing_accuracy)" ] }, { "cell_type": "markdown", "metadata": { "id": "Z8jnNZWYDjIb" }, "source": [ "Our model really performs great on testing set as well." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "a--UqSv8Xxx6" }, "outputs": [], "source": [ "learn = load_learner(\"/content/drive/MyDrive/digit-learner.pkl\")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "aMIf05qGp0K2", "outputId": "1ed99818-3bf7-4382-e1ed-c64142544c55" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: gradio in /usr/local/lib/python3.10/dist-packages (4.25.0)\n", "Requirement already satisfied: aiofiles<24.0,>=22.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (23.2.1)\n", "Requirement already satisfied: altair<6.0,>=4.2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.2.2)\n", "Requirement already satisfied: fastapi in /usr/local/lib/python3.10/dist-packages (from gradio) (0.110.1)\n", "Requirement already satisfied: ffmpy in /usr/local/lib/python3.10/dist-packages (from gradio) (0.3.2)\n", "Requirement already satisfied: gradio-client==0.15.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.15.0)\n", "Requirement already satisfied: httpx>=0.24.1 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.27.0)\n", "Requirement already satisfied: huggingface-hub>=0.19.3 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.20.3)\n", "Requirement already satisfied: importlib-resources<7.0,>=1.3 in /usr/local/lib/python3.10/dist-packages (from gradio) (6.4.0)\n", "Requirement already satisfied: jinja2<4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.1.3)\n", "Requirement already satisfied: markupsafe~=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.1.5)\n", "Requirement already satisfied: matplotlib~=3.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.7.1)\n", "Requirement already satisfied: numpy~=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (1.25.2)\n", "Requirement already satisfied: orjson~=3.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (3.10.0)\n", "Requirement already satisfied: packaging in /usr/local/lib/python3.10/dist-packages (from gradio) (24.0)\n", "Requirement already satisfied: pandas<3.0,>=1.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.0.3)\n", "Requirement already satisfied: pillow<11.0,>=8.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (9.4.0)\n", "Requirement already satisfied: pydantic>=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.6.4)\n", "Requirement already satisfied: pydub in /usr/local/lib/python3.10/dist-packages (from gradio) (0.25.1)\n", "Requirement already satisfied: python-multipart>=0.0.9 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.0.9)\n", "Requirement already satisfied: pyyaml<7.0,>=5.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (6.0.1)\n", "Requirement already satisfied: ruff>=0.2.2 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.3.5)\n", "Requirement already satisfied: semantic-version~=2.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (2.10.0)\n", "Requirement already satisfied: tomlkit==0.12.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.12.0)\n", "Requirement already satisfied: typer[all]<1.0,>=0.9 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.9.4)\n", "Requirement already satisfied: typing-extensions~=4.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (4.10.0)\n", "Requirement already satisfied: uvicorn>=0.14.0 in /usr/local/lib/python3.10/dist-packages (from gradio) (0.29.0)\n", "Requirement already satisfied: fsspec in /usr/local/lib/python3.10/dist-packages (from gradio-client==0.15.0->gradio) (2023.6.0)\n", "Requirement already satisfied: websockets<12.0,>=10.0 in /usr/local/lib/python3.10/dist-packages (from gradio-client==0.15.0->gradio) (11.0.3)\n", "Requirement already satisfied: entrypoints in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.4)\n", "Requirement already satisfied: jsonschema>=3.0 in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (4.19.2)\n", "Requirement already satisfied: toolz in /usr/local/lib/python3.10/dist-packages (from altair<6.0,>=4.2.0->gradio) (0.12.1)\n", "Requirement already satisfied: anyio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (3.7.1)\n", "Requirement already satisfied: certifi in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (2024.2.2)\n", "Requirement already satisfied: httpcore==1.* in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (1.0.5)\n", "Requirement already satisfied: idna in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (3.6)\n", "Requirement already satisfied: sniffio in /usr/local/lib/python3.10/dist-packages (from httpx>=0.24.1->gradio) (1.3.1)\n", "Requirement already satisfied: h11<0.15,>=0.13 in /usr/local/lib/python3.10/dist-packages (from httpcore==1.*->httpx>=0.24.1->gradio) (0.14.0)\n", "Requirement already satisfied: filelock in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (3.13.3)\n", "Requirement already satisfied: requests in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (2.31.0)\n", "Requirement already satisfied: tqdm>=4.42.1 in /usr/local/lib/python3.10/dist-packages (from huggingface-hub>=0.19.3->gradio) (4.66.2)\n", "Requirement already satisfied: contourpy>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.2.0)\n", "Requirement already satisfied: cycler>=0.10 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (0.12.1)\n", "Requirement already satisfied: fonttools>=4.22.0 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (4.50.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (1.4.5)\n", "Requirement already satisfied: pyparsing>=2.3.1 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (3.1.2)\n", "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib~=3.0->gradio) (2.8.2)\n", "Requirement already satisfied: pytz>=2020.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0,>=1.0->gradio) (2023.4)\n", "Requirement already satisfied: tzdata>=2022.1 in /usr/local/lib/python3.10/dist-packages (from pandas<3.0,>=1.0->gradio) (2024.1)\n", "Requirement already satisfied: annotated-types>=0.4.0 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->gradio) (0.6.0)\n", "Requirement already satisfied: pydantic-core==2.16.3 in /usr/local/lib/python3.10/dist-packages (from pydantic>=2.0->gradio) (2.16.3)\n", "Requirement already satisfied: click<9.0.0,>=7.1.1 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (8.1.7)\n", "Requirement already satisfied: colorama<0.5.0,>=0.4.3 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (0.4.6)\n", "Requirement already satisfied: shellingham<2.0.0,>=1.3.0 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (1.5.4)\n", "Requirement already satisfied: rich<14.0.0,>=10.11.0 in /usr/local/lib/python3.10/dist-packages (from typer[all]<1.0,>=0.9->gradio) (13.7.1)\n", "Requirement already satisfied: starlette<0.38.0,>=0.37.2 in /usr/local/lib/python3.10/dist-packages (from fastapi->gradio) (0.37.2)\n", "Requirement already satisfied: attrs>=22.2.0 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (23.2.0)\n", "Requirement already satisfied: jsonschema-specifications>=2023.03.6 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (2023.12.1)\n", "Requirement already satisfied: referencing>=0.28.4 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (0.34.0)\n", "Requirement already satisfied: rpds-py>=0.7.1 in /usr/local/lib/python3.10/dist-packages (from jsonschema>=3.0->altair<6.0,>=4.2.0->gradio) (0.18.0)\n", "Requirement already satisfied: six>=1.5 in /usr/local/lib/python3.10/dist-packages (from python-dateutil>=2.7->matplotlib~=3.0->gradio) (1.16.0)\n", "Requirement already satisfied: markdown-it-py>=2.2.0 in /usr/local/lib/python3.10/dist-packages (from rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (3.0.0)\n", "Requirement already satisfied: pygments<3.0.0,>=2.13.0 in /usr/local/lib/python3.10/dist-packages (from rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (2.16.1)\n", "Requirement already satisfied: exceptiongroup in /usr/local/lib/python3.10/dist-packages (from anyio->httpx>=0.24.1->gradio) (1.2.0)\n", "Requirement already satisfied: charset-normalizer<4,>=2 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio) (3.3.2)\n", "Requirement already satisfied: urllib3<3,>=1.21.1 in /usr/local/lib/python3.10/dist-packages (from requests->huggingface-hub>=0.19.3->gradio) (2.0.7)\n", "Requirement already satisfied: mdurl~=0.1 in /usr/local/lib/python3.10/dist-packages (from markdown-it-py>=2.2.0->rich<14.0.0,>=10.11.0->typer[all]<1.0,>=0.9->gradio) (0.1.2)\n" ] } ], "source": [ "!pip install gradio" ] }, { "cell_type": "markdown", "metadata": { "id": "lzX9FAkBF_bD" }, "source": [ "**Deploying code using Gradio**" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "id": "rx9bVKU0uCkE" }, "outputs": [], "source": [ "from fastai.vision.all import *\n", "import gradio as gr" ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "id": "mTmOBAPKvBax" }, "outputs": [], "source": [ "def predict_image(image):\n", " pred, _,a = learn.predict(image)\n", " return f\"Predicted Class: {pred}\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "EHhd8HRVvfR-", "outputId": "0d27aa83-28e9-4db8-b089-c088736f6625" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Setting queue=True in a Colab notebook requires sharing enabled. Setting `share=True` (you can turn this off by setting `share=False` in `launch()` explicitly).\n", "\n", "Colab notebook detected. This cell will run indefinitely so that you can see errors and logs. To turn off, set debug=False in launch().\n", "Running on public URL: https://094d19bb3f832053b1.gradio.live\n", "\n", "This share link expires in 72 hours. For free permanent hosting and GPU upgrades, run `gradio deploy` from Terminal to deploy to Spaces (https://huggingface.co/spaces)\n" ] }, { "data": { "text/html": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "background [[[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " ...\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]]\n", "layers [array([[[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]],\n", "\n", " [[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]],\n", "\n", " [[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]],\n", "\n", " ...,\n", "\n", " [[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]],\n", "\n", " [[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]],\n", "\n", " [[0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " ...,\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0],\n", " [0, 0, 0, 0]]], dtype=uint8)]\n", "composite [[[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " ...\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]\n", "\n", " [[0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " ...\n", " [0 0 0 0]\n", " [0 0 0 0]\n", " [0 0 0 0]]]\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "Traceback (most recent call last):\n", " File \"/usr/local/lib/python3.10/dist-packages/gradio/queueing.py\", line 522, in process_events\n", " response = await route_utils.call_process_api(\n", " File \"/usr/local/lib/python3.10/dist-packages/gradio/route_utils.py\", line 260, in call_process_api\n", " output = await app.get_blocks().process_api(\n", " File \"/usr/local/lib/python3.10/dist-packages/gradio/blocks.py\", line 1741, in process_api\n", " result = await self.call_function(\n", " File \"/usr/local/lib/python3.10/dist-packages/gradio/blocks.py\", line 1296, in call_function\n", " prediction = await anyio.to_thread.run_sync(\n", " File \"/usr/local/lib/python3.10/dist-packages/anyio/to_thread.py\", line 33, in run_sync\n", " return await get_asynclib().run_sync_in_worker_thread(\n", " File \"/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py\", line 877, in run_sync_in_worker_thread\n", " return await future\n", " File \"/usr/local/lib/python3.10/dist-packages/anyio/_backends/_asyncio.py\", line 807, in run\n", " result = context.run(func, *args)\n", " File \"/usr/local/lib/python3.10/dist-packages/gradio/utils.py\", line 751, in wrapper\n", " response = f(*args, **kwargs)\n", " File \"\", line 5, in predict_image\n", " image_3d = image[:, :, :, 1:4]\n", "IndexError: too many indices for array: array is 3-dimensional, but 4 were indexed\n" ] } ], "source": [ "# Gradio interface definition\n", "interface = gr.Interface(predict_image,inputs=\"image\",outputs=\"label\")\n", "\n", "# Launch the interface\n", "interface.launch(debug='True')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "APGqv-AsOM64" }, "outputs": [], "source": [ "!python -m spacy package \"/content/drive/MyDrive/digit-learner.pkl\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "iWxsQL84vkpO" }, "outputs": [], "source": [ "# http://localhost:7860" ] } ], "metadata": { "accelerator": "TPU", "colab": { "gpuType": "V28", "provenance": [] }, "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.4" } }, "nbformat": 4, "nbformat_minor": 1 }