python从date目录导入数据集_Python:PyTorch 使用 Torchvision 加载数据集 (八十一)

加载图像数据

到目前为止,我们使用的数据都是人工数据集,你很少会在实际项目中用到这样的数据集。相反,在实际项目中,你可能会处理一些全尺寸的图像,比如手机相机拍摄的图片。在这个 notebook 中,我们将会学习如何加载图像,并使用它们来训练神经网络。

我们将用到来自 Kaggle 的猫狗照片数据集。下面是一些图片示例:

rZlgnSfTEz.png

我们将使用这个数据集来训练一个能够对猫狗图像进行分类的神经网络。如今看来,这似乎并不是什么伟大的成就,但在五年之前,这对计算机视觉系统来说极具挑战性。

%matplotlib inline

%config InlineBackend.figure_format = 'retina'

import matplotlib.pyplot as plt

import torch

from torchvision import datasets, transforms

import helper

加载图像数据最简单是方法是使用 torchvision 中的 datasets.ImageFolder(资料)。

dataset = datasets.ImageFolder('path/to/data', transform=transforms)

'path/to/data' 是通往数据目录的文件路径,transforms 是一个处理步骤的列表,使用 torchvision 中的 transforms 模块构建。ImageFolder 中的文件和目录应按以下格式构建:

root/dog/xxx.png

root/dog/xxy.png

root/dog/xxz.png

root/cat/123.png

root/cat/nsdf3.png

root/cat/asd932_.png

每个类都有各自存储图像的目录(cat 和 dog)。接着,这些图像将被贴上摘自目录名的标签。所以在这里,图像 123.png 在加载时将被贴上类标签 cat。你可以从这里直接下载我们早已构建好的数据集。我已经将它分成了训练集和测试集。

转换

当你使用 ImageFolder 加载数据后,你需要定义一些转换。举个例子,这些图像的尺寸都不相同,但我们需要统一尺寸以便进行训练。你可以使用 transforms.Resize() 来重新确定图像尺寸,也可以使用 transforms.CenterCrop()、transforms.RandomResizedCrop() 等进行切割。我们还需要使用 transforms.ToTensor() 来将图像转换为 PyTorch 张量。通常,你会使用 transforms.Compose() 来将这些转换结合到一条流水线中,这条流水线接收包含转换的列表,并按顺序运行。如下面的例子所示,它首先进行缩放,接着切割,再转换为张量:

transforms = transforms.Compose([transforms.Resize(255),

transforms.CenterCrop(224),

transforms.ToTensor()])

我们可以使用许多种转换,接下来我会逐步讲解,你也可以查看这里的资料。

Data Loader

在加载 ImageFolder 后,你需要将它传递给一个 DataLoader。DataLoader 接收数据集(比如你从 ImageFolder 中获取的数据集),并返回不同批次的图像以及对应的标签。你可以设置不同参数

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值