如何加载数据以及如何使用 pytorch 进行数据扩充

Posted

技术标签:

【中文标题】如何加载数据以及如何使用 pytorch 进行数据扩充【英文标题】:how to load the data and how to do data augmentation using pytorch 【发布时间】:2020-06-18 04:07:26 【问题描述】:

我是Pytorch的新手,我正在做图像分类问题,但是我不明白如何从加载目录加载图像,请帮助我如何加载数据图像数据以及如何增强。

我的数据如下所示:

train=pd.read_csv('dataset/train.csv')
test=pd.read_csv('dataset/test.csv') 
train.head()
Image   Class
0   image7042.jpg   Food
1   image3327.jpg   misc
2   image10335.jpg  Attire
3   image8019.jpg   Food
4   image2128.jpg   Attire

这里是我的图片文件夹:

file_path='dataset/Train Images'

【问题讨论】:

我认为您不需要为此使用 Pandas。查看有关为图像数据创建 PyTorch 数据加载器的教程:pytorch.org/tutorials/beginner/data_loading_tutorial.html 【参考方案1】:

您可以为此使用 torchvision。假设您将所有训练/测试图像分成两个文件夹,分别称为 traintest,下面是一些关于如何加载和迭代图像的示例代码:

import torchvision
from torchvision import datasets, transforms

def load_dataset(data_path):
    dataset = torchvision.datasets.ImageFolder(
        root=data_path,
        transform=transforms.Compose([torchvision.transforms.ToTensor()])
    )
    data_loader = torch.utils.data.DataLoader(
        dataset,
        batch_size=1,
        num_workers=0,
        shuffle=True
    )
    return data_loader

train_loader = load_dataset(f'base_dir/train')
test_loader = load_dataset(f'base_dir/test')

for batch_idx, (data, _) in enumerate(train_loader):
   # Train model

...

for batch_idx, (data, _) in enumerate(test_loader):
   # Evaluate model

如果您想批量训练模型,可以增加 batch_size,将转换器添加到 transform 参数以增强图像,以及其他许多事情。

查看文档:https://pytorch.org/docs/stable/torchvision/index.html

【讨论】:

以上是关于如何加载数据以及如何使用 pytorch 进行数据扩充的主要内容,如果未能解决你的问题,请参考以下文章

Pytorch中如何使用DataLoader对数据集进行批训练

如何将pickle文件中的数据集加载到PyTorch中?

如何更改 Pytorch 数据集的大小?

pytorch中的数据加载(dataset基类,以及pytorch自带数据集)

如何使用pytorch同时迭代两个数据加载器?

如何使用pytorch同时迭代两个数据加载器?