深度學習與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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM