Pytorch 教程 1-数据

一、数据


1.1 让PyTorch能读你的数据集

  • Dataset类:Dataset类作为所有的datasets的基类存在,所有的datasets都需要继承它
    • __getitem__:接收一个index,然后返回图片数据和标签,这个index通常指的是一个list的index,这个list的每个元素就包含了图片数据的路径和标签信息。
      • list的制作:将图片的路径和标签信息存储在一个txt中,然后从该txt中读取
  • 读取数据的基本流程为:
    1. 制作存储了图片的路径和标签信息的txt
    2. 将这些信息转化为list,该list每一个元素对应一个样本
    3. 通过__getitem__函数。读取数据和标签,并返回数据和标签
  • pytorch读取自己的数据集:
    1. 制作图片数据的索引

      读取图片的路径、标签,保存到txt中,注意格式与相对路径

    2. 构建Dataset子类

  • Dataloader中,会触发__getitem__函数读取一张图片的数据和标签并拼接成一个batch返回,作为模型真正的输入

1.2 图片从硬盘到模型

从Dataset来,到Dataset去

  1. 通过Dataset创建一个实例,在该实例中有路径,有读取图片的方法(函数)。
  2. 需要pytorch的一系列规范化流程,调用MyDataset中的__getitem__()函数,最终通过 Image.open()读取图片数据。
  3. 然后对原始图片数据进行一系列预处理(transform 中设置),最后回到main.py,对数据
    进行转换成Variable类型,最终成为模型的输入。

1.3 数据增强与数据标准化

  • transforms的使用:transforms.Compose()将所需要进行的处理给compose起来,并且注意顺序
  • 训练时常用操作:
    1. 随机裁剪等
    2. transforms.Totensor()
    3. 数据标准化(减均值,除以标准差)

1.4 transforms的22个方法

1.4.1 随机裁剪transforms.RandomCrop()

  • 依据给定的size随机裁剪

1.4.2 中心裁剪transforms.CenterCrop()

  • 依据给定的size从中心裁剪

1.4.3 随机长宽比裁剪transforms.RandomResizeCrop()

  • 随机大小,随机长宽比裁剪原始图片,最后将图片resize到设定的size

1.4.4 上下左右中心裁剪transforms.FiveCrop()

  • 对图片进行上下左右以及中心裁剪,获得5张图片,返回一个4D-tensor

1.4.5 上下左右中心裁剪后翻转transforms.TenCrop()

  • 对图片进行上下左右以及中心裁剪,然后全部翻转(水平或者垂直),获得10张图片,返回一个4D-tensor

1.4.6 依概率p水平翻转transforms.RandomHorizontalFlip()

  • 依概率p对PIL图片进行水平翻转

1.4.7 依概率p垂直翻转transforms.RandomVerticalFlip()

  • 依概率p对PIL图片进行垂直翻转

1.4.8 随机旋转transforms.RandomRotation()

  • 依degree随机旋转一定角度

1.4.9 resizetransforms.Resize()

  • 重置图像分辨率

1.4.10 标准化transforms.Normalize()

  • 对数据按通道进行标准化,即先减均值,再除以标准差,注意是hwc

1.4.11 转为tensortransforms.ToTensor()

  • 将PIL Image或者ndarray转换为tensor,并归一化至[0,1]

1.4.12 填充transforms.Pad()

  • 对图像进行填充

1.4.13 修改亮度、对比度和饱和度transforms.ColorJitter()

  • 修改亮度、对比度和饱和度

1.4.14 转灰度图transforms.Grayscale()

  • 将图片转换为灰度图

1.4.15 线性变换transforms.LinearTransformation()

  • 对矩阵做线性变换,可用于白化处理

1.4.16 仿射变换transforms.RandomAffine()

  • 仿射变换

1.4.17 依概率p转为灰度图transforms.RandomGrayscale()

  • 依概率p将图片转换为灰度图

1.4.18 将数据转换为PILImagetransforms.ToPILImage()

  • 将tensor或者ndarray的数据转换为PIL Image类型数据

1.4.19 transforms.Lambda

  • apply a user-defined lambda as a transform.

1.4.20 transforms.RandomChoice(transforms)

  • 从给定的一系列transforms中选一个进行操作,randomly picked from a list

1.4.21 transforms.RandomApply(transforms, p=0.5)

  • 给一个transforms加上概率,以一定的概率执行该操作

1.4.22 transforms.RandomOrder()

  • 将transforms中的操作顺序随机打乱

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值