ImageFolder
一、数据集整理
ImageFolder是一个通用的数据加载器,加载数据的之前,需要我们提前把同一类别的图片放到一个文件夹中。例如在猫狗分类中,以下面这种格式来组织数据集的训练、验证或者测试图片。
root/dog/xxx.png
root/dog/xxy.png
root/dog/xxz.pngroot/cat/123.png
root/cat/nsdf3.png
root/cat/asd932_.png
二、ImageFolder的参数
dataset=torchvision.datasets.ImageFolder(root, transform=None, target_transform=None, loader=<function default_loader>, is_valid_file=None)
常用参数:
- root :为类别文件夹的上一级目录
- transform:是图片数据增强的方式
- target_transform:对图片的label进行预处理的操作,如果不传该参数,即对 target 不做任何转换,返回的顺序索引 0,1, 2…
返回的dataset:
- dataset 的结构: [(img_data,class_id),(img_data,class_id),…]
- dataset.classes:保存类别名称的列表 [‘cat’, ‘dog’]
- dataset.class_to_idx:类别对应的索引 {‘cat’: 0, ‘dog’: 1}
- dataset.imgs:保存 (图片路径, 索引) 元组的列表
DataLoader
一、用途
Dataloader 就是一个数据加载器,可以在训练的时候,把训练数据分成多个小组,每次抛出一组数据,直至把所有的数据都抛出。
二、DataLoader的参数
dataloaders = Data.DataLoader(dataset, # 需要导入的数据集batch_size=1, # 一批多少个数据shuffle=False, # 是否打乱顺序sampler=None, # 取样器,从dataset中抽取数据的策略(使用时shuffle必须为False)num_workers=0, # 使用多线程读取数据,0表示不使用多线程(Windows系统)pin_memory=False, # 将tensor放到cudadrop_last=False) # dataset中最后不足一个batch的数据是否丢掉