ImageFolder数据读取的标签对应关系

pytorch有自带的库,torchvision.datasets.ImageFolder用于读取数据集,将数据集放在相应文件位置下,文件名就是标签,效果如下:
在这里插入图片描述
数据读取方式:

train_datasets = datasets.ImageFolder(train_path, transform=train_transforms)
train_data_size = len(train_datasets)
train_data = torch.utils.data.DataLoader(train_datasets, batch_size=batch_size, shuffle=True) 

读取的时候会将文件名赋予编号,才能输入模型,使用的时候遇到一个问题,怎么知道这些编号对应哪个文件呢?代码如下:

train_directory = config.TRAIN_DATASET_DIR

train_datasets = datasets.ImageFolder(train_directory)
print('data_size:',len(train_datasets))
print('data_class:',train_datasets.classes)
print('class_id:',train_datasets.class_to_idx)

out:
data_class: ['overground', 'underground']
class_id: {'overground': 0, 'underground': 1}

也可以通过打断点查看每张图片对应的标签:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyTorch中,我们可以使用DataLoader类来批量读取图片数据。DataLoader类是一个可迭代的数据装载器,每次迭代会返回一个batchsize大小的数据。具体来说,我们需要进行以下几个步骤: 1. 数据的收集:将图片和对应标签收集到一个数据集中,可以使用torchvision.datasets.ImageFolder类来实现。 2. 数据的预处理:对于每张图片,我们需要进行一些预处理操作,例如缩放、裁剪、归一化等。可以使用torchvision.transforms模块中的函数来实现。 3. 数据的划分:将数据集划分为训练集、验证集和测试集,可以使用torch.utils.data.random_split函数来实现。 4. 数据读取:使用DataLoader类来读取数据集中的数据,可以设置batch_size、shuffle、num_workers等参数来控制读取数据的方式。 下面是一个示例代码: ``` import torch import torchvision from torchvision import transforms # 定义数据预处理操作 transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) # 加载数据集 train_dataset = torchvision.datasets.ImageFolder(root='train', transform=transform) val_dataset = torchvision.datasets.ImageFolder(root='val', transform=transform) # 划分数据集 train_dataset, _ = torch.utils.data.random_split(train_dataset, [1000, len(train_dataset) - 1000]) val_dataset, test_dataset = torch.utils.data.random_split(val_dataset, [500, len(val_dataset) - 500]) # 定义DataLoader train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True, num_workers=4) val_loader = torch.utils.data.DataLoader(val_dataset, batch_size=32, shuffle=False, num_workers=4) test_loader = torch.utils.data.DataLoader(test_dataset, batch_size=32, shuffle=False, num_workers=4) ``` 在上面的代码中,我们首先定义了数据预处理操作transform,然后使用ImageFolder类加载数据集,并使用random_split函数将数据集划分为训练集、验证集和测试集。最后,我们使用DataLoader类来读取数据集中的数据,并设置了batch_size、shuffle、num_workers等参数来控制读取数据的方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值