如何将谷歌云端硬盘的图像数据集加载至谷歌Colab用于CNN训练?
解决Colab访问Google Drive图像数据集的完整方案
刚巧我之前也遇到过一模一样的问题——用Colab训CNN,Drive里存着上万张图的数据集,官方教程只教单文件上传完全不够用!下面给你一套完整的可操作步骤,亲测有效:
第一步:挂载Google Drive到Colab
首先得让Colab能访问你的Drive,运行这段代码,跟着弹出的授权流程走(扫个码、授权就行):
from google.colab import drive drive.mount('/content/drive')
成功后,你在Colab左侧的文件浏览器里就能看到drive文件夹,里面就是你Drive里的所有内容,包括你的图像数据集。
第二步:根据数据集形式选择处理方式
方式一:直接使用未压缩的文件夹
如果你的图像已经是现成的文件夹(比如叫my_image_dataset,在Drive里的路径是/content/drive/MyDrive/my_image_dataset/),那直接用这个路径读取数据就行,和你在本地电脑上写代码逻辑完全一致。
举个TensorFlow读取的例子:
import tensorflow as tf # 直接用Drive里的文件夹路径创建数据集 train_dataset = tf.keras.utils.image_dataset_from_directory( '/content/drive/MyDrive/my_image_dataset/train', image_size=(224, 224), # 根据你的CNN输入调整尺寸 batch_size=32 )
用PyTorch的话也一样:
from torchvision.datasets import ImageFolder from torchvision.transforms import Compose, Resize, ToTensor transform = Compose([Resize((224, 224)), ToTensor()]) train_dataset = ImageFolder('/content/drive/MyDrive/my_image_dataset/train', transform=transform)
方式二:处理压缩的.zip文件
如果你的数据集是zip包,强烈建议先解压到Colab的临时存储(比直接读Drive里的zip快太多,训练时不会因为网络拖慢速度):
- 运行下面的代码解压zip包到Colab的
/content/目录下(这个目录是Colab的本地临时存储,读写速度快):
import zipfile import os # 替换成你Drive里zip包的实际路径 zip_file_path = '/content/drive/MyDrive/my_image_dataset.zip' # 解压到这个目录,随便起个名字就行 extract_target_path = '/content/unzipped_dataset' # 先创建目标目录,避免报错 os.makedirs(extract_target_path, exist_ok=True) # 开始解压 with zipfile.ZipFile(zip_file_path, 'r') as zip_ref: zip_ref.extractall(extract_target_path)
- 解压完成后,就可以像读取本地文件夹一样用
/content/unzipped_dataset这个路径来读取图像了,例子和上面完全一样,只是路径换成解压后的目录就行。
小提醒:Colab的临时存储(
/content/下的内容)在你关闭Colab会话后会消失,所以下次训练需要重新解压,不过解压速度很快,几万张图也就几十秒,完全没问题。
实用小技巧
- 不用手动输路径!在Colab左侧文件浏览器里找到你的数据集文件夹/zip包,右键点击选择“复制路径”,直接粘贴到代码里,绝对不会出错。
- 如果数据集特别大,训练时尽量用Colab的GPU/TPU,挂载Drive后读取数据的延迟会比本地高一点,但解压到临时存储后基本可以忽略。
内容的提问来源于stack exchange,提问作者charelf
相关产品推荐
相关产品推荐

