学习笔记torchvision.datasets.ImageFolder使用
学习链接: [link](链接: link.).
ImageFolder简介
ImageFolder是一个通用的数据加载器,训练集和测试接的格式为
下面是文件名
。
root/dog/xxx.png
root/dog/xxy.png
root/dog/xxz.png
root/cat/xxx.png
root/cat/xxy.png
root/cat/xxz.png
通常将其分为训练集和测试集(还有一部分会有测试集)
形式为./data/train
和 ./data/val
(或者是valid)
测试集(./data/test
)
ImageFolder参数设置
dataset=torchvision.datasets.ImageFolder(
root, transform=None,
target_transform=None,
loader=<function default_loader>,
is_valid_file=None)
- root:图片存储的根目录,就是test和val的上一级目录。
- transform:对图片进行预处理操作的函数。
- target_transform:对图片类别进行预处理操作,若果不传递该参数返回的是索引0,1,2。(不是很理解也暂时没有用到)
- loader:表示数据的加载方式,通常默认加载方式
- is_valid_file:获取图像文件的论净并检查改文件是否为有效文件的函数(检查损坏文件)
ImageFolder程序案例
# ImageFolder程序案例
all_imgs = datasets.ImageFolder(os.path.join(data_dir, "train"), transforms.Compose([
transforms.RandomResizedCrop(input_size),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
]))
transforms.Compose()详解
- 作用:transforms.Compose()类用来组合多个torchvision.transforms操作。
- 参数:一个list数组,数组里是多个’Transform’对象,即[transforms, transforms…]。
- 操作:如下所示,遍历list数组,对img依次执行每个transforms操作,并返回transforms后的img。
程序中的几个函数的作用
transforms.RandomResizedCrop–随机裁剪
transforms.RandomHorizontalFlip–依据概率p对PIL图片进行水平翻转默认值为0.5。
transforms.ToTensor–将PIL Image或者 ndarray 转换为tensor,并且归一化至[0-1] 注意事项:归一化至[0-1]是直接除以255,若自己的ndarray数据尺度有变化,则需要自行修改。
其他的用法见链接: link.