在Ubuntu系统中,使用Docker容器运行Unet工程。从Kaggle上下载数据集“Carvana Image Masking Challenge”时出现了一些曲折,在此记录一下以作后续经验查阅。

1. 401 - Unauthorized

执行脚本下载数据集,脚本内容如下:

#!/bin/bash

if [[ ! -f ~/.kaggle/kaggle.json ]]; then
  echo -n "Kaggle username: "
  read USERNAME
  echo
  echo -n "Kaggle API key: "
  read APIKEY

  mkdir -p ~/.kaggle
  echo "{\"username\":\"$USERNAME\",\"key\":\"$APIKEY\"}" > ~/.kaggle/kaggle.json
  chmod 600 ~/.kaggle/kaggle.json
fi

pip install kaggle --upgrade

kaggle competitions download -c carvana-image-masking-challenge -f train_hq.zip
unzip train_hq.zip
mv train_hq/* data/imgs/
rm -d train_hq
rm train_hq.zip

kaggle competitions download -c carvana-image-masking-challenge -f train_masks.zip
unzip train_masks.zip
mv train_masks/* data/masks/
rm -d train_masks
rm train_masks.zip

执行过程中需要输入username和kaggle api key。在Kaggle网站上注册用户后执行以上脚本,API key未正确填写的情况下,出现如下错误:

虽然kaggle安装成功了,但是没有权限下载数据。于是又到kaggle网站上,点击自己的用户头像,也就是网页最右上角那只鹅头,选择“Account”,即出现如下页面中的用户信息。在“API”一栏,点击“Create New API Token”生成API key,生成的令牌是以名为“kaggle.json”文件方式下载到本地。

  下面是kaggle.json内容:

把该文件拷贝至~/.kaggle/kaggle.json,或者在执行最开始的数据集下载脚本时,手动填入json文件中的用户名和key,即可解决401 - Unauthorized的问题。

但接下来,新的问题又来了。

2. 403 - Forbidden

解决了权限问题,接着又出现了403 - Forbidden:

网上查了一下解决方案,说是需要在Kaggle网站上做进一步授权验证。具体操作是,在Competetion页面,找到自己所要下载数据集的竞赛名称,比如我的是“Carvana Image Masking Challenge”,同意并接受竞赛Rules,如下图:

点击后会弹出提示框让输入手机号和验证码,按要求输入即可。验证完成后会弹出如下界面:

接着,我们再回到容器中,继续执行数据集下载命令(这里把下载脚本中的数据下载命令单独拎出来执行了),成功了!

补充说明:

在Kaggle网站的“Datasets”页面,可以直接通过网页下载数据集到PC端本地,无需授权。

页面上也提供了通过API 命令下载的方式,见下图中红框示意,复制API command后到Linux系统中执行也可以。

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐