GCPのAutoMLVisonをつかってみる

# はじめに

GCPのAutoMLVisonってどうやって使うの？という方向けに実際の利用方法についてまとめます。
GCPにあるサンプル画像を使って、実際に画像分類するAIを構築します。

# 1. トレーニングデータ用の Cloud Storageバケットを作成

Cloud Shell に次のコマンドを貼り付けて、トレーニングデータ用の新しいバケットを作成します。

```shell
gsutil mb -p $DEVSHELL_PROJECT_ID \
    -c regional    \
    -l us-central1 \
    gs://$DEVSHELL_PROJECT_ID-vcm/
```


# 2. トレーニング画像をCloud Storageにアップロードする

画像分類するモデルをつくるには、ラベル付けしたトレーニング画像を用意する必要があります。
またAutoML Visionを使用するには、トレーニング画像をCloud Storageに保存する必要があります。

メニューを開き、[Storage] > [ブラウザ] を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/73bccd41-e215-6f5b-ec76-4765677b64e7.png)

次に、Cloud Storage の gsutilを使用して、バケットにトレーニング画像をコピーします。

```shell
gsutil -m cp -r gs://cloud-training/automl-lab-clouds/* gs://$DEVSHELL_PROJECT_ID-vcm/
```


# 3. AutoML Vision トレーニングデータセットを作成する

トレーニングデータを CloudStorageに保存したので、次はAutoML Vision からアクセスできるようにします。
CSV ファイルを作成して、各行にトレーニング画像のURLと、その画像に関連付けられたラベルを追加します。

Cloud Shell インスタンスにテンプレートファイルをコピーします。
CSV ファイルをプロジェクト内のファイルで更新します。
このファイルを Cloud Storage バケットにアップロードします。
バケットを表示して CSVデータファイルがあることを確認します。

```shell
gsutil cp gs://cloud-training/automl-lab-clouds/data.csv .
head --lines=10 data.csv
sed -i -e "s/placeholder/$DEVSHELL_PROJECT_ID-vcm/g" ./data.csv
head --lines=10 data.csv
gsutil cp ./data.csv gs://$DEVSHELL_PROJECT_ID-vcm/
gsutil ls gs://$DEVSHELL_PROJECT_ID-vcm/
```

バケットにdata.csvが表示されることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/ea4dd169-f797-d13c-dd3c-f8a009c33206.png)


Cloud Consoleの上部で[+ 新しいデータセット] をクリックします。
データセット名として「clouds」と入力します。
[単一ラベル分類] はオンのままにします。
[データセットを作成] をクリックして続行します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/88e42d77-d437-4008-3313-ab0c766b0d71.png)


次の画面で、トレーニング画像（前のステップでアップロードした画像）の場所を選択します。

[Cloud Storage で CSV ファイルを選択] を選択し、前のステップでクリップボードにコピーしたファイルの URL にファイル名を追加します。参照機能を使用して CSV ファイルを見つけることもできます。緑色の背景に白色のチェック ボックスが表示されたら、[続行] を選択して先に進みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/815c3e4e-cd44-b415-6a73-f68cd7a11a4c.png)![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/c2ec1e8b-12ad-cb3d-638f-cb3f63d3f548.png)


インポートが完了してから [イメージ] タブをクリックすると、データセット内の画像が表示されます。
画像のメタデータの処理には 8～12 分くらいかかります。
完了すると、画像が種類別に表示されます。


# 5. 画像を調べる

次に、画像を調べます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/7934ccd9-7856-3801-9552-bca1fcecbe83.png)


左側のメニューからさまざまなラベルでフィルタして、画像を確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/19017dd9-bba7-ddd5-fa7e-7a120edd1fa3.png)

各ラベルの画像数を確認するには、[ラベルの統計データ] をクリックします。
ブラウザの右側に次のようなポップアウト ボックスが表示されます。
リストを確認したら、[完了] をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/81fcec6e-72b0-c556-476f-985ad67eab28.png)

# 6. モデルのトレーニング

モデルのトレーニングを開始する準備が整いました。
モデルをトレーニングするには、[トレーニング] タブに移動して、[トレーニングを開始] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/3d170bf2-d0e2-bd71-574c-798d7be3322e.png)


モデルの名前を入力するか、自動生成された名前をそのまま使用します。

[クラウドでホスト] はオンのままにして、[続行] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/2d0d5497-ef26-f684-162f-d21fcf5160b4.png)


次に、[予算の設定 *] ボックスに値として「8」を入力し、[トレーニング後にモデルを 1 ノードにデプロイする] をオンにします。
このプロセスにより、テスト完了後のモデルをすぐに予測に使用できるようになります。

[トレーニングを開始] をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/9fb926d8-6089-89f4-b66e-15a4d0ce5a49.png)


# 7. モデルの評価

トレーニングが完了したら、[評価] タブをクリックします。
このタブに、モデルの適合率（Precision）と再現率（Recall）に関する情報が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/634a0c45-f86e-e048-db4d-20c1a792b79a.png)

[信頼度のしきい値] スライダーを調節して、その影響を確認することもできます。

最後に、下にスクロールして [混同行列] を確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/d730e873-6462-c645-ad50-3638f66162c8.png)


# 8. 予測する

最も重要な予測に入ります。
トレーニング済みのモデルで新しいデータを使用して予測します。

予測する方法はいくつかあります。
今回UI を使用して画像をアップロードします。
これにより、次の2つの画像がこのモデルでどのように分類されるかがわかります。

まず、以下画像を右クリックしてローカルにダウンロードします

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/01340bd3-aa38-3768-555d-d9c41f0f7ddb.png)


[テストと使用] タブに移動します。
このページの [モデル] リストに、先ほどトレーニングしてデプロイしたモデルが選択項目として表示されます。
[画像をアップロード] をクリックして、先ほどローカルに保存したサンプル画像をアップロードします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/817642ed-4c20-ccca-685a-96aa8dec36ae.png)

予測リクエストが完了すると、次のような結果が表示されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533960/6b2b3d84-e241-e844-24cd-6f457c7feabc.png)

雲の種類が正しく判別されました。

以上です。