1. はじめに
IT業界にいるエンジニアにとって、機械学習は取り組んでみたい技術の代表格なのではないかと思いますが、実際に触ってみると、ものすごくハードルが高い技術であることを痛感させられます。
機械学習のハードルの高さを考えると、システムに機械学習の機能を組み込もうとする場合、特殊なものでない限りはAIベンダーが作成したプロダクトをそのまま、もしくはカスタマイズしてシステムに組み込むというアプローチが今後一般的になっていくのではないかと思います。
今回紹介するAutoML Vision EdgeはGoogleが提供しているプロダクトで、GCP上で(比較的)簡単にモデルを作成出来て、そのモデルをTensorFlow.jsなどを用いてEdgeデバイス上で動作させる事が出来る為、今のうちに使い方を覚えておくと今後役に立つかと思い、今回入門してみました。
※本記事はGCPが提供しているAutoML Vision Edgeで作成したモデルを、Edgeデバイスで実行してみる事が目的の検証記事の為、作成したモデルの精度面での検証は対象外としています。
AutoML Vision
AutoML Visionは、機械学習の専門的な知識が無くても独自の画像分類を行える学習モデルを構築できるサービスと紹介されることが多いようです。個人的にはGCPで転移学習が出来るプロダクトぐらいの理解だったのですが、この記事によると、転移学習だけではなくネットワーク自体の最適化のアプローチも組み込まれているようです。
GCPに画像ファイルをアップロードした後、いくつかボタンを押すだけでモデルの生成まで出来ます。
AutoML Vision Edge
AutoML Visionで生成したモデルをEdgeデバイス向けにエクスポートする機能です。
エクスポートされたモデルは、TensorFlow.jsやTensorFlowLiteなどから読み込んで実行する事が出来ます。※要するにGCP上に専用のサーバーを立てる必要が無い。
2. Edgeデバイス向けのモデル作成とエクスポート
今回は公式のチュートリアルの手順に従って、画像分類のモデルを作成してみました。
https://cloud.google.com/vision/automl/docs/edge-quickstart
上記のチュートリアルの通りに作業を進めると、5種類の花を分類するモデルが作成出来ます。
※学習データはサンプルをコピーして使う事になるので、自分で用意する必要はありません。
このチュートリアルを実施するにあたり、注意点を以下に記載します。
モデルのトレーニング時間
チュートリアルには1時間と記載されていますが、私が実施した時は約2時間半かかりました。
なので、最大で3時間ぐらいはかかるつもりでいた方が良いかもしれません。
モデルのエクスポート
チュートリアルでは、Tensorflow Lite用にエクスポートする記載となっています。
TensorFlow.js用にエクスポートする場合は、「TensorFlow.js」オプションを選択する必要があります。
GCPの利用料
GCPの利用料は大体1000円ぐらいかかりました。※当日は利用料が0円のままだったので反映までにタイムラグがあるようです。
3. TensorFlow.jsからモデルを読み込む
こちらも基本的に公式のチュートリアルの手順に従えば、問題なく動作しました。
https://cloud.google.com/vision/automl/docs/tensorflow-js-tutorial
ただ一点だけ、作成したアプリをブラウザで表示したところ、以下のエラーが表示されました。ネットで調べたところ、imgタグにwidthとheightを設定すれば良いと書かれてたので追加したらエラーが出なくなりました。
Requested texture size [0x0] is invalid. error when i am loading image in browser
※しかし上記のエラーを再現する為に、widthとheightを削除してもエラーが再現せず。。何故だ。。
(おまけ) TensorFlowLiteからモデルを読み込む
こちらも公式のチュートリアルですが、TensorFlow.jsのチュートリアルと比べるとちょっと端折ってる印象。
https://www.tensorflow.org/lite/guide/python
以下に作業手順の概要を記載します。
モデルのエクスポート
Tensorflow Lite用なので、「TF Lite」オプションを選択する。
モデルのダウンロード
TensorFlow.jsのチュートリアルの手順でやればOK。
サンプルプログラムのコピー
チュートリアルからサンプルプログラムが置いてあるGithubページに飛べるので、そのファイルをコピーしてくる。
サンプルプログラムの修正
チュートリアルの記載に従ってサンプルプログラムを修正する。
※チュートリアルに記載されている箇所以外でもエラーが出るが、エラーメッセージを見ながら修正する。
サンプルプログラムの実行
以外に盲点だったのですが(GithubのReadMeには書いてあったけど)、サンプルプログラムを実行する時に、引数として上記でダウンロードしてきたモデルを指定しないとデフォルトのモデルを参照しようとしてエラーとなります。
4. さいごに
以上で、AutoML Vision で作成したモデルのエクスポートと、ブラウザ上で動作出来る事まで確認出来ました。
ただ、肝心の学習データを作るところはサンプルデータをコピーして済ませてしまったので、学習データの作り方については別途入門が必要そうです。