如何从我的数据加载器(PyTorch)中保存图像(字符串)的路径?

乘风 pytorch 193

原文标题How can I save the path of an image (string) from my dataloader (PyTorch)?

我为我的对象检测任务创建了一个数据加载器。

但是,我无法将图像/路径名称放置到张量中。相反,我将它编入索引,在数据加载器类的最后一部分,我有这个:

target = {}
        target['boxes'] = boxes
        target['labels'] = labels
        target['image_id'] = torch.tensor([index])
        target['area'] = area
        target['iscrowd'] = iscrowd
        target['image_name'] = torch.tensor(index)
        

        return image, target

其中 atm image_id 和 image_name 是一回事。

当我从数据加载器中打印出 image_name 时,我当然会得到这个:

for image, target in valid_data_loader:
  print(target[0]['image_name'])


Output:

tensor(0)
tensor(1)
tensor(2)
tensor(3)
tensor(4)
tensor(5)
tensor(6)
tensor(7)

我知道字符串不能保存到火炬张量中,所以有什么办法可以引用原始图像名称而不是张量的索引?还是我只需要使用出现的数字并返回数据集类(而不是数据加载器)?

我最终想将图像名称和边界框信息等属性保存到单独的 numpy 数据框中。

原文链接:https://stackoverflow.com//questions/71429238/how-can-i-save-the-path-of-an-image-string-from-my-dataloader-pytorch

回复

我来回复
  • TSRAI的头像
    TSRAI 评论

    好的,所以这有点特别,并不完全是我的想法,但这是我用来检索路径/图像名称的一种方法。我基本上通过从张量中删除它来从数据加载器中找到它。然后我使用tensor_id在原始数据框中找到对应的id:

    for image, target in valid_data_loader:
      tensor_id = target[0]['image_name'].item()
      print(valid_df.iloc[tensor_id]['image_id'])
    

    我不知道这是否有效,但它得到了我想要的……

    2年前 0条评论