NEXTSCAPE blog

株式会社ネクストスケープの社員による会社公式ブログです。ネスケラボでは、社員が日頃どのようなことに興味をもっているのか、仕事を通してどのような面白いことに取り組んでいるのかなど、会社や技術に関する情報をマイペースに紹介しています。

MENU

Azure Cognitive Service の Custom Vision Service で高山植物を識別する

こんにちは。
コンサルティング & テクノロジー部の吾郷です。

//Build 2017 でリリースされました、Microsoft Azure の 機械学習系サービス の Cognitive Service に新しく増えた機能の
Custom Vision Service について紹介します。
今回は、Custom Vision Service の操作方法を中心とし、最後に余談として Bot などのプログラムから使う場合のAPIを簡単に紹介します。

 

 

Custom Vision Service とは

 

Custom Vision Service とは、画像にタグ付けを行い独自のモデルを作成し、そのモデルと画像の特徴量を比較して、
どのモデルにより近いかを判断することができるWeb APIを作成するサービスです。

Custom Vision Service は、「https://www.customvision.ai/」から利用することができます。

f:id:nextscape_blog:20210910195551j:plain

 

 

使い方

 

//Build 2017 でデモを見たときに、「登山に行ったときにいつもわからない花を教えてくれるBotがいたらいいな」って思いましたので、今回は北海道の高山植物をサンプルに、Custom Vision Service を試してみました。

 

プロジェクトの作成



 最初にやることは、プロジェクトの作成です。
「New Project」をクリックして、プロジェクトの名前をつけて、「Create Project」をします。 

f:id:nextscape_blog:20210910195617j:plain




識別する画像の登録


次にやることは、識別する画像の登録です。
登録にあたり1つルールがあり、タグは2個以上、それぞれのタグには画像が5枚以上が必要です。
この条件を満たさないと、この後にやる Train で、エラーとなります。

操作方法は、Add Images をクリックし、タグ付けする画像を選択して、タグを登録するだけです。
今回登録した花は、「エゾエンゴサク」という花ですので、そのままのタグをつけました。

f:id:nextscape_blog:20210910195652j:plain

 

同様の方法で、「チングルマ」という花も登録しました。

f:id:nextscape_blog:20210910195708j:plain

 

Train


「Train」ボタンをクリックして、登録した画像を学習させます。
学習が終わるとその結果が表示されます。

f:id:nextscape_blog:20210910195732j:plain

 

試してみる


登録していない画像を使って、学習の精度を確認することができます。
テストは、画面右上にある「Quick Test」からできます。

チングルマを正しく識別することができました。

f:id:nextscape_blog:20210910195754j:plain

 

エゾエンゴサクも正しく識別できました。

f:id:nextscape_blog:20210910195813j:plain

 

ここで、まだ学習していない、「エゾノツガザクラ」の画像を与えると、なぜか「チングルマ」と識別しています。
まだ、学習していないのでしょうがないのですが。。

f:id:nextscape_blog:20210910195834j:plain

 

誤った結果となった画像をタグ付けする


「エゾノツガザクラ」の画像を利用して、追加の教育を行います。
「PREDICTIONS」にクリックテストを実行した画像がありますので、「エゾノツガザクラ」の画像を選び、タグ付けをします。

f:id:nextscape_blog:20210910195900j:plain

 

この状態で、再度「Train」をしてもエラーとなります。
理由は、1つのタグの最低枚数は5枚ですが、「エゾノツガザクラ」はまだ1枚しか登録してないからです。

f:id:nextscape_blog:20210910195915j:plain

 

再学習


「エゾノツガザクラ」の画像をさらに4枚登録して「Train」を実行しなおします。

f:id:nextscape_blog:20210910195937j:plain

 

学習後、別の「エゾノツガザクラ」の画像でクイックテストを実行すると、正しく識別されました。

f:id:nextscape_blog:20210910195952j:plain

 

簡単にまとめてしまうと、最初に識別用の画像を登録してタグ付けを行い機械学習を実行しますが、学習していないモデルが増えたり、精度がいまいちの場合は、テストで使った画像を元に追加登録を行い、再度機械学習を回すというような流れで利用していくフローとなります。

 

(応用)プログラムから、Custom Vision Service を利用する


上記の通り、GUI で人間操作で Custom Vision Service で機械学習をおこなってもいいのですが、プログラムから操作することで Bot 化することも可能です。

API リファレンスなどのドキュメントは、画面右上の「?」→「Documentation」でたどることができます。

f:id:nextscape_blog:20210910200013j:plain

 

 

API をたたくのに必用なキーは、画面右上の歯車のアイコンのところから入手することができます。

f:id:nextscape_blog:20210910200029j:plain

 

それと、もう一つ、Project ID も使います。
これは、「PERFORMANCE」→「Prediction URL」で表示する「How to use the Prediction API」のURLから取得できます。
※ API を実行して入手することもできます。

以下の赤字の箇所が、Project ID です。
https://southcentralus.api.cognitive.microsoft.com/customvision/v1.0/Prediction/7c0feea9-f34f-40cd-a99f-4f282c945011/url?iterationId=b3fad3b3-7310-4b2d-9ea9-bd6bbebb02d8

 

f:id:nextscape_blog:20210910200049j:plain

 

GUI で操作と API をマップすると以下のような形になります。
APIの詳細は、ドキュメントをご覧ください。

 No  GUIでの操作  API
 1  タグの作成  CreateTag
 2  画像(ローカル)のタグ付け  CreateImagesFromData
 3  画像(URL)のタグ付け  CreateImagesFromUrls
 4  Trainの実行  TrainProject
 5  画像(ローカル)でクイックテスト実行  PredictImage
 6  画像(URL)でクイックテストの実行  PredictImageUrl


さいごに

 
Custom Vision Service を使うと簡単に画像の識別ができます。
是非、みなさんも試してみてください。