{ "cells": [ { "cell_type": "code", "execution_count": 42, "id": "c831c34c", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Using mps\n", "Using 4 threads\n" ] } ], "source": [ "import matplotlib.pyplot as plt\n", "import torch\n", "from torch.utils.data import DataLoader\n", "from torchvision import datasets, transforms\n", "from cnn import CNN\n", "\n", "model = CNN()\n", "model.load_state_dict(torch.load(\"cnn/model.pt\"))\n", "\n", "check_gpu = torch.cuda.is_available()\n", "device = torch.device(\"cpu\")\n", "\n", "if check_gpu:\n", " device = torch.device(\"cuda\")\n", "elif torch.backends.mps.is_available():\n", " device = torch.device(\"mps\")\n", "\n", "model.to(device)\n", "\n", "print(f\"Using {device}\")\n", "print(f\"Using {torch.get_num_threads()} threads\")\n" ] }, { "cell_type": "code", "execution_count": 43, "id": "cd2d6928", "metadata": {}, "outputs": [], "source": [ "test_transforms = transforms.Compose(\n", " [\n", " transforms.Resize((32, 32)),\n", " transforms.ToTensor(),\n", " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)),\n", " ]\n", ")\n" ] }, { "cell_type": "code", "execution_count": 44, "id": "f7bb207f", "metadata": {}, "outputs": [], "source": [ "num_workers = 0\n", "batch_size = 64\n", "\n", "test_dataset = datasets.CIFAR10(\n", " root=\"./cifar\", train=False, download=True, transform=test_transforms\n", ")\n" ] }, { "cell_type": "code", "execution_count": 45, "id": "9ca78681", "metadata": {}, "outputs": [], "source": [ "test_loader = DataLoader(test_dataset, batch_size=batch_size, num_workers=num_workers)\n" ] }, { "cell_type": "code", "execution_count": 46, "id": "9c5c7fae", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Accuracy of airplane : 84.60 %\n", "Accuracy of automobile : 93.20 %\n", "Accuracy of bird : 76.90 %\n", "Accuracy of cat : 69.70 %\n", "Accuracy of deer : 77.20 %\n", "Accuracy of dog : 64.00 %\n", "Accuracy of frog : 89.30 %\n", "Accuracy of horse : 82.10 %\n", "Accuracy of ship : 89.60 %\n", "Accuracy of truck : 87.90 %\n", "\n", "Overall Test Accuracy: 81.45%\n" ] } ], "source": [ "classes = ('airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck')\n", "\n", "class_correct = list(0. for i in range(10))\n", "class_total = list(0. for i in range(10))\n", "\n", "model.eval()\n", "\n", "with torch.no_grad():\n", " for data, target in test_loader:\n", " data, target = data.to(device), target.to(device)\n", " output = model(data)\n", " _, predicted = torch.max(output.data, 1)\n", " \n", " c = (predicted == target).squeeze()\n", " for i in range(len(target)):\n", " label = target[i]\n", " class_correct[label] += c[i].item()\n", " class_total[label] += 1\n", "\n", "class_accuracies = []\n", "for i in range(10):\n", " accuracy = 100 * class_correct[i] / class_total[i] if class_total[i] > 0 else 0\n", " class_accuracies.append(accuracy)\n", " print(f'Accuracy of {classes[i]:10s} : {accuracy:.2f} %')\n", "\n", "overall_accuracy = 100 * sum(class_correct) / sum(class_total)\n", "print(f'\\nOverall Test Accuracy: {overall_accuracy:.2f}%')\n" ] }, { "cell_type": "code", "execution_count": 47, "id": "1e171b86", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABb4AAAJyCAYAAAALltY5AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAieFJREFUeJzs3Qm4XPP9P/DvzUII2UnELpbYEn6E2tdK7bFUqdqK2P3spb/ad2qpvdReS6na2qL2UiRCCErEGkJCyEKIbPf/fL79z3Tuzb1xE3eZTF6v55nn3jlz7plz5px75sz7fOZzqqqrq6sTAAAAAABUiFYtPQMAAAAAANCYBN8AAAAAAFQUwTcAAAAAABVF8A0AAAAAQEURfAMAAAAAUFEE3wAAAAAAVBTBNwAAAAAAFUXwDQAAAABARRF8AwAAAABQUQTfAACUnZEjR6bTTz89bb755qlnz56pXbt2+bbEEkuk/v37p/PPPz+PU2rfffdNVVVVNW5/+tOfZpr2Bx98UGOcZZZZZpaPx2211VZLM2bMmGlatZ/zpptumuNlnjp1alp00UVneu4rrrhijqcJAADzKsE3AABl47vvvkv/+7//m3r16pVOO+209OSTT6ZPP/00D4/bqFGj0j/+8Y904oknpjXWWON7p3fyySenadOm/eD5euONN9If//jH1JT++te/ps8//3ym4T8kTAcAgHmV4BsAgLIwefLktOWWW6bLLrusRli98MILp8022yxtv/32ad11182V36GuCuzaRowYkW688cZGmb9TTz01TZkyJTWV+gLul156Kb3++utN9rwAAFCJBN8AAJSFww8/PD377LPF+9HmI8Lmzz77LD3xxBPpgQceSC+88EL68ssv0/XXX5+WWmqpBk03WqZEqP5DRQuU3//+96kpRKX3Qw89VLzftm3bGo+r+gYAgNkj+AYAoMVFRXPtyuwIrKPdSaHCu2CBBRZIv/zlL9OLL77YoGlHe5TG6pN99tlnp0mTJqXGFm1Uosd3wQknnJAWXHDB4v3bbrvte1u2vPzyy+mQQw5Jq6++eurUqVOab775Uo8ePdL666+f/u///i99/fXXdb42cXJhgw02SN26dcuBe9euXVOfPn3SoYcemoYPH14jfC/tPR7rprZZ9U6v6+/ff//93Cd98cUXT23atMm/hy+++CKdeeaZaZdddkmrrrpqXo75558/vyZxwmOHHXbIr8msqv7jBMmFF16Y+8R37949vx7xuqy88sp5+xk8eHAe75xzzqkxX9ddd91M04p1E69PYZzoO98YLXQAAGg6bZpw2gAA0CBxEcrSEHORRRbJ4e+sRBA6K5tsskl6+umn8+/nnXdeGjhwYOrQocNsz1uEshG2v/POO2nMmDHp0ksvzUFyY6pd0X3AAQfk5ytcnHP06NHp4YcfTtttt91MfxuvW/RFryvcj/mN2/PPP58OPPDAtNBCC9V4zsMOOyx98803MwXGcXvttdfSOuusk1ZaaaXUFIYOHZouueSSNHHixJkei0D8lFNOqfPvPvroo3x78MEH06233pp/1q6Qj+r5vffeO40dO7bG8AkTJuTbW2+9lQP0WL44WRDhd+GExpVXXplfq9rTizC+YP/9989BPQAA5UvFNwAALe5f//pXjftbbLHF9wbb32evvfZKq6yySv49Qsuo/p0TEXCeccYZxfsxnQiGG0tUag8bNqx4f7311svV0nvssUeD2p0ce+yxM4XeUSEd/dK32mqrXKlc23333ZernktD7+ilHpXfEa7HxUWbWrSuidB7iSWWSFtvvXUOoVu3bj3TckRf95/85Ce5yjuq1+MkRMEjjzySg+pSUcm900471Qi941sDMf3oEx8V5KU6d+6cTzQUvPrqqzVa7oTSC5u2atVqpmAcAIDyI/gGAKDFRVVyqdptMuZEhKhnnXVW8X5Uake/8Dmx++67pzXWWCP/HhXDUUHeWGoH2j//+c/zzwiDozVHQVQ21w7coyr88ssvn6lFTFREP/roozkYjmrxP//5zznYDtXV1enoo4/OPwt23HHH3MM8At94nphuBMi1Q+LG9qtf/Sp9+OGH6e9//3saNGhQuuqqq/LwFVZYIb399tvp008/zX3do+L6/vvvzydIohq8ffv2xWnceeedNaZ5/PHHp++++654P8LymFZMP8L2aKvz5ptvpo033rg4TrwepRXcpScSIpyP16Rgm222aXB/eQAAWo7gGwCAslMayv4QUfkblb4helxHj+45EX2dS/82gtFPPvnkB8/flClT0u23314jrP/pT3+af4+e1NHjur5xQ4TB06dPL97fdNNNc4uQ0hA3phnTid7dhQrzCLkLOnbsmG6++ebUpUuXGtPu169fvjWVFVdcMb+mUUFdUKjyj3mK5T3yyCPTmmuumauyo51JrIeoAi/tsx5tSwqiyvuZZ54p3o/xo1p7ySWXrPHcvXv3zr2/C5Zeeuni6x7+8pe/5NA93HPPPTUujnrwwQc34qsAAEBTEXwDANDi4uKDpUqD2R/q3HPPLf5+zTXX5ArjORGVvhtttFH+/dtvv63R/mRORSVxae/owoUYC76v3cl77703U1/z71P7b6KSPYLm5havZe3WJgV33XVXnq+oZn/llVfS+PHj672YZFTgF0Q1eOlJk6jMXnbZZRs0P1EpXnoxy2uvvXamNicRkEclPgAA5U/wDQBAi4ve0qUef/zxGu0qfogIk3/84x/n36OK+NRTT53jaZW2OLn++utzS5AfonaQHW09oud14RYXaCz10ksv5VYd5aB2EF27Xc336dmzZ53DYx3FBSdLpx8XO+3fv3+uXI/bggsumBpbVJZHb/mCCL7jJMlTTz1VHBa9vUsr1AEAKF+O2gAAaHE/+9nPagSK0bLiggsumOXfzE4wfs455+S2F+Hpp5+e4/mMftFx8ccQwWzti3LOjgiKH3744RrDvvrqqzRq1Kjira52KqVh+XLLLVfjsYYsW+2/iYrq0qrp+kTrlVKlleqhtMVIQ9QXIL/xxhs1eplH5Xf0LI/XKnqV1+7pXbs3fGE9h5EjR+Yq8IYqrfqO1z76rc+YMSPfj1Yr+++/f4OnBQBAyxJ8AwDQ4lZbbbW077771hgWldlxocbS/sqFNiNRbT07/afXXnvtGv2yf4gI0Ruj6jdaaNTXvmNWbrvttuLf7bDDDjXmJaqTowVL6XSj9Uf0Ao+TCeF//ud/alycMULvffbZZ6YLZ0Yg/uKLL9Zbof3Xv/41ffzxx/n3ESNGpBNPPDE1hmgzUjtwj9A5RAh90kknpW+++abOv43K8NJvD8Sy/+IXv8jBeal33303PfHEEzP9fVSVr7766sX7zz33XPH3AQMG5P7iAADMHQTfAACUhbhg5IYbblgjtDzttNPSoosumltQ7Ljjjmm99dbLF2E84IADcjXv7DjrrLPq7Sk9OyIYjUrgH6p2m5Po9x3LXNetT58+xfFGjx5drBRfYYUV0mGHHTbTCYMItrfaaqv0k5/8JAfWEdrGxT1DVERfdNFFNf4mgvGolo6+2xGmx8Ufo/VHVF8XxEVCO3ToULwfoXdUj0ff65VWWimHyY11EmShhRYq3h88eHC+EGZU2i+//PLpt7/9bY2q7trimwKl1ekRXsff/+hHP8rLFhXk8br985//rPPvjzvuuDqHu6glAMDcRfANAEBZWGCBBdJjjz2WjjjiiBoBdbT/iOrcBx54IPfALlSAz27VdYSztavK51RUVReqkOfEkCFDavTq7ty5c642nlUrmPpC80suuWSmUPbTTz9Njz76aHrkkUdyUF7brrvumq677rr8mpe+zs8++2wO4IcPHz7T30Rf7ajAr12dHScgIpw/8sgjU2OI54mq+lIRqv/tb3/LbUsOP/zwGhXrtcXJkXvuuSefICmIbWbQoEF52V599dUaF8CsLS4oGv3VS0VwHr3iAQCYewi+AQAoG/PPP3+67LLLctAZlcubbLJJbi8Rw6OKd/HFF88Xqjz33HNzK47ZFRXk7dq1+8Hzueyyy6aBAwc2WrX3zjvvPMsgvXbwHQFuoTVJnCS4+uqrc2X0QQcdlFZdddW08MIL5+l17949VzpHe5Bu3brVmEZUzUfA/Zvf/CaPE0FxmzZtcggfVdcRpkeIXOqoo45Kt956a1prrbXy6xjPE+vo3nvvTb/73e9SY4mTH9HPO+YrwvmoAI+K8xtvvDFdfvnl3/v3UR0eyxYXI435i2WP16Njx47FEyDbbLNNnX8b49UO8eN1BQBg7lJVPatyBwAAgHlMXOQyWqqECN6jrUtpBTkAAOWvTUvPAAAAQEv705/+lD788MP09ttv58rygqjsF3oDAMx9VHwDAADzvE033TQ9/fTTNYbFRTBffPHF3CIFAIC5ix7fAAAA/1/0TF966aXzRTTjYp9CbwCAuVOLBt///Oc/0/bbb5969uyZqqqq0n333Vfj8ShGP+WUU9Jiiy2We+ttueWWacSIETXGiYv67LnnnqlDhw6pU6dOaf/9909ff/11My8JAAAwN3vqqafy549p06alDz74IF9Ec9FFF23p2QIAYG4MvidNmpT69u2brrzyyjofv+CCC9Jll12WrrnmmjRo0KDUvn371L9//zR58uTiOBF6v/HGG+nRRx9Nf/3rX3OYHn34AAAAAACYN5VNj++o+L733nvTgAED8v2YragEP/bYY9Nxxx2Xh02YMCF179493XTTTWn33XdPb775ZlpllVVy37211147j/Pwww+nbbbZJl95Pf4eAAAAAIB5S5tUpt5///00evTo3N6kIPrrrbvuuun555/PwXf8jPYmhdA7xPitWrXKFeI77bRTndP+7rvv8q1gxowZuWVK165dcwAPAAAAAED5iYLpr776Khc9Rw481wXfEXqHqPAuFfcLj8XP2n332rRpk7p06VIcpy7nnntuOv3005tkvgEAAAAAaFofffRRWmKJJea+4LspnXTSSemYY44p3o8WKksttVSuMo+LZIY4WxC3qAaPW0Fh+PTp0/PZhe8bHleFjyryuEhOqRgeYvyGDI9AP6ZbOjymG+PXnsf6hlsmy2SZLJNlskyWyTJZJstkmSyTZbJMlskyWSbLZJksU+u5eJm+/vrrtPTSS6eFF144zUrZBt89evTIP8eMGZMWW2yx4vC4v8YaaxTH+eyzz2r8XaysaFtS+Pu6zD///PlWW1SKF4JvAAAAAADKS4Tt4ftaVtffBKWFLbvssjm8fvzxx4vDJk6cmHt3r7feevl+/Bw/fnx66aWXiuM88cQT+cxA9AIHAAAAAGDe06IV31GW/s477xTvR6uRV155JVdeR+uRo446Kp111llphRVWyEH4ySefnJuWDxgwII+/8sorp5/85CfpwAMPTNdcc02aOnVqOvzww/OFL2M8AAAAAADmPS0afA8ZMiRtttlmxfuFvtv77LNPuummm9IJJ5yQJk2alAYOHJgruzfccMP08MMPp3bt2hX/5rbbbsth9xZbbJF7vuyyyy7psssua5HlAQAAAACg5VVVl3YGn0dFC5WOHTvmi1zq8Q0AAAAAMHdnuWXb4xsAAAAAAOaE4BsAAAAAgIoi+AYAAAAAoKIIvgEAAAAAqCiCbwAAAAAAKorgGwAAAACAiiL4BgAAAACgogi+AQAAAACoKIJvAAAAAAAqiuAbAAAAAICKIvgGAAAAAKCiCL4BAAAAAKgogm+g2X311VfpqKOOSksvvXRaYIEF0vrrr59efPHF4uOnnXZa6t27d2rfvn3q3Llz2nLLLdOgQYNmOc1zzz039evXLy288MJp0UUXTQMGDEjDhw+vMc7kyZPTYYcdlrp27ZoWWmihtMsuu6QxY8YUH//yyy/T9ttvnx9bc80109ChQ2v8ffztRRdd1GivAwAAAABNQ/ANNLsDDjggPfroo+nWW29Nr732Wtpqq61yuD1q1Kj8+IorrpiuuOKK/Nizzz6blllmmTzO559/Xu80n3766RxMv/DCC3naU6dOzX8zadKk4jhHH310evDBB9Pdd9+dx//kk0/SzjvvXHz87LPPzqH8yy+/nDbddNN04IEHFh+L6Ub4HoE9AAAAAOWtqrq6ujrN4yZOnJg6duyYJkyYkDp06NDSswMV7dtvv81V2ffff3/adttti8PXWmuttPXWW6ezzjqr3v/Rxx57LG2xxRYNep4IyaPyOwLujTfeOP9/L7LIIun2229Pu+66ax7nrbfeSiuvvHJ6/vnn049+9KO0zTbbpB122CEdfPDB6c0330xrr712Ds4jRI9q8j/84Q95GAAAAADlneWq+Aaa1bRp09L06dNTu3btagyPlidR3V3blClT0rXXXpt3aH379m3w88TOL3Tp0iX/fOmll3KAHZXlBdFOZamllsrBd4jpP/HEE3keH3nkkdSnT588/IILLsgV4EJvAAAAgLmD4BtoVlHtvd5666UzzzwztxqJEPyPf/xjDp8//fTT4nh//etfc6/tCMgvueSS3L6kW7duDXqOGTNm5JYkG2ywQVpttdXysNGjR6f55psvderUqca43bt3z4+FE088MbVp0yb16tUr3Xvvven6669PI0aMSDfffHM6+eSTcyX4csstl3bbbbdisA4AAABA+RF8A80uentHl6XFF188zT///Omyyy5Le+yxR2rV6r+7pM022yy98sor6bnnnks/+clPctj82WefNWj60ev79ddfT3feeedszVdUlUcrlA8//DC3SFlllVXSQQcdlC688MJ02223pffeey9fMHPBBRdMZ5xxxmwvNwAAAADNQ/ANNLuoqI5g+euvv04fffRRGjx4cG5DEtXUBe3bt0/LL7987r0dlddRiR0/v8/hhx+eq8WffPLJtMQSSxSH9+jRI7dNGT9+fI3xx4wZkx+ry4033pgrxHfcccf01FNPpQEDBqS2bdumn/70p/k+AAAAAOVJ8A20mAi3F1tssTRu3LjcUzsC5lm1L/nuu+/qfTwqyCP0jhYl0ad72WWXrfF4XDwzQuvHH3+8OCyqt0eOHJlbr9R1ccyo6r788svz/WjJEuF8iJ9xHwAAAIDy1KalZwCY90TIHUH1SiutlN555510/PHH5wtN7rfffmnSpEnp7LPPTjvssEMOxceOHZuuvPLKNGrUqFxpXbDFFluknXbaKYfdhfYm0abk/vvvz33EC327o31JXDgzfu6///7pmGOOyRe8jKv+HnHEETn0jqry2qJH+LHHHpvbsYToFx4tWrbaaqt8sc24DwAAAEB5EnwDzS4uDHnSSSeljz/+OIfQu+yySw67oyI7KqnfeuutfEHJCL27du2a+vXrl5555pm06qqrFqfx7rvv5scLrr766vxz0003naldyb777pt/j4tkRh/xeL6oHu/fv3+66qqr6gzmI5CPoLsgAvYhQ4akddddN62zzjrp1FNPbZLXBgAAAIAfrqo6yi7ncRMnTszVoBHGRRUoAAAAAABzb5arxzcAAAAAABVF8A0AAAAAQEURfAMAAAAAUFEE3wAAAAAAVBTBNwAAAAAAFUXwDQAAAABARWnT0jMAtLzzho5t6VlgFk5cs1tLzwIAAADAXEXFNwAAAAAAFUXwDQAAAECLmT59ejr55JPTsssumxZYYIHUq1evdOaZZ6bq6uriOGPGjEn77rtv6tmzZ1pwwQXTT37ykzRixIjvnfb48ePTYYcdlhZbbLE0//zzpxVXXDH9/e9/rzHOlVdemZZZZpnUrl27tO6666bBgwfXePyYY45JXbp0SUsuuWS67bbbajx29913p+233/4HvwZA49PqBAAAAIAWc/7556err7463XzzzWnVVVdNQ4YMSfvtt1/q2LFjOvLII3MAPmDAgNS2bdt0//33pw4dOqSLL744bbnllunf//53at++fZ3TnTJlSvrxj3+cFl100fTnP/85Lb744unDDz9MnTp1Ko7zpz/9KQfb11xzTQ69L7300tS/f/80fPjw/HcPPvhguv3229M//vGPHLT/8pe/zI9369YtTZgwIf3f//1feuyxx5rx1QIaSsU3AAAAFVXl+Ze//CWtvfbaOdyKQGyNNdZIt956a41x4jlOOeWUXAUazx0BWul0v/vuu7TXXnvlgC0qRGsHWxdeeGE64ogjGu21gHnZc889l3bccce07bbb5srrXXfdNW211VbFyuv433zhhRdyON6vX7+00kor5d+//fbbdMcdd9Q73RtuuCF9+eWX6b777ksbbLBBnvYmm2yS+vbtWxwnAvQDDzwwB+2rrLJKDsBjXxN/G95888206aab5n3KHnvskfcJ77//fn7shBNOSIccckhaaqmlmvw1Amaf4BsAAIAWrfK84oorcrgU9y+44IJ0+eWX58cLVZ7vvfdervIcOnRoWnrppXNIPWnSpHqnGy0Jogrz+eefT8OGDcuBVtweeeSR4jjxPJdddlkOuQYNGpQD8qjinDx5cn782muvTS+99FKexsCBA9PPf/7zYiAfodd1112Xzj777CZ/jWBesP7666fHH388vf322/n+q6++mp599tm09dZbF09EhWhFUtCqVavcuiTGq88DDzyQ1ltvvdzqpHv37mm11VZL55xzTj7pVqgIj//z2KeUTjfux/9+iJA8KtDHjRuXx42wffnll8/P+/LLL+eKdKA8aXUCAABAi1d5hqjGjOrN2lWer7/+em5/ECIo79GjRx7vgAMOqHO6UZ1Z6n//939zC4UIqiLcjgA72hn85je/yc8fbrnllhyMRWXo7rvvnoP4HXbYIT/vcsstl44//vg0duzYtMgii+QKzwjpo/IT+OFOPPHENHHixNS7d+/UunXrHEzHiaU999wzPx7Do6r6pJNOSr///e/ziapLLrkkffzxx+nTTz+td7px0uyJJ57I04m+3u+880469NBD09SpU9Opp56a/6fjueJ/v1Tcf+utt/Lvsc/4xS9+kSvN49shsS+J54/9wE033ZT3SXGyLlqfxAmzwr4KaHkqvgEAAKioKs9SEXLHc0S/3o033rhYsT169OgaVZ7RSzj6+5ZWecZzRHVnVIpHS5QItuLCdjE/O+20UyO+EjBvu+uuu/L/VvTSjirqCJd/+9vf5p8hentHC6PYV8Q3OqIVyZNPPpn3FbFPqM+MGTNyn+4IpNdaa630s5/9LH8bJL7pMTtOO+20HJq/9tpr+X//3HPPzfuPmK+zzjor7yviRNzee+/9g18LoPGo+AYAAKCiqjxDXHQuLmQX4XlM+6qrrsoXuQsReoe6qjwLj8UF7KJNSvT8jcA7grlodRB9wZ966qlcLX7nnXfmvuTRCzieC5gz8Y2K2B/Ety3C6quvni9CGQHzPvvsk4dFcP3KK6/k/+1oURLfvoiTVdF7uz5xwirC6dgHFKy88sr5/zymEf/b8VhcS6BU3I9vltQlKsH/+Mc/5tZL8b8fJ9RiXnbbbbe83/jqq6/Swgsv3EivDPBDqPgGAACgoqo8QwRPEZK9+OKLOUw/5phjcmDdUPHcV155Za4Oj2lsuOGG6dhjj839fCPwipYoUaH+ox/9SI9f+IG++eabmf6nI5COiu3a4tsZETRHK6TovV1oV1SXuKBlVGqXTif2JxGIzzfffPkWgXp8K6Qgxo370Ru8rm+QHHTQQfmCmAsttFA+WRdtU0LhZ6F/ONDyBN8AAAC0eJVnVHjutdde6eijj85VngWFKs/x48fnKu+HH344ffHFF7nv9qxEiBYXoFtjjTVyYL3rrrsWp1uo5JydKs8I3N944410+OGH5wB9m222yRXoUeU5O4E6MLPtt98+n6D629/+lj744IN077335nC5tKXQ3Xffnf/XChe7jW9wxMVvt9pqq+I40WokviFSEH24v/zyy9znPwLvmH5c3DIudlkQJ8XiYrVxwi16+8ffxMVz44K4tf3hD3/IoXvMbyFYjx7icS2C+DZKfEOkU6dOTfhKAbND8A0AAEBFVXnWJaZZ6Bm+7LLL5oC7tMozWq4MGjSozirPyZMn56As2q0UWrKUVnmq8IQfJi4OGSen4sKT0YrkuOOOy5XVZ555ZnGcOPEVJ8eiBVJ8yyJ+j4vclho5cmSNNkhLLrlk7tEf39ro06dP/rsIweOEW0H0/Y5vmkQbozhRFifa4gRb7VZIcWIswvnLLrusOGydddbJJ9biAr3xDZYbb7yxiV6hyhf70ZNPPjnvn+MiotFGKtZ/VNkXVFVV1Xm78MIL651utJ456qij0tJLL52nG9eWiO2hVDxHrP/4JkCME/3b472mIN47YnuLCxqvuOKK6bHHHqvx9/H8RxxxRKO+HjSOqurSLWgeFQc4cRAVfaJclZt50XlDx7b0LDALJ67ZraVnAQCgSey77745QIhAedVVV80tRAYOHJj75J5//vnFKs8IvKPXd1xYLkKrqAK/5557alR5Ro/tQkV3/Iy+vxGcRGDx97//PQddV199db4AXYjpn3feebnKM4KWCFyip/e///3vGhfTDHExvJhOhGMhAq6oVn/wwQdzCBZBW1SSAjBnohI/qvxjnxzvB3GCM6ru42RDoZ1U4RoMBQ899FDaf//9czub+r4FFCc2Xn/99bz/79mzZ+7PHtX5sa8vXJsh3g/ifaP0/SDebwrvB3FiJv4+3o/iOS+44IJ8IiRC92iH1b9//zy/MsXyy3Jd3BIAAIAWEWFCBAxR5fnZZ5/lUCKqPKPyriBC5WhFECFDVONFyB1/U7vKs7RyPNoUxDTjIphRvRcVohF2RABScMIJJ+TxImiPNirRwzuqPGuH3hGYRNAdVaAFUZkaLRc22mijtNJKK+Ue5QDMueeeey5/kyeq58MyyyyTK/oHDx5cHKd2K6poebPZZpvVG3p/++23+SRpjBcXIQ2nnXZaPmkZQfZZZ52Vq70vvfTSfMHiwjeJbrnlllzxH9dyiFZc0QJnhx12yIF8PFec+Bw7dmw+KRutcSI4F3qXJxXfKr5BxXeZU/ENAABApVd8X3vttekf//hHbicSFw+O/u1RBb7nnnvONH6cDF1iiSVylfbPf/7zetucRM4X3yzaYostisPjRGebNm2KPePj20HxjaNodVOwySab5Pu/+93v8reSbr311vToo4/m1jlxYnXUqFH5pGdUgUdATvNS8Q0AAAAAlL1oRxVhZnxDp3AthWhzUlfoHSLwXnjhhdPOO+9c7zTj8bhuQ/QKj97xUcUdVeTPP/98vvhxafuU2j3d437hsWi/Fa2w4uKl3bp1y98CGjduXP52UoTnUS1+55135gD9hhtuKLZQoeW5uCUAAAAA0GIiTL7ttttyFfXLL7+cg+24rkL8rEsEzBGK125PVVtUakeziwij559//nxdhj322GOmCyvPStu2bdOVV16Z+3nHhTGjYjwuahq9x6NSPCq+o0L9Rz/6UbEfOeVB8A0AAAAAtJjomx1V39FTe/XVV0977bVXOvroo4sXLS71zDPPpOHDhxcvVjwrUYX99NNPp6+//jp99NFHuWf41KlTi33BC33Do3VKqbhfu6d4wZNPPpneeOONdPjhh+eK72222Sa1b98+7bbbbvk+5UPwDQAAAAC0mG+++WamKuxoeTJjxoyZxr3++uvTWmutlfr27dvg6UcwHRdIjhYl0ae7cCHLZZddNgfcjz/+eHHcaLkyaNCg3CaltsmTJ6fDDjss9/0utGSJID3Ez7hP+RB8AwAAAAAtZvvtt889vf/2t7+lDz74IN177735wpY77bRTjfEilI4LStZX7R0XsbziiiuK9yPkfvjhh3Obkrg45WabbZb7iO+333758aqqqnTUUUels846Kz3wwAPptddeS3vvvXfq2bNnGjBgwEzTj37hUeG95ppr5vsbbLBB+stf/pJ7gMfzxn3Kh4tbAgAAAFDDeUPHtvQsMAsnrtktVZLLL788nXzyyenQQw9Nn332WQ6eDzrooHwByVJxEcno2R19uuvy7rvvprFj/7vtTpgwIZ100knp448/Tl26dEm77LJLDtijb3fBCSeckCZNmpQGDhyYxo8fn3t4R1heu3/466+/nnuRv/LKK8Vhu+66a25vstFGG6WVVlop9yinfFRVx9Yyj4uzRR07dsz/DB06dGjp2YFm54CmvFXaAQ0AUN4cG5Y3x4Y0F/uC8mZfwLxsYgOzXK1OAAAAAACoKIJvAAAAAAAqiuAbAAAAAICKIvgGAAAAAKCiCL4BAAAAAKgogm8AAAAAACqK4BsAAAAAgIrSpqVngHnH9OnT02mnnZb++Mc/ptGjR6eePXumfffdN/3mN79JVVVVM41/8MEHp9///vfpkksuSUcdddQspz1q1Kj0q1/9Kj300EPpm2++Scsvv3y68cYb09prr50fr66uTqeeemq67rrr0vjx49MGG2yQrr766rTCCivkx7/77rt0wAEHpPvvvz/16NEjXXXVVWnLLbcsTv/CCy9MI0eOTJdffnmjvy4AAAAA5ei8oWNbehaox4lrdmvpWSh7gm+azfnnn5/D5ptvvjmtuuqqaciQIWm//fZLHTt2TEceeWSNce+99970wgsv5HD8+4wbNy4H2ZtttlkOvhdZZJE0YsSI1Llz5+I4F1xwQbrsssvycy+77LLp5JNPTv3790///ve/U7t27dK1116bXnrppfT888/nafz85z9PY8aMyYH8+++/nwPzmF8AAAAAoPwJvmk2zz33XNpxxx3Ttttum+8vs8wy6Y477kiDBw+eqXr7iCOOSI888khx3O8L1Jdccslc4V0Q4XZBVHtfeumlubI8nj/ccsstqXv37um+++5Lu+++e3rzzTfTDjvskAP55ZZbLh1//PFp7NixOUQ/5JBD8nN06NChEV8NAAAAAKCp6PFNs1l//fXT448/nt5+++18/9VXX03PPvts2nrrrYvjzJgxI+211145eI4QuiEeeOCB3NLkpz/9aVp00UXTmmuumSu0C6JiO1qrlLYuiSrzddddN1d4h759++Z5+fbbb3Pgvthii6Vu3bql2267LVeE77TTTo34SgAAAAAATUnFN83mxBNPTBMnTky9e/dOrVu3zj2/zz777LTnnnsWx4nK6jZt2szU+mRW3nvvvdxC5Zhjjkm//vWv04svvpj/fr755kv77LNPDr1DVHiXivuFx375y1+mYcOGpVVWWSUH3nfddVduoXLKKaekp556KleL33nnnalXr17phhtuSIsvvnijvS4AAAAAQOMSfNNsIkyOCurbb789V3O/8sor+aKV0cc7Aurosf273/0uvfzyy3Ve7LI+USUeFd/nnHNOvh8V36+//nq65ppr8nQbom3btunKK6+sMSz6j0eAPnTo0NwSJSrUo1d4DLvnnntmc+kBAAAAgOai1QnNJtqXRNV39NReffXVc0uTo48+Op177rn58WeeeSZ99tlnaamllspV33H78MMP07HHHpv7gdcn2pJEpXaplVdeOY0cOTL/3qNHj/wzLlZZKu4XHqvtySefTG+88UY6/PDDc8X3Nttsk9q3b5922223fB8AAAAAKF+Cb5rNN998k1q1qrnJRcuTqNgOEYRHu5GoBC/coho8AvPou12fDTbYIA0fPrzGsOgjvvTSSxcvdBkBd/QXL4iWK4MGDUrrrbfeTNObPHlyOuyww9Lvf//7YkuWqVOn5sfiZ9wHAAAAAMqXVic0m+233z739I6K7mh1Ei1ELr744txfO3Tt2jXfarcgidB6pZVWKg7bYost8sUmoxo7RNV4XDgzWp1ERfbgwYPTtddem28h2qZES5WzzjorrbDCCjkIP/nkk3OoPmDAgJnm88wzz8wV3tEypRCsR/gerU+uuOKKfB8AAAAAKF+Cb5rN5ZdfngPnQw89NLc0ieD5oIMOyheQnB3vvvtuGjt2bPF+v3790r333ptOOumkdMYZZ+Rg+9JLL61x0cwTTjghTZo0KQ0cODCNHz8+bbjhhunhhx9O7dq1qzHt6A0evcij2rxg1113ze1NNtpooxzAR49yAAAAAKB8VVVXV1eneVy0vejYsWOaMGFC6tChQ0vPDjS784b+90QC5efENbu19CwAAPMQx4blzbEhzcW+oLw1177AdlC+5uX3g4kNzHL1+AYAAAAAoKIIvgEAAAAAqCiCbwAAAKBFTJ8+PV8LKq7VtMACC6RevXqlM888MxW6sk6dOjX96le/Squvvnpq3759vlbU3nvvnT755JNZTvef//xn2n777fP4VVVV6b777ptpnHiOuObUYostlp97yy23TCNGjCg+/t1336W99torf41+xRVXTI899liNv7/wwgvTEUcc0WivBQCNS/ANAAAAtIjzzz8/XX311emKK65Ib775Zr5/wQUXpMsvvzw//s0336SXX345h+Px8y9/+UsaPnx42mGHHWY53UmTJqW+ffumK6+8st5x4nkuu+yydM0116RBgwblYL1///5p8uTJ+fFrr702vfTSS+n5559PAwcOTD//+c+Lgfz777+frrvuunT22Wc36usBQONp04jTAgAAAGiw5557Lu24445p2223zfeXWWaZdMcdd6TBgwfn+3HxskcffbTG30RIvs4666SRI0empZZaqs7pbr311vlWnwiwL7300vSb3/wmP3+45ZZbUvfu3XN1+O67756D+AjYV1111bTccsul448/Po0dOzYtssgi6ZBDDskh/awuqgZAy1LxDQAAALSI9ddfPz3++OPp7bffzvdfffXV9Oyzz84ytJ4wYUJuX9KpU6c5ft6o2B49enRub1IQIfu6666bK7xDVIzHvHz77bfpkUceyS1RunXrlm677bbUrl27tNNOO83x8wPQ9FR8AwAAAC3ixBNPTBMnTky9e/dOrVu3zj2/o33InnvuWef40YYken7vscceP6jaOkLvEBXepeJ+4bFf/vKXadiwYWmVVVbJgfddd92Vxo0bl/uCP/XUU7la/M4778x9yW+44Ya0+OKLz/H8AND4BN+k84aObelZYBZOXLNbS88CAABAk4gwOSqob7/99txS5JVXXklHHXVUvijlPvvsU2PcuNDlbrvtltuURF/wpta2bduZeoTvt99+6cgjj0xDhw7NLVGiQj16hcewe+65p8nnCYCG0+oEAAAAaBHRNzuqvqOn9uqrr5722muvdPTRR6dzzz23ztD7ww8/zD2/f2hv7R49euSfY8aMqTE87hceq+3JJ59Mb7zxRjr88MNzxfc222yTL4gZ8xX3ASgvgm8AAACgRXzzzTepVaua0US0PJkxY8ZMofeIESPSY489lrp27fqDn3fZZZfNAXf0Fy+IliuDBg1K6623Xp0tVg477LD0+9//vtiSJearMH9xH4DyIvgGAAAAWsT222+fe3r/7W9/Sx988EG6995708UXX1y8cGSEyrvuumsaMmRIbokSAXP04I7blClTitPZYost0hVXXFG8//XXX+e2KXErXMwyfh85cmS+HxfHjJYqZ511VnrggQfSa6+9lvbee+/cYmXAgAEzzeeZZ56ZK7zXXHPNfH+DDTZIf/nLX3IP8HjeuA9AedHjGwAAAGgRl19+eTr55JPToYcemj777LMcPB900EH5ApJh1KhROZgOa6yxxkytRzbddNP8+7vvvpvGjv3v9asiKN9ss82K94855pj8M/qG33TTTfn3E044IU2aNCkNHDgwjR8/Pm244Ybp4YcfTu3atavxPK+//nruRV4I0UOE8dHeZKONNkorrbRS7lEOQHmpqo6rQszj4utMHTt2TBMmTPjBfcLmRi5uWd6a4+KWtoHy5gKnAEBzcmxY3hwb0lzsC8pbc+0LbAfla15+P5jYwCxXqxMAAAAAACqK4BsAAAAAgIoi+AYAAAAAoKIIvgEAAAAAqCiCbwAAAAAAKorgGwAAAACAiiL4BgAAAACgorRp6RkAAAAAyst5Q8e29CxQjxPX7NbSswAwV1DxDQAAAABARRF8AwAAAABQUQTfAAAAAABUFME3AAAAAAAVRfANAAAAAEBFEXwDAAAAAFBRBN8AAAAAAFSUsg6+p0+fnk4++eS07LLLpgUWWCD16tUrnXnmmam6uro4Tvx+yimnpMUWWyyPs+WWW6YRI0a06HwDAAAAANByyjr4Pv/889PVV1+drrjiivTmm2/m+xdccEG6/PLLi+PE/csuuyxdc801adCgQal9+/apf//+afLkyS067wAA1G+ZZZZJVVVVM90OO+yw9MEHH9T5WNzuvvvuOqc3derU9Ktf/Sqtvvrq+XiwZ8+eae+9906ffPJJjfG+/PLLtOeee6YOHTqkTp06pf333z99/fXXxcfjuTfeeOM8jfgZ90ttt9126Z577mmiVwUAAJgngu/nnnsu7bjjjmnbbbfNH4523XXXtNVWW6XBgwcXq70vvfTS9Jvf/CaP16dPn3TLLbfkDzj33XdfS88+ALMZdhU8//zzafPNN8/BU4RTET59++239U7zq6++SkcddVRaeuml87d/1l9//fTiiy/WGOf7viH03Xffpb322is/34orrpgee+yxGn9/4YUXpiOOOKJRXwuYl8X/6Kefflq8Pfroo3n4T3/607TkkkvWeCxup59+elpooYXS1ltvXef0vvnmm/Tyyy/nbwvGz7/85S9p+PDhaYcddqgxXoTeb7zxRn6+v/71r+mf//xnGjhwYPHxY489Ni2++OLplVdeyfuL4447rvjYn/70p9SqVau0yy67NNnrAgAANI42qYxFcHHttdemt99+O4cQr776anr22WfTxRdfnB9///330+jRo3N4UdCxY8e07rrr5tBk9913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6Te/+U3acccd87Bbbrklde/ePd13331p9913T2+++WbaYYcd8vMut9xy6fjjj09jx45NiyyySDrkkEPyvEc1OAAAAOVLxTcA0OweeOCBtPbaa+dAetFFF01rrrlmrqQubTcS2rVrVxzWqlWrNP/886dnn322wc9z/fXX5zA7qroLFdujR4/OleMFHTt2TOuuu26u8A59+/bNz/Htt9+mRx55JLdE6datW7rtttvy/Oy0006N8hoAAADQdATfAECzixYmUcG9wgor5HA5KqmPPPLIdPPNN+fHe/funZZaaql00kkn5bYoU6ZMyZXWH3/8cW5h0hCDBw/OFeOl1eEReoeo8C4V9wuP/fKXv8zh9yqrrJJbmtx11115HqIv+OWXX56rxZdffvncHiX6lAMAAFB+tDoBAJrdjBkzcsX3Oeeck+9HxXeE1NF3e5999sm9v6Nf9/7775/bl0Sf7qjS3nrrrYv9thtS7R0XzFxnnXVma97iua+88soaw/bbb78czEev8WiJ8uqrr+Ze4THsnnvuma3pAwAA0PRUfAMAzS7ah0RFdamVV145jRw5snh/rbXWSq+88koaP358rvJ++OGH0xdffJH7bn+fuABm9PeO4LxU9AgPY8aMqTE87hceq+3JJ59Mb7zxRjr88MPTU089lbbZZpvcOmW33XbL9wEAACg/gm8AoNltsMEGafjw4TWGvf3222nppZeeadzowR0XlowLXg4ZMqR4UcpZufvuu3Of8F/84hc1hscFNCPgfvzxx4vDJk6cmAYNGpTWW2+9maYzefLkdNhhh6Xf//73uep8+vTpaerUqfmx+Bn3AQAAKD+CbwCg2R199NHphRdeyK1O3nnnnXT77bena6+9NofMpeF1VFRHP/D7778//fjHP04DBgxIW221VXGcvffeO/cBr6vNSYzbtWvXGsOrqqrSUUcdlc4666x8gc3XXnstT6Nnz555/NrOPPPMXOEdrVgKgX20YBk2bFi64oor8n0AAADKjx7fAECz69evX7r33ntzaH3GGWfkSuxLL7007bnnnsVxor3JMccck9uQRGuUCKhPPvnkGtOJ1iitWtU8jx+V5M8++2z6xz/+Uedzn3DCCbkVysCBA3MblQ033DC3UWnXrl2N8aLneFzYMtqtFOy66645jN9oo43SSiutlAN7AAAAyo/gGwBoEdttt12+1ScuHBm3Wamrx3YE0rO6AGZUfUfYHrdZWW211XJ7lVIRsl911VX5BgAAQPnS6gQAAAAAgIoi+AYAAAAAoKIIvgEAAAAAqCiCbwAAAAAAKorgGwAAAACAiiL4BgAAAACgogi+AQAAAACoKG1aegYAgPJw3tCxLT0LzMKJa3Zr6VkAAACYa6j4BgAAAACgogi+AQAAAACoKIJvAAAAAAAqiuAbAAAAAICKIvgGAAAAAKCiCL4BAAAAAKgogm8AAAAAACqK4BsAAAAAgIoi+AYAAAAAoKIIvgEAAAAAqCiCbwAAAAAAKorgGwAAAACAiiL4BgAAWsyoUaPSL37xi9S1a9e0wAILpNVXXz0NGTKkznEPPvjgVFVVlS699NLvne6VV16ZlllmmdSuXbu07rrrpsGDB9d4fPLkyemwww7Lz7vQQgulXXbZJY0ZM6b4+Jdffpm23377/Niaa66Zhg4dWuPv428vuuiiOV5uAACaluAbAABoEePGjUsbbLBBatu2bXrooYfSv//97xwmd+7ceaZx77333vTCCy+knj17fu90//SnP6VjjjkmnXrqqenll19Offv2Tf3790+fffZZcZyjjz46Pfjgg+nuu+9OTz/9dPrkk0/SzjvvXHz87LPPTl999VX++0033TQdeOCBxcdiPgYNGpSOOuqoRnkdAABofIJvAACgRZx//vlpySWXTDfeeGNaZ5110rLLLpu22mqr1KtXr5mqwo844oh022235ZD8+1x88cU5qN5vv/3SKquskq655pq04IILphtuuCE/PmHChHT99dfn8TbffPO01lpr5Xl47rnncqgd3nzzzbT77runFVdcMQ0cODDfD1OnTs2V5zHN1q1bN8nrAgDADyf4BgAAWsQDDzyQ1l577fTTn/40LbroormlyHXXXVdjnBkzZqS99torHX/88WnVVVf93mlOmTIlvfTSS2nLLbcsDmvVqlW+//zzz+f78XgE2KXj9O7dOy211FLFcaJK/IknnkjTpk1LjzzySOrTp08efsEFF+QK8JhvAADKl+AbAABoEe+99166+uqr0worrJDD5UMOOSQdeeSR6eabb65RFd6mTZs8vCHGjh2bpk+fnrp3715jeNwfPXp0/j1+zjfffKlTp071jnPiiSfm543q82izEhXiI0aMyPN28skn56rv5ZZbLu222265ghwAgPLS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/GVDJg0AAAAAAM0ffO+9997p2GOPTauvvnqdj6+55pr5YpJxEcphw4aliy66qHHnEgAAAAAAGjP4vummmxo6vdSnT5908803N3h8AAAAAABokYtb1uXNN99MTzzxRP59s802S6usskpjzRcAAAAAADRv8H3rrbfmPt7Tp0/P91u3bp0vgrnPPvvM6SQBAAAAAOAHazWnf3jGGWekHXfcMT3wwAPpoYceSoccckg6/fTTf/gcAQAAAABAcwTfBx98cPr666+L9ydMmJB22GGHtN1226X+/funfffdN40fP/6HzAsAAAAAADRf8P3888+n3r17p/vvvz/f33bbbdN+++2XFllkkbT44ounfv365RAcAAAAAADmih7fL7/8cjr//PPTHnvskUPvc889Ny266KLp8ccfT9XV1ekXv/hFOvnkk5t2bgEAAAAAoLEqvuPilb/+9a/Tq6++msaOHZvWWWedtOKKK6YhQ4akl156KYfiCy20UEMnBwAAAAAA5XFxyxVWWCE9+eST6YILLkjHH3982nzzzdO7777bNHMHAAAAAABNFXx/9tlnaa+99kp9+vRJe++9d76w5b///e/UpUuXPCwqvmfMmDG7zw8AAAAAAC0TfA8cODDdeeed6Ysvvkh33HFHOuigg1KPHj3Sn//853T77benK664Iq299tqNO3cAAAAAANBUwXe0N3n99dfTqFGj0rBhw/L9gh133DG98cYbab311pvd5wcAAAAAgEbVpqEjdujQIf3pT39KG2ywQXr22WfTwgsvPNPjV155ZePOHQAAAAAANFXwfeihh6b/+7//S1VVVfn+OeecM7vPBQAAAAAA5RN8n3TSSbmH96uvvprWWGONtOWWWzbtnAEAAAAAQFMG3+HHP/5xvgEAAAAAwFx9ccv99tsvX9iyIeIilzE+AAAAAACUbcX3zTffnG655Za02mqrpe233z7169cvLbPMMvkCl19//XX68MMP05AhQ9KDDz6YW6GEG2+8sannHQAAAAAA5iz4vuaaa9JZZ52VXnvttVlWfldXV6cll1wy/eY3v2nIZAEAAAAAoGVanQwcODC999576Z577km77LJL6t69ew65C7dFF100D4/H33333XTggQc2/pwCAAAAAEBjXtyyTZs2aaeddsq3MGnSpDRhwoTUoUOHtNBCCzV0MgAAAAAAUB7Bd23t27fPNwAAAAAAmOtanQAAAAAAwNxC8A0AAAAAQEURfAMAAAAAUFEE3wAAAAAAzNvB91133ZWmTJnSNHMDAAAAAADNHXzvvvvuabHFFksHH3xweu65537o8wMAAAAAQMsG361bt07jxo1L1113Xdpoo43SiiuumM4666z04YcfNu6cAQAAAABAcwTfn332WbrxxhvTNttsk+abb770zjvvpFNPPTX16tUrbbrppunmm29OU6dOnZN5AQAAAACA5g++O3funPbZZ5/04IMPps8//zxdfvnlacEFF0wzZsxIzzzzTPrlL3+ZQ/AhQ4b88LkDAAAAAICmDr4L/vGPf6QDDjggHX/88embb77JwyIAX2mlldLHH3+cDjrooDmdNAAAAAAAzLE2s/sHp5xySm5nEuF2dXV1HrbKKqukQw45JO29995p4YUXzr2/Bw0aNOdzBQAAAAAAzRV8x4UsQ9u2bdPOO++cDj300Bx0l1p77bVzMA4AAAAAAGXf6mSppZZKZ599dvroo4/SHXfcMVPoHS655JL0/vvvN9Y8AgAAAABA01V8R6BdVVU1u38GAAAAAADlWfH9q1/9Kv3P//xPevXVV4vDhg0bloedcMIJjT1/AAAAAADQtMF3tDcZM2ZM6tu3b3FYnz590meffZYfAwAAAACAuSr4joC7c+fOMw3v1KlT+vzzzxtrvgAAAAAAoHmC7y5duqS33347DRo0qDhs8ODBafjw4XUG4gAAAAAAUNbB92abbZamTZuWNtlkk9S/f/9823jjjdOMGTPSFlts0TRzCQAAAAAADdQmzaYzzjgjPfTQQ2nChAnpsccey8Oqq6tztffpp58+u5MDAAAAAICWrfhefvnl05AhQ9K+++6bVl555Xzbb7/9cruTXr16Ne7cAQAAAABAU1d8hwi4b7jhhjn5UwAAAAAAKL/ge8qUKelf//pX+uSTT9L06dNrPLb33ns31rwBAAAAAEDTB98jRoxIW265Zfr4449neqyqqkrwDQAAAADA3BV8n3jiiemjjz5qmrkBAAAAAIDmvrjlM888k9q0aZMeffTRfH/NNddMd9xxR+rWrVtxGAAAAAAAzDXB9/jx49PKK6+ctthii9zapG3btulnP/tZ6tGjRzrnnHOaZi4BAAAAAKCpWp0svPDCacaMGfn3hRZaKL311ltp0KBBaeTIkendd9+d3ckBAAAAAEDLVnwvueSS6cMPP0zTp09Pq6++evrqq6/S+uuvn38utthijTt3AAAAAADQ1MH3Pvvsk9ucjBgxIv3f//1fbnVSXV2dWrVqlU477bTZnRwAAAAAALRsq5Ojjz4630Lv3r3Tm2++mYYOHZpWXXXVtNJKKzXu3AEAAAAAQFMG31OnTs1hd8eOHdNLL72UL2657LLL5hsAAAAAAMx1rU6irUn08o7+3hF6AwAAAADAXN/je999903Dhw9Pr7/+etPMEQAAAAAANGeP79GjR+ef/fr1S5tttlnq3r17sfo7fl5//fU/ZH4AAAAAAKB5g+8//vGPOeCurq5ODz/8cDH0jvuCbwAAAAAA5rrge+ONN9bfGwAAAACAygm+n3rqqaaZEwAAAAAAaImLWwIAAAAAQEVVfLdu3brex6IFyrRp037oPAEAAAAAQPMF33ERSwAAAAAAqJjg+8Ybb6xxf8KECenee+9Nzz77bDrrrLMac94AAAAAAKDpg+999tlnpmGHHXZY6tOnT3rllVdmfw4AAAAAAKDcLm4Zvb1btWqV/va3vzXG5AAAAAAAoPkqvjfffPMa96dPn57ef//9NGrUqNSzZ885nxMAAAAAAGiJ4Pupp57KFd51XeTy0EMPbYx5AgAAAACA5gu+99577xx8F8Tviy66aNpiiy3Sj3/84zmfEwAAAAAAaIng+6abbmqM5wUAAAAAgPK4uOWwYcPSAw88kD755JPisOjvHcPiMQAAAAAAmKsqvg888MAccH/88cfFYQsssED62c9+ltZYY430/PPPN/Y8AgAAAABA01V8v/nmm2mFFVZIXbt2LQ7r0qVLHvbGG2/M7uQAAAAAAKBlg+9p06al0aNH558FU6dOzcOmT5/euHMHAAAAAABNHXz37t07ffHFF2mPPfbIbU3i9otf/CKNHTs2PwYAAAAAAHNVj+8DDjggHX744ekvf/lLvhVUVVXl/t8AAAAAADBXVXwfeuih6bDDDsu/V1dX51uIYQcffHDjzyEAAAAAADRlxXe4/PLL03HHHZdefPHFfL9fv35p6aWXnpNJAQAAAABAywbf3333Xb4tvvjixbA7LnQ5ceLENP/88+cbAAAAAADMNa1OBgwYkLp06ZJGjBhRHPbOO++krl27pp122qmx5w8AAAAAAJo2+I72Jr169Uorr7xycVjv3r3TcsstV2x9AgAAAAAAc03w/dVXX6WpU6fONDyGxWMAAAAAADBXBd9LLrlk+vDDD9PFF1+cqqur87BLL700ffDBB2mJJZZoinkEAAAAAICm7fEdgffxxx+f2rdvnxZccMF07LHHpqqqqrTzzjvP7uQAAAAAAKBlg+/TTjstrbnmmjn8njx5cr7F7zHslFNOady5AwAAAACA2dRmdv9goYUWSi+88EK6884706BBg/KwddddN+2+++6pbdu2szs5AAAAAABo2eA7RMC911575VvBqFGj0s0335x+/etfN+b8AQAAAABA07Y6KRVtTm6//fa01VZbpWWWWUarEwAAAAAA5s6K7+eeey7ddNNN6e67704TJ07Mw6LPd1zgEgAAAAAA5orgu9DKJG7vvPNOMewOEXhfeumlaeedd266OQUAAAAAgMYMvpdeeukcdBfC7j59+uQe36eddlr65ptv0pFHHtnQSQEAAAAAQMv3+J4xY0b+2a9fv/TKK6/k27HHHpvatJmjbikAAAAAAFAeF7ccMmRI2nrrrdMJJ5yQhg0b1jRzBQAAAAAATR1833DDDWnjjTfOv3/66afpoosuSmuuuWaaMGFCHvbWW2/N6TwAAAAAAEDzB9/77rtvevLJJ9O7776bTjnllLTMMssU+32HVVddNa2yyiqpKZ133nn5QppHHXVUcdjkyZPTYYcdlrp27ZoWWmihtMsuu6QxY8Y06XwAAAAAAFBBrU4i8I4LWkYAHkH43nvvnRZccMEcgg8fPrxp5jKl9OKLL6bf//73+aKapY4++uj04IMPprvvvjs9/fTT6ZNPPkk777xzk80HAAAAAAAVFnyX2mSTTdJNN92URo8eXaMVSmP7+uuv05577pmuu+661Llz5+LwaLNy/fXXp4svvjhtvvnmaa211ko33nhjeu6559ILL7zQJPMCAAAAAEB5a9MYE2nfvn1uhRK3phCtTLbddtu05ZZbprPOOqs4/KWXXkpTp07Nwwt69+6dllpqqfT888+nH/3oR3VO77vvvsu3gokTJ+af06ZNy7fQqlWrfJsxY0a+FRSGT58+vUarl/qGt27dOrdnKUy3dHiI8RsyvE2bNnm6pcNjujF+7Xmsb3h9y5SqZ6RU1SpVxc+Sea+uahUTq3/4jJrzmIfH88f4DRneqnWebo3hVVX/Gb/e4TNSVY15qcrzXt/w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Z41mFi1sTj311Jla2TDvsA0QbAfYBrANEGwH2AYItgNsA9gG5k1V1dENHAAAAAAAKsRc3+MbAAAAAABKCb4BAAAAAKgogm8AAAAAACqK4JsW98EHH6Sqqqr0yiuv/OBp7bvvvmnAgAGNMl/Mm2666abUqVOnWY5z2mmn5YvoFtjumt6mm26ajjrqqHofX2aZZdKll14629OtvS6BytkvMG+xPcxb4jJVAwcOTF26dGm0zxGUL//fzI6GfDab088OzDsaM6eiZQm+aXFLLrlk+vTTT9Nqq63W0rNCmQbN5ea4445Ljz/+eEvPBiVefPHF/AEYGsIJD4C528MPP5yPIf/617/6HAHMNp8d5l5OhDG72sz2X0Aja926derRo8csKzqmT5+e2rSxuVIeFlpooXyjfCyyyCKzfHzq1Kmpbdu2zTY/wNxvypQpab755mvp2QDq8O6776bFFlssrb/++nU+7v+XWbF98H2fHZh7yY+oTcU3zVaVseGGG+bK3q5du6btttsuH7DW9RWSp556Kt9/6KGH0lprrZXmn3/+9OyzzxYr9H7/+9/nKvEFF1ww7bbbbmnChAlz9Lylz/2Xv/wlbbbZZnmaffv2Tc8//3yN6cTzb7TRRmmBBRbIz33kkUemSZMmNdnrNTeZ1WtcWJfjx48vjh/rOYbFax+P77fffnkdxrC4xXoO48aNS3vvvXfq3LlzXi9bb711GjFixEyV4lHps9JKK+Vxdt111/TNN9+km2++OX99Lf421lW88RV833QL7rvvvrTCCiukdu3apf79+6ePPvqowdWiM2bMSOeee25adtll8zYT29Sf//znRni1523Tpk1Lhx9+eOrYsWPq1q1bOvnkk/OBTV1fV4xt6eqrr0477LBDat++fTr77LPz8PPOOy917949Lbzwwmn//fdPkydPbrHl4YeJ/7MLLrggLb/88vl9Yqmlliqu51/96ldpxRVXzP/jyy23XN5W4uRHYd9x+umnp1dffbW434lhlLd4z419d5x0jLDroosuqvH4d999l7+Ns/jii+f/+XXXXTe/x8zOe3nsR84888z8PB06dFAJNhdvDw15r7/uuuuKx5M77bRTuvjii+e6b6DNy20MjjjiiDRy5Mi8D4//3agAjGOEqAKMY4Q4dgtPP/10WmeddfL7RGwrJ554Yj6eKPjqq6/Snnvumfcb8fgll1yimrCM3/dPOOGE3N4miqYKnxlCbAs77rhj3ifE/js+I44ZM2amY/c//OEP+fg8ju9DHJ+vvvrq+X0hPsdsueWWNd4XYvyVV145j9+7d+901VVXNfNSMyvft/5++9vf5v/reOywww4rHgvO6rNDvF/E9OL40ee38tz/x379d7/7XY3j+Lryo7pa3sS+PfbxDfk8UVtkCr/85S/zviD2Ocw9BN80i3gDOuaYY9KQIUNyi4hWrVrlDxmxo6lPHJhGSPXmm2+mPn365GHvvPNOuuuuu9KDDz6YA9ehQ4emQw899Ac/7//93//lD8wRykZYssceexQPiiPE/clPfpJ22WWXNGzYsPSnP/0p70jj4Jo5W7cFUaUTBxxxgBpfU41brIcQb1QxzQceeCCfiIiAc5tttqlxwBIh92WXXZbuvPPOvD1EyBHP/fe//z3fbr311nyipPSgpaHTjTe8W265Jf3rX//Kwf3uu+/e4NckQu/422uuuSa98cYb6eijj06/+MUv8ps0cy5OaMSZ+8GDB+eDnQgp4gNJfeJDTmwPr732Wj5IiX1HDDvnnHPyNhAHwj7AzL1OOumk/B4Rofa///3vdPvtt+eTGiFObMRBcAyPbSUCrggzws9+9rN07LHHplVXXbW434lhlLfjjz8+70Pvv//+9I9//CPv719++eXi4/GeHPv0eD+I9+qf/vSn+b27EHY29L08PiTHyco4vohti7lze/i+9/p4bz/44IPT//7v/+Zjvx//+Mf1ftCl/MR+/YwzzkhLLLFE3odHy4LCcUJU8cb6jWOwUaNG5fXer1+/fLIzQq3rr78+nXXWWcVpxTFsjB/byqOPPpqeeeaZGtsS5SPWb5ygGDRoUA6qYhuIdRafOSL0/vLLL/N+IYa99957M723x+fIe+65Jxc8xf99bDvxmS+OEePzZuxHdt5552JRxW233ZZOOeWUvG+Ix+P4Md4XYj5oed+3/p588sn83h8/Y53FceH3FTrE+o3jhNhfxAmx+PwX06a89v/rrbdeOvDAA4vH8XESu7786Id8nqhdYBHHlrHviPeJCMiZi1RDC/j888/jHan6tddeq37//ffz70OHDs2PPfnkk/n+fffdV+NvTj311OrWrVtXf/zxx8VhDz30UHWrVq2qP/3003x/n332qd5xxx0b9Lyh8Nx/+MMfiuO88cYb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wLx5EiT6f0eP12iRE1X/3bp1a+nZAgAagVYnAAAAAABUFBe3BAAAAACgogi+AQAAAACoKIJvAAAAAAAqiuAbAAAAAICKIvgGAAAAAKCiCL4BAGAus++++6aqqqq06aabtvSsAABAWRJ8AwBAmZk8eXK6+OKL07rrrps6dOiQFlxwwbTiiiumgw46KL333nstPXsAAFD22rT0DAAAAP81bty4tMUWW6ShQ4fm+wsvvHDq1atXGjlyZLr22mvTeuut19KzCAAAZU/FNwAAlJHDDz+8GHoff/zx6csvv0yvvfZamjBhQnr66afTSiutVOffnXjiiWnVVVdNnTp1Sm3btk09e/ZM++yzT/r000+L44wePTrtueeeabHFFkvzzz9/6tGjR9p8883T3//+9/z49OnT00knnZSWW2651K5du9SlS5e09tprpwsvvLCZlh4AABqH4BsAAMpEhNt33XVX/r1v377p/PPPT23a/PdLmhtvvHG9Fd8PP/xwGjVqVFpyySXT8ssvn0PuW265Je24447FcQ499NB0++23p6+//jqtttpqab755ktPPfVUGjx4cH78yiuvTOedd16uLo+AvWvXrjl0/9vf/tbkyw4AAI1JqxMAACgTb7/9dpo2bVr+faONNsoXsGyoW2+9NVd8t2r1n9qWP/zhD+nAAw9ML774Ynr33Xdzu5QRI0bkx6655ppc+R2iIjwC91B4fL/99kvXXXdd/j1C8jfffLORlxQAAJqWim8AACgT1dXVxd9nJ/QOr7zySurXr19aaKGF8t9G6F3wySef5J/bb799/hktUKIqfLvttkt//OMfc1uUEPfjbyM0X3zxxdNmm22WzjrrrNzyBAAA5iYqvgEAoExEe5FobRJV388++2wOwhsSgMe4EWbH+NGeZJVVVqlRqR29u8PZZ5+dNthgg/TII4+k119/Pf3zn//MbUyi3Un87N+/f3r55ZfT3XffnV599dXcazweu+mmm9I777yTQ3UAAJgbqPgGAIAy0bFjx7Tbbrvl3yN0/vWvf11sfRIee+yx9Nxzz830d4MGDSpWi0dP7ujZvffee8803r/+9a+0ySabpMsuuyw98cQT6dprr83DIwAPw4YNS4ssskgOyP/617+ml156KQ8fM2ZMGj58eBMtNQAAND4V3wAAUEYuv/zy9O9//zu3LokLTV511VVpmWWWSR999FEaN25cuvHGG2f6mz59+hR/X3311XN4/dlnn8003oknnph7fscFMCNkL1SEF/4+Lqx5zjnnpCWWWCJPIy5yGRZccMHcIxwAAOYWKr4BAKCMRD/t559/Pv32t7/NPbtnzJiRq607d+6cDjjggLTxxhvP9Dc//vGP0/nnn597dX/77bepd+/e6eqrr55pvJ/97Gdp7bXXThMnTsyV4Z06dUq77757uuOOO/LjMe2f/OQn+TmjFUpUkW+++ebpoYceyuMCAMDcoqq69Ao6AAAAAAAwl1PxDQAAAABARRF8AwAAAABQUQTfAAAAAABUFME3AAAAAAAVRfANAAAAAEBFEXwDAAAAAFBRBN/A/2vHDmgAAAAQBtk/tT0+iAEAAAAApIhvAAAAAABSxDcAAAAAACniGwAAAACAFPENAAAAAMBKDkpC/D59lUDvAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "\n", "plt.figure(figsize=(18, 7))\n", "bars = plt.bar(np.arange(len(classes)), class_accuracies, color='skyblue')\n", "plt.xlabel('Class', fontweight='bold')\n", "plt.ylabel('Accuracy (%)', fontweight='bold')\n", "plt.title('CNN Accuracy', fontweight='bold', fontsize=16)\n", "plt.xticks(np.arange(len(classes)), classes, ha='center')\n", "plt.ylim([0, 100])\n", "plt.grid(axis='y', linestyle='--', alpha=0.7)\n", "\n", "for bar in bars:\n", " yval = bar.get_height()\n", " plt.text(bar.get_x() + bar.get_width()/2.0, yval + 1, f'{yval:.2f}%', ha='center', va='bottom')\n", "\n", "\n", "plt.show()\n" ] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.12.10" } }, "nbformat": 4, "nbformat_minor": 5 }