pytorch实战 -- 数据加载和处理

Pytorch提供了许多工具来简化和希望数据加载,使代码更具可读性。这里将专门讲述transforms数据预处理方法,即数据增强。
数据增强又称为数据增广、数据扩增,它是对训练集进行变换,使训练集更丰富,从而让模型更具泛化能力。

# 在进行下面代码学习前需要安装torchvision==0.8.2
!pip install torchvision==0.8.2 --user
from PIL import Image
from torchvision import transforms as T
import torch as t

to_tensor = T.ToTensor()
to_pil = T.ToPILImage()
cat = Image.open('./cat.jpeg')  

transforms——Crop

在这里插入图片描述
在这里插入图片描述

# torchvision.transforms.CenterCrop
transforms = T.Compose([T.Resize(224),T.CenterCrop(224),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

# torchvision.transforms.RandomCrop
transforms = T.Compose([T.Resize(224),T.RandomCrop(224, padding=(16, 64)),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

transforms——Flip

在这里插入图片描述

# torchvision.transforms.RandomHorizontalFlip
transforms = T.Compose([T.Resize(224),T.RandomHorizontalFlip(p=0.5),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

# torchvision.transforms.RandomRotation
transforms = T.Compose([T.Resize(224),T.RandomRotation(30, center=(0, 0), expand=True),T.ToTensor()])  # Resize:缩放
cat_t = transforms(cat)  # 传入transforms中的数据是PIL数据,lena_t为tensor
cat_t.shape  # 3*224*224 ; 当T.CenterCrop()的参数大于T.Resize()的参数时,周围用0填充
to_pil(cat_t)

在这里插入图片描述

图像变换

在这里插入图片描述
在这里插入图片描述

transforms的操作

在这里插入图片描述

自定义transforms

自定义transforms要素:

  1. 仅接收一个参数,返回一个参数
  2. 注意上下游的输出与输入
class Compose(object):
    def __call__(self, img):
        for t in transforms:
            img = t(img)
        return img

通过类实现多参数传入:

class YourTransforms(object):
    def __init__(self, transforms):
        self.transforms = transforms
    def __call__(self, img):
        for t in self.transforms:
            img = t(img)
        return img

椒盐噪声又称为脉冲噪声,是一种随机出现的白点或者黑点,白点称为盐噪声,黑色为椒噪声。
信噪比(Signal-Noise Rate,SNR)是衡量噪声的比例,图像中为图像像素的占比。

class AddPepperNoise(object):
    def __init__(self, snr, p):
        self.snr = snr
        self.p = p
    def __call__(self, img):
        # 添加椒盐噪声具体实现过程
        img = None
        return img

transforms方法

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值