如何从我的数据加载器 (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_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)
我知道字符串无法保存到 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'])
虽然我不知道这是否有效,但它得到了我想要的...
我已经为我的对象检测任务创建了一个数据加载器。
但是,我无法将 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_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)
我知道字符串无法保存到 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'])
虽然我不知道这是否有效,但它得到了我想要的...