{ "cells": [ { "cell_type": "markdown", "id": "9d5cd636", "metadata": { "papermill": { "duration": 0.017139, "end_time": "2022-03-11T16:22:45.907756", "exception": false, "start_time": "2022-03-11T16:22:45.890617", "status": "completed" }, "tags": [], "id": "9d5cd636" }, "source": [ "[![mnist.gif](https://i.postimg.cc/W1cwV9JR/mnist.gif)](https://postimg.cc/vcXVLtzX)" ] }, { "cell_type": "markdown", "id": "bd6d9eba-3ce4-492e-9ee3-af17ae74668b", "metadata": { "id": "bd6d9eba-3ce4-492e-9ee3-af17ae74668b" }, "source": [ "### Table of Contents\n", "\n", "* [Imports](#Imports)\n", "* [Read data](#Read_data)\n", "* [Data preparation](#Data_preparation)\n", "* [Data loader](#Data_loader)\n", "* [Model training](#Model_training)\n", "* [Results](#Results)\n", "* [Demo](#Demo)\n", "* [Save model](#Save_model)" ] }, { "cell_type": "markdown", "id": "12dbba14-728e-4392-8e64-b479b82c7c53", "metadata": { "tags": [], "id": "12dbba14-728e-4392-8e64-b479b82c7c53" }, "source": [ "# **Imports** " ] }, { "cell_type": "code", "execution_count": 1, "id": "8550b5fb", "metadata": { "_kg_hide-input": true, "papermill": { "duration": 70.235639, "end_time": "2022-03-11T16:23:56.161529", "exception": false, "start_time": "2022-03-11T16:22:45.925890", "status": "completed" }, "tags": [], "id": "8550b5fb" }, "outputs": [], "source": [ "%%capture\n", "! pip install --user torch==1.9.0 torchvision==0.10.0\n", "! [ -e /content ] && pip install -Uqq fastbook" ] }, { "cell_type": "code", "execution_count": 2, "id": "75c5c993", "metadata": { "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", "_kg_hide-input": true, "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5", "papermill": { "duration": 1.741296, "end_time": "2022-03-11T16:23:57.919769", "exception": false, "start_time": "2022-03-11T16:23:56.178473", "status": "completed" }, "tags": [], "id": "75c5c993" }, "outputs": [], "source": [ "import numpy as np # linear algebra\n", "import pandas as pd # data processing, CSV file I/O (e.g. pd.read_csv)\n", "from tqdm import tqdm # for progress bar\n", "from PIL import Image # for create images based on array\n", "\n", "import fastai\n", "from fastai.vision.all import *\n", "from fastai.metrics import *\n", "from fastai.imports import *\n", "\n", "# ignore warnings\n", "%matplotlib inline\n", "import warnings\n", "warnings.simplefilter('ignore')" ] }, { "cell_type": "markdown", "id": "865e5eb0-154e-41c7-94f6-6087b3bee4de", "metadata": { "tags": [], "id": "865e5eb0-154e-41c7-94f6-6087b3bee4de" }, "source": [ "# **Read data** " ] }, { "cell_type": "code", "execution_count": 3, "id": "99a622ad", "metadata": { "papermill": { "duration": 5.043374, "end_time": "2022-03-11T16:24:03.064863", "exception": false, "start_time": "2022-03-11T16:23:58.021489", "status": "completed" }, "tags": [], "colab": { "base_uri": "https://localhost:8080/", "height": 185 }, "id": "99a622ad", "outputId": "235ba0a3-ed64-4e53-89e4-6cb71002512e" }, "outputs": [ { "output_type": "execute_result", "data": { "text/plain": [ " label pixel0 pixel1 pixel2 pixel3 pixel4 pixel5 pixel6 pixel7 \\\n", "0 1 0 0 0 0 0 0 0 0 \n", "1 0 0 0 0 0 0 0 0 0 \n", "\n", " pixel8 ... pixel774 pixel775 pixel776 pixel777 pixel778 pixel779 \\\n", "0 0 ... 0 0 0 0 0 0 \n", "1 0 ... 0 0 0 0 0 0 \n", "\n", " pixel780 pixel781 pixel782 pixel783 \n", "0 0 0 0 0 \n", "1 0 0 0 0 \n", "\n", "[2 rows x 785 columns]" ], "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", "
labelpixel0pixel1pixel2pixel3pixel4pixel5pixel6pixel7pixel8...pixel774pixel775pixel776pixel777pixel778pixel779pixel780pixel781pixel782pixel783
01000000000...0000000000
10000000000...0000000000
\n", "

2 rows × 785 columns

\n", "
\n", " \n", " \n", " \n", "\n", " \n", "
\n", "
\n", " " ] }, "metadata": {}, "execution_count": 3 } ], "source": [ "# Each image is 28x28\n", "# data has 785 columns. The first column is label. The rest of the columns contain the pixel-values of the associated image\n", "INPUT_PATH = Path(\"/content/data\")\n", "MODEL_WEIGHTS_PATH = Path(\"model\")\n", "\n", "train_df = pd.read_csv(INPUT_PATH/\"train.csv\")\n", "test_df = pd.read_csv(INPUT_PATH/\"test.csv\")\n", "train_df.head(2)" ] }, { "cell_type": "markdown", "id": "27377b57-bd43-4b53-8afe-7d731804be84", "metadata": { "tags": [], "id": "27377b57-bd43-4b53-8afe-7d731804be84" }, "source": [ "# **Data preparation** " ] }, { "cell_type": "code", "execution_count": 4, "id": "db9297b1", "metadata": { "papermill": { "duration": 0.02588, "end_time": "2022-03-11T16:24:03.110601", "exception": false, "start_time": "2022-03-11T16:24:03.084721", "status": "completed" }, "tags": [], "id": "db9297b1" }, "outputs": [], "source": [ "# fastai dataloaders need images so we need to create images with appropriate folders from dataframe\n", "# create empty directories for digit images\n", "\n", "TRAINING_DATA_PATH = Path('./train')\n", "TESTING_DATA_PATH = Path('./test')\n", "for path in [TRAINING_DATA_PATH, TESTING_DATA_PATH]:\n", " for i in range(10):\n", " p = path / str(i)\n", " p.mkdir(parents=True, exist_ok=True)" ] }, { "cell_type": "code", "execution_count": 5, "id": "36fcdb57", "metadata": { "papermill": { "duration": 27.581176, "end_time": "2022-03-11T16:24:30.709684", "exception": false, "start_time": "2022-03-11T16:24:03.128508", "status": "completed" }, "tags": [], "colab": { "base_uri": "https://localhost:8080/" }, "id": "36fcdb57", "outputId": "164864ba-e95c-42d2-8371-a3bedb0308d7" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "42000it [00:26, 1593.13it/s]\n", "28000it [00:10, 2619.02it/s]\n" ] } ], "source": [ "def save_img(filepath, img_array):\n", " img = img_array.reshape(28,28)\n", " img = img.astype(np.uint8())\n", " img = Image.fromarray(img)\n", " img.save(filepath)\n", " \n", "# save train images\n", "for i, data in tqdm(train_df.iterrows()):\n", " label, data = data[0], data[1:]\n", " img_path = TRAINING_DATA_PATH/str(label)/f\"{i}.png\"\n", " save_img(img_path, data.values)\n", " \n", "# save test images \n", "for i, data in tqdm(test_df.iterrows()):\n", " img_path = TESTING_DATA_PATH/str(label)/f\"{i}.png\"\n", " save_img(img_path, data.values)" ] }, { "cell_type": "code", "execution_count": 6, "id": "42ba5250-5f30-4f08-af11-4c43eafbcb18", "metadata": { "id": "42ba5250-5f30-4f08-af11-4c43eafbcb18" }, "outputs": [], "source": [ "class CFG:\n", " seed = 42\n", " n_epoch = 30\n", " valid_pct = 0.2\n", " batch_size = 64\n", " lr = 0.01\n", " device = torch.device(\"cuda\" if torch.cuda.is_available() else \"cpu\")" ] }, { "cell_type": "markdown", "id": "fb898576-1050-4197-8f2e-ed671110b80b", "metadata": { "tags": [], "id": "fb898576-1050-4197-8f2e-ed671110b80b" }, "source": [ "# **Data loader** " ] }, { "cell_type": "code", "execution_count": 7, "id": "d209b006", "metadata": { "papermill": { "duration": 6.046819, "end_time": "2022-03-11T16:24:36.854557", "exception": false, "start_time": "2022-03-11T16:24:30.807738", "status": "completed" }, "tags": [], "id": "d209b006" }, "outputs": [], "source": [ "dblock = DataBlock(blocks=(ImageBlock, CategoryBlock),\n", " get_items=get_image_files,\n", " splitter=RandomSplitter(valid_pct=CFG.valid_pct, seed=CFG.seed),\n", " get_y=parent_label,\n", " batch_tfms=aug_transforms(do_flip=False, mult=2))" ] }, { "cell_type": "code", "execution_count": 8, "id": "20222b17-b9c5-43cd-bb13-85ed966e88c6", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 104 }, "id": "20222b17-b9c5-43cd-bb13-85ed966e88c6", "outputId": "813caf8d-3181-4ce7-f8a8-b3473a96c1ea" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "dls = dblock.dataloaders(\"train\", batch_size=CFG.batch_size, num_workers=2, device=CFG.device)\n", "dls.show_batch(max_n=10, nrows=1, figsize=(12,6))" ] }, { "cell_type": "markdown", "id": "a0a0bd64-3353-415e-90e5-454372f043f8", "metadata": { "tags": [], "id": "a0a0bd64-3353-415e-90e5-454372f043f8" }, "source": [ "# **Model training** " ] }, { "cell_type": "code", "execution_count": 9, "id": "32fe692a-3021-472a-9959-40e588c97805", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 67, "referenced_widgets": [ "647b23e15f5b4e15b5aa857eb934125b", "19b49bfbdbc54e7c8d39e34886933917", "7689c665314e4baba1438c068f13698d", "fc220a66b5e1484395567428a3b75e18", "06c41196817c488cbb1034cd40b9e2e9", "565b44b833e749e6a88c553c2178306b", "00be8645d5214bedab6230add3788200", "3563440971204890bcd6bdea50809e1f", "bc37e4b669b343dbbc8b5d600b51d433", "0484a9e6fccb450f84a5a04760184349", "e008ff58802a45e9a0b438514785eea5" ] }, "id": "32fe692a-3021-472a-9959-40e588c97805", "outputId": "30d33742-66a8-49e4-ce5f-9e3f3462ae91" }, "outputs": [ { "output_type": "stream", "name": "stderr", "text": [ "Downloading: \"https://download.pytorch.org/models/resnet34-b627a593.pth\" to /root/.cache/torch/hub/checkpoints/resnet34-b627a593.pth\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ " 0%| | 0.00/83.3M [00:00" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": [ "SuggestedLRs(valley=0.0008317637839354575)" ] }, "metadata": {}, "execution_count": 10 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAEKCAYAAAD9xUlFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3dd3xUVfrH8c8zySSTHiCBQEIIoZeQBAKiWEBREBURBVRWcVdl3XV1dy2r6/50XddVV117V8Sya0EsYMEOVjpC6C2hhFACIQnp7fz+yCSGmEoyc2eS5/16zYuZO7d8M455cu659xwxxqCUUkoB2KwOoJRSynNoUVBKKVVDi4JSSqkaWhSUUkrV0KKglFKqhhYFpZRSNXytDtBSERERJi4uzuoYSinlVVavXn3YGBPZ1HpeVxTi4uJYtWqV1TGUUsqriMju5qynp4+UUkrV0KKglFKqhhYFpZRSNbyuT0EppRpSVlZGRkYGxcXFVkexjMPhICYmBrvdfkLba1FQSrUbGRkZhISEEBcXh4hYHcftjDEcOXKEjIwMevfufUL70NNHSql2o7i4mC5dunTIggAgInTp0qVVLSUtCi1UXFbB3uxCq2MopRrQUQtCtdb+/FoUWsAYwzWvrmLCY9+SXVBqdRyllJcLDg4GYNeuXQwdOtTiNFW0KLTA/NUZfL/jMIWlFby5Yo/VcZRSrZU6Dx4dCneHV/2bOs/qRJbTotBMWcdKuPfjzYyM68SpfSN4bekuyioqrY6llDpRqfPgwxshdy9gqv798MZWFYbbb7+dp59+uub13Xffzb333stZZ53F8OHDSUhIYMGCBY3uo6KigltvvZWRI0cybNgwnn/+eQCuvPJKPvjgg5r1Zs6c2eS+ToQWhWa6+8ONFJVWcP/UYVx9am8O5pXwyfr9VsdSSp2or+6BsqLjl5UVVS0/QTNmzGDevJ+Lyrx585g1axbvv/8+a9asYfHixdx88800Ng3ynDlzCAsLY+XKlaxcuZIXX3yR9PR0rr76al555RUAcnNz+fHHHznvvPNOOGtD9JLUZvhi00E+Tt3PLef0p2/XYOIjgoiPCOLl79OZnNijw3dsKeWVcjNatrwZkpOTOXToEJmZmWRlZdGpUyeioqL485//zLfffovNZmPfvn0cPHiQqKioevfx+eefk5qayvz586vi5Oayfft2zjnnHH7/+9+TlZXFu+++y8UXX4yvb9v/Ctei0ITisgru/GADA6NCmH16HwBsNuHXY+K4c8FG1uzJYUSvThanVEq1WFiM89RRPctbYdq0acyfP58DBw4wY8YM/ve//5GVlcXq1aux2+3ExcU1esmoMYYnn3ySCRMm/OK9K6+8kv/+97+89dZbzJ07t1U5G6Knj5qwaX8eB/KK+dP4fvj5/vxxTR0eQ6jDl5d/SLcwnVLqhJ11F9gDjl9mD6ha3gozZszgrbfeYv78+UybNo3c3Fy6du2K3W5n8eLF7N7d+GClEyZM4Nlnn6WsrAyAbdu2UVBQAMBVV13FY489BsDgwYNblbMh2lJoQnpW1X+M/t1Cjlse5O/LZaNieen7dPblFBEdHlDf5kopTzVsetW/X91TdcooLKaqIFQvP0FDhgzh2LFjREdH0717d2bOnMkFF1xAQkICKSkpDBw4sNHtr7nmGnbt2sXw4cMxxhAZGVnTwdytWzcGDRrElClTWpWxMdJYh4cnSklJMe6cT+Ghz7bw/DdpbP7nROw+xzes9uUUcfqDi7l0ZE/+dVGC2zIppeq3efNmBg0aZHUMlyksLCQhIYE1a9YQFhbW4Hr1fQ4istoYk9LUMfT0URPSsgqI7Rz4i4IAEB0ewJUn9+KNFXtYtSvbgnRKqY7iyy+/ZNCgQdxwww2NFoTW0tNHTUg/XEB8ZFCD799yzgA+33iQ299bz8c3noq/r48b0ymlOorx48c32R/RFrSl0IjKSkP64QJ6RzRcFIL8fbn3oqHsOJTPM4t3ujGdUkq1PS0KjcjMLaKkvJL4yOBG1xs3oCsXJvXgmSU72H7wmJvSKaXq4239pG2ttT+/FoVGpDmvPGqspVDtrvMHE+zvy23vplJR2bG/lEpZxeFwcOTIkQ5bGKrnU3A4HCe8D+1TaERaVj5Ao30K1boE+3PXBYP589vrePn7dK49Pd7V8ZRSdcTExJCRkUFWVpbVUSxTPfPaidKi0Ij0wwWE+PsSGezfrPWnJEWzaP0BHvpsK6f3j2RAVEjTGyml2ozdbj/hGcdUFT191Ii0wwX0jgxq9thGIsJ9UxMIcfhy07y1lJbrKKpKKe+iRaERaVkFxDejP6G2iGB/7p+awMbMPJ78eruLkimllGtoUWhAcVkF+3KK6B3R+JVH9TlnSBSXjIjh6cU7WLPnqAvSKaWUa2hRaED64aorj5rTyVyfuy4YTLdQBw8s2tKWsZRSyqVcVhRExCEiK0RknYhsFJF/1LNOrIgsFpGfRCRVRCa5Kk9LtbYohDrsXD4qlhXp2WTmFDW9gVJKeQBXthRKgDONMYlAEjBRREbXWef/gHnGmGTgUuAZF+ZpkerLUZtzj0JDLkjsAcCH6zLbJJNSSrmay4qCqZLvfGl3PureUWKAUOfzMMBjfnumZRXQPcxBoN+JX7UbFxFEYs9wFmpRUEp5CZf2KYiIj4isBQ4BXxhjltdZ5W7gVyKSAXwC3NDAfmaLyCoRWeWum1LSmhjzqLkuTOzBxsw8dhzS4S+UUp7PpUXBGFNhjEkCYoBRIjK0ziqXAa8YY2KAScDrIvKLTMaYF4wxKcaYlMjISFdGrj4eaVn5J9yfUNv5w7pjE1i4VlsLSinP55arj4wxOcBiYGKdt64G5jnXWQo4gAh3ZGrMkYJS8orLiT+By1Hr6hrq4JQ+ESxYl9lhx2NRSrVOQUk5d36wgZVumLfFlVcfRYpIuPN5AHA2UPf6zD3AWc51BlFVFCwftKT6yqPebdBSAJic1IPdRwpZl5HbJvtTSnUsuUVlvL5sNzsP5Te9ciu5sqXQHVgsIqnASqr6FD4SkXtEZLJznZuBa0VkHfAmcJXxgD+nq6886tMGLQWACUOi8POx6SkkpdQJKSytACDAz/WTeLlsQDxjTCqQXM/yu2o93wSMcVWGE5WWVYCfj43oTgFtsr+wADvjBkbyYWomfztvED625o2lpJRSAIWl5QAEteJqyObSO5rr2JSZx+ebDhIXEdimv7wvTIom61gJ326z/OyYUsrLFJRUtRQC/V3fUtCi4FRUWsH9izZzwVPfk1dUxh2TBrXp/scP6kZUqIPnv9UpO5VSLePOloLOpwDsOVLIzDnL2JtdxIyUnvx10kDCA/3a9Bh+vjauOa039368mTV7jjI8tlOb7l8p1X5V9ykEuqFPocO3FIwx3LVwAzkFZbw1ezT/vmRYmxeEapeNiiUswM6zS7S1oJRqvuqWQqC/9im43OebDrJkaxZ/Prs/o+O7uPRYQf6+zDolji82HWT7Qb3DWSnVPNV9CkHaUnCtotIK7vlwEwOjQrjy5F5uOeZVp8QRYPfhuW/S3HI8pZT3q2kp6NVHrvXMkh3syyninguH4uvjno+ic5Afl47qyYK1+9inQ2orpZqhsLQCX5vg5+v631MdtqM5/XABz3+TxkXJ0Yzq3dmtx77mtHheX7qbP775E+GBdtIPF7Avp4jhsZ24dFQsE4Z0w9/X9c1EpZR3KCytcEsnM3TQlsKeI4XcPG8t/r42/jppoNuPHx0ewK9G92JDZi57s4vo2zWY6Sk92ZNdyI1v/sTo+77i8S+361hJSimgauyjIDd0MkMHaynkFZfx9OIdzP1+Fz424YGLE+ga4rAky92Th/D3CwYj8vMNcndfYPh+x2Hm/pDOo19uY0SvTpza75fjA1ZUGr0rWqkORFsKLvDJ+v2Me2gJz3+TxuSkHiy5dSwXJkVbmql2QQCw2YTT+0fy3BUjiAp18PhX237RWvg4dT9J//icb/TOaKU6jMLScrd0MkMHKgr+vjb6RAbz4R9O5eFpiXQLtaaF0Bz+vj78bmwfVu46ytK0IzXLcwpLuWvBBo6VlPOH/61hm17WqlSHUKAthbZ35sCuvP3b0STEhFkdpVlmjOxJt1B/Hv9ye82yBxZtIaeojDmzUnD4+fCbV1ZyOL/EwpRKKXcoLHVfn0KHKQoi8ovTNZ7MYffhujP6sDw9m2VpR1iRns1bK/dyzam9OWtQN+bMSuFwfgmzX1tFcVmF1XGVUi5UWOK+lkKH6mj2NpeNiuWZJTt55IttZBeUEh0ewB/H9wNgWEw4j81I4rr/rmHcw0sID/TD39dGeKCdv00aRL9uIRanV0q1Fe1oVsDPrYUV6dnsOJTPvVOGHtfZNHFodx6/NImUuM7EdAogxOHL2r05/Pb11eSXlFuYXCnVlgrc2NGsLQUPd/moWOb+kM7IuM6MG9j1F+9fmBR93FVUy9KOcPmLy/jb++t5bEaSV50yU0r9kjGGwtIKgtwwlwJoUfB4AX4+fHnTGfg38/b20fFduOns/jz8+TZGx3fhslGxLk6olHKl0opKKiqNXpKqfuaw+7ToL/7fj+3Laf0i+PvCjWzKzHNhMqWUqxWWuG8uBdCWQrtkswmPzkjivCe+Y+ZLy5ic2IPzE3swIrYTNhffCb0+I5elaYfZfjCfbYfyOZJfwsi4zpzRP5LT+0fSOcg1c1Uo1V4VuHHWNdCi0G5FBPsz96pRPPHVdt5auZdXl+4mKtTBqN6dGRAVwsCoEAZ2D6VHmKPN+h3mrdzL7e+lUmmqjt+/WzDRMWF8sy2L93/ahwhMHBLF/VMTXDaRkVLtTc2sa9qnoFprcI9QnrtiBPkl5Xy1+SCL1h9g9e6jLFyXWbNOp0A7Q3qEMaRHKP26hdA7IpC4LkF0DvIjp7CM3dmF7D5SQFFpBSEOO6EBvoQH+DEgKuS4YXxf+i6Nez/ezGn9Inh0RhIRwf4171VWGtbvy+WzjQd48bs01j2ew5OXD2dEL52SVKmmVBcFbSmoNhPs73vcVUq5RWVsO3iMLfvz2JiZx4bMXOb+sIvSisqabfx8bZSWVza0S8IC7EwcEsV5w7qzIj2bpxbv4LyE7jw6I+kXY77bbEJiz3ASe4YzcWgUf3jjJ6Y/v5RbJwxg9mnxLj+lpZQ3K3ReXh6gfQrKVcIC7IyM68zIuJ/nkSirqGRvdiG7jhSw63AhB/KK6RriT68uQfTqEkiwvy/HisvJKy7jYF4xX20+xMfr9/P2qr0AXDqyJ/+6KKHJ0VuHxYTz0Y2ncvu7qTywaAtb9ufx4CWJbpk8RClvVKAtBWUFu4+N+Mhg4iODm7X++cN6UFxWwZKtWZSUVzA5sUez+yZCHXaevnw4zyzZyUOfbeXQsRKeu2IEoQ47peWVvLF8N68u3c2wmDBunTCAmE6BrfnRlPJqNVNxap+C8nQOuw8Th0ad0LYiwvXj+tI9zMFf5qcy/bmlXHFyL55dspOMo0UkxoTx6YYDLNpwgN+M6c3vx/Uh1GFv459AKc+nfQqqQ5k6PIbIEH9+9981/O39DQzpEcp9FyVwWr8I9ucW8/BnW3num538b9luxg7sylkDuzJ2QCQOuw87s/LZcSif7IJSpiRF00kvd1XtUIH2KaiO5rR+kXxw/RjSDxdw1sCuNR3PPcIDeGRGEr8e05vXlu5i8dZDfLguE5uAAWrPP/TEV9u5/dyBTBvRUzuuVbtSc0mqFgXVkfTtGkzfrvX3ZyTEhPHQtEQqKw3rMnJYsrVq1rn+3ULo1y2Y0vJK7l64kdveXc/bK/dy75QEBvcIdWd8pVymoLQcP18bdh/3XIyhRUF5DZtNSI7tRHLsL+9vmPfbk3l3TQYPLNrCBU99z3VnxHPDmf1w2N3z15VSrlLkxmGzwYVjH4mIQ0RWiMg6EdkoIv9oYL3pIrLJuc4brsqj2jebTZiW0pOvbj6Di5KjeXrxTiY98R0rd2U3a/t9OUX8sOMwlZWm0fWMMeQWljV6D4dSbamgpMJtnczg2pZCCXCmMSZfROzA9yKyyBizrHoFEekH/BUYY4w5KiK/HBtaqRYID/Tj4WmJTE7swR3vr2fac0u5eHgMt0zoT/ewgOPWLSwtZ9H6A7y7JoOlaUcwBs7oH8l/pifW3JFtjGHhukxe+i6d/bnF5BSWUl5p6B7m4NXfjKK/TmakXKywtNytLQWXFQVjjAHynS/tzkfdP8OuBZ42xhx1bnPIVXlUx3J6/0g++9PpPPH1dub+sIuPUjO55rTeXJDYg2U7j7BkWxZLdx6hpLyS2M6B/Oms/gT5+/DgZ1s59/HveGxGEmEBdu5euJFVu48yMCqEswd3o3OQnVCHnTnfpzPtuaW8fNVIHa5DuVRBaQWBbpqfGUCMaby53Kqdi/gAq4G+VP3yv63O+x8A24AxgA9wtzHm03r2MxuYDRAbGzti9+7dLsus2p+92YU8/PlWFqz9ecyn3hFBnNE/kkkJ3RkZ16nmxrvN+/P4wxtrSDtcAECXID9unTCAS0b0PO5u7b3ZhVwxZzkH80p49lfDGTtAG7nKNaY99yO+Nhtvzh7dqv2IyGpjTEqT67myKNQKEw68D9xgjNlQa/lHQBkwHYgBvgUSjDE5De0rJSXFrFq1ysWJVXu0PiOXjZm5nNynC726BDW4XmFpOQ9+uhV/u43rx/Vt8Ka5rGMlXDV3BVsPHOOBi4dxyYgYV0VXHdikx7+jR7iDl2aNbNV+mlsU3NImMcbkiMhiYCKwodZbGcByY0wZkC4i24B+wEp35FIdS0JMGAkxYU2uF+jny92ThzS5XmSIP2/OHs3v/ruaW95Zx67DBdx0dn+9T0K1qUI3zs8Mrr36KNLZQkBEAoCzgS11VvsAGOtcJwLoD6S5KpNSbS3UYeeVX4/i0pE9eWrxDm548yeKyyqsjqXakQI3zs8Mrm0pdAdedfYr2IB5xpiPROQeYJUxZiHwGXCOiGwCKoBbjTFHXJhJqTZn97Fx/9QE4iODuH/RFjZk5hIfEURogJ2wADtj+kZwzuBubTaZkepYikorCLC3g0tSjTGpQHI9y++q9dwANzkfSnktEWH26X2Ijwjm1aW7OJxfys6sArILSnlt6W6G9Ajlz+P7c9agrlocVLMZYygoLW83LQWlOpzxg7sxfnC3mtflFZV8sDaTJ77azjWvrWJw91BG9e5M367B9O8WQkJ0mNsGOlPep7isEmNwa5+CFgWlXMjXx8YlI2K4MKkH76/Zxxsr9vDOqr01E6fERwTx9m9PJjLEv4k9qY6owDmXgrYUlGpn7D42po/syfSRPTHGkJlbzOrdR7ltfipXzFnOW7NHEx6oQ3+r4xU5/3gIcOMYXjoHolJuJiJEhwcwObEHL16ZQlpWAVfNXUm+c9x8par93FJoB5ekKqWadmq/CJ66PJn1+3K55tWVLNl6iA37csnMKaK8Qgfd6+gKStw7lwLo6SOlLHfOkCj+My2Rm+atZVnaz6O69u0azMI/jHFrJ6PyLIUWtBT026aUB5iSHM0pfbqw92gRR/JLSD9cwP2LtvDk1zu4beJAq+MpixRa0KegRUEpD9E11EHXUEfN6+2H8nnpuzQuHh7T4Kx0qn2zoqWgfQpKeajbzx1IgN2HuxZswB0DVyrPU92nENQeZl5TSrVORLA/t04YQET6AooeHAx3h8OjQyF1ntXRlJtUtxTcOZ+Cnj5SyoPNDFzBNL85OIpKqhbk7oUPb6x6Pmy6dcGUW1jRp6AtBaU8mO3re3BQcvzCsiL46h5rAim3KiytwGG3HTfBk6tpUVDKk+VmtGy5alcKSsoJcvMlyVoUlPJkYfXP5lYeEu3mIMoKhaUVBLpx3CPQoqCUZzvrLrAHHLeoyPjx9/yL+b8P1vPphv3kFpZZFE65WmFpOYFunEsBtKNZKc9W3Zn81T1Vp4zCYjg8/BYOpA9h2Zp9/HfZHkTgouRo7rsoAYcbOySV61nRUtCioJSnGzb9uCuNegJzzoCyikrW7c1h0YYDzPk+nV2HC3jhyhQignUY7vZC+xSUUs1m97GREteZO88fzLMzh7Npfx5Tnv6BbQePWR1NtZHC0gq3DoYHWhSUahfOTejO27NPpqS8kouf+ZEvNx20OpJqA1oUlFInLLFnOAuuH0NcRBDXvLaKhz7bQkWlDo/hzQpLy916NzNoUVCqXekRHsA7153MpSN78vTincx6eQVH8kua3lB5pIKSCreOewRaFJRqdxx2Hx64eBgPXjyMFbuyueiZH9mfW2R1LNVClZWGorIKt8+noUVBqXZq+sievD17NEcLSrnshWUczCu2OpJqgaIy98+6Bs0sCiISJCI25/P+IjJZROyujaaUaq3k2E688ptRZB0r4bIXl3HomBYGb1FgwQip0PyWwreAQ0Sigc+BK4BXXBVKKdV2RvSqKgwHcouZ+eJysgtKrY6kmqHQgrkUoPlFQYwxhcBU4BljzDRgiOtiKaXa0si4zsy9aiS7jxTy0GdbrI6jmqF62GxP7VMQETkZmAl87Fym99Mr5UVOiu/CzNGxzFuVQVpWvtVxVBNqJtjx0JbCn4C/Au8bYzaKSDyw2HWxlFKucP24vvj72njki21WR1FNKHC2FII8cZRUY8w3xpjJxph/OzucDxtjbnRxNqVUG4sI9ufqU3vzUep+NuzLtTqOakRhSXVLwQNPH4nIGyISKiJBwAZgk4jc6tpoSilXuOa0eMIC7Pzn861WR1GNqO5T8NQB8QYbY/KAKcAioDdVVyA1SEQcIrJCRNaJyEYR+Ucj614sIkZEUpqdXCl1QsIC7PxubB8Wb81i5a5sq+OoBlT3KQR4aJ+C3XlfwhRgoTGmDGhqUJUS4ExjTCKQBEwUkdF1VxKREOCPwPLmx1ZKtcask+PoGuLPg59uwRgdH8kTeXSfAvA8sAsIAr4VkV5AXmMbmCrVlzjYnY/6vn3/BP4N6F01SrlJgJ8PN5zVj5W7jrJka5bVcVQ9CkvKEQGHrwcWBWPME8aYaGPMJOcv+93AuKa2ExEfEVkLHAK+MMYsr/P+cKCnMebjenfw83qzRWSViKzKytIvsFJtYUZKT2I7B/LgZ1up1NFUPU5haQWBdh9sNnHrcZvb0RwmIo9U/2IWkf9Q1WpolDGmwhiTBMQAo0RkaK192oBHgJubsZ8XjDEpxpiUyMjI5kRWSjXBz9fGzef0Z/P+PD5MzbQ6jqqjoLSCADd3MkPzTx+9DBwDpjsfecDc5h7EGJND1X0NE2stDgGGAktEZBcwGlionc1Kuc8Fw3owMCqER77YRllFpdVxVC2FpeVu70+A5heFPsaYvxtj0pyPfwDxjW0gIpEiEu58HgCcDdTcX2+MyTXGRBhj4owxccAyYLIxZtUJ/SRKqRaz2YS/TBzA7iOFvL1yr9VxVC05hWWEOtw/7mhzi0KRiJxa/UJExgBNDdDeHVgsIqnASqr6FD4SkXtEZPKJxVVKtbVxA7qS0qsTT3y1nSLnFS/Kepk5RfQId7j9uM09YXUd8JqIhDlfHwVmNbaBMSYVSK5n+V0NrD+2mVmUUm1IRLjt3IFMe24pry3dxW/P6GN1pA7PGENmThFj+ka4/djNvfponfN+g2HAMGNMMnCmS5MppdxmZFxnxvTtwtwfdmnfggfIKy6noLSC6PAAtx+7RTOvGWPynHc2A9zkgjxKKYtcfWpvDuQVs2jDAaujdHiZOVVn53t4elGow70XzyqlXGps/670jgji5e/TrY7S4f1cFNzfp9CaoqB3uyjVjthswq/HxLF2bw5r9hy1Ok6HlplbNcCDx50+EpFjIpJXz+MY0MNNGZVSbnLx8BhCHL7aWrBYZk4Rdh8hItjf7cdu9OojY0yIu4IopawX5O/LZaNimfN9uvOSSPf/paqqikJUmMPtQ1xA604fKaXaoStP7oUxhleX7rI6SoeVmVNEjzBrCrIWBaXUcWI6BTJxaBRvLt9DgXP2L+VemTnFlvQngBYFpVQ9rj0tnrzicub+oH0L7lZRaTiQV0x3C648Ai0KSql6JMd24uzB3Xj+mzSOFpRaHadDOXSsmIpKY1l/jhYFpVS9bjlnAPml5Tz3zU6ro3QoVt64BloUlFINGBAVwkXJ0bzy4y4O5OrEiO6yL8e6exRAi4JSqhF/Ht+fSmN4/KvtVkfpMPY7Wwrdw7RPQSnlYXp2DmTmSb2Yt2ovaVn5TW+gWi0zp4gQhy8hFsylAFoUlFJNuH5cX/x9bTz46Varo3QI+yy8HBW0KCilmhAZ4s/14/ry6cYDfLnpoNVx2j2r7yTXoqCUatK1p8UzoFsIdy7YQL7e0OZS+3OtmXGtmhYFpVST/HxtPHBxAgfyinn4Mz2N5CqFpeUcLSyju0VDXIAWBaVUMyXHdmLWyXG8unSXDq3tIpkWX44KWhSUUi1wy4QBRIU6+Ou76ykt12k725rVN66BFgWlVAsE+/vyzwuHsvXgMf7zhZ5Gamv7c62bca2aFgWlVIuMH9yNy0+K5flv0li85ZDVcdqVfTnFiEC3UC0KSikvctf5gxnUPZSb5q2tOeWhWi8zp4huIQ7sPtb9ataioJRqMYfdh6cvT6a0vJIb3vyJsgrtX2gLVfcoWNdKAC0KSqkTFB8ZzH1TE1i9+yj/+Xyb1XHaBatvXAMtCkqpVrgwKZrLRsXy/Lc7+XHnYavjeDVjDJm5xVoUlFLe7c7zBxHXJYhb5q0jr7jM6jhe60hBKaXllfSwaHTUaloUlFKtEujny6Mzkjh4rIS7F2y0Oo7X8oR7FECLglKqDST1DOeGM/vy3k/7+Dh1v9VxvFLG0aqiEN1Ji4JSqh24flxfEnuG87cP1nMwT2dqa6ndRwoBiO0caGkOlxUFEXGIyAoRWSciG0XkH/Wsc5OIbBKRVBH5SkR6uSqPUsq17D42Hp2eSElZJbe8s47KSmN1JK+yJ7uQzkF+lk2uU82VLYUS4ExjTCKQBEwUkdF11vkJSDHGDAPmAw+6MI9SysXiI4O58/zBfLf9MHN/3GV1HK+yJ7vA8lYCuLAomCrV8/fZnQ9TZ53FxphC58tlQIyr8iil3OOyUT05e3A3/r1oC5sy86yO4zX2ZBe276IAILMpm/QAABHTSURBVCI+IrIWOAR8YYxZ3sjqVwOLGtjPbBFZJSKrsrKyXBFVKdVGRIR/XzyMsEA7f3zrJ4rLKqyO5PHKKirJzCmmV5d2XhSMMRXGmCSqWgCjRGRofeuJyK+AFOChBvbzgjEmxRiTEhkZ6brASqk20TnIj/9MS2T7oXzu+2Sz1XE8XmZOERWVhp7tvaVQzRiTAywGJtZ9T0TGA38DJhtjStyRRynleqf3j+Q3Y3rz2tLdfPDTPqvjeLTqK496teeiICKRIhLufB4AnA1sqbNOMvA8VQVBx+BVqp25/dyBnNS7M395N5WfdLa2Bu3Jdl6O2s5PH3UHFotIKrCSqj6Fj0TkHhGZ7FznISAYeEdE1orIQhfmUUq5mZ+vjWd/NYKoUAezX1+tw2w3YG92IX6+NrqFWDvEBYCvq3ZsjEkFkutZflet5+NddXyllGfoHOTHS7NSmPrMj1z72ireue5kAv1c9qvHK+0+UkjPTgHYbGJ1FL2jWSnlev27hfDkZcls2p/H7e+uxxi9sa22PdmF9OoSZHUMQIuCUspNxg3syk3j+7NwXSbzV2dYHcdjGGM85h4F0KKglHKj34/ry+j4zvx94UZ2ZuU3vUEHcLSwjPySci0KSqmOx8cmPDYjGT9fGze++RMl5Xpj2+4jBYD1A+FV06KglHKrqDAHD12SyMbMPB78dKvVcSxXfTmqJ9zNDFoUlFIWOHtwN2ad3Is536ezaH3Hnn9hj/PGNU+4mxm0KCilLPLXSYNIjg3npnnr2LAv1+o4ltmTXUi3UH8cdh+rowBaFJRSFnHYfXjhihQ6Bdq55tVVHOqgE/Ps9qArj0CLglLKQpEh/rw0ayR5xWVc+/rqDjmi6t7sQmI7e8Y9CqBFQSllscE9Qnl0RhLr9uZwx/vrrY7jVsVlFRzIK9aWglJK1TZhSBQ3ntWP99bs4/ONB6yO4zYZR4swBmK7BFgdpYYWBaWUR7jhzL4M6h7K/32wgdzCMqvjuMXe6tFR9fSRUkodz+5j46FLhnGkoJR7P95kdRy38LQb10CLglLKgwyNDuO6M+J5Z3UGS7a2/ylW9mQXEejnQ0Swn9VRamhRUEp5lBvO7EffrsHc8d56jhW379NIe7ILiO0ciIj1Q2ZX06KglPIoDrsPD14yjP15xTy7ZKfVcVzGGMPWg8c8ZniLaloUlFIeZ3hsJ84f1oO5P+zicH77nLp9zZ6j7M0u4qyB3ayOchwtCkopj/Sn8f0oKa/gmcXts7Uwb2UGgX4+TBrW3eoox9GioJTySH0ig7l4eAz/Xb6b/bnta27nwtJyPkrNZFJCd4L9PWtqUi0KSimPdeNZ/TDG8OTXO6yO0qY+WX+AgtIKpqf0tDrKL2hRUEp5rJ6dA7l0ZCzzVu6tGWK6PXhn1V7iugQyMq6T1VF+QYuCUsqj/eHMvlUztn25zeoobWL3kQKWp2czLaWnR12KWk2LglLKo3ULdXDVKXG8v3Yfm/fnWR2n1eavzsAmMHV4tNVR6qVFQSnl8X4/ti+hDjv3fbLZ6iitUlFpeHd1Bqf1i6R7mOcMglebFgWllMcLC7Rzw5l9+W77Yb7ZlmV1nBO2ZOshMnOLmZYSY3WUBmlRUEp5hStO7kVs50Du/2QzFZXG6jgtduhYMX99bz1xXQI5e7Bn3bBWmxYFpZRX8Pf14baJA9ly4Bjvrs6wOk6LlFdUcsMbP5FXXMazvxqBv69nzMdcHy0KSimvMSkhiuTYcB7+fCuFpeVWx2m2hz7byvL0bO67KIFB3UOtjtMoLQpKKa8hIvzfeYM4dKzEawbL+3TDfp7/No1fjY5l6nDP7UuopkVBKeVVRvTqzJSkHjz3zU52HMq3Ok6jCkvLuXV+Kok9w7nz/MFWx2kWlxUFEXGIyAoRWSciG0XkH/Ws4y8ib4vIDhFZLiJxrsqjlGo//u/8wQT6+XLH++up9OBO5882HuBYcTl3nDvQo/sRanNlS6EEONMYkwgkARNFZHSdda4Gjhpj+gKPAv92YR6lVDsREezPHZMGsiI9m/ke3On83pp9RIcHMDKus9VRms1lRcFUqW7b2Z2PuiX9QuBV5/P5wFniifd9K6U8zrQRPRkV15l/fbLZI+dcOJRXzA87DnNRcjQ2m/f8WnNpn4KI+IjIWuAQ8IUxZnmdVaKBvQDGmHIgF+jiykxKqfbBZhPumzqUwtJy/vWx593pvHBdJpUGLvLQ4Swa4tKiYIypMMYkATHAKBEZeiL7EZHZIrJKRFZlZXnv3YxKqbbVt2sIvxvbl/d/2sdL36VZHec4763ZR2JMGH0ig62O0iJuufrIGJMDLAYm1nlrH9ATQER8gTDgSD3bv2CMSTHGpERGRro6rlLKi9x4Zl8mJURx78ebeW3pLqvjALD1wDE27c9jSrJ3tRLAtVcfRYpIuPN5AHA2sKXOaguBWc7nlwBfG2M891ICpZTH8fWx8filyZw9uBt3LdjIG8v3WB2J937KwMcmXJDYw+ooLebKlkJ3YLGIpAIrqepT+EhE7hGRyc515gBdRGQHcBNwuwvzKKXaKbuPjacuT+bMgV254/31vLfGuiuSKioNC37K5Iz+kUQE+1uW40S5bHJQY0wqkFzP8rtqPS8Gprkqg1Kq4/D39eGZmcP59dyV3PH+eobFhNO3q/vP5y9PO8KBvGLuOG+Q24/dFvSOZqVUu+Gw+/D4pUk47D7cNG8tZRWVbj1+RaXhia+3E+Lvy9mDPHck1MZoUVBKtStdQx3cf1ECqRm5PPnVdrce+4mvtrMsLZs7LxhMgJ933MFclxYFpVS7c25Cd6YOj+apxTtYs+eoW475w47DPPH1dqYOj2baCM8f+K4hWhSUUu3S3ZOH0D0sgD+/vZbcojKXHuvQsWL++NZa4iOC+OeFQ/HmgRm0KCil2qVQh51Hpiey72gRFz3zA2lZrhlRtayikj+9tZb8kjKemTmCIH+XXb/jFloUlFLt1knxXfjfNSeRU1jGhU//0ObzOxeXVXDd66v5cecR7rlwKAOiQtp0/1bQoqCUatdOiu/CguvHEB0ewK/nruCRz7dyILe41fvNLSrjyjkr+HrrIf45ZSjTU3q2QVrribfdQJySkmJWrVpldQyllJcpKCnnL++m8nHqfkRgdO8uXJjUgynJ0TjsLbtS6NCxYma9vJIdh47x6Iwkzh/m+Xcui8hqY0xKk+tpUVBKdSTphwtYsHYfC9Zmkn64gNHxnXlp1kiCm9kXUFBSztRnfmTv0UKev2IEp/XzjvHYmlsU9PSRUqpD6R0RxJ/G9+frm8/gkemJrNx1lCvnLG/WFUrGGP7ybirbDx3zqoLQEloUlFIdkogwdXgMT18+nPX7cpn50jKOFpQ2us0L36bxcep+/jJxYLssCODCsY+UUsobTBwaxQtXpnDd66s5+9FviAxx4GsTfGzCwKgQJgyN4pQ+XViZfpR/f7qF8xK689vT462O7TLap6CUUlQNZPfast2UlldSUWkoKa9g3d5c8kvKCfb3RYCoMAcfXD/GK+9FaG6fgvf9ZEop5QInxXfhpPjjZwMuKa/gxx1H+HTDAbYcPMaj0xO9siC0RPv+6ZRSqhX8fX0YN7Ar4wZ2tTqK22hHs1JKqRpaFJRSStXQoqCUUqqGFgWllFI1tCgopZSqoUVBKaVUDS0KSimlamhRUEopVcPrhrkQkSxgNxAG5DoXN/W8+t8I4PAJHLb2Ppv7flPLrMzc0Ht1lzf2um7O2stOJPOJfMbtMbN+l1uWuS2/F22V2VO/y72MMU2P4meM8coH8EJzn9f6d1Vrj9Xc95taZmXmht6ru7yx13VztjbziXzG7TGzfpet+y63VWZv/C7Xfnjz6aMPW/C89rLWHqu57ze1zMrMDb1Xd3ljr+vL2ZrMJ/IZ17fc2zPrd7l5x2/qvRP5XtR+7mnfi7qv2/q7XMPrTh+1hoisMs0YJdCTaGb38LbM3pYXNLO7tDazN7cUTsQLVgc4AZrZPbwts7flBc3sLq3K3KFaCkoppRrX0VoKSimlGqFFQSmlVA0tCkoppWpoUXASkdNE5DkReUlEfrQ6T3OIiE1E/iUiT4rILKvzNIeIjBWR75yf9Vir8zSHiASJyCoROd/qLM0hIoOcn+98Efmd1XmaQ0SmiMiLIvK2iJxjdZ7mEJF4EZkjIvOtztIQ53f3VednO7M527SLoiAiL4vIIRHZUGf5RBHZKiI7ROT2xvZhjPnOGHMd8BHwqivzOrO1OjNwIRADlAEZrspaK1tbZDZAPuDAxZnbKC/AbcA816Q8Xht9lzc7v8vTgTGuzOvM1haZPzDGXAtcB8xwZV5ntrbInGaMudq1SX+phdmnAvOdn+3kZh2gNXe+ecoDOB0YDmyotcwH2AnEA37AOmAwkEDVL/7aj661tpsHhHhDZuB24LfObed7SWabc7tuwP+8IO/ZwKXAVcD53vAZO7eZDCwCLveWzM7t/gMM97LMLv9/rxXZ/wokOdd5ozn796UdMMZ8KyJxdRaPAnYYY9IAROQt4EJjzP1AvacBRCQWyDXGHHNhXKBtMotIBlDqfFnhurRV2upzdjoK+LsiZ7U2+ozHAkFU/Q9WJCKfGGMqPTmzcz8LgYUi8jHwhqvyOo/VFp+zAA8Ai4wxa1yZF9r8u+xWLclOVWs8BlhLM88MtYui0IBoYG+t1xnASU1sczUw12WJmtbSzO8BT4rIacC3rgzWiBZlFpGpwAQgHHjKtdHq1aK8xpi/AYjIVcBhVxaERrT0Mx5L1WkDf+ATlyZrWEu/yzcA44EwEelrjHnOleEa0NLPuQvwLyBZRP7qLB5WaSj7E8BTInIezRwGoz0XhRYzxvzd6gwtYYwppKqQeQ1jzHtUFTOvYox5xeoMzWWMWQIssThGixhjnqDqF5jXMMYcoaoPxGMZYwqAX7dkm3bR0dyAfUDPWq9jnMs8mWZ2PW/LC5rZXbwxc7U2y96ei8JKoJ+I9BYRP6o6CxdanKkpmtn1vC0vaGZ38cbM1douuzt7zV3YG/8msJ+fL8282rl8ErCNql75v1mdUzNrXs3sGQ9vzOyu7DognlJKqRrt+fSRUkqpFtKioJRSqoYWBaWUUjW0KCillKqhRUEppVQNLQpKKaVqaFFQ7YKI5Lv5eG0y54ZUzS+RKyJrRWSLiDzcjG2miMjgtji+UnVpUVCqHiLS6LhgxphT2vBw3xljkoBk4HwRaWoOhClUjdqqVJvToqDaLRHpIyKfishqqZrtbaBz+QUislxEfhKRL0Wkm3P53SLyuoj8ALzufP2yiCwRkTQRubHWvvOd/451vj/f+Zf+/5zDQCMik5zLVovIEyLyUWN5jTFFVA1xHO3c/loRWSki60TkXREJFJFTqJor4SFn66JPQz+nUidCi4Jqz14AbjDGjABuAZ5xLv8eGG2MSQbeAv5Sa5vBwHhjzGXO1wOpGup7FPB3EbHXc5xk4E/ObeOBMSLiAJ4HznUeP7KpsCLSCejHz8Ogv2eMGWmMSQQ2UzWcwY9UjWlzqzEmyRizs5GfU6kW06GzVbskIsHAKcA7zj/c4edJfWKAt0WkO1WzVKXX2nSh8y/2ah8bY0qAEhE5RNWMcXWnEV1hjMlwHnctEEfVlKNpxpjqfb8JzG4g7mkiso6qgvCYMeaAc/lQEbmXqrkngoHPWvhzKtViWhRUe2UDcpzn6ut6EnjEGLPQOSHN3bXeK6izbkmt5xXU//9Mc9ZpzHfGmPNFpDewTETmGWPWAq8AU4wx65yT/IytZ9vGfk6lWkxPH6l2yRiTB6SLyDSomu5RRBKdb4fx81jzs1wUYSsQX2vaxCYno3e2Kh4AbnMuCgH2O09Zzay16jHne039nEq1mBYF1V4EikhGrcdNVP0ivdp5amYjVXPWQlXL4B0RWQ0cdkUY5ymo3wOfOo9zDMhtxqbPAac7i8mdwHLgB2BLrXXeAm51dpT3oeGfU6kW06GzlXIREQk2xuQ7r0Z6GthujHnU6lxKNUZbCkq5zrXOjueNVJ2yet7iPEo1SVsKSimlamhLQSmlVA0tCkoppWpoUVBKKVVDi4JSSqkaWhSUUkrV0KKglFKqxv8DPqAq6Bp1c1UAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "code", "execution_count": 11, "id": "c1c115da-f32b-4ed2-ba61-5e2bc14b8981", "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 1000 }, "id": "c1c115da-f32b-4ed2-ba61-5e2bc14b8981", "outputId": "1e128202-dba3-4d3d-8488-e005b0ffc971" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "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.9097870.4140970.86214300:50
" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "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", " \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", " \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.2349400.0706240.97773800:52
10.1735450.0592510.98321400:51
20.1475680.0397030.98869000:52
30.1474680.0401400.98916700:52
40.1184130.0473100.98559500:52
50.1152560.0435260.98678600:52
60.1002090.0317420.99131000:52
70.0841660.0340140.99095200:52
80.0928360.0306390.99345200:51
90.0830510.0374010.98976200:51
100.0696290.0301840.99261900:51
110.0570010.0318670.99202400:51
120.0641140.0325270.99178600:51
130.0576590.0250050.99345200:51
140.0564350.0352600.99047600:51
150.0378600.0284940.99345200:51
160.0419330.0252750.99309500:51
170.0405100.0283620.99381000:52
180.0391340.0207720.99404800:56
190.0343590.0245140.99357100:53
200.0340520.0286970.99250000:53
210.0351120.0244490.99321400:53
220.0262930.0235440.99416700:53
230.0276580.0215940.99523800:52
240.0237300.0220510.99464300:53
250.0217530.0216760.99464300:58
260.0191190.0221350.99392900:54
270.0169970.0209950.99428600:54
280.0250080.0216460.99476200:53
290.0219300.0214370.99428600:53
" ] }, "metadata": {} } ], "source": [ "learner.fine_tune(CFG.n_epoch, base_lr=CFG.lr)" ] }, { "cell_type": "markdown", "id": "e7d117dc-1285-45bc-b049-adc3c69e774f", "metadata": { "tags": [], "id": "e7d117dc-1285-45bc-b049-adc3c69e774f" }, "source": [ "# **Results** " ] }, { "cell_type": "code", "execution_count": 12, "id": "5a6a79e0", "metadata": { "papermill": { "duration": 8.906543, "end_time": "2022-03-11T16:55:04.644447", "exception": false, "start_time": "2022-03-11T16:54:55.737904", "status": "completed" }, "tags": [], "colab": { "base_uri": "https://localhost:8080/", "height": 521 }, "id": "5a6a79e0", "outputId": "b6c1eafa-3f72-4960-bb75-6d0d92680f6e" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "execute_result", "data": { "text/plain": [ "[('5', '3', 8), ('1', '7', 5)]" ] }, "metadata": {}, "execution_count": 12 }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "interp = ClassificationInterpretation.from_learner(learner)\n", "interp.plot_confusion_matrix(figsize=(8,8), dpi=60)\n", "interp.most_confused(min_val=5)" ] }, { "cell_type": "code", "execution_count": 13, "id": "0af0ed57", "metadata": { "papermill": { "duration": 0.663332, "end_time": "2022-03-11T16:55:05.502194", "exception": false, "start_time": "2022-03-11T16:55:04.838862", "status": "completed" }, "tags": [], "colab": { "base_uri": "https://localhost:8080/", "height": 119 }, "id": "0af0ed57", "outputId": "20213da4-544c-432a-a162-d3be0a752dda" }, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "\n", "\n" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "" ], "text/html": [ "" ] }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ], "source": [ "learner.show_results(max_n=10, nrows=1, figsize=(12,6))" ] }, { "cell_type": "markdown", "source": [ "# **SAVE Model** " ], "metadata": { "id": "vL_6JedySMTM" }, "id": "vL_6JedySMTM" }, { "cell_type": "code", "execution_count": 22, "id": "34aa0321-823b-4f9a-9b79-afe157f2a0bf", "metadata": { "id": "34aa0321-823b-4f9a-9b79-afe157f2a0bf" }, "outputs": [], "source": [ "attributes = [f\"{attr}_{getattr(CFG,attr)}\" for attr in dir(CFG) \n", " if not attr.startswith('__')]\n", "model_name = \"_\".join(attributes)\n", "\n", "MODEL_WEIGHTS_PATH.mkdir(parents=True, exist_ok=True)\n", "\n", "learner.export(MODEL_WEIGHTS_PATH/(model_name+\".pkl\"))" ] }, { "cell_type": "code", "execution_count": 23, "id": "da4b3af6", "metadata": { "execution": { "iopub.execute_input": "2022-03-11T16:55:08.151903Z", "iopub.status.busy": "2022-03-11T16:55:08.151124Z", "iopub.status.idle": "2022-03-11T16:55:11.164237Z", "shell.execute_reply": "2022-03-11T16:55:11.164679Z" }, "papermill": { "duration": 3.124777, "end_time": "2022-03-11T16:55:11.164836", "exception": false, "start_time": "2022-03-11T16:55:08.040059", "status": "completed" }, "tags": [], "id": "da4b3af6" }, "outputs": [], "source": [ "# clean temporary folder\n", "!rm -r \"./train\"\n", "!rm -r \"./test\"" ] }, { "cell_type": "code", "source": [ "" ], "metadata": { "id": "9XgRS4ZRaW77" }, "id": "9XgRS4ZRaW77", "execution_count": null, "outputs": [] } ], "metadata": { "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.8.0" }, "papermill": { "default_parameters": {}, "duration": 1954.440008, "end_time": "2022-03-11T16:55:12.388589", "environment_variables": {}, "exception": null, "input_path": "__notebook__.ipynb", "output_path": "__notebook__.ipynb", "parameters": {}, "start_time": "2022-03-11T16:22:37.948581", "version": "2.3.3" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "647b23e15f5b4e15b5aa857eb934125b": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "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_19b49bfbdbc54e7c8d39e34886933917", "IPY_MODEL_7689c665314e4baba1438c068f13698d", "IPY_MODEL_fc220a66b5e1484395567428a3b75e18" ], "layout": "IPY_MODEL_06c41196817c488cbb1034cd40b9e2e9" } }, "19b49bfbdbc54e7c8d39e34886933917": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_565b44b833e749e6a88c553c2178306b", "placeholder": "​", "style": "IPY_MODEL_00be8645d5214bedab6230add3788200", "value": "100%" } }, "7689c665314e4baba1438c068f13698d": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "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_3563440971204890bcd6bdea50809e1f", "max": 87319819, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_bc37e4b669b343dbbc8b5d600b51d433", "value": 87319819 } }, "fc220a66b5e1484395567428a3b75e18": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "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_0484a9e6fccb450f84a5a04760184349", "placeholder": "​", "style": "IPY_MODEL_e008ff58802a45e9a0b438514785eea5", "value": " 83.3M/83.3M [00:01<00:00, 73.9MB/s]" } }, "06c41196817c488cbb1034cd40b9e2e9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "565b44b833e749e6a88c553c2178306b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "00be8645d5214bedab6230add3788200": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } }, "3563440971204890bcd6bdea50809e1f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "bc37e4b669b343dbbc8b5d600b51d433": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "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": "" } }, "0484a9e6fccb450f84a5a04760184349": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "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 } }, "e008ff58802a45e9a0b438514785eea5": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "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": "" } } } }, "colab": { "name": "train.ipynb", "provenance": [] }, "accelerator": "GPU" }, "nbformat": 4, "nbformat_minor": 5 }