【毎月10連ガチャ無料】AutoML VisionでMNISTしてみた【1回200円のAIガチャ】

[https://cloud.google.com/automl/](https://cloud.google.com/automl/) にアクセスしてもアルファのままになってます。 [https://cloud.google.com/automl/?hl=en](https://cloud.google.com/automl/?hl=en)でベータにアクセスできます。

# MNISTとは
0から9の手書き数字の画像から数字を予測する問題です。
![3.png](https://qiita-image-store.s3.amazonaws.com/0/163401/54db5755-d81f-96ab-e4e5-ff36e0f9e3d9.png) ![2.png](https://qiita-image-store.s3.amazonaws.com/0/163401/262e7bc4-a1f0-b211-9d00-d9961f8d981b.png) ![1.png](https://qiita-image-store.s3.amazonaws.com/0/163401/30ed6c54-b5e3-e410-386a-d97fddba1274.png) ![18.png](https://qiita-image-store.s3.amazonaws.com/0/163401/c84b851f-f3b7-89cf-c57b-2509eb3a6806.png) ![6.png](https://qiita-image-store.s3.amazonaws.com/0/163401/3b6248f0-ff7b-8dce-d17b-6512781797e0.png) ![15.png](https://qiita-image-store.s3.amazonaws.com/0/163401/70ee1e34-f794-a4d0-2fe1-699207c8b876.png) ![21.png](https://qiita-image-store.s3.amazonaws.com/0/163401/bfe343a6-4866-765d-c103-a046b50f1b79.png) ![0.png](https://qiita-image-store.s3.amazonaws.com/0/163401/248a1b87-e21c-fc65-83f5-7761450dcb07.png) ![290.png](https://qiita-image-store.s3.amazonaws.com/0/163401/9ab8fc63-1847-6960-a810-5b12d020e315.png) ![16.png](https://qiita-image-store.s3.amazonaws.com/0/163401/2795f0ba-84a8-7bc9-498a-3d4b5d24ef6c.png)

# AutoML Visionとは
転移学習とLearning2learnを使用して、画像をアップするだけで学習してくれるサービスです。ハイパラチューニングやグリサなどは必要ありません。

# 手順
詳しい情報は、 [こちら](https://cloud.google.com/vision/automl/docs/?hl=ja) を参考にしてください。
初回は、 [認証](https://cloud.google.com/vision/automl/docs/quickstart?hl=ja) などが必要かもしれません。

## データセットを作成
まず、学習用のデータセットを作成する必要があります。上の **➕ NEW DATASET** をクリックし作成します。
![beta-dot-custom-vision.appspot.com_vision_datasets_list_project=automl-mnist (1).png](https://qiita-image-store.s3.amazonaws.com/0/163401/b02f606f-9bc4-502c-14da-813fcaaca068.png)

任意のデータセット名を入力し、画像をインポートします。今回はMNISTの学習データが60000ファイルあるため、GCSからインポートしています。その場でアップロードする場合は最大500ファイルまでです。1つの画像に複数のラベルがある場合は、 **Enable multi-label classification** にチェックを入れてください。 チェックすることで精度が向上します。
![beta-dot-custom-vision.appspot.com_vision_datasets_create_project=automl-mnist.png](https://qiita-image-store.s3.amazonaws.com/0/163401/13e62cc7-e7f1-ea3f-51f7-12c56c587beb.png)

**CREATE DATASET** でデータセットを作成します。データセット作成に数分ほどかかることがあります。

作成すると、以下のような画面が表示されます。画像をラベルで絞り込むことが出来ます。上の **Enable multi-label classification** にチェックを入れていない場合警告が表示されることがありますが、気にする必要はありません。
![beta-dot-custom-vision.appspot.com_vision_datasets_details_dataset=ICN9114935621187113290&project=automl-mnist.png](https://qiita-image-store.s3.amazonaws.com/0/163401/a9fc4123-8700-1b6a-e9ca-197cf9df8a8b.png)

## 学習
**TRAIN** タブで学習をします。
![beta-dot-custom-vision.appspot.com_vision_datasets_details_dataset=ICN9114935621187113290&project=automl-mnist (1).png](https://qiita-image-store.s3.amazonaws.com/0/163401/5f66bf60-9cbd-dc58-04f3-0594463d2012.png)

**TRAIN NEW MODEL** でモデルを作成します。
![beta-dot-custom-vision.appspot.com_vision_datasets_train_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist.png](https://qiita-image-store.s3.amazonaws.com/0/163401/8a030823-f152-1c36-8f8d-a72ea9478246.png)

任意のモデル名を入力し、トレーニングバジェットを選択します。
![beta-dot-custom-vision.appspot.com_vision_datasets_train_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (1).png](https://qiita-image-store.s3.amazonaws.com/0/163401/e1ac1212-2657-ee80-c57b-a12818faca7d.png)

ほとんどの場合、 *1 compute hour(free*)* で十分です。 **START TRAINING** で学習を開始します。学習にも数分ほどかかります。
![beta-dot-custom-vision.appspot.com_vision_datasets_train_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (2).png](https://qiita-image-store.s3.amazonaws.com/0/163401/b43d8080-2e33-02b7-86a6-6b7b864b2677.png)

## 評価
**EVALUATE** タブで評価します。
全体のメトリックとラベルごとのメトリックが確認できます。
#### Avg precision
Precision-Recall曲線の下面積です。0.5~1.0の間です。0.5がランダムで1.0に近づくほど正確なモデルになります。学習データに評価データがleakageしてしまい過学習(1.0に近い)することがあるのでデータセット作成時に学習データと評価データを分けてください。(詳細は [こちら](https://cloud.google.com/vision/automl/docs/prepare?hl=ja) )
#### Score thresholdとPrecisionとRecall
スコア閾値によって [精度やリコール](https://en.wikipedia.org/wiki/Precision_and_recall) がどう変化するか確認できます。
![beta-dot-custom-vision.appspot.com_vision_datasets_evaluate_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (1).png](https://qiita-image-store.s3.amazonaws.com/0/163401/ba34cffd-6719-94c5-4a6d-33e403cc25c0.png)

#### 混合行列
評価中に学習データのラベルに予測された回数の割合です。少ししか間違えてないですね。
![beta-dot-custom-vision.appspot.com_vision_datasets_evaluate_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (2).png](https://qiita-image-store.s3.amazonaws.com/0/163401/764d2576-ab65-778c-f87c-f7fa23d857de.png)

## 予測
**PREDICT** タブで予測します。
**UPLOAD IMAGES** から画像をアップロードします。
![beta-dot-custom-vision.appspot.com_vision_datasets_predict_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (1).png](https://qiita-image-store.s3.amazonaws.com/0/163401/4c023964-1831-6600-3d2e-a820b08e72d8.png)

**Predictions** に精度が表示されます。今回は100%正しかったようです。
![beta-dot-custom-vision.appspot.com_vision_datasets_predict_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (2).png](https://qiita-image-store.s3.amazonaws.com/0/163401/2b3b14b0-5e22-5a59-13e7-973b900d6efb.png)

外部サービスとして簡単に公開することも出来ます。
![beta-dot-custom-vision.appspot.com_vision_datasets_predict_dataset=ICN9114935621187113290&model=ICN7147526575035413566&project=automl-mnist (3).png](https://qiita-image-store.s3.amazonaws.com/0/163401/0ecf518c-565c-7963-4ac4-8fe56611820d.png)

## データセット一覧
サイドバーの **Datasets** からデータセット一覧を表示できます。
![beta-dot-custom-vision.appspot.com_vision_datasets_list_project=automl-mnist (2).png](https://qiita-image-store.s3.amazonaws.com/0/163401/be745a5f-c0d0-00f3-311b-086a0882f6a7.png)

## モデル一覧
サイドバーの **Models** からモデル一覧を表示できます。
#### AUC
Area under the curveの略で、Precision-Recall曲線の下面積です。0.5~1.0の間です。0.5がランダムで1.0に近づくほど正確なモデルになります。
![beta-dot-custom-vision.appspot.com_vision_models_project=automl-mnist.png](https://qiita-image-store.s3.amazonaws.com/0/163401/2a681d65-e03c-161a-bc37-81766617471e.png)

## 画像の形式
以下がサポートされているらしいです。最大30MB。GIFがあるのが面白いですね。
- JPEG
- PNG
- WEBP
- GIF
- BMP
- TIFF
- ICO

# まとめ
どうだったでしょうか？簡単だと思います。LIMEやSHAPが使えるとさらにデバッグしやすそうですね。料金も毎月1時間以内の学習が10回無料で、それ以降は1時間あたり20ドルです。普通のモデルであれば、5分ほどで学習できるので200円くらいですね。ベースラインを決めるのにもすごく便利だと思います。人力ラベル付けサービスもあるらしいので興味深いですね。