首页 > 解决方案 > 使用 Pytorch 加载巨大的图像数据集和一些数据增强

问题描述

我有个问题。我有大约 200 万张图像(place365 标准数据集),我想做一些数据增强,比如转换、裁剪等。此外,我必须根据一些颜色模型算法(CMYK)制作自己的目标图像(y)例如.

所以实际上,我的预处理步骤包括增强和制作 terget 图像 (y)。然后我应该将这些图像提供给深度网络。我应该什么时候根据Dataset班级进行此操作?我应该做我的处理步骤__getitem__()吗?如果是,它会并行且快速吗?

这是我的Dataset(data.Dataset)课程模板:

import torch
from torch.utils import data

class Dataset(data.Dataset):
    """
    Return Dataset class representing our data set
    """
    def __int__(self, list_IDs, labels):
        """
        Initialize data set as a list of IDs corresponding to each item of data set and labels of each data

        Args:
            list_IDs: a list of IDs for each data point in data set
            labels: label of an item in data set with respect to the ID
        """

        self.labels = labels
        self.list_IDs = list_IDs

    def __len__(self):
        """
        Return the length of data set using list of IDs

        :return: number of samples in data set
        """
        return len(self.list_IDs)

    def __getitem__(self, item):
        """
        Generate one item of data set. Here we apply our preprocessing things like halftone styles and subtractive color process using CMYK color model etc. (See the paper for operations)

        :param item: index of item in IDs list

        :return: a sample of data
        """
        ID = self.list_IDs[item]

        # Code to load data
        X = None #

        # code to apply your custom function to make y image (time consuming task - some algorithms)
        y = None #

        return X, y

感谢您的任何建议

此致

标签: pythonimage-processingdeep-learningbigdatapytorch

解决方案


如果您查看例如,torchvision.dataset.ImageFolder您会发现它的工作方式与您的设计非常相似:该类具有transform列出各种增强(调整大小、裁剪、翻转等)的成员,并且这些是在__getitem__方法中的图像上执行的。
关于并行性,它Dataset本身不是并行的,但DataLoader可以是(见num_workers参数),所以如果你在并行数据加载器中使用你的数据集,你就可以免费获得并行性,太酷了!


推荐阅读