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

如何在Google Colab中创建本地猫狗数据集的训练验证测试目录

在Google Colab中读取本地猫狗数据集并创建分类目录

步骤1:上传并解压本地数据集

Colab无法直接读取本地电脑文件系统,需先将数据集上传到Colab存储。推荐把本地数据集打包成压缩包后上传,效率更高:

from google.colab import files
import zipfile
import os, shutil

# 上传本地的猫狗数据集压缩包
uploaded = files.upload()

# 解压压缩包到Colab临时目录
dataset_zip = next(iter(uploaded.keys()))
with zipfile.ZipFile(dataset_zip, 'r') as zip_ref:
    zip_ref.extractall('/content/kaggle_original_data')

步骤2:创建分类目录并复制图片

修改路径为Colab的存储路径,创建训练/验证/测试的分类目录,并按规则将图片复制到对应目录(以Kaggle猫狗数据集的cat.0.jpg、dog.1.jpg命名格式为例):

# 定义路径
original_dataset_dir = '/content/kaggle_original_data'  # 解压后的原数据集目录
base_dir = '/content/cats_and_dogs_small'  # 分类后的目录根路径

# 创建各级目录(exist_ok=True避免目录已存在报错)
os.makedirs(base_dir, exist_ok=True)

train_dir = os.path.join(base_dir, 'train')
os.makedirs(train_dir, exist_ok=True)

validation_dir = os.path.join(base_dir, 'validation')
os.makedirs(validation_dir, exist_ok=True)

test_dir = os.path.join(base_dir, 'test')
os.makedirs(test_dir, exist_ok=True)

train_cats_dir = os.path.join(train_dir, 'cats')
os.makedirs(train_cats_dir, exist_ok=True)

train_dogs_dir = os.path.join(train_dir, 'dogs')
os.makedirs(train_dogs_dir, exist_ok=True)

validation_cats_dir = os.path.join(validation_dir, 'cats')
os.makedirs(validation_cats_dir, exist_ok=True)

validation_dogs_dir = os.path.join(validation_dir, 'dogs')
os.makedirs(validation_dogs_dir, exist_ok=True)

test_cats_dir = os.path.join(test_dir, 'cats')
os.makedirs(test_cats_dir, exist_ok=True)

test_dogs_dir = os.path.join(test_dir, 'dogs')
os.makedirs(test_dogs_dir, exist_ok=True)

# 复制猫图片到对应目录
# 训练集(前1000张)
fnames = [f'cat.{i}.jpg' for i in range(1000)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(train_cats_dir, fname)
    shutil.copyfile(src, dst)

# 验证集(第1000-1500张)
fnames = [f'cat.{i}.jpg' for i in range(1000, 1500)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(validation_cats_dir, fname)
    shutil.copyfile(src, dst)

# 测试集(第1500-2000张)
fnames = [f'cat.{i}.jpg' for i in range(1500, 2000)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(test_cats_dir, fname)
    shutil.copyfile(src, dst)

# 复制狗图片到对应目录
# 训练集(前1000张)
fnames = [f'dog.{i}.jpg' for i in range(1000)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(train_dogs_dir, fname)
    shutil.copyfile(src, dst)

# 验证集(第1000-1500张)
fnames = [f'dog.{i}.jpg' for i in range(1000, 1500)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(validation_dogs_dir, fname)
    shutil.copyfile(src, dst)

# 测试集(第1500-2000张)
fnames = [f'dog.{i}.jpg' for i in range(1500, 2000)]
for fname in fnames:
    src = os.path.join(original_dataset_dir, fname)
    dst = os.path.join(test_dogs_dir, fname)
    shutil.copyfile(src, dst)

可选:持久化数据到Google Drive

Colab临时存储在会话结束后会被清空,若需保留数据,可挂载Google Drive,将数据集和分类目录存储到Drive中:

from google.colab import drive
drive.mount('/content/drive')

# 修改路径为Drive下的路径,例如:
original_dataset_dir = '/content/drive/MyDrive/kaggle_original_data'
base_dir = '/content/drive/MyDrive/cats_and_dogs_small'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:55:20