LoginSignup
197
176

More than 5 years have passed since last update.

Google Colaboratory内で画像やCSVファイルにアクセスするのが一苦労だった話

Last updated at Posted at 2018-02-10

はじめに

GoogleのColaboratoryにて、無料でGPUが使えるという嬉しすぎる報告から簡易テスト用はこれを使うこと一択!と思っています。
しかも、TeslaのK80という太っ腹過ぎます!
いつも使っているディープラーニングフレームワークであるChainerでも対応しており、TensorFlow, Pytorchと基本はノートブック内で !pip install 〜とするだけでOKです。
参考:【秒速で無料GPUを使う】TensorFlow/Keras/PyTorch/Chainer深層学習環境 on Colaboratory

簡単にMNISTを通すテストだけでは気づかなかったのですが、実務で使い始めると、画像やCSVファイルを読み込みたいケースがあり、その時に控えめに言っても結構めんどくさいし、全然リファレンスが見つかりませんでしたので、今回ざっくりとまとめておきます。
* もっと他にスマートな方法があれば教えてもらえるとありがたいです m(_ _)m

前提としては、Googleのアカウントを持っていることだけです。

1. ファイルをアップロード

それでは、今回は sample.csv ファイルを読み込む練習をしてみましょう。
まずは、Google Driveのどこでも良いので、ドラッグドロップでアップロードしましょう。

1.png

2. 共有リンクを取得

ファイルを右クリックでメニューを開き、『共有可能なリンクを取得』しましょう。

2.png

リンクの共有がオフですと出てくる場合は、右側のバーをスライドさせて共有をオンにしましょう。

3.png

そうすると、共有リンクが取得できるため、こちらをコピーしておきましょう。
大事なところは、id=以下になります。
例えば、ここからは https://drive.google.com/open?id=kikagaku だとして話を進めていきましょう。

4.png

3. Colaboratoryでノートブックを開く

Google Colabにアクセスして、新規もしくは既存のノートブックを開いてください。
ノートブックは自動的にGoogle DriveのColab Notebookというフォルダに保存されています。
このフォルダに読み込みたいデータをアップロードしておけばOKかな?と思ったのですが、全然そういう訳ではありませんでした。

スクリーンショット 2018-02-10 16.36.47.png

最初には datalab という得体の知れないファイルのみあり、それ以外は何もありません。

4. Google Driveにアクセスするための準備

まず、PyDrive というGoogle Driveと接続するためのモジュールをインストールしておく必要があります。

PyDriveのインストール
!pip install -U -q PyDrive

つぎに、インストールした中で必要なライブラリを読み込んでおきましょう。

ライブラリの読み込み
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

もし、googleがありませんとエラーが出た場合は、同様に !pip install google でインストール完了です。

そして、Google Cloud SDKの認証を行いましょう。

GoogleCloudSDKの認証を行う
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

こちらを実行すると、下記のようにGoogle Cloud SDKの認証リンクが出てきます。

5.png

リンクへアクセスし、ユーザーIDを選択して、Google Cloud SDKでの使用を許可すると、下記の画面のように Verification Code が得られます。

6.png

こちらのコードをEnter verification codeの部分にコピペしてEnterです。
特にエラーが起きなければ認証完了です。

5. Google Drive上のファイルにアクセス

ここで、Step2で取得していた共有リンクの出番です。
idという変数に、共有リンクで取得した id= より後の部分を貼り付けて、下記のコードを実行してください。

ファイルへアクセス
id = 'kikagaku'  # 共有リンクで取得した id= より後の部分
downloaded = drive.CreateFile({'id': id})
downloaded.GetContentFile('sample.csv')

こちらを実行して特にエラーが出なければ、Google Drive上のファイルがダウンロードされています。
ディレクトリの中身を確認してみましょう。

7.png

これで後はローカルのファイルと同様に読み込むことができます。

6. (補足)ディレクトリ毎アップロードしたい場合

ディレクトリは id とは異なる共有リンクであるため、zipファイルに圧縮してアップロードを行いダウンロードするのが無難そうです。

例えば、images.zipというファイル名で圧縮した後にGoogle Driveへアップロードを行った場合、前述の手順と同様に共有リンクを元にダウンロードを行います。

スクリーンショット 2018-02-10 17.01.33.png

こんな風に images.zipをダウンロードしてくることができるのですが、解凍しないと使えないため、unzipコマンドで解凍しましょう。

images.zipを解凍
!unzip images.zip

スクリーンショット 2018-02-10 17.03.08.png

非常に簡単に解凍できました。
解凍後にimages.zipが必要なければ、!rm images.zipで削除すればOKです。

スクリーンショット 2018-02-10 17.04.43.png

こんな風にディレクトリのアップロードも完了しました。

おわりに

Dropbox等であれば、wgetで取ってくる方法もあるそうです。
参考:colaboratory をつかってみる CSVのファイルをアップロード

みなさん、ハッピーなディープラーニングライフを送りましょう!

著者紹介


株式会社キカガク
代表取締役社長 吉崎 亮介(twitter: @yoshizaki_kkgk

TwitterでAI関連の情報をつぶやいていますので、フォローお待ちしています!

197
176
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
197
176