有时我们想要使用 Colab 训练自己的数据集(非 Colab 自带数据集),那么首先必须要上传数据集到 Colab 平台。
Colab 平台直接上传文件速度非常慢,即使你上传的是压缩后的文件。本文将介绍两种方法解决 Colab 上传数据集慢的问题。
一、谷歌云上传
Colab 支持挂载谷歌云盘,所以可以把要上传的文件保存到谷歌云盘中。训练深度学习模型时,使用保存在谷歌云中的数据集。当然,谷歌云盘的上传速度一般也很慢。下面介绍两种方法,快速将文件保存到谷歌云中。
1. 复制分享的谷歌云链接
如果你找到了其他人通过谷歌云盘分享的文件,那么打开别人的分享链接直接星标复制即可。
以下载 Market1501 数据集为例,找到了 Market1501 的谷歌云链接,打开链接,点击详情,
可以查看文件的详细信息
点击加注星标,就可以在已加星标中看到该文件,在该文件上右键复制,就可以将文件添加到你的谷歌云盘。
from google.colab import drive
drive.mount('/content/drive/')
即可挂载谷歌云盘。
2. 使用 multicloud 工具
multicloud 可以实现百度云、Onedrive 和 谷歌云之间的文件转移,30G是免费的。
MultCloud官网地址
二、通过 Kaggle API 进行下载(推荐)
有办法直接高速下载数据集到 Colab 吗?答案是有,借助 Kaggle API 就可以实现数据集的高速下载。而且,Kaggle 上的数据集资源相等丰富。
- 打开 kaggle
打开 kaggle 网页的数据集 https://www.kaggle.com/datasets,搜索你需要下载的数据集
2. 点击 Copy API command
以下载 MARS 数据集为例,点击 Copy API command
,会复制如下命令kaggle datasets download -d twoboysandhats/mars-motion-analysis-and-reidentification-set
- 获取 API Token
登录 Kaggle 账户,点击头像->Account->Create New API Token,会生成一个 json 文件,里面包含 username 和 key 的键值对。
在 Colab 中安装 kaggle
包,并生成 kaggle 用户名密码 json 文件 。其实,就是根据上面获取的 API Token 生成新的 json 文件,默认位置在 '/content/kaggle.json'
。
在 Jupyter 中依次执行下面的命令,token = {"username":"XXX","key":"XXXXXXXXXXXX"}
中的 xxxx 根据刚才生成的 API Token 进行填写。
pip install kaggle
import json
token = {"username":"XXX","key":"XXXXXXXXXXXX"}
with open('/content/kaggle.json', 'w') as file:json.dump(token, file)
!mkdir -p ~/.kaggle
!cp /content/kaggle.json ~/.kaggle/
!chmod 600 ~/.kaggle/kaggle.json
!kaggle config set -n path -v /content
在 Colab 的 Jupyter 中输入复制得到的 Copy API command
进行下载
!kaggle datasets download -d twoboysandhats/mars-motion-analysis-and-reidentification-set
如果需要把数据集保存到谷歌云盘中,可以使用 !cp /content/datasets/twoboysandhats/mars-motion-analysis-and-reidentification-set/mars-motion-analysis-and-reidentification-set.zip /content/drive/MyDrive
,将数据集复制到谷歌云盘中。
实践表明:几分钟内就可以把这个 6G 多的数据集下载完毕,默认下载位置是 content
。
Tip: 当然如果你在 Kaggle 中通过创建数据集的方法上传了数据集或者代码文件,用 Copy API command
也可以实现在 Colab 的高速下载。
参考文献
Kaggle数据集上传到Google Colab上,亲测绝对有效