Google Cloud: 画像認識（AutoML Vision）をためそう

# はじめに (本記事は 2021年7月 のものです）

Google Cloudには「AutoML Vision」というCloud上の画像認識ソフトがあります。
プログラミングしなくても、簡単に画像の機械学習ができるツールがあり、今回は自分自身で「カスタムモデル」を作成する手順をご紹介したいと思います。

なお、今回のトライアルでは、「Google Cloudの無償トライアル（300$）」を利用して実施しております。

本トライアルで課金されることはありませんが、無償トライアルのクレジットを無駄に消費しないよう注意点がいくつかございますので、しっかりと確認の上実施してください。

<font color="Red"><b>特に作成したモデルをデプロイしたままでいると、1時間ごとにずっと課金され続け、1ヶ月で合計９万円ほど課金されるので十分注意してください。</font></b>

## 事前準備

「AutoML Vision」を利用する事前準備として、以下の手順がございます。
1. Googleアカウント（Gmailアドレス）の準備
2. 「Google Cloudの無償トライアル（300$）」の申請

こちらについては以下のサイトを参考にしてください。
[Google Cloud: 無償トライアルの申請](https://qiita.com/dicekm-i/items/765b9f68868dd5d2da7f)

# 今回作成するモデルに関して

今回は 「AutoML Vision」 の「画像分類」機能を利用して、「フライドチキン」か「トイプードル」を見分ける分析を実施してみたいと思います。

Googleサイトなどの検索サイトを利用するなどして、それぞれ15枚以上の「フライドチキン」と「トイプードル」写真を入手してください。（モデルを作成するためには最低10枚の画像が必要となります）

<b>【Googleを利用した検索方法】</b>
Googleの場合は、「Images」をタブを利用すると簡単に収集できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/4e3e1543-20d1-261d-150d-e8cf84188a98.png)

以下のフォルダ構成のように、学習させたいデータをそれぞれ画像の種類ごとにフォルダへ保管し、「半角英数字」のファイル名をつけて、ZIPファイルにしておきます。なお、フォルダ名がクラスタリングするときの<b>「ラベル名」</b> になります。

以下の例では、dataフォルダの中に、「FriedChiken」と「ToyPoodle」のフォルダを作成し、それぞれのフォルダの中に学習用の画像ファイルを入れてあります。「FriedChiken」と「ToyPoodle」がラベルになります。

```
$ tree data
data <--- アップロードするデータ保管用フォルダ（ここからzipファイルにする）
├── FriedChiken <--- ラベル名
│   ├── 10.southern-fried-chicken.jpg
│   ├── 11.368790_fried-chicken_1x1.jpg
│   ├── 12.keto-fried-chicken-18-480x270.jpg
│   ├── xxxxx
│
└── ToyPoodle <--- ラベル名
    ├── 1.il_fullxfull.1418065203_sb3x.jpg
    ├── 10.652918064014365.jpg
    ├── 11.Red-Toy-Poodle-HP-long.jpg
    ├── 12.poodle-no-discoloration.jpg
    ├── xxxxx

```

## 「AutoML」サービスの有効化と「AutoMLVision」の開始

<b>1. [Google Cloudのダッシュボード](https://console.cloud.google.com/)から以下の手順で、AutoMLの画面を選択。</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/34a8e1f3-d70b-616d-ae9d-d550a047e0e5.png)

<b>2. AutoML Visionの「画像分類」選択して開始</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/45f9c411-520d-63e1-a9bb-01ab637056ee.png)

<b>3. AutoMLを「有効化」</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/63a28eb4-706b-e896-51ff-bd44a19ef600.png)

<b>4. AutoML Visionを「開始」</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/502e645d-b2f2-41d3-14df-0790bc3a9c91.png)

これで「AutoML Vision」を利用する準備が整いました。
ここまでの操作で特に課金されることはございません。

## 学習用データ（データセット）のアップロード

<b>1. データセットの作成</b>
「新しいデータセット」のボタンをクリックして、適当な名前をつけ、今回利用するサービス「マルチラベル分類」を選択して、データセットの作成をクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/e51d06c5-a3e8-2c00-a753-39af05130424.png)

<b>2. パソコンからファイルをアップロードを実施して、続行をクリック</b>
（なお、③のドライブの指定手順は下の方に示す）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/3cf627e8-ae7f-5d8d-0a4f-70dceec4800e.png)

<b>③のドライブの選択方法は以下の通り。</b>
③-1： バケットを作成をクリック
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/29d2a152-9255-f071-7a42-b29622ff8d9a.png)
③-2： バケット名を適当に付与して、保存場所は「Region」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/7018f0ae-edc2-288c-3d09-569873b72589.png)
③-3： Googleが管理する暗号鍵を選択して、作成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/dafddc4f-8c5b-c972-ff7e-a1931e0fce71.png)

<b>３． ラベリングされたことを確認</b>
ポータル画面にて、写真がアップロードされ、ラベリングされて登録されたことを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/ef41e477-dc14-9262-e8ba-4c61a335b509.png)

「Fried Chicken」をクリックしてフィルタリングすると、「Fried Chicken」でラベリングされた写真が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/c3f7177f-2f7c-6c1c-426c-4e23cb8a41e7.png)

## トレーニングを実施
<b>1.トレーニングのタブを選択し、「トレーニング開始」をクリックします</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/f213a6fc-52ff-7a65-3d17-3fef5e078337.png)
<b>2. モデル名を適当に付与</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/1c92f74e-02d1-5ba1-33d7-c4b4bbe56746.png)
<b>3. ノード時間に最小の「8」を入力し、トレーニングを開始をクリック</b>
<b><font color="Red">※このとき、「トレーニング後にモデルを１ノードにデプロイする」にはチェックをいれないこと。</font></b>
デプロイした場合、このデプロイを削除しないと、１時間あたり 1.5ドル くらい<b><font color="Red">（1ヶ月で900ドル）くらい</font></b>課金されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/f25d202e-250b-6274-6fa6-34c996395ba9.png)

＊なお、この段階で誤ってチェックを入れても、モデル作成後に削除することは可能です。

これでモデルの作成が開始されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/af5681d1-9442-5925-0450-7dcdd0b47868.png)

モデル作成が完了すると、登録したGmailのアドレスにメールが飛んできます。
今回の学習（２ラベル、120枚）くらいで、だいたい30分くらい掛かりました。

<b>4. モデル評価</b>
モデル作成後に、「評価」のタブをクリックすると、今回のモデルの品質が表示されます。それぞれどんな意味があるかは調べてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/be03a1c6-b317-a651-41de-a635c0f6c68a.png)

## モデルの実行
それでは、今回作成したモデルをデプロイして、分類できるか試してみたいと思います。

<b>1.「テストと使用」タブから、モデルを作成します。</b>
デプロイするのに、10分くらい掛かるかもしれません。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/ba927f2d-276a-b517-512f-85e8b7ccb792.png)

<b>2.モデルが作成された後に、ファイルをアップロードします。</b>
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/dbfd70eb-50c7-b48c-8d42-cc1323d011ca.png)
10枚のファイルまで選択することが可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/8c5b4cea-58e8-b340-57e5-ec93e9477a95.png)

<b>3.結果の確認</b>
そうすると、分析され結果が表示されます。うまく判別できているでしょうか？？
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/87563708-bac8-59cc-27e1-21124c17c595.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/e30fb96d-c683-f55d-95e6-3760f2d626cd.png)

以上となります。非常に簡単に画像分類処理ができることが確認できました。

検証がおわったら、「デプロイメントの削除」処理を行ってください。

## 作業が完了したら、「デプロイメントの削除」（デプロイしたモデルの削除）を実施すること
<b><font color="Red">検証がおわったら、必ず「デプロイメントの削除」を実施してください。</font></b>
このデプロイを削除しないと、１時間あたり 1.5ドル くらい<b><font color="Red">（1ヶ月で900ドル）くらい</font></b>課金されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/239309/e61d511e-1b1a-6b99-a70b-a4acc117c515.png)

##AutoML課金の注意点

AutoML Vision（画像分類）には2種類の課金がございます。
1. モデルを作成する課金
2. モデルをデプロイして利用する際の実行環境（サーバ）に対する課金

### 1. モデルを作成する課金について
画像データを利用して、モデルを構築する場合にその掛かった時間に対して課金されます。
ただし、最小でも「8ノード時間」が課金され、だいたい25ドル課金されます。
・（1 ノード時間あたり 3.15ドル）×（8 ノード時間）= 25.20ドル

多くの場合、試験運用モデルの構築には 8 ノード時間（「実時間」で約 1 時間）あれば十分です。ただし、写真のデータ枚数やラベル数に異存しますのでご注意ください。

無償枠で作成できるモデル数は、後述しております。

### 2. モデルをデプロイして利用する際の実行環境（サーバ）に対する課金
モデルを利用する際は、そのモデルをサーバにデプロイして利用する必要があります。
一回モデルをデプロイすれば、その「利用回数」に対して課金はされませんが、モデルがデプロイされたサーバに対して時間課金されます。

従って、モデルを利用して検証する間のみ、サーバにデプロイして作業を実施し、作業が完了したら必ず削除する必要があります。

ちなみに、モデルをサーバ上にデプロイし、1時間の間検証を実施し、最後モデルを削除した場合の利用金は「1.25ドル」になります。
・（1 ノード時間あたり 1.25ドル）×（1 ノード）×（1.0 時間）= 1.24ドル

非常に小さな金額ですが、1ヶ月の間起動したままの状態ですと、「900ドルくらい」になります。
・（1 ノード時間あたり 1.25ドル）×（1 ノード）×（1 日 24 時間）×（30 日）= USD 900ドル（デプロイとオンライン予測）

十分にご注意ください。

## 無料プログラムで利用できる検証回数（推定）

AUTOML VISIONには、最初の利用開始時に、トレーニングとオンライン予測それぞれに 「40 時間の無料ノード時間（一年間有効）」が提供されます。

従って、「オンライン予測」については、きちんと利用していない時に削除できていれば、この無償枠で全て賄うことができると考えられます。

トレーニングについては、「1回 8ノード時間」が掛かる想定で考えると、無償枠で「5回」、更に300ドルの無償プログラムで「11回分（= 25.20ドルx11回）」で、合計「15回」モデルが作成できると考えられます。

ぜひうまく無償キャンペーンを利用して検証してください。