使用Pytorch

时间:2018-11-23 22:52:45

标签: python image-processing deep-learning bigdata 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

谢谢您的建议

最诚挚的问候

1 个答案:

答案 0 :(得分:1)

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