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

谷歌Colab挂载gdrive后如何读取压缩文件夹内的多分类图像并拆分数据集?

数据集读取与拆分方案

方法1:从已挂载的Google Drive读取

你当前的数据集是按类别分子文件夹存储的,优先使用Keras内置的image_dataset_from_directory接口,无需手动写标注逻辑,自动完成标签生成和数据集拆分:

代码示例

import tensorflow as tf
from tensorflow.keras.utils import image_dataset_from_directory

# 替换为你自己的数据集根目录路径(挂载GDrive后的路径)
DATASET_PATH = "/content/drive/MyDrive/你的水果数据集根目录"
IMG_SIZE = (224, 224) # 根据模型要求调整图像尺寸
BATCH_SIZE = 32
VAL_RATIO = 0.2 # 验证集占比20%
RANDOM_SEED = 42 # 固定种子保证拆分结果可复现

# 读取训练集
train_ds = image_dataset_from_directory(
    DATASET_PATH,
    validation_split=VAL_RATIO,
    subset="training",
    seed=RANDOM_SEED,
    image_size=IMG_SIZE,
    batch_size=BATCH_SIZE
)

# 读取验证集
val_ds = image_dataset_from_directory(
    DATASET_PATH,
    validation_split=VAL_RATIO,
    subset="validation",
    seed=RANDOM_SEED,
    image_size=IMG_SIZE,
    batch_size=BATCH_SIZE
)

说明

  • 接口会自动将子文件夹名称作为类别名,生成0~130的整数标签对应131个分类,可通过train_ds.class_names查看类别与标签的对应关系
  • 生成的train_ds、val_ds是TensorFlow的Dataset格式,可直接喂入模型训练,读写效率远高于手动加载为numpy数组
  • 如果你习惯用sklearn的拆分逻辑、需要得到numpy格式的X_train/y_train,可参考以下手动读取代码:
import os
import cv2
import numpy as np
from sklearn.model_selection import train_test_split

DATASET_PATH = "/content/drive/MyDrive/你的水果数据集根目录"
IMG_SIZE = (224, 224)

X = []
y = []
# 生成类别与索引的映射
class_list = sorted(os.listdir(DATASET_PATH))
class2idx = {cls: idx for idx, cls in enumerate(class_list)}

# 遍历读取所有图像
for cls_name in class_list:
    cls_folder = os.path.join(DATASET_PATH, cls_name)
    for img_name in os.listdir(cls_folder):
        img = cv2.imread(os.path.join(cls_folder, img_name))
        img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
        img = cv2.resize(img, IMG_SIZE)
        X.append(img)
        y.append(class2idx[cls_name])

# 转为numpy数组并拆分
X = np.array(X)
y = np.array(y)
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)

注:手动读取会将所有图像加载到内存,4万张图像可能占用较多内存,优先推荐第一种方法。


Colab连接Kaggle读取数据集说明

推荐程度:非常推荐

从GDrive读取数据集经常遇到传输速度不稳定的问题,且占用个人云盘空间,直接从Kaggle拉取数据集到Colab临时存储,读写速度更快,无需占用个人存储资源。

操作步骤

  1. 登录你的Kaggle账号,进入设置页面,找到API板块,点击创建新令牌,会自动下载kaggle.json文件到本地。
  2. 在Colab中运行以下代码,上传刚才下载的kaggle.json文件:
from google.colab import files
files.upload()
  1. 配置Kaggle接口权限:
!mkdir -p ~/.kaggle
!cp kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json
  1. 进入你要下载的Kaggle数据集页面,复制数据集的下载命令,运行即可拉取数据集:
# 替换为对应数据集的下载命令
!kaggle datasets download -d 数据集作者/数据集名称
  1. 解压下载的压缩包即可直接使用:
# 替换为你下载的压缩包文件名
!unzip -q 下载的压缩包名.zip

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 08:06:06