背景介绍
大量的数据是防止过拟合的关键,但是我们如何去获取大量的数据,是自己去拍摄、录制吗?显然这种方式有极高的成本。我们可以对同一张图片进行变换得到多张图片,比如原来只有10张图片,通过变换变成了20张图片,但是并不能无限的增长,也是有限制的,这种方法就叫做数据增强。数据增强的成本基本为0,虽然最后得到的图片效果也没有原图片好,但是有总比没有强,会在一定程度上增强我们的模型。
翻转(Flip)
代码实现:
train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.RandomHorizontalFlip(), #水平翻转transforms.RandomVerticalFlip(), #竖直翻转transforms.ToTensor()])),batch_size=batch_size, shuffle=True)
旋转(Rotate)
代码实现:
train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.RandomRotation(15), #-15度-15度的角度随机旋转transforms.RandomRotation([90, 180, 270]), #随机旋转90度,180度,270度transforms.ToTensor()])),batch_size=batch_size, shuffle=True)
缩放(Scale)
代码实现:
train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.Resize([32, 32]), #scale 缩放transforms.ToTensor()])),batch_size=batch_size, shuffle=True)
裁剪或部分式旋转(Crop Part)
代码实现:
train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.RandomRotation(15), #-15度-15度的角度随机旋转transforms.RandomRotation([90, 180, 270]), #随机旋转90度,180度,270度transforms.RandomCrop([28, 28]), #随机裁剪transforms.ToTensor()])),batch_size=batch_size, shuffle=True)
加噪声(Noise)
参考:课时75 数据增强_哔哩哔哩_bilibili