CelebA数据集加载提示未找到或损坏,download=True无效如何解决?
报错核心原因
- 导入语句存在语法错误,缺少
import关键字 - 手动下载的数据集目录结构不符合TorchVision内置
CelebA类的读取要求 download=True失效是因为官方数据集源托管在谷歌云盘,区域访问受限会触发下载失败
解决步骤
方案1:使用TorchVision内置CelebA类(需要用到数据集标注时选择)
- 首先调整数据集目录为官方要求的结构:
你自定义的根目录/ └── celeba/ ├── img_align_celeba/ # 所有人脸图片都放在这个文件夹里 ├── list_attr_celeba.txt ├── list_eval_partition.txt ├── list_landmarks_align_celeba.txt └── identity_CelebA.txt
所有标注文件可以从你下载数据集的页面单独下载齐全,放到上述对应路径。
- 修正代码:
from torchvision import transforms # 修正导入语法错误,补全import关键字 from torchvision.datasets import CelebA celeba_transforms = transforms.Compose([ transforms.CenterCrop(130), transforms.Resize([64, 64]), transforms.ToTensor() ]) # root填你自定义的根目录路径,不要直接写图片文件夹路径 train_dataset = CelebA( root='你自定义的根目录的路径', split='train', download=False, transform=celeba_transforms )
方案2:使用ImageFolder加载(仅需要用到人脸图片时选择,更简单)
如果你不需要用到CelebA的属性、划分等标注信息,直接用ImageFolder类加载图片目录即可,不需要调整目录结构,也不需要下载标注文件:
from torchvision import transforms from torchvision.datasets import ImageFolder celeba_transforms = transforms.Compose([ transforms.CenterCrop(130), transforms.Resize([64, 64]), transforms.ToTensor() ]) # root直接填你存放所有CelebA图片的文件夹路径 train_dataset = ImageFolder( root='img_align_celeba', transform=celeba_transforms )
两种方案加载成功后,你定义的变换逻辑会自动在读取每张图片时生效。
内容的提问来源于stack exchange,提问作者John
相关产品推荐
相关产品推荐

