You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何对Kaggle下载的CelebA压缩包应用torchvision图像变换

问题原因
  • PyTorch内置的CelebA数据集类的root参数要求传入解压后数据集存放的上层文件夹路径,不支持直接传入压缩包路径,直接传入archive_celeba.zip会导致类无法定位到数据集文件,触发报错。
  • 下载的CelebA压缩包解压后的目录结构,和torchvision.datasets.CelebA要求的官方结构不匹配,也是触发报错的常见原因。CelebA类要求的目录结构如下:
你指定的root文件夹/
└── celeba/
    ├── img_align_celeba/  # 存放所有人脸图片
    ├── list_attr_celeba.txt
    ├── list_bbox_celeba.txt
    ├── list_landmarks_align_celeba.txt
    └── list_eval_partition.txt
解决方法

方案1:适配CelebA类的结构要求(需要用到CelebA属性标注时选这个)

  1. 解压下载的archive_celeba.zip,将解压得到的所有文件和文件夹,放到新建的celeba子文件夹内
  2. 将这个celeba子文件夹放到一个单独的上层目录下,比如./local_celeba_data
  3. 调整加载代码如下:
from torchvision import transforms
from torchvision.datasets import CelebA

celeba_transforms = transforms.Compose([
    transforms.CenterCrop(140),
    transforms.Resize([64, 64]),
    transforms.ToTensor()
    ])
# root传入上层目录路径,不是压缩包路径也不是celeba子文件夹路径
dataset = CelebA(
    root='./local_celeba_data',
    split='train',
    download=False,
    transform=celeba_transforms
)

方案2:用ImageFolder直接加载图片(不需要属性标注时选这个,更简单)

如果不需要用到CelebA自带的人脸属性、 bounding box等标注,直接用ImageFolder加载图片文件夹即可自动应用你定义的变换:

  1. 解压archive_celeba.zip,找到存放所有图片的img_align_celeba文件夹路径
  2. 加载代码如下:
from torchvision import transforms
from torchvision.datasets import ImageFolder

celeba_transforms = transforms.Compose([
    transforms.CenterCrop(140),
    transforms.Resize([64, 64]),
    transforms.ToTensor()
    ])
dataset = ImageFolder(
    root='解压后的img_align_celeba文件夹的上层目录路径',
    transform=celeba_transforms
)

内容的提问来源于stack exchange,提问作者Lucian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:57:03