Pytorch:图像标签

Posted

技术标签:

【中文标题】Pytorch:图像标签【英文标题】:Pytorch: Image label 【发布时间】:2019-01-25 03:09:02 【问题描述】:

我正在研究一个包含 31 个类(Office 数据集)的图像分类器。每个类都有一个文件夹。我有一个使用 PyTorch 编写的 python 脚本,它使用 datasets.ImageFolder 加载数据集并为每个图像分配一个标签,然后进行训练。这是我用于加载数据的代码 sn-p:

from torchvision import datasets, transforms
import torch

def load_training(root_path, dir, batch_size, kwargs):
    transform = transforms.Compose(
        [transforms.Resize([256, 256]),
         transforms.RandomCrop(224),
         transforms.RandomHorizontalFlip(),
         transforms.ToTensor()])
    data = datasets.ImageFolder(root=root_path + dir, transform=transform)
    train_loader = torch.utils.data.DataLoader(data, batch_size=batch_size, shuffle=True, drop_last=True, **kwargs)
    return train_loader

代码获取每个文件夹,为该文件夹中的所有图像分配相同的标签。有没有办法找到哪个标签分配给哪个图像/图像文件夹?

【问题讨论】:

【参考方案1】:

ImageFolder 类有一个属性class_to_idx,它是一个将类名映射到索引(标签)的字典。因此,您可以使用 data.classes 访问类,并为每个类获取带有 data.class_to_idx 的标签。

供参考:https://github.com/pytorch/vision/blob/master/torchvision/datasets/folder.py

【讨论】:

很遗憾,文档中似乎根本没有提到这一点。【参考方案2】:

ImageFolder 类有一个带有标签的属性“targets”。标签与文件夹的名称相关联。

【讨论】:

我不知道你使用的torch版本,但现在torch.dataset目标与torch本身内部创建的索引相关联,而不是文件夹名称 感谢您指出。这可能是因为我的文件夹是用数字命名的,而且我是 imageFolder 的新手。所以我认为它作为目标的标签包含与我预期的相同的标签。

以上是关于Pytorch:图像标签的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch 在加载图像/掩码文件以进行图像分割时如何处理标签?

Pytorch之图像分割(多目标分割,Multi Object Segmentation)

Python,类数据集,如何在pytorch中将图像与其各自的标签连接起来

CV基础基于Pytorch-Unet训练多类别分割并测试

用于提供多类图像数据集的方法,其中文件夹名称可以用作Pytorch中的标签?

PyTorch 和Albumentations 在图像分割的应用