如何将图像列表转换为PyTorch张量

5

我有一个名为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)
1个回答

3

您可以使用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)

1
嗯,我还有点困惑。因为我的列表中的图像宽度和高度不同。我需要添加填充并将它们更改为相同的宽度/高度吗? - rahul sharma
我该如何调用这个转换器?MyDataset(wordImages)?非常抱歉,但我已经谷歌了很多。我是Pytorch的新手。 - rahul sharma
要传递不同尺寸的图像,您将需要使用 collate_fn,这里有一个相关的线程:https://discuss.pytorch.org/t/how-to-create-a-dataloader-with-variable-size-input/8278。虽然有点复杂,但填充可能不是一个坏主意。 - ccl
这个转换器基本上是将函数应用于您的numpy数组,因此它可以像普通的Python函数一样被调用,例如:img_tensor = self.transform(img) - ccl
我的主要目标是速度。我希望collect_fn不会更慢。 - rahul sharma
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接