Google Cloud Platform

AutoML Vision
機械学習 ‐ イメージカラーの抽出

Picolix Design

nae2sho

GitHub 2022/4

1

機械学習

イメージカラーの抽出

目次

01 Google Cloud Platform(GCP)

02 Auto ML Vision

03 学習モデルの作成

04 評価とテスト

2

1

Google Cloud Platform(GCP)3

1

１－１ Google Cloud Platform(GCP)の準備
・AI画像分類ができるAutoML Visionを使うためには、Google Cloud Platform（GCP）にアカウントが必要です。

・https://cloud.google.com/ から登録することでクレジット$300が無料で付与されます。
GCPのコンソールを開いてアカウント、支払情報などを入力してアカウントを開設してください。（詳細は、Google Cloud Platformを参照）
・初めてAutoML Visionを使用する場合もクレジット約$170が無料で追加付与されます。
(2022/3現在）※実験的に小規模な画像データ数、ラベルで動作確認を行う場合、無料分のクレジットで十分足りますが、課金予算オーバーにならないように注意して下さい。

4

1

１－２ プロジェクトの作成
GCPにログインして、機械学習するためにプロジェクトを作成します。
「新しいプロジェクト」－「プロジェクト名（任意名称）」を入力し「作成」を実行します。名前は任意で、プロジェクトIDは自動で付与されます。

5

1

空プロジェクトが作成されます。このプロジェクトにAI画像分類のライブラリやリソースを登録することになります。(プロジェクト単位で課金、ユーザ管理を行います。この段階で課金はされません)6

2

Auto ML Vision7

2

これから行う画像分類・分析の課題について『ホームページのスクリーンショット
画像からイメージカラーを２色答えよ』●画像を扱うライブラリーはAuto ML Visionです。
このライブラリーを使って、機械学習モデルを作成していきます。
●機械学習モデルの作成手順
・Auto ML Visionの設定
・データセット初期設定とバケット作成
・学習用データの読み込み
・学習モデルの作成、評価、テスト

8

２－１ Auto ML Visionの設定

2

作成したプロジェクトにAuto ML Visionライブラリーを割り当てます。
左上の「ナビゲーションメニュー」－「API-サービス」－「ライブラリー」「機械学習」－「Cloud AutoML API」を選択して「有効にします」

9

2

Cloud AutoML APIの概要画面で”認証情報が必要になる場合がある”と「認証情報を作成」ボタンが表示されていますが、今回は認証情報を作成しません。
学習モデルのテスト確認はダッシュボード内でできますので確認だけなら必要ありません。(オンラインでAPI連携する場合は認証情報を作成する必要があります)10

2
左上の「ナビゲーションメニュー」－「人工知能」－「Vision」を選択。
さらにメニューを下にスクロールしてVisionを選択します。

11

2

メニューにピン止めしておけば後ですぐに選択できるようになります。
12

「ナビゲーションメニュー」－「Vision」－「ダッシュボード」を選択してAuto ML Visionの「開始」を実行します。

2“Google Cloud Platform で課金を有効にしています…”と表示されます。プロジェクト「PicoLix-Design-1」の請求先アカウント設定します。(この段階ではまだ課金されません)13

2２－２ データセット初期設定とバケット作成

データセットには画像（jpg)とそれに紐づくラベル名（csv)データが必要です。
まず、そのデータセットを保管するバケットと設定を行います。
・課題に対する必要なデータのホームページスクリーンショット画像(jpg)は私の運営サイトsearch.picolix.jpで保持している3万のホームページ画像と画像に紐づく2色のラベルデータ(csv)を利用しました。
2色のラベルデータはイメージカラー計算値で自動取得しています。本来は人間の目で見た感じを設定すべきです
が、総数が3万と多いことからこの手順を省きます。
判定率が落ちるかもしれませんがAuto ML Visionの画像分類モデルを作って機能するかを実証を優先します。
・ラベルデータ(csv)は、[Imageファイル名],[色1],[色2]の項目とします。[Imageファイル名],[色1],[色2],[色3]と3色の指定もできますが、学習トレーニングが長くなると予想されますので2色としています。
・イメージカラー計算参考プログラム
https://search.picolix.jp/dmoz/index.php?s_keyword_in=IT ←の例ではイメージカラーは計算により取得し登録されています。 イメージカラー抽出プログラムはこちらです興味ある方はどうぞhttps://github.com/picolix/imagecolor
14

「ナビゲーションメニュー」－「Vision」－「データセット」「新しいデータセット」を選択して任意のデータ名とモデルを選択します。ここでは、1画像につき1位の色名、2位の色名のラベルを用意するので、「マルチラベル分類」を選択します。

215

「ナビゲーションメニュー」－「Cloud Strage」－「ブラウザ」－「バケットを作成」を実行します。
※ここに学習したい画像ファイルとラベル用CSVファイルを保管することになります。
ディレクトリー構成は自由に作成できます。注意事項としてロケーションを正しく選択しておかないと、後でトレーニングするときに”ロケーションが違うために画像が移動できない”とエラーが発生します。

216

2２－３ 学習用データの読み込み「ナビゲーションメニュー」－「Vision」－「データセット」－「インポート」でバケットimagecolor-hpに学習用画像(jpg)とラベル(csv)をアップロードします。
「インポート」画面から選択してアップ可能ですが、画像は1回500ファイルを複数セットアップした時に画像ファイル名にタイムスタンプの文字列が自動付与されてしまいCSV中で指定する画像ファイル名と異なってしまいます。従ってディレクトリー単位でまるごとアップして下さい。この場合はファイル名は変わりません。
・1枚10kバイトの画像ファイルを800枚でだいたい5分でアップできます。

・1,000枚程度ならこの方法で良いのですが、万単位になると、時間がかかり過ぎてブラウザーが応答しなく無応答の警告がでます。アップロードは停止しているのか進んでいるのか分からなくなります。
この場合cloud shellを使ってアップロードを行います。

17

2
Clouud shellを使って画像をアップロードする方法
右上のCloud shellアイコン[>_]をクリックすると、ターミナルが起動します。

3万ファイルをtarでディレクトリーごとアーカイブしたファイルをCloud Strageに置くか、どこかのWWWサーバに置きます。
例ではWWWサーバに置いて、そこからwgetコマンドでダウンロードして、tarで解凍しています。
※wget ,tar コマンドが利用できます18

2
qutilコマンド cpでディレクトリーごとバケットにアップロードする。

qutil cp -r image gs://image-color-hp/ を実行してimage-color-hpのバケットに/imageフォルダーごと入れる。
19

23万ファイルの転送に２時間かかりました。

20

2・ラベル用CSVファイルについて
フォーマットは以下のようになります。
（詳細はこちらhttps://cloud.google.com/vision/automl/object-detection/docs/csv-format?hl=ja）[TRAIN,TEST,VALIDATION],gs://バケット名,label1[,label2][,labelN]
TRAIN：
この画像を使用してモデルをトレーニングします。
VALIDATION： 画像を使用して、トレーニング中にモデルが返す結果を検証します。
TEST：
画像を使用して、トレーニング後のモデルの結果を数値化します。
・LABEL名はラテン文字または数字で始まり、ラテン文字、数字、スペース、アンダースコア、ダッシュのみを含み、最大32文字まででなければない。UNICODEでも日本語名は使えない。
・バケットはAutoMLと同じ場所、同じストレージクラスの地域バケットを使用すること。
・各ラベルに少なくとも 10個のイメージが必要で、トレーニング用、検証用、テスト用の各セットに少なくとも8個(TRAIN)、1個(VALIDATION)、1個(TEST) のイメージを割り当てる必要があります。
第1項目を外して、gs://image-color-hp/image/F5BCF8D1.jpg,orange,yellow_greenのようにすると全データから適当に8:1:1に割り当ててくれます。

21

2・ラベル用CSVファイルのアップロード作成したCSVファイルを選択して[続行]しアップロードします。

CSVフォルダーにアップされます。※Cloud shellを使ってアップしてもかまいません。
22

2・イメージ画面「ナビゲーションメニュー」－「Vision」－「データセット」－「イメージ」を選択するとアップロード結果がわかります。

ここでは単に画像ファイルとCSVデータがアップロードされラベルが紐づいただけです。
23

2・トレーニング画面「ナビゲーションメニュー」－「Vision」－「データセット」－「トレーニング」を選択するとアップロード結果がわかります。有効なデータ量と致命的なエラー及びエラーの数が多すぎなければ「トレーニングを開始」ボタンが有効になります。
画面で「一部のイメージをインポートできませんでした」と表示されている場合は、CSV中のファイル名が実際storage中になかった場合です。
ファイル名が間違っているか画
像ファイルのアップロード漏れですのでその場合は再度アップしてください。
尚、数個欠落していてもエラーを無視して大丈夫です。
ここまででgoogle strageに400Mバイト程使っています。
課金対象ですが、1円未満です。

24

3

学習モデルの作成

25

3

3－1 学習モデルの作成
今回揃えたデータは、画像ファイル約3万ファイル、ラベルは1画像につき2つ、ラベル種類は16種のデータです。いよいよトレーニングですが、ここから本格的に課金が始まります。1ノード時間$3.465 (2022/3時点)です。

「トレーニングを開始」を実行します。

・新しいモデルの定義をします。
モデル・名称は適宜付けてください。
・ノード時間予算の設定200を指定しました。もっと少ないデータ量の場合は最低の8で十分です。
※200を使い切った場合、$600かかりますので要注意です。
・トレーニング後にモデルを1ノードにデプロイはチェックを外す。(後で手動でデプロイする)
デプロイした場合はそのノード自体が存在するだけで課金対象です。
放置していても課金されます。

26

33－2 モデルのトレーニング「新しいモデルをトレーニング」を実施します。トレーニングが終了するとこの画面からも分かりますが、終了メールが来ます。

27

3
画面の案内文には、”トレーニングには数時間かかることがあります。この時間には、ノードのトレーニング時間だけではなく、インフラストラクチャの設定と破棄も含まれますが、これらには料金がかかりません。”と表記されています。
この文章を読むとトレーニングには料金がかからないように思えますが、実際はトレーニングの時間ではなくてトレーニングの総ノード時間に課金されます。
例えば、1時間かかって10ノード時間を費やすのと、3時間かかって10ノード時間を費やした料金は両方とも10ノード時間分($34.65)で同じということです。トレーニングが無償ということではありませんの注意してください。
予想では早くて6時間遅くても12時間ぐらいで終了するだろうと思っていましたが、18.5時間、140ノード時間かかってトレーニングが完了しました28

トレーニングの課金状態

3

18.5時間、140ノード時間かかったトレーニングの課金状態は次のようになりました。フリーの無料分とAutoMLの無料分を食いつぶして、さらに別途6,796円の実費がかかりました。ここまでの一連の操作で55,764円です。140ノード時間分です。AutoML Image Classification Online Predictionsの無料分5,748円がありますが、これはオンライン予測にて使われるものです。
●トレーニング前●トレーニング前29

4

評価とテスト30

４－１ 評価4

トレーニングの結果は以下のようになりました。

31

432

4
平均適合率は、1.0に近いほどより良いデータモデルです。適合率と再現率は100%に近いほど良いです。
結果は平均適合率0.805 適合率77.53% 再現率65.47%となりました。
平均適合率は80.5%で90%を越えませんでしたがまずまずです。
適合率は抽出した2色がどれだけ判断が正解だったかの割合で77.53%で良いでしょう。
再現率は実際抽出した2色のデータの内どれだけ判断が正解だったかの割合で65.47%です。

もっと厳しい予想をしていたのですが評価できると思います。適合率と再現率はトレードオフの関係でどちらを優先するかはAutoMLでは設定できません。適合率と再現率の両方を向上させたい場合はより多くのデータをラベル付けすることになります。

33

4４－２ テスト
生成された学習モデルを使って、私のホームページのスクリーンショットでイメージカラーの抽出を試してみます。

1.人間が判断した場合（私の場合）[赤]‐[赤紫]
2.イメージカラー抽出プログラム：
https://github.com/picolix/imagecolor での計算結果[紫]-[赤紫]https://www.picolix.jp344４－３ 機械学習モデルで推論した結果

イメージカラーはbrown[茶]－purplish_red[赤紫]brown(茶)が第一候補に出てきますが、これはもともとの16色データの精度が良くない為と思われます。それなりの答えが出ていますので良しとしましょう。このように、画像とラベルをAutoMLに喰わせることで、アルゴリズムやプログラムを全く気にすることなく、学習モデルを作ることができます。

機械学習モデルをデプロイしている場合は、オンライン予測リクエストが使えます。
システムを構築する時はこのRESET APIでリクエストし結果を利用することになります。※テスト確認するだけであればこの画面上で可能です。
35

画像データとラベルデータをAutoML Visionに投入するだけでノンプログラムミングで、ルールや特徴量などを全く気にすることなく実装できます。
皆さんも今後、機械学習を実装する場面がありましたらAutoML Visionを候補として検討してみてください。

36