1. 数据增强
-
比如,你遇到的一个任务,目前只有小几百的数据,然而目前流行的最先进的神经网络都是成千上万的图片数据,可以通过数据增强来实现。
-
卷积神经网络非常容易出现过拟合的问题,而数据增强的方法是对抗过拟合问题的一个重要方法。
常用的数据增强手段:
-
Flip(翻转)
-
Rotation(旋转)
-
Scale(缩放)
-
Random Move&Crop(移位&裁剪)
-
Gaussian Noise(高斯噪声)
前4个操作都是由torchvision
包中的transforms
完成的。
import torch
from torchvision import datasets, transforms
batch_size = 200
train_loader = torch.utils.data.DataLoader(
datasets.MNIST('../data', train=True, download=True,
transform=transforms.Compose([
transforms.RandomHorizontalFlip(), # 水平翻转
transforms.RandomVerticalFlip(), # 竖直翻转
transforms.RandomRotation(15), # 旋转,范围-15°~15°
transforms.RandomRotation([90, 180]), # 从二个角度中挑一个旋转(序列len只能为2)
transforms.Resize([32, 32]), # 缩放
transforms.RandomCrop([28, 28]), # 随机裁剪
transforms.ToTensor(),
# transforms.Normalize((0.1307,), (0.3081,))
])),
batch_size=batch_size, shuffle=True)
2. 数据增强演示
import sys
from PIL import Image
from torchvision import transforms as tfs
# 读入一张图片
im = Image.open('./1.png')
im
2.1 水平翻转
new_im = transforms.RandomHorizontalFlip()(im) # 水平翻转
new_im
2.2 随机剪裁
new_im = transforms.RandomCrop([200, 200])(im)
new_im