深度学习与Pytorch入门实战(十一)数据增强

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

原文地址:https://www.cnblogs.com/douzujun/p/13360336.html