diff --git a/Ch14_Computer_Vision/Image_Augmentation.ipynb b/Ch14_Computer_Vision/Image_Augmentation.ipynb new file mode 100644 index 00000000..2b77e5ae --- /dev/null +++ b/Ch14_Computer_Vision/Image_Augmentation.ipynb @@ -0,0 +1,445 @@ +{ + "nbformat": 4, + "nbformat_minor": 0, + "metadata": { + "colab": { + "name": "Image_Augmentation.ipynb", + "provenance": [] + }, + "kernelspec": { + "name": "python3", + "display_name": "Python 3" + } + }, + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "id": "1QLSUl2cPmqk", + "colab_type": "text" + }, + "source": [ + "# Image Augmentation\n", + "Image augmentation technology expands the scale of training datasets\n", + "by making a series of random changes to the training images to produce similar,\n", + "but different, training examples. Another way to explain image augmentation is\n", + "that randomly changing training examples can reduce a model's dependence on\n", + "certain properties, thereby improving its capability for generalization. For\n", + "example, we can crop the images in different ways, so that the objects of\n", + "interest appear in different positions, reducing the model's dependence on the\n", + "position where objects appear. We can also adjust the brightness, color, and\n", + "other factors to reduce model's sensitivity to color. It can be said that image\n", + "augmentation technology contributed greatly to the success of AlexNet. In this\n", + "section, we will discuss this technology, which is widely used in computer\n", + "vision.\n", + "\n", + "First, import the packages or modules required for the experiment in this section." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "V833oFFA93jA", + "colab_type": "code", + "colab": {} + }, + "source": [ + "import torch \n", + "import torch.nn as nn\n", + "import torchvision\n", + "import torchvision.transforms as transforms\n", + "import PIL\n", + "from PIL import Image" + ], + "execution_count": 1, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "UIDqgJsTQTAc", + "colab_type": "text" + }, + "source": [ + "# Common Image Augmentation Method\n", + "We will apply the following transforms to an image using 'torchvision.transforms' :\n", + "\n", + "\n", + "\n", + "* Resize the image to (224, 224)\n", + "* We can randomly change the hue and saturation of the image\n", + "* We can also create a RandomColorJitter instance and set how to randomly change the brightness, contrast, saturation, and hue of the image at the same time. \n", + "* Horizontal Flip\n", + "* Rotation\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "mj98T_1sQOfX", + "colab_type": "code", + "colab": {} + }, + "source": [ + "transforms = torchvision.transforms.Compose([\n", + " torchvision.transforms.Resize((224,224)),\n", + " torchvision.transforms.ColorJitter(hue=.10, saturation=.55),\n", + " torchvision.transforms.RandomHorizontalFlip(),\n", + " torchvision.transforms.RandomRotation(20, resample=PIL.Image.BILINEAR)\n", + "])" + ], + "execution_count": 2, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "9Kb5c_j-P1BE", + "colab_type": "code", + "colab": {} + }, + "source": [ + "img = Image.open(\"/content/apple.jpeg\")" + ], + "execution_count": 3, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "RZmWLaY7SOc4", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 241 + }, + "outputId": "1f38c8dc-9272-45b8-d9e4-3f07ca17e20f" + }, + "source": [ + "transforms(img)" + ], + "execution_count": 4, + "outputs": [ + { + "output_type": "execute_result", + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": { + "tags": [] + }, + "execution_count": 4 + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "Bawyz8FHUHSR", + "colab_type": "text" + }, + "source": [ + "# Using an Image Augmentation Training Model\n", + "Next, we will look at how to apply image augmentation in actual training. Here, we use the MNIST dataset to observe the model performance on dataset of augmented images." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "WdEJ57Sy-AmF", + "colab_type": "code", + "colab": {} + }, + "source": [ + "transform_train = torchvision.transforms.Compose([\n", + " torchvision.transforms.ColorJitter(hue=.10, saturation=.55),\n", + " torchvision.transforms.RandomHorizontalFlip(),\n", + " torchvision.transforms.RandomRotation(40, resample=PIL.Image.BILINEAR),\n", + " torchvision.transforms.ToTensor()\n", + "])\n", + "\n", + "transform_test = torchvision.transforms.Compose([\n", + " torchvision.transforms.ToTensor()\n", + "])" + ], + "execution_count": 5, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "-jVCSvGSUwc0", + "colab_type": "text" + }, + "source": [ + "In order to obtain definitive results during prediction, we usually only apply image augmentation to the training example, and do not use image augmentation with random operations during prediction. Here, we use resize, color jitter, rotation and random horizontal flipping method. In addition, we use a `ToTensor` instance to convert minibatch images into the format required by PyTorch." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "vxCj7lWwMXHG", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Device configuration\n", + "device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu')" + ], + "execution_count": 6, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "rZWPgTZ9V8T0", + "colab_type": "text" + }, + "source": [ + "We can set the hyper parameters for the model." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "c7NURcRJMXy6", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Hyper parameters\n", + "num_epochs = 5\n", + "num_classes = 10\n", + "batch_size = 100\n", + "learning_rate = 0.001" + ], + "execution_count": 7, + "outputs": [] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "otT3Ub7gWDwH", + "colab_type": "text" + }, + "source": [ + "We download the dataset and create DataLoaders for test set and train set." + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "o9Uif2Z3JHrU", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# MNIST dataset\n", + "train_dataset = torchvision.datasets.MNIST(root='../../data/',\n", + " train=True, \n", + " transform=transform_train,\n", + " download=True)\n", + "\n", + "test_dataset = torchvision.datasets.MNIST(root='../../data/',\n", + " train=False, \n", + " transform=transform_test)\n", + "\n", + "# Data loader\n", + "train_loader = torch.utils.data.DataLoader(dataset=train_dataset,\n", + " batch_size=batch_size, \n", + " shuffle=True)\n", + "\n", + "test_loader = torch.utils.data.DataLoader(dataset=test_dataset,\n", + " batch_size=batch_size, \n", + " shuffle=False)" + ], + "execution_count": 8, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "Dyvf5Qh2M1mB", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Convolutional neural network (two convolutional layers)\n", + "class ConvNet(nn.Module):\n", + " def __init__(self, num_classes=10):\n", + " super(ConvNet, self).__init__()\n", + " self.layer1 = nn.Sequential(\n", + " nn.Conv2d(1, 16, kernel_size=5, stride=1, padding=2),\n", + " nn.BatchNorm2d(16),\n", + " nn.ReLU(),\n", + " nn.MaxPool2d(kernel_size=2, stride=2))\n", + " self.layer2 = nn.Sequential(\n", + " nn.Conv2d(16, 32, kernel_size=5, stride=1, padding=2),\n", + " nn.BatchNorm2d(32),\n", + " nn.ReLU(),\n", + " nn.MaxPool2d(kernel_size=2, stride=2))\n", + " self.fc = nn.Linear(7*7*32, num_classes)\n", + " \n", + " def forward(self, x):\n", + " out = self.layer1(x)\n", + " out = self.layer2(out)\n", + " out = out.reshape(out.size(0), -1)\n", + " out = self.fc(out)\n", + " return out\n", + "\n", + "model = ConvNet(num_classes).to(device)" + ], + "execution_count": 9, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "4Kz0ODLsEtiT", + "colab_type": "code", + "colab": {} + }, + "source": [ + "# Loss and optimizer\n", + "criterion = nn.CrossEntropyLoss()\n", + "optimizer = torch.optim.Adam(model.parameters(), lr=learning_rate)" + ], + "execution_count": 10, + "outputs": [] + }, + { + "cell_type": "code", + "metadata": { + "id": "1IzDkL13M82i", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 521 + }, + "outputId": "791f04fd-7ccc-4ac0-8dce-7ed0b207a88d" + }, + "source": [ + "# Train the model\n", + "total_step = len(train_loader)\n", + "for epoch in range(num_epochs):\n", + " for i, (images, labels) in enumerate(train_loader):\n", + " images = images.to(device)\n", + " labels = labels.to(device)\n", + " \n", + " # Forward pass\n", + " outputs = model(images)\n", + " loss = criterion(outputs, labels)\n", + " \n", + " # Backward and optimize\n", + " optimizer.zero_grad()\n", + " loss.backward()\n", + " optimizer.step()\n", + " \n", + " if (i+1) % 100 == 0:\n", + " print ('Epoch [{}/{}], Step [{}/{}], Loss: {:.4f}' \n", + " .format(epoch+1, num_epochs, i+1, total_step, loss.item()))" + ], + "execution_count": 11, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Epoch [1/5], Step [100/600], Loss: 0.5863\n", + "Epoch [1/5], Step [200/600], Loss: 0.2191\n", + "Epoch [1/5], Step [300/600], Loss: 0.3434\n", + "Epoch [1/5], Step [400/600], Loss: 0.2428\n", + "Epoch [1/5], Step [500/600], Loss: 0.2102\n", + "Epoch [1/5], Step [600/600], Loss: 0.3019\n", + "Epoch [2/5], Step [100/600], Loss: 0.3036\n", + "Epoch [2/5], Step [200/600], Loss: 0.2419\n", + "Epoch [2/5], Step [300/600], Loss: 0.2189\n", + "Epoch [2/5], Step [400/600], Loss: 0.2131\n", + "Epoch [2/5], Step [500/600], Loss: 0.1447\n", + "Epoch [2/5], Step [600/600], Loss: 0.3064\n", + "Epoch [3/5], Step [100/600], Loss: 0.1166\n", + "Epoch [3/5], Step [200/600], Loss: 0.1930\n", + "Epoch [3/5], Step [300/600], Loss: 0.1506\n", + "Epoch [3/5], Step [400/600], Loss: 0.1399\n", + "Epoch [3/5], Step [500/600], Loss: 0.2541\n", + "Epoch [3/5], Step [600/600], Loss: 0.1431\n", + "Epoch [4/5], Step [100/600], Loss: 0.2039\n", + "Epoch [4/5], Step [200/600], Loss: 0.1451\n", + "Epoch [4/5], Step [300/600], Loss: 0.2032\n", + "Epoch [4/5], Step [400/600], Loss: 0.2130\n", + "Epoch [4/5], Step [500/600], Loss: 0.1343\n", + "Epoch [4/5], Step [600/600], Loss: 0.2140\n", + "Epoch [5/5], Step [100/600], Loss: 0.2033\n", + "Epoch [5/5], Step [200/600], Loss: 0.1511\n", + "Epoch [5/5], Step [300/600], Loss: 0.1760\n", + "Epoch [5/5], Step [400/600], Loss: 0.1979\n", + "Epoch [5/5], Step [500/600], Loss: 0.1957\n", + "Epoch [5/5], Step [600/600], Loss: 0.1357\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "code", + "metadata": { + "id": "sAuHgHQBNAr3", + "colab_type": "code", + "colab": { + "base_uri": "https://localhost:8080/", + "height": 34 + }, + "outputId": "a9ce4848-9dca-42b2-9582-72f2451e7e3c" + }, + "source": [ + "# Test the model\n", + "model.eval() # eval mode (batchnorm uses moving mean/variance instead of mini-batch mean/variance)\n", + "with torch.no_grad():\n", + " correct = 0\n", + " total = 0\n", + " for images, labels in test_loader:\n", + " images = images.to(device)\n", + " labels = labels.to(device)\n", + " outputs = model(images)\n", + " _, predicted = torch.max(outputs.data, 1)\n", + " total += labels.size(0)\n", + " correct += (predicted == labels).sum().item()\n", + "\n", + " print('Test Accuracy of the model on the 10000 test images: {} %'.format(100 * correct / total))" + ], + "execution_count": 12, + "outputs": [ + { + "output_type": "stream", + "text": [ + "Test Accuracy of the model on the 10000 test images: 96.03 %\n" + ], + "name": "stdout" + } + ] + }, + { + "cell_type": "markdown", + "metadata": { + "id": "TBNmZoIGXXcU", + "colab_type": "text" + }, + "source": [ + "## Summary\n", + "\n", + "* Image augmentation generates random images based on existing training data to cope with overfitting.\n", + "* In order to obtain definitive results during prediction, we usually only apply image augmentation to the training example, and do not use image augmentation with random operations during prediction.\n", + "* We can obtain classes related to image augmentation from PyTorch's `transforms` module." + ] + } + ] +} \ No newline at end of file diff --git a/README.md b/README.md index 3ce82bc0..55a3cb40 100644 --- a/README.md +++ b/README.md @@ -105,7 +105,7 @@ Note: Some ipynb notebooks may not be rendered perfectly in Github. We suggest ` * 12.9 Adadelta * 12.10 Adam * **Ch14 Computer Vision** - * 14.1 Image Augmentation + * 14.1 [Image Augmentation](https://github.com/ShambhaviCodes/d2l-pytorch/blob/master/Ch14_Computer_Vision/Image_Augmentation.ipynb) * 14.2 Fine Tuning * 14.3 [Object Detection and Bounding Boxes](https://github.com/dsgiitr/d2l-pytorch/blob/master/Ch14_Computer_Vision/Object_Detection_and_Bounding_Boxes.ipynb) * 14.4 [Anchor Boxes](https://github.com/dsgiitr/d2l-pytorch/blob/master/Ch14_Computer_Vision/Anchor_Boxes.ipynb)