{ "cells": [ { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Done\n" ] } ], "source": [ "import torch\n", "import torchvision\n", "import torchvision.transforms as transforms\n", "from PIL import Image\n", "import os\n", "\n", "transform = transforms.Compose(\n", " [ transforms.Resize(32),\n", " transforms.Pad(10, fill=255),\n", " transforms.CenterCrop((32, 32)),\n", " transforms.ToTensor(),\n", " transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))\n", " ]\n", ")\n", "\n", "def check_image(path):\n", " try:\n", " im = Image.open(path)\n", " im.verify()\n", " return True\n", " \n", " except:\n", " print(path)\n", " return False\n", " finally:\n", " im.close()\n", "\n", "\n", "trainset = torchvision.datasets.ImageFolder(root='../datasets/Kolory_mini/', transform=transform,is_valid_file = check_image)\n", "testset = torchvision.datasets.ImageFolder(root='../datasets/Kolory_mini/', transform=transform,is_valid_file = check_image)\n", "\n", "\n", "trainloader = torch.utils.data.DataLoader(trainset, batch_size=16, shuffle=True, num_workers=12, drop_last=True)\n", "testloader = torch.utils.data.DataLoader(testset, batch_size=16, shuffle=True, num_workers=12, drop_last=True)\n", "print(\"Done\")" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "tensor(-0.6549)\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "# functions to show an image\n", "\n", "\n", "def imshow(img):\n", " img = img / 2 + 0.5 # unnormalize\n", " npimg = img.numpy()\n", " plt.imshow(np.transpose(npimg, (1, 2, 0)))\n", " plt.show()\n", "\n", "\n", "# get some random training images\n", "dataiter = iter(trainloader)\n", "images, labels = dataiter.next()\n", "\n", "print(images[0].min())\n", "\n", "# show images\n", "imshow(torchvision.utils.make_grid(images))\n", "\n", "# print labels\n", "#print(' '.join('%5s' % classes[labels[j]] for j in range(4)))\n", "\n" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cuda:0\n" ] }, { "data": { "text/plain": [ "Net(\n", " (conv1): Conv2d(3, 6, kernel_size=(5, 5), stride=(1, 1))\n", " (pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n", " (conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))\n", " (fc1): Linear(in_features=400, out_features=120, bias=True)\n", " (fc2): Linear(in_features=120, out_features=84, bias=True)\n", " (fc3): Linear(in_features=84, out_features=14, bias=True)\n", ")" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import torch\n", "import torch.nn as nn\n", "import torch.nn.functional as F\n", "\n", "\n", "class Net(nn.Module):\n", " def __init__(self):\n", " super(Net, self).__init__()\n", " self.conv1 = nn.Conv2d(3, 6, 5)\n", " self.pool = nn.MaxPool2d(2, 2)\n", " self.conv2 = nn.Conv2d(6, 16, 5)\n", " self.fc1 = nn.Linear(16 * 5 * 5, 120)\n", " self.fc2 = nn.Linear(120, 84)\n", " self.fc3 = nn.Linear(84, 14)\n", "\n", " def forward(self, x):\n", " x = self.pool(F.relu(self.conv1(x)))\n", " x = self.pool(F.relu(self.conv2(x)))\n", " x = x.view(-1, 16 * 5 * 5)\n", " x = F.relu(self.fc1(x))\n", " x = F.relu(self.fc2(x))\n", " x = self.fc3(x)\n", " return x\n", "\n", "\n", "net = Net()\n", "device = torch.device(\"cuda:0\" if torch.cuda.is_available() else \"cpu\")\n", "print(device)\n", "net.to(device)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "cuda:0\n", "wololo1\n", "wololo3\n", "wololo4\n", "[1, 498] loss: 2.403\n", "Accuracy of the network on the 10000 test images: 23.95 %\n", "[2, 498] loss: 2.140\n", "Accuracy of the network on the 10000 test images: 34.82 %\n", "[3, 498] loss: 2.048\n", "Accuracy of the network on the 10000 test images: 35.14 %\n", "[4, 498] loss: 2.001\n", "Accuracy of the network on the 10000 test images: 32.73 %\n", "[5, 498] loss: 1.974\n", "Accuracy of the network on the 10000 test images: 32.56 %\n", "[6, 498] loss: 1.923\n", "Accuracy of the network on the 10000 test images: 38.45 %\n", "[7, 498] loss: 1.893\n", "Accuracy of the network on the 10000 test images: 37.89 %\n", "[8, 498] loss: 1.938\n", "Accuracy of the network on the 10000 test images: 38.00 %\n", "[9, 498] loss: 1.854\n", "Accuracy of the network on the 10000 test images: 39.21 %\n", "[10, 498] loss: 1.933\n", "Accuracy of the network on the 10000 test images: 38.86 %\n", "[11, 498] loss: 1.904\n", "Accuracy of the network on the 10000 test images: 38.81 %\n", "[12, 498] loss: 1.899\n", "Accuracy of the network on the 10000 test images: 38.91 %\n", "[13, 498] loss: 1.863\n", "Accuracy of the network on the 10000 test images: 32.96 %\n", "[14, 498] loss: 1.856\n", "Accuracy of the network on the 10000 test images: 38.66 %\n", "[15, 498] loss: 1.838\n", "Accuracy of the network on the 10000 test images: 39.48 %\n", "Finished Training\n", "CPU times: user 1min 31s, sys: 25.7 s, total: 1min 57s\n", "Wall time: 3min 52s\n" ] } ], "source": [ "%%time\n", "\n", "import torch.optim as optim\n", "\n", "# Assuming that we are on a CUDA machine, this should print a CUDA device:\n", "\n", "print(device)\n", "\n", "BATCH_SIZE = 16\n", "EPOCHS = 15\n", "OUTPUTS= 1\n", "LR = 0.025\n", "MINI_BATCH_SIZE = 500\n", "\n", "print(\"wololo1\")\n", "\n", "criterion = nn.CrossEntropyLoss()\n", "print(\"wololo3\")\n", "\n", "optimizer = optim.SGD(net.parameters(), lr=LR, momentum=0.9)\n", "print(\"wololo4\")\n", "\n", "for epoch in range(EPOCHS): # loop over the dataset multiple times\n", "\n", " running_loss = 0.0\n", " for i, data in enumerate(trainloader, 0):\n", " # get the inputs; data is a list of [inputs, labels]\n", " \n", " inputs, labels = data[0].to(device), data[1].to(device)\n", " #inputs, labels = data\n", " \n", " # zero the parameter gradients\n", " optimizer.zero_grad()\n", "\n", " # forward + backward + optimize\n", " outputs = net(inputs)\n", " loss = criterion(outputs, labels)\n", " loss.backward()\n", " optimizer.step()\n", "\n", " # print statistics\n", " running_loss += loss.item()\n", " if i % MINI_BATCH_SIZE == MINI_BATCH_SIZE - 1: # print every 2000 mini-batches\n", " print('[%d, %5d] loss: %.3f' %\n", " (epoch + 1, i-1,running_loss / MINI_BATCH_SIZE))\n", " running_loss = 0.0\n", " \n", " correct = 0\n", " total = 0\n", " with torch.no_grad():\n", " for data in testloader:\n", " images, labels = data[0].to(device), data[1].to(device)\n", " outputs = net(images)\n", " _, predicted = torch.max(outputs.data, 1)\n", " total += labels.size(0)\n", " correct += (predicted == labels).sum().item()\n", " print('Accuracy of the network on the 10000 test images: %.2f %%' % (\n", " 100.0 * correct / total))\n", "\n", "print('Finished Training')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "tensor([[-1.0007, 0.3057, 1.1468, -2.7095, -2.2706, 2.1910, 2.8463, 2.8963,\n", " 0.5560, -1.4890, -0.9385, -0.0219, -2.8346, 2.1300]],\n", " device='cuda:0')\n", "{0: 'biel', 1: 'czern', 2: 'inny-kolor', 3: 'odcienie-brazu-i-bezu', 4: 'odcienie-czerwieni', 5: 'odcienie-fioletu', 6: 'odcienie-granatowego', 7: 'odcienie-niebieskiego', 8: 'odcienie-pomaranczowego', 9: 'odcienie-rozu', 10: 'odcienie-szarosci-i-srebra', 11: 'odcienie-zieleni', 12: 'odcienie-zoltego-i-zlota', 13: 'wielokolorowy'}\n", "odcienie-niebieskiego\n" ] } ], "source": [ "import requests\n", "from torch.autograd import Variable\n", "\n", "\n", "url1 = \"https://chillizet-static.hitraff.pl/uploads/productfeeds/images/99/dd/house-klapki-friends-czarny.jpg\"\n", "url2 = \"https://e-obuwniczy.pl/pol_pl_POLBUTY-BUT-BAL-VENETTO-635-SKORA-LICOWA-CZARNY-2551_5.jpg\"\n", "url3 = \"https://bhp-nord.pl/33827-thickbox_default/but-s1p-portwest-steelite-tove-ft15.jpg\"\n", "url4 = \"https://www.sklepmartes.pl/174554-thickbox_default/dzieciece-kalosze-cosy-wellies-kids-2076-victoria-blue-bejo.jpg\"\n", "\n", "img = Image.open(requests.get(url3, stream=True).raw)\n", "\n", "image_tensor = transform(img).float()\n", "imshow(image_tensor)\n", "image_tensor = image_tensor.unsqueeze_(0)\n", "inputi = Variable(image_tensor)\n", "\n", "\n", "output = net(inputi.to(device))\n", "_, predicted = torch.max(output.data, 1)\n", "\n", "print(output.data)\n", "idx2class = {v: k for k, v in trainset.class_to_idx.items()}\n", "print(idx2class)\n", "\n", "print(idx2class[int(predicted)])\n", "\n", "\n", "#import pickle\n", "#a_file = open(\"class-shoe.pkl\", \"wb\")\n", "#pickle.dump(shoe_names, a_file)\n", "#a_file.close()\n", "\n", "#a_file = open(\"class-shoe.pkl\", \"rb\")\n", "#outpu = pickle.load(a_file)\n", "#print(outpu[int(predicted)])\n", "#a_file.close()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import os.path\n", "import csv\n", "\n", "if not (os.path.isfile(\"nn-col-state-dict.pth\")):\n", " torch.save(net.state_dict(), \"nn-col-state-dict.pth\")\n", " " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6.9" } }, "nbformat": 4, "nbformat_minor": 4 }