torchvision.datasets.ImageFolder
官方文档: ImageFolder
ImageFolder是一个通用的数据集加载API,继承自DataFolder,其要求数据集的排列如下所示
1 | root/dog/xxx.png |
其包含一些属性
- root: 数据集的路径.
- transform: 对图片数据进行操作。输入为PIL图片并且返回一个transform之后的版本
- target_transform: 对类别标签数据进行操作。输入为类别并将其进行转换
注意: 虽然ImageFolder继承自DataFolder,但是其基类都来自torch.utils.data.Dataset,因此都可以用Dataset的一些方法,例如len(dataset)获取数据集的大小
ImageFolder用法
这里我们创建一个train文件夹,里面数据集的格式如下
运行下面代码
1 | import torchvision.datasets as dset |
可以看到如果我们没有加入transform信息,ImageFolder整合后的数据类型为PIL,下面我们加上一个transform
1 | trans = transforms.ToTensor() |
上述例子可以看到,PIL格式的图像在数据加载时已经变为tensor形式。同理如果需要对类别target进行处理,加入target_transform即可
ImageFolder属性
除此之外,ImageFolder由于继承了DataFolder类,所以包含他们的一些属性
- classes: 类别属性,根据类文件名来确定类别
- class_to_idx: 按顺序将这些类别索引为0,1,2…
- imgs: 返回所有文件夹中的文件路径即其类别
- targets: 返回文件夹中的文件类别
1 | data_root = './train' |