Pytorch——ImageFolder使用

本文详细介绍了PyTorch中ImageFolder数据加载器的使用方法,包括数据集构造、参数设置、成员变量查看及返回对象解析,适用于图像分类任务的数据预处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

ImageFolder是一个通用的数据加载器,数据集应当按照指定的格式进行存储。

1 数据集构造方式

比如我们的数据集一共包括两个类别:cat、dog,每个类别包括四张图片。所有的图片按文件夹保存,每个文件夹下存储同一个类别的图片,文件夹名为类名。

2 ImageFolder

2.1 调用

import torchvision.datasets
dataset=ImageFolder(root, transform=None, target_transform=None, loader=default_loader)

2.2 参数

(1)root

在root指定的路径下寻找图片,比如

import torchvision.datasets
dataset = ImageFolder('./data/dogcat_2')

(2)transform

对PIL Image进行的转换操作,transform的输入是使用loader读取图片的返回对象,比如

import torchvision.datasets

transform = transforms.Compose([  
        transforms.Grayscale(),  
        transforms.Resize([28, 28]),  
        transforms.ToTensor(),  
        transforms.Normalize(mean=(0,0,0),std=(1,1,1))
])

dataset = ImageFolder('./data/dogcat_2',transform=transform)

(3)target_transform

对label的转换。

2.3 成员变量

可以通过成员变量查看ImageFolder返回的内容。

(1)classes

       根据分的文件夹的名字来确定的类别,如['cat', 'dog']。

(2)class_to_idx

       按顺序为这些类别定义索引为0,1...,如{'cat': 0, 'dog': 1}。

(3)imgs

       返回从所有文件夹中得到的图片的路径以及其类别,一个列表,列表中的每个元素都是一个(img-path, class_index)的元组,如

[('./data/dogcat_2/cat/cat.12484.jpg', 0), ('./data/dogcat_2/cat/cat.12485.jpg', 0), ('./data/dogcat_2/cat/cat.12486.jpg', 0), ('./data/dogcat_2/cat/cat.12487.jpg', 0), ('./data/dogcat_2/dog/dog.12496.jpg', 1), ('./data/dogcat_2/dog/dog.12497.jpg', 1), ('./data/dogcat_2/dog/dog.12498.jpg', 1), ('./data/dogcat_2/dog/dog.12499.jpg', 1)]。

2.4 ImageFolder返回的对象

       如果不进行transform,返回PIL Image对象,进行transform,返回tensor。

       ImageFolder的返回值,第一维代表的是第几张图片(所有类别的图片顺序排列),如dataset[0]代表第0张图片,即('./data/dogcat_2/cat/cat.12484.jpg', 0)。第二维只有0和1两个值,0返回图片数据,1返回label。

 

参考:pytorch torchvision.ImageFolder的使用(https://www.cnblogs.com/wanghui-garcia/p/10649364.html

### 如何在 PyTorch使用 MobileNet #### 导入必要的库 为了能够在 PyTorch使用 MobileNet,首先需要导入一些基本的库。这些库提供了构建模型所需的工具。 ```python import torch from torchvision import models, transforms ``` #### 加载预训练的 MobileNet 模型 PyTorch 提供了一个非常方便的方法来加载预训练好的 MobileNet 模型。这可以通过 `torchvision.models` 来实现[^1]。 ```python # 加载预训练的 MobileNet V2 模型 model = models.mobilenet_v2(pretrained=True) # 切换到评估模式 model.eval() ``` #### 数据转换与准备 当使用像 MobileNet 这样的卷积神经网络时,输入图像通常需要经过一系列变换才能被接受作为输入。常见的操作包括调整大小、裁剪以及标准化等。 ```python preprocess = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]) ``` #### 使用 DataLoader 处理数据集 对于大规模的数据集来说,直接一次性加载所有图片并不现实;因此推荐采用批处理的方式逐步读取数据。此时可以借助于 PyTorch 的 `DataLoader` 类[^2]。 ```python from torch.utils.data import DataLoader from torchvision.datasets import ImageFolder dataset = ImageFolder(root='path/to/dataset', transform=preprocess) data_loader = DataLoader(dataset, batch_size=4, shuffle=True, num_workers=4) ``` #### 执行推理过程 一旦完成了上述准备工作之后就可以开始执行前向传播计算了——即所谓的“推理”。在这个阶段只需要调用模型对象即可完成预测工作。 ```python input_tensor = ... # 假设这是已经过预处理后的张量 output = model(input_tensor) predicted_class_idx = output.argmax(dim=-1).item() print(f'Predicted class index: {predicted_class_idx}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值