如何从图像列表开始加载图像数据集

时间:2020-10-28 13:42:49

标签: python pytorch torch torchvision

我有一个服务可以从另一个服务中接收二进制格式的图像(我们称其为服务B):

from PIL import Image

img_list = []
img_bin = get_image_from_service_B()
image = Image.open(io.BytesIO(img_bin)) # Convert bytes to image using PIL

通过PIL成功转换图像后,图像也将附加到图像列表中。
img_list.append(image)    

当我有足够的图像时,我想使用Pytorch加载图像列表,就好像它是数据集一样

if img_list.__len__() == 500:
     ### Load dataset and do a transform operation on the data

在该软件的早期版本中,要求只是从文件夹中检索图像,因此加载所有图像非常简单。
my_dataset = datasets.ImageFolder("path/to/images/folder/", transform=transform)
dataset_iterator = DataLoader(my_dataset, batch_size=1)

现在我的问题是如何执行转换并从列表中加载数据集。

1 个答案:

答案 0 :(得分:1)

您可以简单地编写自定义数据集:

class MyDataset(torch.util.data.Dataset):
  def __init__(self, img_list, augmentations):
    super(MyDataset, self).__init__()
    self.img_list = img_list
    self.augmentations = augmentations

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

  def __getitem__(self, idx):
    img = self.img_list[idx]
    return self.augmentations(img)
  

您现在可以将此自定义数据集插入DataLoader,操作就完成了。