torchvision.datasets.ImageFolder

文章目录

什么是ImageFolder

torchvision.datasets.ImageFolder 是 PyTorch 中 torchvision 库提供的一个用于加载图像数据集的类,特别适用于处理按类别组织的图像数据集。通过使用 ImageFolder 类,你可以轻松地加载包含图像数据的文件夹,并且该类会自动根据文件夹结构解析出每个类别的图像数据

用代码来理解

假设我们有一个图像数据集,包含两个类别:"cat" 和 "dog",每个类别各有一些图像。数据集的目录结构如下:

dataset/

├── cat/

│ ├── cat001.jpg

│ ├── cat002.jpg

│ └── ...

└── dog/

├── dog001.jpg

├── dog002.jpg

└── ...

在这个例子中,"dataset" 文件夹下有一个名为 "cat" 的子文件夹和一个名为 "dog" 的子文件夹,分别存放了 "cat" 类别和 "dog" 类别的图像。每个子文件夹中包含该类别的多张图像。

接下来,我们可以使用 ImageFolder 类来加载这个数据集,并查看返回的内容是什么:

python 复制代码
import torch
from torchvision import datasets, transforms

# 定义数据转换
transform = transforms.Compose([
    transforms.Resize((224, 224)),  # 调整图像大小
    transforms.ToTensor(),           # 将图像转换为Tensor
])

# 加载数据集
dataset = datasets.ImageFolder('dataset', transform=transform)

# 查看数据集中的内容
print(dataset.classes)  # 打印类别列表
print(dataset.class_to_idx)  # 打印类别到索引的映射
print(dataset.imgs)  # 打印图像路径列表

dataset.classes 返回的结果会是 'cat', 'dog',表示数据集中包含的类别

dataset.class_to_idx 返回的结果可能是 {'cat': 0, 'dog': 1},表示每个类别对应的索引

而 dataset.imgs 则会返回一个列表,其中每个元素对应一个元组 (image_path, class_index),包含了图像的路径和对应的类别索引。

用法

python 复制代码
import torch
from torchvision import datasets, transforms

# 定义数据转换
transform = transforms.Compose([
    transforms.Resize((224, 224)),  # 调整图像大小
    transforms.ToTensor(),           # 将图像转换为Tensor
])

# 加载数据集
dataset = datasets.ImageFolder('path/to/dataset', transform=transform)

# 创建数据加载器
data_loader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)
相关推荐
我叫孙一鸣-专注电子元器件4 分钟前
压电陶瓷是怎么去拉动光纤这根线的?
网络·人工智能·半导体·压电驱动器
IT_陈寒7 分钟前
Java线程池的坑把我埋了,踩出来的血泪教训
前端·人工智能·后端
A-刘晨阳10 分钟前
GitLab + ArgoCD 实现 Kubernetes GitOps 自动化部署
运维·人工智能·git·kubernetes·自动化·云计算·argocd
weixin_4481199421 分钟前
Datawhale Easy Data × AI:构建知识与记忆驱动的 Agent笔记3
人工智能·windows·笔记
u13013022 分钟前
GitHub 热榜项目:日榜(2026-10-08)
人工智能·github
逸模24 分钟前
BIM模型做一次要多少钱?值不值?
大数据·人工智能·公装·连锁公装·交底
野生码农AI实战32 分钟前
AI 看不了网页?我用 CDP 重建浏览器采集通道,30 行脚本 2.7 秒读完全文
数据库·人工智能·ai编程
硅谷秋水32 分钟前
将物理先验嵌入机器人学习:综述
人工智能·深度学习·机器学习·语言模型·机器人
怒放de生命201033 分钟前
2026年新加坡TOKEN2049大会:传统金融与加密世界的深度融合与现实叩问
人工智能·web3·去中心化·区块链·以太坊·分布式账本
科创致远34 分钟前
岳阳esop电子作业指导书:化工企业生产经理——化工生产最怕员工凭经验操作
大数据·人工智能·精益工程