Google Colab是否有学术用预构建ImageNet?如何在Colab使用该数据集?
Google Colab 中使用 ImageNet 数据集的替代方案
以下是3种可直接落地的实现方式:
方法1:直接下载公开镜像压缩包后加载
这是最贴近原生torchvision.datasets.ImageNet使用习惯的方案:
- 首先可按需挂载Google Drive,避免每次重启Colab都重复下载数据集
from google.colab import drive drive.mount('/content/drive')
- 执行wget命令下载ImageNet-1k压缩包,下载完成后解压到指定路径
# 下载训练集、验证集压缩包,源为公开授权镜像 wget [ImageNet公开镜像地址] -P /content/drive/MyDrive/imagenet/ # 解压训练集 tar -xvf /content/drive/MyDrive/imagenet/ILSVRC2012_img_train.tar -C /content/imagenet/train # 解压验证集 tar -xvf /content/drive/MyDrive/imagenet/ILSVRC2012_img_val.tar -C /content/imagenet/val
- 解压完成后直接用原生
ImageNet类读取本地路径即可,不需要填download参数
from torchvision.datasets import ImageNet from torchvision import transforms transform = transforms.Compose([transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor()]) train_dataset = ImageNet(root='/content/imagenet', split='train', transform=transform) val_dataset = ImageNet(root='/content/imagenet', split='val', transform=transform)
注意:ImageNet完整数据集体积超过150G,需要确保你的Drive有足够存储空间;若不需要持久化存储可直接下载到Colab临时目录,临时目录默认提供约70G存储,加载完整数据集需要升级Colab存储权限
方法2:通过Hugging Face Datasets库加载
如果不想手动处理解压和路径配置,可以用datasets库封装好的接口直接加载:
- 先安装依赖库
pip install datasets torchvision
- 直接加载数据集,库会自动处理下载、解压、标注匹配逻辑
from datasets import load_dataset import torch from torchvision import transforms transform = transforms.Compose([transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor()]) def transform_func(examples): examples["pixel_values"] = [transform(img.convert("RGB")) for img in examples["image"]] return examples dataset = load_dataset("imagenet-1k", split="train") dataset = dataset.with_transform(transform_func) # 转为Pytorch DataLoader使用 dataloader = torch.utils.data.DataLoader(dataset, batch_size=32, shuffle=True)
方法3:使用Tiny ImageNet子集调试
如果只是做功能测试、不需要完整1000类的数据集,可以用Tiny ImageNet子集,总大小仅237M,加载速度快很多:
# 下载并解压Tiny ImageNet(源为公开教学镜像) wget [Tiny ImageNet公开下载地址] unzip tiny-imagenet-200.zip
# 用torchvision的ImageFolder类直接读取即可 from torchvision.datasets import ImageFolder from torchvision import transforms transform = transforms.Compose([transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor()]) train_dataset = ImageFolder('./tiny-imagenet-200/train', transform=transform)
内容的提问来源于stack exchange,提问作者Pablo
相关产品推荐
相关产品推荐

