利用ImageFrod将变换后的原始图像加载到灰度

2024-05-08 17:17:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着训练一个GANs对图像进行着色,这样我就可以使用torchvision的ImageFolder将其作为灰度图像加载,但我还需要原始数据和转换后的数据。你知道吗

我希望它在最快的方式,因为数据是大的,所以我想让ImageFolder加载两者在同一时间,以节省更多的时间复杂性。你知道吗

def load_data_bw(opt):
    datapath = '/content/gdrive/My Drive/faces/2003'

    dataset = torchvision.datasets.ImageFolder(datapath,
                                               transform=transforms.Compose([
                                                    transforms.Grayscale(num_output_channels=3), #load images as grayscale with three channels
                                                    transforms.RandomChoice(
                                                       [transforms.Resize(opt['loadSize'], interpolation=1),
                                                        transforms.Resize(opt['loadSize'], interpolation=2),
                                                        transforms.Resize(opt['loadSize'], interpolation=3),
                                                        transforms.Resize((opt['loadSize'], opt['loadSize']),
                                                                          interpolation=1),
                                                        transforms.Resize((opt['loadSize'], opt['loadSize']),
                                                                          interpolation=2),
                                                        transforms.Resize((opt['loadSize'], opt['loadSize']),
                                                                          interpolation=3)]
                                                    ),
                                                    transforms.RandomChoice(
                                                       [transforms.RandomResizedCrop(opt['fineSize'], interpolation=1),
                                                        transforms.RandomResizedCrop(opt['fineSize'], interpolation=2),
                                                        transforms.RandomResizedCrop(opt['fineSize'], interpolation=3)]
                                                    ),
                                                    transforms.ColorJitter(brightness=0.1, contrast=0.1),
                                                    transforms.RandomHorizontalFlip(),
                                                    transforms.ToTensor()
                                               ]))
    return dataset

我希望得到:

for iteration, orig_data, gray_data in enumerate(training_data_loader, 1):
    # code..

Tags: 数据图像dataloaddatasetoptresizetransforms
1条回答
网友
1楼 · 发布于 2024-05-08 17:17:41

我假设您有两个数据集变量,即dataset_bwdataset_color,您可以使用ImageFolder加载它们。然后您可以执行以下操作:

class GAN_dataset(Dataset):
    def __init__(self, dataset_bw, dataset_color):
        self.dataset1 = dataset_bw
        self.dataset2 = dataset_color

    def __getitem__(self, index):
        x1 = self.dataset1[index]
        x2 = self.dataset2[index]

        return x1, x2

    def __len__(self):
        return len(self.dataset1)

dataset = GAN_dataset(dataset_bw, dataset_color)
loader = DataLoader(dataset, batch_size = ...)

这样,当您遍历loader时,您将获得所需的两个图像。你知道吗

相关问题 更多 >