torchvision.datasets.ImageFolder 数据加载

1、torchvision已经余弦实现了常用的Dataset,包括CIFAR-10,以及ImageNet、COCO、MNIST、LSUN等数据集,可通过诸如torchvision.datasets.CIFAR10来调用。
2、ImageFolder假设所有的文件按文件夹保存,每个文件下存储同一类别的图片,文件夹名为类名,构造函数如下:

ImageFolder(root,transform=None,target_transform=None,loader=default_loader)

主要有四个参数:
root:在指定路径下寻找图片
transform:对PIL Image进行的转换操作
target_transform:对label的转换
loader:给定路径后如何读取图片,默认读取为RGB格式的PIL Image对象
label是按照文件夹名顺序排列后存成字典,即{类名:类序号},类序号从0开始。

from torchvision import transforms as T
import matplotlib.pyplot as plt
from torchvision.datasets import ImageFolder
 
 
dataset = ImageFolder('data/dogcat_2/')
 
# cat文件夹的图片对应label 0,dog对应1
print(dataset.class_to_idx)
 
# 所有图片的路径和对应的label
print(dataset.imgs)
 
# 没有任何的transform,所以返回的还是PIL Image对象
#print(dataset[0][1])# 第一维是第几张图,第二维为1返回label
#print(dataset[0][0]) # 为0返回图片数据
plt.imshow(dataset[0][0])
plt.axis('off')
plt.show()
`torchvision.datasets.ImageFolder` 是 PyTorch 中用于加载图像数据集的类,它假定图像数据集按照类别进行文件夹分组,每个文件夹包含属于该类别的图像 [^1]。其语法结构如下: ```python dataset = torchvision.datasets.ImageFolder( root, transform=None, target_transform=None, loader=datasets.folder.default_loader, is_valid_file=None ) ``` 参数说明如下 [^2] [^3]: - `root`:图像文件读取路径,该路径下应包含按类别划分的子文件夹,每个子文件夹中存放该类别的图像。 - `transform`:对图像数据采取的数据增强策略,例如调整大小、裁剪、翻转等。可以使用 `torchvision.transforms` 中的各种变换组合。 - `target_transform`:对标签(label)进行转换的操作。 - `loader`:指定加载图像的函数,默认为 `datasets.folder.default_loader`。 - `is_valid_file`:获取图像路径,检查文件的有效性。 返回值是一个可迭代的数据集对象,可将其放入 `torch.utils.data.DataLoader` 中进行批量加载 [^4]。示例代码如下: ```python import torch from torchvision import datasets, transforms from torch.utils.data import DataLoader # 定义数据转换 transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor() ]) # 加载数据集 dataset = datasets.ImageFolder(root='your_dataset_path', transform=transform) # 创建数据加载器 dataloader = DataLoader(dataset, batch_size=32, shuffle=True) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值