【问题标题】:How to convert an list of image into Pytorch Tensor如何将图像列表转换为 Pytorch 张量
【发布时间】:2020-06-13 05:54:11
【问题描述】:

我有一个名为wordImages 的列表。它包含具有不同宽度和高度的 np.array 格式的图像。

如何将其转换为张量并在下面的代码中使用它而不是 my_dataset

目前我正在使用这个。但我需要保存/读取图像

demo_data = RawDataset(root="output_craft/", opt=opt) 

demo_loader = torch.utils.data.DataLoader(
                demo_data , batch_size=opt.batch_size,
                shuffle=False,
                num_workers=int(opt.workers),
                collate_fn=AlignCollate_demo, pin_memory=True)

【问题讨论】:

    标签: python pytorch torch torchvision


    【解决方案1】:

    您可以使用torchvision 库中的transforms 来执行此操作。您可以将您声明为参数的任何转换传递给您用来创建my_dataset 的任何class,如下所示:

    from torchvision import transforms as transforms
    
    class MyDataset(data.Dataset):
    
        def __init__(self, transform=transforms.ToTensor()):
            self.transform = transform
            ...
        def __getitem__(self, idx):
            ...
            img_tensor = self.transform(img)
            return (img_tensor, label)
    

    【讨论】:

    • 嗯,我还是有点糊涂。由于列表中的图像具有不同的宽度和高度。我是否需要添加填充并将它们更改为相同的宽度/高度?
    • 如何称呼这个变压器?我的数据集(wordImages)?真对不起。但我google了很多。我是 Pytorch 的新手
    • 要传递不同尺寸的图像,您必须使用collate_fn,这是一个相关线程:discuss.pytorch.org/t/…。不过这有点复杂,填充可能不是一个坏主意。
    • 好的。目前我正在将图像保存在文件夹中然后阅读。但这让我添加了一些降低速度的额外功能
    • 这个转换器基本上将函数应用到你的numpy数组上,所以它可以像普通的python函数一样被img_tensor = self.transform(img)调用
    猜你喜欢
    • 2018-04-27
    • 2019-07-29
    • 2020-08-05
    • 2020-04-07
    • 2019-05-23
    • 2022-01-10
    • 2022-01-01
    • 2021-04-05
    相关资源
    最近更新 更多