Google Cloud PlatformのAutoML Visionを使ってお手軽に猫の種類を分類する機械学習のモデルを作る

2020.05.08

こんにちは、Mr.Moです。

機械学習って興味あるけど難しくて中々手が出しづらいですよね。実はここ数年で機械学習はどんどん身近になってきていて簡単に使える方法もあったりします。Google Cloud Platform(GCP)が提供しているAutoML Visionのサービスもその1つです。今回はどのくらいお手軽に使えるのかを見ていきましょう。

ちなみにGCPの機械学習系のサービスについては下記にまとめ記事がありますので参考に見ていただければと思います。

AutoML Visionとは

image.png

GCPの画像系の機械学習サービスは大きく下記の2種類があります。

  • Vision API
  • AutoML Vision

Vision API は事前にトレーニング済みの機械学習のモデルをREST API や RPC API を介して利用できるサービスです。すぐに使える利点がありますが機能は少し汎用的になります。一方、AutoML Vision は機械学習の専門的な知識が無くても独自の画像分類を行える学習モデルを構築できるサービスです。用途によって使い分けていく感じですが、今回使うのはAutoML Visionの方ですね。

image.png

さっそく使ってみる

せっかく AutoML Vision で独自の画像分類を行える学習モデルを構築できるので、少し難しい題材にしたいと思います。こういった時にあげられる題材としてアイドルや眼鏡っ娘、ラーメン二郎なんかが個人的にはよく目にする気がしますが、ちょっとそういう系統の題材がすぐ思いつかなかったこともあり今回は猫の画像をデータセットにしていきます!

今回は下記の2種類の猫を分類しようと思います。下記は見てわからないとおり左がシャルトリュー(Chartreux)、右がロシアンブルー(Russian Blue)です。

image.png引用1:比較のため画像を結合(左元画像はコチラ, 右元画像はコチラ) by Mr.Mo, CC BY-SA 3.0

準備作業

まずは下記の必要な準備作業を実施します。

  • 画像データの用意
  • AutoML Vision APIの有効化

画像データはそれぞれ70枚ぐらい用意しzipにしておきます。

image.png

そしてAutoML Vision APIを有効にしておかないと使えないので、メニューから[APIs & Services] > [Library] を開き検索バーに[Cloud AutoML API]と入力して [Cloud AutoML API] を探し下記のように有効の状態にしておきます。

image.png

データセットの作成

データセットを作成していきます。AutoML Visionのデータセットの画面を開いて[NEW DATASET]をクリックします。

image.png

すると下記のように選択肢が出てきます。今回は猫の種類を分類する単一のラベルの予測なので[Single-Label Classification]を選択します。

image.png

次に画像データをインポートしていきますが、いくつかやり方があります。今回は画像データに対して全く前処理などやってない状態なのでローカルPCからそのまま画像データをアップロードする方向でいきます。[Upload images from your computer]を選択して進めてください。(前もってラベル情報を持ったCSVファイルと画像ファイルのセットをGCSに配置して、CSVファイルのパスを指定するやり方もあります)

image.png

image.png

ローカルPCにある画像データのアップロード先(GCSの)を指定する必要があります。下記のように[BROWSE]をクリックして進めていきましょう。

image.png

今回ほとんど何も準備していない状態なのでGCSのバケットを作るところからです。最低限の設定を入力してバケットを作成してしまいます。

image.png

image.png

image.png

image.png

image.png

最終的に下記の状態になればOKです。[CONTINUE]をクリックして画像データをインポートしましょう。(インポート処理はしばらく時間がかかります。)

image.png

ちなみにインポート処理の完了はメールでも通知してくれます。

image.png

データセットの確認

画像データがインポートされると下記のような状態になります。アップロードしたzipのファイル名を自動的にラベル名として処理してくれるんですね結構ありがたい機能です。さらにこの画面上でラベルの付け替えなどちょっとした作業なら可能になっています。(著作権の関係で画像の一覧部分はマスクしています)

image.png

また、インポート処理後のデータセットはエクスポートもできますので適宜利用すると良いと思います。

image.png

機械学習のモデルトレーニング

データセットが準備できたので、さっそくトレーニングを開始していきます。ちなみにデータセットはラベル1つに対して最低10個用意する必要がありました。(今回は70個は用意できている状態です)
データセットも自動的にトレーニング用、テスト用、検証用に分けて使用してくれるようです。この辺り機械学習の専門的な知識が無くてもサポートしてくれている感じですね。

image.png

トレーニングのモードも下記のように選択できて今回は使いませんがEdge用もあります!

image.png

また、トレーニングに使うノード数は調整でき最小8ノードを設定できます。いきなりたくさんのノード数を指定せずにまずは小さく始めてトレーニング結果を見てノード数を上げていくのが良いと思います。ここではトレーニングにかかる料金も確認しておきましょう。もし16ノードを設定した場合は下記の計算のように1時間で$50ぐらいかかります。(ちなみにトレーニングによる精度向上がこれ以上見込めない状態になったらEarly Stopping(トレーニング早期終了)もしてくれるみたいですね)

(1 ノード時間あたり $3.15)*(16 ノード時間)= $50.40

image.png

もろもろトレーニングの設定が完了したら[START TRAINING]をクリックしてトレーニングを開始させます。本来機械学習で必要なアーキテクチャーやチューニングなどAutoMLが裏でよしなにやってくれるおかげでいとも簡単にトレーニングが実行できてしまうんですね。あとはトレーニングが終わるまでのんびりコーヒーでも飲んで待つだけです。(トレーニングには時間がかかります、この時は1時間程度)

image.png

トレーニングが完了すると下記のようにメールでも教えてくれます。

image.png

機械学習モデルの評価

トレーニングが完了するとAutoML Visionでは下記のように評価指標も表示してくれます。

image.png

image.png

こういった結果の解釈は非常に重要です。ある程度専門知識が必要になるところですね。

機械学習モデルのデプロイ

こうしてお手軽に猫の種類を分類できる独自の機械学習モデルを作ることができました。おもむろにデプロイして使える状態にしていきましょう。

image.png

ちなみにモデルのデプロイ後は常に課金が発生している状態になります。1 ノード時間あたり $1.25かかるので課金を止めたい場合はモデルをアンデプロイしましょう。料金については公式のドキュメントなどを確認するようにしてください。

image.png

猫の種類を分類してみる

モデルのデプロイが完了しました。さっそく使ってみましょう!AutoML Visionは[UPLOAD IMAGES]をクリックしてすぐに試すことができますよ!

image.png

下記は今回のデータセットから除外していた画像ファイルを分類した結果です。今回作った機械学習のモデルからすると初めてお目にかかる猫の画像なわけですが見事に当たってます!

cheltex_blog (1).png

rusian_blue_blog (1).png引用2:画像の分類結果をわかり易く加工(元画像はコチラ) by Mr.Mo, CC BY-SA 3.0

まとめ

本当にお手軽に独自の機械学習のモデルを作ることができました!ちなみに今回まったくコードを書いていません、エンジニアに依存せずに済ませることもできるんですね。なお、機械学習の知識がある程度必要な部分はあるように思いますのでその部分だけ専門家に頼ることで非常に効率的にやりたいことを実現できるのではないでしょうか。 AutoML Visionでは今回のような独自ラベルによる画像分類ができますので、工場の部品チェックや医療の現場など様々な場面で活躍しそうですね。