【深度学习 | torchvision】当使用 torchvision.datasets 加载数据集时,如何获取路径?

一、问题引入

当使用 torchvision.datasets.Celeba 加载 CELEBA 数据集时,我们如何获取文件的路径是一个问题。

celeba = torchvision.datasets.CelebA(root = './39.AIGC/CELEBA', split = 'test', download = True)

在这里插入图片描述

然后这样显示的代码报错:

# 定义文件路径
image_folder = './CELEBA/celeba/img_align_celeba/'
bbox_file = './CELEBA/celeba/list_bbox_celeba.txt'

在这里插入图片描述

我们使用了 glob 函数来获取文件的路径:

import glob
files = glob.glob('list_bbox_celeba.txt')
print(files)

输出结果为:

(PyTorch) D:\CodeProject>D:/Anaconda/envs/PyTorch/python.exe d:/CodeProject/39.AIGC/CELEBA/celeba/demo.py
[]

二、如何读取路径呢?

当使用 torchvision.datasets.CelebA 加载 CELEBA 数据集时,返回的数据集对象提供了多种方法来获取图像和其他相关信息的路径。以下是一些常用的方法:

  1. 返回 CELEBA 数据集的根目录路径:
# 获取CELEBA数据集的根目录路径
root_path = celeba.root
print("Root path:", root_path)

输出结果为:

Root path: ./39.AIGC/CELEBA
  1. 获取当前数据集划分的标识:
# 获取当前数据集划分的标识
split = celeba.split
print("Split:", split)

输出结果为:

Split: test
  1. 获取指定索引处图像文件的路径:
idx = 0
image_path = celeba.filename[idx]
print("Image path:", image_path)

输出结果为:

Image path: 182638.jpg
  1. 标注文件路径:
# 标注文件路径
attr_file_path = os.path.join(celeba.root, 'list_attr_celeba.txt')
print("Attribute file path:", attr_file_path)

输出结果为:

Attribute file path: ./39.AIGC/CELEBA\list_attr_celeba.txt
  1. 评估文件路径:
# 评估文件路径
evaluations_file_path = os.path.join(celeba.root, 'list_eval_partition.txt')
print("Evaluations file path:", evaluations_file_path)

输出结果为:

Evaluations file path: ./39.AIGC/CELEBA\list_eval_partition.txt

源代码为:

import torchvision.datasets as datasets
import os

celeba = datasets.CelebA(root='./39.AIGC/CELEBA', split='test', download=True)

# 获取CELEBA数据集的根目录路径
root_path = celeba.root
print("Root path:", root_path)

# 获取当前数据集划分的标识
split = celeba.split
print("Split:", split)

# 获取指定索引处图像文件的路径
idx = 0
image_path = celeba.filename[idx]
print("Image path:", image_path)

# 标注文件路径
attr_file_path = os.path.join(celeba.root, 'list_attr_celeba.txt')
print("Attribute file path:", attr_file_path)

# 评估文件路径
evaluations_file_path = os.path.join(celeba.root, 'list_eval_partition.txt')
print("Evaluations file path:", evaluations_file_path)
### 回答1: `torchvision.datasets.CUB200` 是 PyTorch 中的一个数据集,用于基于鸟类图像的分类任务。CUB200 数据集包含 200 种不同的鸟类,每种鸟类包含大约 50 张图像,总计约 11788 张图像。每个图像都带有相应的标签,表示该图像所属的鸟类别。您可以使用 PyTorch 中的 `torchvision.datasets.CUB200` 类加载这个数据集,从而可以在您的分类模型中使用这些图像和标签。 ### 回答2: torchvision.datasets.CUB200是PyTorch中一个常用的数据集类,用于加载和处理CUB-200数据集。CUB-200是一个著名的鸟类图像数据集,包含了200个鸟类的图像,每个类别大约有30-40张图像。这个数据集主要被用于鸟类识别和图像分类任务。 该数据集类提供了一些常用的函数和属性,用于加载和处理CUB-200数据集。可以通过传入数据集的根目录路径、训练集/测试集划分的文件路径以及数据集的变换函数来创建一个CUB200实例。 CUB200类有以下几个常用属性: 1. CUB200.root:数据集根目录的路径。 2. CUB200.base_folder:存储数据集文件和文件夹的基本文件夹名称。 3. CUB200.transform:数据集的转换函数。 4. CUB200.target_transform:数据集标签的转换函数。 5. CUB200.train:布尔值,表示当前是否为训练集。 6. CUB200.classes:数据集中的类别名称列表。 7. CUB200.class_to_idx:类别名称对应的索引字典。 CUB200类还定义了一些重要的方法: 1. CUB200.__getitem__(self, index):根据给定的索引返回数据集中的样本。 2. CUB200.__len__(self):返回数据集的长度,即样本的总数。 使用torchvision.datasets.CUB200加载和处理CUB-200数据集可以方便地进行训练和测试。可以通过遍历数据集对象,获取每个样本并应用相应的变换函数来获取训练和测试数据,从而进行模型的训练和评估。 ### 回答3: torchvision.datasets.CUB200是一个用于处理鸟类图像数据集的PyTorch库。CUB200是指Caltech-UCSD Birds-200-2011数据集,它包含了来自200种不同鸟类的约11,788张图像。每个图像都有相应的鸟类标签,总共包含了201个不同的类别,其中包括200个鸟类标签和一个“背景”标签。 torchvision.datasets.CUB200提供了方便的接口来加载和处理CUB200数据集。通过导入该库,我们可以轻松地访问训练集和测试集,并进行一些操作,例如数据预处理、数据增强或数据可视化等。 加载CUB200数据集的代码可以简单示例如下: ```python import torchvision.datasets as datasets # 加载训练集 train_dataset = datasets.CUB200(root='path_to_dataset', train=True, download=True) # 加载测试集 test_dataset = datasets.CUB200(root='path_to_dataset', train=False, download=True) ``` 在加载数据集,我们可以通过设置`root`参数来指定数据集存储的根目录,并且通过设置`train`参数来选择加载训练集还是测试集。当`download`参数设置为`True`数据集将被自动下载到指定的根目录下(如果数据集不存在的话)。 加载后的训练集和测试集都是以`torch.utils.data.Dataset`类的对象形式返回,我们可以通过索引的方式获取图像和标签。同,CUB200数据集还提供了一些方便的内置函数和方法,用于访问不同的数据,如图像、标签和类别等。 总之,torchvision.datasets.CUB200为我们提供了方便和简洁的数据处理接口,能够让我们更加高效地使用CUB200数据集进行深度学习任务的开发和研究。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

旅途中的宽~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值