PyTorch之ImageFolder函数

ImageFolder假设所有的文件按文件夹保存,每个文件夹下存储同一个类别的图片,文件夹名为类名,其构造函数如下:

ImageFolder(root, transform=None, target_transform=None, loader=default_loader)

它主要有四个参数:

root:在root指定的路径下寻找图片
transform:对PIL Image进行的转换操作,transform的输入是使用loader读取图片的返回对象
target_transform:对label的转换
loader:给定路径后如何读取图片,默认读取为RGB格式的PIL Image对象

label是按照文件夹名顺序排序后存成字典,即{类名:类序号(从0开始)},一般来说最好直接将文件夹命名为从0开始的数字,这样会和ImageFolder实际的label一致,如果不是这种命名规范,建议看看self.class_to_idx属性以了解label和文件夹名的映射关系。

当把文件夹名字简单命名为数字时,同时有存在较多类,比如:

PyTorch之ImageFolder函数_第1张图片

在使用这个函数时会发生一个现象:

import torchvision
import torchvision.transforms as transforms

path_train = '/media/...xxx.../train/'

dataset = torchvision.datasets.ImageFolder(path_train,
                   transform=transforms.Compose([
                       transforms.Resize((32, 32)),
		       transforms.Grayscale(1),
                       transforms.ToTensor()]))

print (dataset.classes)
print (dataset.class_to_idx)

PyTorch之ImageFolder函数_第2张图片

类别索引并没有按“1、 2、 3……”这样的排列方式,不知道这对训练数据时有没有什么影响,希望有大佬看到了能帮我解释一下,谢谢~~

你可能感兴趣的:(PyTorch)