Google Colaboratoryからファイルを簡単にGoogle Driveへ書き込む方法
Google ColaboratoryからGoogle Driveに保存する方法はいくつかあるのですが、最近改良が入って簡単に書き込めるようになっていました。その方法を見ていきます。
目次
まずはGoogle Driveをマウント
Google Driveをマウントし、Colabの中で使えるようにします。
from google.colab import drive
drive.mount('./gdrive')
これはカレントディレクトリ以下の「gdrive」というフォルダに、Google Driveをマウントするよという意味です。このフォルダは何でもいいです。Google Driveのファイルはここで指定したフォルダ(gdrive)以下の、「gdrive/My Drive」フォルダに格納されます。
このコードを実行すると認証URLが出てくるので、その認証コードをコピーし認証させます。この認証はランタイムがリセットされるたびに必要なので注意が必要です。
ちゃんとマウントされているか確認するには、Linuxコマンドの「ls」を使います。
!ls gdrive
ColabではビックリマークをつけるとLinuxコマンドを実行できます。マウントが成功するとこのように出てくるはずです。
‘My Drive’
ちなみに、My Drive以下の中身を見たいときは、パスにスペースが入っているため「!ls gdrive/My Drive」とやるとエラーになります。「!ls gdrive/My\ Drive」とスペースをエスケープするか、「!ls “gdrive/My Drive”」とパス全体をクォテーションで囲んでください。
ちなみにこの「マウントする」とは一回読んで終わりではなくて、定期的にGoogle Driveと同期が取られるようです。これを活用すると、Drive上のファイルを簡単に読み書きできるようになります。
Google Driveにファイルを書き込んでみる
例として画像ファイルを書き込んでみましょう。
drive_root_dir="./gdrive/My Drive"
import numpy as np
from PIL import Image
noise = (np.random.rand(128,128,3)*255.0).astype(np.uint8)
with Image.fromarray(noise) as img:
img.save(drive_root_dir+"/noise.png")
これは乱数を発生させて、ピクセルにノイズを作り出し、そのノイズ画像(128×128)をGoogle Driveに保存する例です。即Google Drive側に反映されないかもしれませんが、数秒待つとこのようにGoogle Driveに保存されているのが確認できます。
あとはGoogle Driveを普通に使うようにダウンロードすればいいだけなので簡単ですね。
読み込む場合
ちなみに読み込む場合はもっと簡単で、普通にファイルを読めばいいのです。
drive_root_dir="./gdrive/My Drive"
import numpy as np
from PIL import Image
with Image.open(drive_root_dir+"/noise.png") as img:
img_array = np.asarray(img)
print(img_array.shape)
(128, 128, 3)
ローカルにあるファイルと同じ要領で使えるので、とても簡単ですね。
以上です。ColabのVMのストレージは時間制限があり、長期的に使用することができませんが、Google Driveに適宜出力することでモデルやファイルの永続化をすることができます。
Shikoan's ML Blogの中の人が運営しているサークル「じゅ~しぃ~すくりぷと」の本のご案内
技術書コーナー
北海道の駅巡りコーナー