Microsoft Cognitive Services の Custom Visionを使用して画像の判別エンジンを作成する
Microsoft Cognitive Services の Custom Vision は、オリジナルの画像判定エンジンを作成して推定できるサービスです。 画像判定ロジックを構築しなくても、画像をアップロードし、事前にタグ付けを行うことで、画像判定エンジンを構築することができます。 ここで作成した画像判定エンジンはAPI経由でアクセスすることもできます。
IBM Cloud(旧Bluemix)やGCP(Google Cloud Platform)でもできるようですが、まずは自分はこちらから試してみます。
本エントリーでは以前参加した
では、イベントの運営のお手伝いをしていたのでハンズオンの内容はほとんど手を付けられなかったため、復習も兼ねてみたという感じです。
なお、以下を参考にさせていただきながら復習しています。
Custom Vision ポータルへ
まずはMicrosoft アカウント
が必要になりますので事前に準備が必要になります。
準備が終わったらCustom Vision ポータルにアクセスします。
すると以下のような画面になります。
画面の中央にある、【SIGN IN】ボタンをクリックします。
Microsoftアカウントのログインを促されます、ログインをする以下のようなアクセス許可を求められますので、内容を確認して 【はい】ボタンをクリックします。すると次のような画面に遷移します。
こちらでもサービスに対する同意を求められます。チェックボックスにチェックをいれて下にある【I agree】ボタンをクリックします。
自分の場合にはAzureのアカウントと紐付けがされてないよーって感じの以下の表示になりました。(bizSparkサブスクリプションを使っていたので、ちょっとあれって感じでした)。
ここで【Sign up for Azure】ボタンをクリックすると従量課金のサインアップへ進みます。
支払いは発生しないがカードの登録はしないといけないのかなと思ったのですが、従量課金サブスクリプションと紐づけられるとなんとなく不安になるので、にわかの自分は画面中の【I'll do it later】を選択します。こちらは制限はプロジェクト数の制限があること、アクセス数の制限はありますが、いまは問題ないと思います。
Custom Vision のProjectの作成
では実際にProjectを作成します。画像の判別を行う機能はProjectという単位で作成するようです。
先ほどまでの作業が終わると以下のような画面になっていると思います。
【New Project】という大きいボタンをクリックします。するとProjectの設定画面が表示されます。
設定に必須となるのはNameだけです、あとはオプションになる感じです。参考にしたエントリーでは食べ物の判定を行っていたので適当にFoodFinderとしました。 Domainも食べ物関係ということでFoodに設定しています。(特に指定がない場合にはGeneralになるのかな?) 設定が終わったら、画面下にある【Create project】ボタンをクリックします。すると、以下のような画面に遷移します。
これでプロジェクトの作成は終わりました。あとはこのプロジェクトに画像をアップロードとタグ付けをしていきます。
学習データ画像のアップロードとタグ付け
画面内中央にある【Add images】ボタンをクリックしてローカルにある画像をアップロードしていきます。
クリックすると画面の右側にペインが表示されます。その中の【Browse local files】ボタンをクリックします。するとファイル選択のダイアログが開きます。(今回は参考にしたエントリーに事前に準備された画像を使用しています)
ファイルを選択して【開く】ボタンをクリックします。(1枚づつでも、まとめてでも指定することはできます)ある程度カテゴリ化された画像であればまとめて行ったほうがいいかなと思います。
次は指定した画像にタグ付けをする作業になります。(指定した画像にまとめてタグ付けをしていきます)今回はカレーの画像を設定したのでタグには【curry】を設定していきます。タグを入力したら【+】ボタンをクリックするとタグが追加されます。複数のタグの設定ができようです。
入力ボックスの下部に入力したタグが表示されていればOKです。タグ付けが完了したら画面したにある【Upload 7 files】(数字は指定したファイル数になります)をクリックします。
作業用のペインに戻りますので【Done】ボタンをクリックします。 すると、画面が以下のように変わります。これで無事にトレーニング用のデータに追加が行われました。
あとは、これを繰り返していくだけです。
最終的には以下のような登録状態になります。
あとは画像の判別の学習(トレーニング)のプロセスを行えばおおむね終了です。
学習(トレーニング)をさせる
画面上部の緑色の【Train】ボタンを押せばOKです。
あとは時間が解決してくれます。
トレーニングが終了すると画面がこんな感じに変化します。
- Iterationは「反復」
- Precisionは「精度」
- Recallは「呼び返す」
これで学習完了です。あとはその結果を楽しむだけです。
学習の結果を調べてみる
学習後には画面上部にある【Train】の隣に【Quick Test】のボタンがアクティブになります。
これをクリックすると画面が以下のように遷移します。
学習した判別エンジンに対して画像を与えて、どのグループに所属するかの推定結果を返してくれます。 URL経由で画像を渡すことができますし、ローカルファイルをアップロードして判別することもできます。 今回はサンプルについていた「お寿司」の画像をアップロードしてみます。【Browse local files】のボタンをクリックして ファイル選択ダイアログからファイルを選択してアップロードを行えば下記のような結果が画面に表示されます。
これで画像の判別エンジンを作ることができました。事前の作業のほうがめんどくさいぐらい簡単にできてしまいます。
今後は画像をうまく集めることが今後の課題になりそうですね。
APIでアクセスするには?
ここでできた画像判別エンジンをREST API経由でも操作したいと思いますよね? その時の情報は画面内にある【PERFORMANCE】タブの中にある【Prediction URL】をクリックするとアクセスに必要な情報が得られます。
クリックすると
エンドポイントのURLやアクセスに必要なPredicton-Keyの情報を得ることができます。
おわりに
これでMicrosoft Cognitive Services の Custom Visionが一応つかえるようになりました。次はIBM Cloudでも使えるようになりたいです。 その前にこれを使って性能を計ってみたいですね。