【Colab】巨大なデータセットをコピーする方法


経緯

PyTorchのDCGANチュートリアルで巨大なデータセット(1GB・22万枚画像くらい)が必要

ローカルのJupyter Labで動かしてみたら学習遅い&メモリ不足

GPUも使えるGoogle Colaboratory(以下Colab)上で学習させてみよう

手を動かしていくうちに問題発生

データセットをColabにどうやってコピーしよう?

問題

  • ColabってGoogle Driveのファイル参照できるの?
  • Colab上でZIPって解凍できるの?

ColabってGoogle Driveのファイル参照できるの?

Google Driveをマウントすることで参照することができます。
ノートブックを新規作成し次のコードを実行する。

from google.colab import drive
drive.mount('/content/drive')

認証コードを生成するリンクが貼られるのでアクセスする。
アカウント選択でColabを利用しているアカウントを選択する。
Google Drive File Streamがアクセスを求めてくるので許可する。
認証コードが発行されるのでコピーして、貼り付けてエンター。

Go to this URL in a browser: https://accounts.google.com/o/oauth2/auth?client_id=xxx
Enter your authorization code:

Colab上でZIPって解凍できるの?

Colab上でunzipコマンドが使えます。
まずはGoogle DriveにデータセットのZIPファイルをアップロードし、Colab上にコピーします。

cp "./drive/My Drive/Colab Notebooks/data/celeba/img_align_celeba.zip" "."

後はunzipコマンドを使いColab上で解凍します。

!unzip "img_align_celeba.zip"

解凍した画像を表示してみる

from PIL import Image
Image.open('img_align_celeba/000001.jpg')


無事表示することができました。

まとめ

  1. データセットをGoogle DriveにZIPでアップロードする
  2. Colab上でGoogle Driveをマウントする
  3. Colab上にZIPファイルをコピーする
  4. Colab上でZIPファイルを解凍する

追記

Colabにファイルをアップロードするだけなら次のコードでローカルファイルを選択できます。
ただし、容量が大きなファイルをアップロードしようとするとかなり時間がかかっているように感じます。
本稿のGoogle Drive経由の方が早くアップロードできる気がします。

from google.colab import files
files.upload()