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

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

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

但是,我无法将 image/path 名称放入张量。相反,我将它编入索引,在数据加载器的最后部分 class,我有这个:

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_idimage_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)

我知道字符串无法保存到 torch 张量中,那么有什么方法可以让我返回原始图像名称而不是张量索引?或者我只需要使用出现的数字并返回数据集 class(不是数据加载器)?

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

好的,所以这有点 ad-hoc 并且不完全是我的想法,但这是我用来检索 paths/image 名称的一种方法。我基本上是通过从张量中删除它来从数据加载器中找到它的。然后我使用 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'])

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