如何在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
相关产品推荐
相关产品推荐

