ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

简要介绍 torchvision.datasets.ImageFolder

2026/9/8 18:03:21 拓冰建站 浏览量
简要介绍 torchvision.datasets.ImageFolder torchvision.datasets.ImageFolder专门用来读取按文件夹分类的图像数据集是图像分类任务最常用的自定义数据集类。一、数据集目录强制格式必须遵循下面的层级root/ 类别A/ 图片1.jpg 图片2.png 类别B/ 图片3.jpg ...root数据集根路径传给第一个参数一级子文件夹名称 类别名子文件夹里存放该类别的所有图片ImageFolder 会自动给每个类别分配数字标签0,1,2…例如猫狗分类文件结构规则只能一层类别文件夹不能多层嵌套。二、函数原型ImageFolder( root, transformNone, target_transformNone, loaderdefault_loader, is_valid_fileNone )root(str)数据集根目录路径。transform (callable, 可选)对图像本身做预处理、数据增强。 接收 PIL 图片返回处理后的图片 / Tensor。 示例Resize、随机翻转、转 Tensor、归一化。target_transform (callable, 可选)对标签做变换。 比如把数字标签转成 one‑hot 编码。loader图片读取函数默认default_loader用 PIL 读取图片。一般不用修改。is_valid_file过滤文件自定义哪些文件才视为有效图片。三、返回对象的结构实例化之后得到一个Dataset对象遍历单条样本(image, label)image经过 transform 后的图像张量 / PIL 图label该类别的数字索引int额外自带两个重要属性dataset.classes→ 类别名称列表[cat,dog]dataset.class_to_idx→ 类别→数字映射字典{cat:0, dog:1}四、运行示例from torchvision import datasets, transforms trans transforms.Compose([ transforms.Resize((224,224)), transforms.ToTensor() ]) dataset datasets.ImageFolder(root./train, transformtrans) print(dataset.classes) print(dataset.class_to_idx) img, label dataset[0] print(img.shape, label)五、搭配 DataLoader 使用训练标准写法import torch dataloader torch.utils.data.DataLoader( dataset, batch_sizebatch_size, shuffletrue, num_workersnum_workers, pin_memoryTrue, drop_lastFalse, )六、调用链路示意图流程ImageFolder扫描文件夹自动生成图片路径 标签transform流水线对每张图片做缩放、翻转、转张量、归一化交给DataLoader打包成 batch送入网络训练七、总结ImageFolder自动扫描指定目录下的子文件夹读取图片并生成分类数据集配合 transform 做预处理用于 PyTorch 图像分类训练。