495 lines
76 KiB
Plaintext
495 lines
76 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"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",
|
|
"#transforms.Normalize(mean=[0.485, 0.456, 0.406],std=[0.229, 0.224, 0.225]) <-- this could part of the problem because supposedly 0.5 0.5 is used for grayscale images\n",
|
|
"trainset = torchvision.datasets.ImageFolder(root='../datasets/Damskie_mini/', transform=transform,is_valid_file = check_image)\n",
|
|
"testset = torchvision.datasets.ImageFolder(root='../datasets/Damskie_mini_test/', transform=transform,is_valid_file = check_image)\n",
|
|
"#, is_valid_file = check_image\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": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"tensor(-0.7882)\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"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": 6,
|
|
"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=18, bias=True)\n",
|
|
")"
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"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, 18)\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": 17,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"cuda:0\n",
|
|
"wololo1\n",
|
|
"wololo3\n",
|
|
"wololo4\n",
|
|
"[1, 498] loss: 2.228\n",
|
|
"[1, 998] loss: 2.298\n",
|
|
"Accuracy of the network on the 10000 test images: 29.24 %\n",
|
|
"[2, 498] loss: 2.171\n",
|
|
"[2, 998] loss: 2.312\n",
|
|
"Accuracy of the network on the 10000 test images: 30.47 %\n",
|
|
"[3, 498] loss: 2.146\n",
|
|
"[3, 998] loss: 2.262\n",
|
|
"Accuracy of the network on the 10000 test images: 28.68 %\n",
|
|
"[4, 498] loss: 2.201\n",
|
|
"[4, 998] loss: 2.335\n",
|
|
"Accuracy of the network on the 10000 test images: 31.08 %\n",
|
|
"[5, 498] loss: 2.197\n",
|
|
"[5, 998] loss: 2.223\n",
|
|
"Accuracy of the network on the 10000 test images: 32.20 %\n",
|
|
"[6, 498] loss: 2.279\n",
|
|
"[6, 998] loss: 2.253\n",
|
|
"Accuracy of the network on the 10000 test images: 24.39 %\n",
|
|
"[7, 498] loss: 2.237\n",
|
|
"[7, 998] loss: 2.246\n",
|
|
"Accuracy of the network on the 10000 test images: 32.92 %\n",
|
|
"[8, 498] loss: 2.223\n",
|
|
"[8, 998] loss: 2.195\n",
|
|
"Accuracy of the network on the 10000 test images: 23.49 %\n",
|
|
"[9, 498] loss: 2.249\n",
|
|
"[9, 998] loss: 2.239\n",
|
|
"Accuracy of the network on the 10000 test images: 27.79 %\n",
|
|
"[10, 498] loss: 2.261\n",
|
|
"[10, 998] loss: 2.262\n",
|
|
"Accuracy of the network on the 10000 test images: 28.63 %\n",
|
|
"[11, 498] loss: 2.238\n",
|
|
"[11, 998] loss: 2.299\n",
|
|
"Accuracy of the network on the 10000 test images: 26.84 %\n",
|
|
"[12, 498] loss: 2.198\n",
|
|
"[12, 998] loss: 2.344\n",
|
|
"Accuracy of the network on the 10000 test images: 30.41 %\n",
|
|
"[13, 498] loss: 2.240\n",
|
|
"[13, 998] loss: 2.282\n",
|
|
"Accuracy of the network on the 10000 test images: 28.68 %\n",
|
|
"[14, 498] loss: 2.263\n",
|
|
"[14, 998] loss: 2.230\n",
|
|
"Accuracy of the network on the 10000 test images: 31.75 %\n",
|
|
"[15, 498] loss: 2.298\n",
|
|
"[15, 998] loss: 2.278\n",
|
|
"Accuracy of the network on the 10000 test images: 30.97 %\n",
|
|
"Finished Training\n",
|
|
"CPU times: user 1min 23s, sys: 20.6 s, total: 1min 44s\n",
|
|
"Wall time: 2min 59s\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",
|
|
" print(outputs)\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": 1,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"ename": "NameError",
|
|
"evalue": "name 'Image' is not defined",
|
|
"output_type": "error",
|
|
"traceback": [
|
|
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
|
|
"\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)",
|
|
"\u001b[0;32m<ipython-input-1-9770c3effe28>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 8\u001b[0m \u001b[0murl4\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m\"https://www.sklepmartes.pl/174554-thickbox_default/dzieciece-kalosze-cosy-wellies-kids-2076-victoria-blue-bejo.jpg\"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 10\u001b[0;31m \u001b[0mimg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mImage\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mopen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mrequests\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0murl4\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mstream\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mTrue\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mraw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 11\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 12\u001b[0m \u001b[0mimage_tensor\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mtransform\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mimg\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfloat\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
|
|
"\u001b[0;31mNameError\u001b[0m: name 'Image' is not defined"
|
|
]
|
|
}
|
|
],
|
|
"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(url4, 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",
|
|
"shoe_names = { 0: \"Balerinki\", 1: \"Botki\", 2:\"Creepersy\", 3: \"Czolenka\", 4:\"Domowe\", 5:\"Espadryle\",\n",
|
|
" 6:\"Glany\", 7:\"Kalosze\", 8:\"Klapki\", 9:\"Kozaki\", 10:\"Mokasyny\", 11:\"Polbuty\", 12:\"Pozostale\",\n",
|
|
" 13:\"Sandaly\", 14:\"Sniegowce\", 15:\"Sportowe\", 16:\"Tenisowki\", 17:\"Trekkingowe\"}\n",
|
|
"\n",
|
|
"output = net(inputi.to(device))\n",
|
|
"_, predicted = torch.max(output.data, 1)\n",
|
|
"\n",
|
|
"print(shoe_names[int(predicted)])"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Trekkingowe\n",
|
|
"Balerinki\n",
|
|
"Sniegowce\n",
|
|
"Mokasyny\n",
|
|
"Czolenka\n",
|
|
"Domowe\n",
|
|
"Glany\n",
|
|
"Creepersy\n",
|
|
"Polbuty\n",
|
|
"Sandaly\n",
|
|
"Pozostale\n",
|
|
"Botki\n",
|
|
"Kalosze\n",
|
|
"Kozaki\n",
|
|
"Espadryle\n",
|
|
"Tenisowki\n",
|
|
"Sportowe\n",
|
|
"Klapki\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"{'Balerinki': 0,\n",
|
|
" 'Botki': 1,\n",
|
|
" 'Creepersy': 2,\n",
|
|
" 'Czolenka': 3,\n",
|
|
" 'Domowe': 4,\n",
|
|
" 'Espadryle': 5,\n",
|
|
" 'Glany': 6,\n",
|
|
" 'Kalosze': 7,\n",
|
|
" 'Klapki': 8,\n",
|
|
" 'Kozaki': 9,\n",
|
|
" 'Mokasyny': 10,\n",
|
|
" 'Polbuty': 11,\n",
|
|
" 'Pozostale': 12,\n",
|
|
" 'Sandaly': 13,\n",
|
|
" 'Sniegowce': 14,\n",
|
|
" 'Sportowe': 15,\n",
|
|
" 'Tenisowki': 16,\n",
|
|
" 'Trekkingowe': 17}"
|
|
]
|
|
},
|
|
"execution_count": 14,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"import os, sys\n",
|
|
"\n",
|
|
"# Open a file\n",
|
|
"path = \"../datasets/Damskie_mini/\"\n",
|
|
"dirs = os.listdir( path )\n",
|
|
"\n",
|
|
"# This would print all the files and directories\n",
|
|
"for file in dirs:\n",
|
|
" print(file)\n",
|
|
"\n",
|
|
"trainset.class_to_idx"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"image/png": "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\n",
|
|
"text/plain": [
|
|
"<Figure size 432x288 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {
|
|
"needs_background": "light"
|
|
},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Sniegowce\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"'\\n??????????????\\nimport os, sys\\n\\n# Open a file\\npath = \"./datasets/Damskie_mini/\"\\ndirs = os.listdir( path )\\n\\n# This would print all the files and directories\\nfor file in dirs:\\n print(file)\\n'"
|
|
]
|
|
},
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 19,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import numpy as np\n",
|
|
"import os.path\n",
|
|
"import csv\n",
|
|
"\n",
|
|
"torch.save(net, 'nn.pth')\n",
|
|
"\n",
|
|
"torch.save(net.state_dict(), \"nn-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
|
|
}
|