Colaboratryなら簡単だがAWSやGCPだと意外と大変
Jupyter lab等で機械学習モデルを扱うとき,大きな学習済みモデルをGoogle driveから直接ダウンロードしたいといった状況がよくあると思います.
Google colaboratoryなら,Google driveと連携できるのでとても楽なのですが,AWSやGCP内のjupytrerでダウンロードしようとすると意外と大変です.
そこでgoogledrivedownloaderというpythonライブラリがおすすめです.便利ですが,意外と知られていないので今回記事を書きました.
pydriveというgoogle driveを扱うライブラリもありますが,単純にダウンロードするだけならこれがシンプルで楽に使えます.
googledrivedownloader
googledrivedownloaderのGithubレポジトリは下記です.
https://github.com/ndrplz/google-drive-downloader
インストール
インストールは次で簡単にできます.
pip install googledrivedownloader
使い方
例えば,Google drive内にmnistのzipファイルがあった場合は次のように簡単にダウンロードできます.
そのときのfile_idはGoogle driveでファイル共有をするときのURLに含まれているidです.外部からもアクセスできるようなアクセス権にする必要があります.
zipファイルなら展開までやってくれるので便利です.
from google_drive_downloader import GoogleDriveDownloader as gdd
gdd.download_file_from_google_drive(file_id='1iytA1n2z4go3uVCwE__vIKouTKyIDjEq',
dest_path='./data/mnist.zip',
unzip=True)
追記
フォルダごとダウンロードする方法も見つけました。
!cd Deep3DFaceReconstruction/network && wget --load-cookies /tmp/cookies.txt "https://docs.google.com/uc?export=download&confirm=$(wget --quiet --save-cookies /tmp/cookies.txt --keep-session-cookies --no-check-certificate 'https://docs.google.com/uc?export=download&id=1fPsvLKghlCK8rknb9GPiKwIq9HIqWWwV' -O- | sed -rn 's/.*confirm=([0-9A-Za-z_]+).*/\1\n/p')&id=1fPsvLKghlCK8rknb9GPiKwIq9HIqWWwV" -O FaceReconModel.pb && rm -rf /tmp/cookies.txt