ノーコードで簡単!Vertex AIを使った画像識別モデルの開発方法

2022年12月20日掲載

キービジュアル

こんにちは。ソフトバンクの西村です。本記事を御覧いただきありがとうございます。

本記事では、Google Cloud のサービスである、Vertex AIを使用したノーコードで簡単に作れる画像識別モデルの開発方法をご紹介いたします。

この記事は、ソフトバンク Advent Calendar2022の20日目の記事になります。

目次

はじめに

機械学習モデルの開発に対してどのようなイメージをお持ちでしょうか。

 

    「AIの開発ってなんだか難しそう。」

    「PythonやTensorFlowを使ってコーディングが必要なんでしょ?」

    「データエンジニアがいないと素人には無理!」

 

という方に朗報です。Google CloudのVertex AIを使えば、誰でも簡単にモデルを開発することができます!

 

    「TensorFlowはバッチリ!feature engineeringだって、朝飯前!」

 

という方も、Vertex AIを使えば「今までの苦労はなんだったの?」と言うくらい簡単に高精度なモデルを構築できます!

 

本記事では、Google CloudのVertex AIを使って、画像識別モデルの開発方法をステップバイステップでご紹介いたします。

Google Cloud のご契約があれば、お手元でもハンズオン形式でモデル開発が可能です。

ご契約がない方は、こちらからお問い合わせいただけますと、ご案内させていただきます。

Vertex AIを使ってみよう!

Vertex AIでは、さまざまな機械学習モデルを簡単に作成することができます。

画像、動画、テキスト、表形式データに対しては、Auto MLというサービスを使い、ノーコードでモデルをトレーニングすることができます。

より細かくモデル開発をしたい場合は、TensorFlowやPyTorchを使って独自のフレームワークやアーキテクチャを構成することも可能です。

本記事では、Auto MLを使った画像識別モデル(単一ラベル)の開発方法をご紹介します。

単一ラベルの画像識別では、1枚の画像の中に何が写っているか、1つの物体を識別するモデルです。活性化関数に「softmax」を用いて、その画像の物体が何であるかを与えられたラベルの中から、候補を予測します。

 

softmax関数

softmax_Vertex AI
softmax_NN_Vertex AI

 

「softmax」を用いることで、一つの確からしいラベルの候補を合計値が1となるように予測します。

画像識別モデル(マルチラベル)では、1枚の画像に写っている複数の物体を予測します。活性化関数は「sigmoid」を用いることで「softmax」のように合計値が1にならないため、複数の物体が写っている場合でも、それぞれに対しての確からしさを予測します。(例 犬0.8、猫0.8、鳥0.5)

今回は画像識別モデル(単一ラベル)を使用します。

画像識別モデルのデータセット作成

Google Cloudの管理コンソールにログインし、Vertex AIへ遷移します。

データセットを押下します。

dataset_Vertex AI

 

データセット画面にて、「+作成」を押下します。

dataset_create_Vertex AI

 

データセット名に任意の名前を設定します。(サンプルでは、try_vertex_ai_visionを設定)

「データタイプと目標の選択」より、「画像」>「画像分類(単一ラベル)」を選択し、「作成」を押下します。

select_model_type_Vertex AI

 

画像分類モデルに学習させるための画像をアップロードします。

対応する画像は執筆時現在で、以下の通りです。

・画像形式: JPEG、PNG、GIF、BMP、ICO

・最大画像サイズ: 30 MB

モデルを学習するのに最低限必要な画像数は1ラベルあたり、10枚です。

より精度を高めるには、1ラベルに対して、100枚〜1000+枚程度の画像をご準備ください。

Tips!

学習用に使用する画像は、カタログのようにきれいに撮影された対象物の画像ではなく、実際に現場で使われる背景や角度に応じた画像の学習をおすすめします。

 

画像をアップロードする方法は、ブラウザから直接アップロードする方法の他、インポート定義ファイルを用いて、Cloud Storage上の画像ファイルのURI、ラベル、学習用・検証用・テスト用を指定して、ブラウザもしくはAPI経由でアップロードする方法があります。

こちらでは、ブラウザから画像を直接アップロードする方法をご紹介いたします。

「パソコンから画像をアップロード」を選択し、「ファイルを選択」からデータセットに登録する画像を選択します。

4-1_Vertex AI

教師あり学習のためのラベリング

画像のアップロードが完了したら、次は教師あり学習を行うためのラベリングを行います。

アップロードした画像に対して、予測したいラベルを付与します。

「新規ラベルを追加」から、任意のラベル名を作成します。

5_Vertex AI

次に作成したラベルを画像に付与します。

6_Vertex AI

Tips!

予測対象の物体に対して、様々な角度の画像から予測を行う場合は、それに応じて様々な角度から撮影した画像の学習が必要です。

7_Vertex AI_画像学習

 

一連の作業で複数の物体に対して、画像のアップロードとラベリングを行います。

サンプルでは約2000枚の画像と50の物体(ラベル)を登録しました。

モデルトレーニング

ラベリングが完了したら、「分析」を押下します。

モデル学習に必要なデータが揃っているかのアドバイスが表示されます。モデル学習に十分なデータセットが準備できている場合は、画面右側に「新しいモデルのトレーニング」が表示されますので、こちらを押下します。

8_Vertex AI_分析

 

「Model Training Method」にて「Auto ML」、「モデルを使用する場所の選択」にて「Cloud」を選択し、「続行」を押下します。

9_Vertex AI_モデル

 

次の「モデルの詳細」にて[新しいモデルのトレーニング」を選択し、「詳細を表示」を押下します。

「データ分割」にて「Randomly assigned」、「暗号化」にて「Googleが管理する暗号鍵」を選択して「続行」を押下します。

10_Vertex AI_モデル

 

次の「トレーニングオプション」では、「Default」を選択して「続行」を押下します。

次の「説明可能性」では、そのまま「続行」を押下します。

次の「コンピューティングと料金」では、「予算」に「8」、「早期停止を有効にする」を「ON」にし、「トレーニングを開始」を押下します。

モデルのトレーニングには、データセットの量やノード数にもよりますが、数時間程度かかります。

トレーニングが完了すると、メールにて通知されます。

Tips!

今回はDefaultのデータ分割を使用しますが、Manualにて特定の画像を学習データとテストデータに設定することや、任意の割合に設定することができます。1ラベルに対して、最低10枚必要なのは、10枚の画像からトレーニングデータとテストデータ、検証データに分割されるためです。よって学習データは一意の画像だけではなく、類似の画像をたくさん登録することで精度の向上が望めます。※10枚10パターンの画像では、学習されないパターンのデータが存在することになります。

モデル評価

トレーニングが正常に終了するとメールが届きます。メールに記載のリンクもしくはVertex AIの「Model Registly」からモデルを確認し、バージョン番号の「1」を押下します。

11_Vertex AI_モデル評価

 

「評価」にて、トレーニングの結果を確認してみます。

こちらのサンプルでは、50のラベルに約2,000枚の画像で学習を行いましたが、適合率100%と再現率100%と高品質のモデルができました。

しかしながら、学習データにOverfittingしている可能性もあり、実際の現場での使用には注意が必要です。今回は学習データとテストデータをランダムで選定しましたが、類似重複したデータが混在しないようにリーケージの防止や、より多くの学習データセットを準備するなどして、現場での使用において最大限の結果となるよう、様々なチューニングを行います。Auto MLを使う場合は、この辺りのノウハウが、エンジニアにとって唯一の腕の見せどころです。

12_Vertex AI_ラベル
13_Vertex AI_ラベル_1

デプロイと予測の実行

さて、トレーニングしたモデルを早速デプロイしてみましょう!

「デプロイとテスト」より、「エンドポイントにデプロイ」を押下し、画面右側の「新しいエンドポイントを作成する」を選択し、任意のエンドポイント名を付与して「続行」を押下します。

14_Vertex AI_デプロイ

「モデル設定」にて、「トラフィック分散」に「100」、「コンピューティングノード数」に「1」を入力し、「完了」>「デプロイ」を押下します。

15_Vertex AI_デプロイ_2

 

モデルのデプロイが完了したら、「画像のアップロード」より、これまで学習に使用していない画像をアップロードしてみましょう。

※学習データでは、30MBまでの画像サイズが利用できますが、予測では、1.5MBまでとなります。必要に応じて、画像のリサイズを行います。また予測に使用可能な画像形式は、JPEG、GIF、PNG、WEBP、BMP、TIFF、ICOとなり、学習データでは使用できなかったWEBP、TIFFが追加されます。

16_Vertex AI

 

予測結果が以下のように得られます。

17_Vertex AI_画像分析結果

 

作成したモデルで「お父さん犬」を正しく識別することができました。

予測のレスポンスには、ラベルの信頼度がスコアで返却されます。(サンプルでは1)このスコアを用いて、アプリケーション側でスコアの高い順に上位3つの候補を表示したり、一定以上の信頼度が得られない場合は再予測を促すなど、用途に応じて利用することができます。

 

いかがでしたでしょうか?

難しい専門知識がなくても、Google CloudのVertex AI Auto MLを使えば、簡単に機械学習モデルの開発ができます。作成したモデルを利用するには、アプリケーションで包むことや、継続した運用のためのMLOpsの建付け、予測対象の増加や精度向上におけるデータ整形などなど、様々なタスクが必要となります。機械学習モデルの導入をご検討の際は、弊社にご相談いただければと存じます。

次項では、画像識別モデルをスマホアプリで利用できるソリューションをご紹介いたします。

リアルタイム物体識別アプリのご紹介

弊社では、GoogleのAIソリューションを使用して開発した、スマホのカメラに物体をかざすだけで対象物を予測する「リアルタイム物体識別アプリ」を提供しております。当記事でご紹介したAuto MLの他、写真を撮影することなく、リアルタイムで物体を識別するオブジェクトトラッキングなど、複数のモデルを組み合わせることで、直感的な操作で予測ができるソリューションです。

お客様特有の物体が学習可能なうえ、導入もApp Storeからスマホアプリをダウンロードするだけで簡単に利用開始できます。これまでハードルの高かったAI導入ですが、Googleの技術とスマホを利用することで容易かつ安価にご提供することが可能となりました。

https://www.softbank.jp/biz/services/platform/google-cloud/solution/#solution03

まとめ

本記事では、Auto MLを使って機械学習モデルを開発する手法をご紹介いたしました。非常に簡単に扱えるAuto MLですが、その実力についても、Kaggleのコンペティションで2位になった実績があります。

※Kaggleとは、様々なデータの課題に対して、機械学習のエンジニアが最適なモデルを競い合うプラットフォームです。

世界中のMLエキスパートが競い合うイベントにおいて、Auto MLのモデルが高い精度を記録したことは、今後の機械学習モデルの開発に一石を投じることになりました。開発担当者は、これまでコーディングやFeature Engineeringに費やしていた時間を、データ集めや設計に充てることができるようになりました。

https://developers-jp.googleblog.com/2019/06/google-automl-kaggledays-2.html

一方で、より細かなモデルを開発するには、Art of MLと呼ばれるエキスパートエンジニアの経験と勘からくるノウハウが必要となるケースもあります。そのようなケースにおいてもVertex AIにて、モデル開発が可能です。

弊社では、Google Cloudや機械学習のエンジニアが在籍しており、様々なモデル開発のご支援を行っております。ご興味がございましたら、お気軽にお問い合わせください。

クリーニング

デプロイしたモデルを「エンドポイント」からアンデプロイします。

18_Vertex AI_画像

同様に「Model Registly」から「モデルの削除」、「データセット」から「データセットの削除」でモデルのクリーニング作業は終了です。

データセット保管用に作成した、Cloud Storageのバケットを削除して、全てのクリーニングが完了します。

最後までお読みいただき、ありがとうございます。

関連サービス

Google Cloud

Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。

MSPサービス

MSP(Managed Service Provider)サービスは、お客さまのパブリッククラウドの導入から運用までをトータルでご提供するマネージドサービスです。

おすすめの記事

条件に該当するページがございません