【深度学习 | 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)

猜你喜欢

转载自blog.csdn.net/wzk4869/article/details/130683892
今日推荐