如何将大量图像及掩码文件上传至Google Colab?
我来给你几个实用的方案,解决Google Drive数据导入Colab的问题——毕竟我之前做图像分割项目时也踩过类似的坑,直接避开Google Fuse的不稳定点:
方法1:用Colab内置的Drive挂载(最稳定首选)
这是Colab官方主推的方式,比单独用Fuse靠谱太多,权限和稳定性都有保障:
- 第一步:挂载你的Drive
运行这段代码,跟着弹出的授权流程走,复制验证码粘贴进去就行:from google.colab import drive drive.mount('/content/drive') - 第二步:遍历文件夹加载图像和掩码
用os和PIL(或者你习惯的OpenCV)遍历子文件夹,把文件转成numpy数组。给你个可直接改的示例:
重点注意图像和掩码的对应关系,如果你的文件命名或路径有特殊规则,记得修改import os import numpy as np from PIL import Image # 替换成你Drive里图像和掩码的根路径 img_root = '/content/drive/MyDrive/your_image_parent_folder' mask_root = '/content/drive/MyDrive/your_mask_parent_folder' images = [] masks = [] # 遍历所有图像文件(自动处理子文件夹) for subdir, _, files in os.walk(img_root): for file in files: # 筛选图像格式文件 if file.lower().endswith(('.png', '.jpg', '.jpeg')): # 加载图像并统一尺寸到256x256 img_path = os.path.join(subdir, file) img = Image.open(img_path).resize((256, 256)) images.append(np.array(img)) # 对应加载掩码文件(假设路径结构和图像完全对应) # 如果掩码命名有规则(比如图像是img_001.jpg,掩码是mask_001.png),记得这里调整 mask_rel_path = os.path.relpath(img_path, img_root) mask_path = os.path.join(mask_root, mask_rel_path) if os.path.exists(mask_path): mask = Image.open(mask_path).resize((256, 256)) masks.append(np.array(mask)) # 转成最终的numpy数组 images_np = np.array(images) masks_np = np.array(masks)mask_path的生成逻辑。
方法2:压缩打包后上传Colab(适合临时测试)
要是挂载Drive后读取速度慢,你可以把图像和掩码文件夹打包成.zip,直接上传到Colab的临时存储:
- 上传压缩包:在Colab左侧的“文件”面板里点“上传”,选中你的压缩文件
- 解压到本地:
之后就可以用上面同样的遍历代码加载数据了。不过要注意,Colab的临时存储会在会话结束后清空,这个方法适合快速测试,长期训练还是挂载Drive更方便。!unzip your_dataset.zip -d /content/local_dataset
方法3:Drive API批量获取(适合极端分散的文件结构)
如果你的文件分布得特别散,挂载后遍历效率低,可以用Drive API直接批量拉取文件。不过这个方法代码稍复杂,适合有一定编程基础的情况:
- 先安装依赖:
!pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib - 然后通过授权获取文件列表,再逐个下载到Colab本地加载。不过一般前两种方法已经能覆盖绝大多数场景了,除非你的文件夹结构特别复杂。
另外,你之前用Google Fuse出问题,大概率是权限配置或挂载稳定性的问题——Colab内置的drive.mount其实已经封装了Fuse的底层逻辑,专门适配Colab环境,优先用这个就好。
内容的提问来源于stack exchange,提问作者Jesse Cambon
相关产品推荐
相关产品推荐

