【無料・インストール不要】ブラウザで爆速で動かす深層学習プログラミング  (Google Colaboratory)

# はじめに
このテキストは、Pythonプログラミング基本文法及び、scikit-learnやnumpyやpandas、matplotlibの基本的な使い方や、TensorFlowまたはKerasやChainerなどの深層学習フレームワークのチュートリアルは学び終えていることを前提に書いてありますので、それらライブラリーの使い方の詳細な説明はしておりませんのでご了承ください。

# Google Colaboratoryで機械学習プログラミングをはじめよう！

Googleが機械学習の教育及び研究用に提供しているGoogle Colaboratory（グーグル・コラボレイトリー）の使い方を説明し、Pythonプログラミングと機械学習プログラミングを行っていきます。

Colaboratoryを利用することで、インストール不要かつ、すぐにPython環境を整えることが可能です。
(Pythonと機械学習ライブラリがインストールされているため、Pythonのインストールせずに済みます。)

費用は無料でCPU及びGPU(1回12時間)の環境が利用可能で、用意するものは、Googleアカウントさえあれば利用できます。
また、下記の代表的な深層学習フレームワークを動かすことが可能です。

TensorFlow/Keras/Chainer/PyTorch

Colaboratoryを使うには下記のURLにアクセスするだけです。

では早速使ってみましょう。
Googleアカウントでログインして後に、下記リンクにアクセスしてください。
[Google Colaboratory](https://colab.research.google.com/)



# ノートブックの作成

「最近のノートブック」の画面が表示されますので、画面の左下から「PYTHON3の新しいノートブック」を選びクリックしてください。
または、左上メニューの『Python3 のノートブックを新規作成』でも同じです。

<img width="1086" alt="1.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/53225540-1e3d-0a31-e6b9-e1c7e20e78a8.png">


<img width="1092" alt="2.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/c12c88b1-d17b-5b2b-418e-647d8dfdc79a.png">

<img width="1198" alt="3.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/3e4ef4f9-9838-642d-4d5c-6f31a322dd08.png">

・左上メニューの『Python3 のノートブックを新規作成』の場合

<img width="1080" alt="4.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/a49ad7ce-990f-58fb-6873-7f81ee627a2b.png">

Colaboratoryの画面が表示されましたでしょうか？
さて、黒丸の三角の実行ボタンの右横にある薄い青色のテキストエディタがありますので、
そこにプログラムを記述します。

```py
print("hello Python")
```

始めは少し時間がかかりますが、少し待つと結果が表示されます。
ちなみに作成したノートブックは、自動的にGoogle Driveに保存されます。


<img width="1210" alt="5.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/a4802774-a67c-5bfc-eb92-5f6831abcb2b.png">

次は、Pythonのグラフ描画モジュールであるMatplotlibを使い、グラフを描画してみます。

```py
import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 10, 0.1)
plt.plot(x)
plt.show()
```

<img width="811" alt="スクリーンショット 2018-04-03 14.04.40.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/bfe0141d-7460-66dc-9acd-a81a39c84a18.png">

# GPUを使ってみる
ノートブック作成時には、GPUではないため、下記操作にてGPUを使えるようにします。

上部メニューの　ランタイム > ランタイムのタイプを変更を選択。
ハードウェアアクセラレータ を None から GPU に変更して保存します。

<img width="648" alt="スクリーンショット 2018-04-03 14.15.25.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/3b808540-7d1f-1053-9914-dd6fede30777.png">


<img width="1128" alt="スクリーンショット 2018-04-03 14.15.39.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/dd14549b-fcb1-7489-db30-fda946a245c9.png">

さて、下記を実行し__'/device:GPU:0'__と出力されていればGPUが利用できます。

<img width="484" alt="スクリーンショット 2018-04-03 14.18.02.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/3def1337-3338-01e4-b2e6-0a324b7faac6.png">

また、

```
!cat /proc/cpuinfo
```

及び、

```
!cat /proc/meminfo
```

を実行すると、Colaboratoryのマシンスペックを調べることが出来ます。

<img width="1226" alt="スクリーンショット 2018-04-03 14.25.21.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/d9af58e9-dd89-022f-4b5b-93b660aea506.png">


# 深層学習プログラミング体験

今回はKerasを使って、犬を認識するモデルを作ります。
VGG16(畳み込み層13層と全結合層が3層の計16層畳み込みニューラルネットワーク)を使います。
__from keras.applications.vgg16 import VGG16__でVGG16を利用可能です。

下記プログラムをコピー&ペーストしてみてください。

```main.py
from keras.applications.vgg16 import VGG16, preprocess_input, decode_predictions
from keras.preprocessing import image
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import sys


def predict(filename, size):
    import urllib.request as urllib
    filename = urllib.urlopen(filename)
    img = image.load_img(filename, target_size=(224, 224))
    x = image.img_to_array(img)
    x = np.expand_dims(x, axis=0)
    pred = model.predict(preprocess_input(x))
    results = decode_predictions(pred, top=size)[0]
    return results

# VGG16を使用
model = VGG16(weights="imagenet")

# 犬の判定処理
filename = "http://aiacademy.jp/dataset/dog1.jpg"

results = predict(filename, 10)
for result in results:
    print(result)
```

http://aiacademy.jp/dataset/dog1.jpg
の画像は、下記になります。
![dog1 16.51.59.jpg](https://qiita-image-store.s3.amazonaws.com/0/171715/b9ed288d-ac03-0db0-9fbe-61ef4ba2c320.jpeg)

しっかり、__golden_retriever__と79%と認識しております。



<img width="656" alt="スクリーンショット 2018-04-03 16.56.14.png" src="https://qiita-image-store.s3.amazonaws.com/0/171715/218c2e66-5af9-a4a5-e360-5e4b143ff77e.png">




# 注意点
90分ほど操作しない状態が続く場合、仮想マシンは停止し、ダウンロードしたデータやライブラリは初期化される仕様になっております。
その点はデメリットではありますが、無料でブラウザからPythonやその他の機械学習ライブラリが最初からインストールされている仮想マシンを利用できるメリットがあります。

# まとめ

Google Colaboratoryを利用することで無料で環境構築なしに、GPU環境にて機械学習プログラミングができます。
クラウドを利用することなく、TensorFlowやKerasなどの代表的なフレームワークも動かすことが可能です。

# AI Academy
最後にサービスの紹介をさせてください。
AI Academyというサービスは月額29,980円から50種類以上あるテキストを元に学習を進められ、また毎月無制限で講師にチャットで質問し放題です。
http://aiacademy.jp/

コンテンツでは、プログラミング初心者の方でも始められるように、プログラミングとは？環境構築編やPythonプログラミング入門〜中級、機械学習プログラミングやデータ解析に関する内容、ニューラルネットワーク・ディープラーニング、機械学習に必要な数学や統計学などが学べます。

下記から申し込み可能ですので、気になった方はご利用お待ちしております。
http://aiacademy.jp/?id=form

またセミナーも毎週開催しておりますので、こちらもご参加いただけますと幸いです。
https://connpass.com/user/AI_Academy/open/

# この記事を書いた人

サイバーブレイン株式会社
代表取締役CEO　谷 一徳 
![11993291_472105869628312_2303275488014263010_n.jpg](https://qiita-image-store.s3.amazonaws.com/0/171715/9c8f7d42-55d4-dae0-34fa-a6defaa65a18.jpeg)

[twitter](https://twitter.com/tankazunori0914)
[Facebook](https://www.facebook.com/takazunori)

1000名以上が参加しいてるAIコミュニティも運営しております。
毎日AIに関する情報を提供しておりますので、こちらのご参加もお待ちしております！
[AIコミュニティ](https://www.facebook.com/groups/1892746874314837/)