お知らせ このコンテンツは アーカイブ しました。
改訂版のコンテンツは こちら にあります。今後は改訂版のコンテンツをご利用ください。
タイトル: 見る、聞く、話す、または理解することができるアプリケーションを、Microsoft Cognitive Services で作成する
概要: このワークショップでは、まず、Microsoft Azure Cognitive Services を紹介します。Cognitive Servicesは、スクラッチでコーディングすることなく、インテリジェンスと機械学習をアプリケーションに組み込むために使用できるサービス群です。例えば、Computer Vision や Text Analytics は、事前に学習済みの AI の API で、REST プロトコルによってアクセスできます。
次に、Cognitive Services をオフラインおよびエッジデバイスで実行できるようにするために、Cognitive Services をコンテナーでホストする方法を説明します。
次に、転移学習を使用しているカスタム AI - Custom Vision を見ていきます。Custom Vision は、画像分類モデルをトレーニングするために独自のデータを少量用意するだけでよくなります。
ワークショップの締めくくりとして、独自に学習した AI を組み込んだアプリケーションを構築します。ここで利用する Logic Apps は機械学習についての概念実証に理想的です。
git clone https://github.com/seosoft/AINightsBegineerTrack-JP.git
すべてのデモとコンテンツは Windows PC 上でテストしていますが、すべてのオプションは macOS と Linux マシンでも実行できるはずです。他のオペレーティングシステムについてフィードバックがある場合は、issue または pull request で情報を提供してください。
訳注
Azure サブスクリプションで、Event Grid リソースプロバイダーが登録されていない場合、以下のタスク 4で実行に失敗します。登録状態が不明な場合は、ここで確認してください。
[サブスクリプション] - [リソースプロバイダー] の "Microsoft.EventGrid" が "Registered" になっていれば登録済みです。
このタスクでは、Webサイトのデモオプションを使用して Cognitive Services を試します。
サイトを開きます: https://azure.microsoft.com/ja-jp/services/cognitive-services/directory/vision/
各セクションで、多くの異なるデモを試せます(Vision、OCR、Face、Emotion Detection、Video Indexer でのシーンとアクティビティの認識など)。
Computer Vision の 画像内のシーンおよびアクティビティ認識 の横にある デモ リンクを選択します。他のサービスを探索するためのデモリンクもあります。
次に、参照 ボタンを選択して、sample-images/computer-vision-web-browser/
から cat.jpeg または city.jpeg の画像をアップロードしてみましょう。画像の分析結果を見ることができます。
次は、Cognitive Services をアプリケーションに統合するために使われる REST プロトコルを利用します。
まず、Microsoft Azure に接続して、右上にある ポータル を選択します。
ポータルで リソースの作成 を選択します。Cognitive Services を検索して選択します。そのあと、ブレードで 作成 を選択します。
以下を参考に詳細を入力してアカウントを作成します:
ainightscognitive
)ainights
)作成されたら、通知領域(画面の右上)の リソースに移動 を選択します。
Cognitive Services ページで Keys を選択して、KEY 1 をコピーし、メモ帳などに貼っておきます。
左上の Overview を選択して、Endpoint の値をコピーし、メモ帳などに貼っておきます。
Postman をローカルマシンにダウンロードして開きます。
ダウンロード方法は、前述の マシンの前提条件 を参照
Request を選択します。
以下のようにリクエストの詳細を入力し、新しいコレクションを作成 するオプションを選択して "Text Analytics Samples" という名前を付けます。
新しく作成したコレクションを選択して "保存" を選択します。
以下の手順で Text Analytics API を呼び出すリクエストを作成します:
text/analytics/v2.0/sentiment
Ocp-Apim-Subscription-Key
を入力、Value に KEY1 の値を入力Content-Type
を入力、Value に application/json
と入力raw
を選択sample-code/cognitive-services-api-task/sentiment-analysis-text.json
の JSON のサンプルをテキストボックスに貼り付けますKeyPhrases 関数など、REST API から他のオプションを試すこともできます。 URLの末尾を "sentiment" から "keyPhrases" に変更し、"Send" を選択してサンプルテキストのキーフレーズを表示します。
こちらで Text Analytics API の言語サポートをチェックしてください。あなたの言語がサポートされている場合は、テキストを翻訳して上記の API の機能を表示するために JSON ファイルを編集してください。フランス語のJSONファイルの例が
sample-code/text-analytics-demo/sentiment-analysis-text-fr.json
にあります。このファイルを適切に編集してください。Postman の実行に問題がある場合は、センチメント分析 および キーフレーズ抽出 の API ドキュメントで REST API を実行できます。サイトで内で使用するデータセンターを選択し、Postman で使用した JSON のサンプルと Key を入力して実行してみましょう。
Microsoft Azure Custom Vision サービスを使用すると、ごくわずかなコードで独自の画像分類およびオブジェクト検出のアルゴリズムを構築できます。このタスクでは、スタンフォード大学が作成した ImageNet open dataset の中から、犬の画像を使って犬種分類アルゴリズムを作成します。
前述「マシンの前提条件」でダウンロードしたコンテンツの中で sample-images/dogs.zip
フォルダー内に、7つの犬種それぞれ30枚づつの画像があります。
また、sample-images/dogs.zip
には、トレーニング用の画像の他にテスト用の画像(dog.zip内の testset
)もあります。
まず Azure アカウントで Custom Vision インスタンスを作成します。
分類器を作成が完了したら、https://www.customvision.ai に移動して、Azure 認証情報アカウントでサインインしてください。
利用規約の表示が出た場合は、利用規約に同意の上、同意のチェックをオンにして進めてください。
画面が表示されたら、'NEW PROJECT' をクリックして詳細入力ウィンドウを開き、以下を参考に入力します。
'Create Project' を選択すると、以下のように空のワークスペースが表示されます。
ここで、画像の追加とタグの割り当てを開始して画像分類器を作成します。
画面左上の 'Add images' を選択して、サンプル画像のsample-images/dogs.zipフォルダー内 の最初のフォルダー - Beagle を開き、フォルダー内の 30枚の画像を選択します
My Tags に 'beagle' と入力して、'Upload 30 files' で画像をアップロードします
成功すると確認メッセージが表示され、画像がワークスペースで利用可能になります。
同じ手順で、フォルダー内の他の 6つの犬種の画像をそれぞれタグ付けしてアップロードします:
すべてのカテゴリがアップロードされ、左側に犬種が表示され、犬の画像の種類に応じてフィルタリングできるようになります。
これで、アップロードした犬の画像データについてアルゴリズムを訓練する準備が整いました。右上隅にある緑色の 'Train' ボタンをクリックしてください。
トレーニングプロセスが完了したら、[Performance] タブに移動します。ここで、訓練したモデルの機械学習の評価指標を見ることができます。
これでテストに必要なモデルが完成しました。右上にある('Train' ボタンの横にあります) 'Quick Test' ボタンを選択してください。ウィンドウが開き、ローカル画像をブラウズしたり URLを入力することができます。
テストフォルダー内(dog.zip内の testset
)の画像(トレーニングされていない画像)を参照してアップロードします。画像が分析され、モデルがそれが何であると考えているのか(Predictions 内の Tag列)およびモデルの結果に対する信頼性(Predictions 内の Probablity列)の結果が返されます。
モデルの性能を確認するには、テストフォルダー内の他の画像でこの手順を繰り返します。
上部のツールバーの [Predictions] タブをクリックすると、テストした画像が表示されます。このセクションは再トレーニングに使用できます。新しいデータを取得したら、これをモデルに追加してパフォーマンスを向上させることができます。画像は重要な順に並べられます - 正しく分類されていれば、モデルに追加された最も新しい情報が画像が先頭に表示されます。最後の画像はモデルによってすでに学習されている他の画像と非常に似ているかもしれませんが、これは正しい分類の重要性が低いものです。
これらの画像をモデルに追加するには、画像を選択してモデルの結果を確認してから、[My Tags] ボックスに正しいタグを入力して [Save and close] をクリックします。
この画像は、[Predictions] ワークスペースから消え、[Training Images] ワークスペースに追加されます。新しい画像やタグをいくつか追加したら、モデルを再訓練して改善するかどうかを確認できます。
自身のアプリケーションでこのモデルを使用するには、このAPIにアクセスするための情報が必要です。トップバーの [Performance] タブに移動します。
[Performance] タブで [Publish] をクリックすると犬種分類アプリケーションをクラウドに発行されます。続いて 'Prediction URL' を選択すると、Postman からの API 呼び出しを作成するのに必要な情報が表示されます。
訳注
- If you have an image file: は、ローカルの画像をアップロードするときに利用します。Postman から画像を送信する際、Bodyで binary を選択し、画像を直接添付します。
- If you have an image URL: は、URLでアクセスできる画像を参照する際に利用します。画像をインターネットでアクセスできる場所におき、BodyにJSONフォーマットでURLを指定します。
おめでとうございます! Azure Custom Vision サービスを使用して、自分だけの特別な犬の分類モデルを作成することができました。
このタスクでは、Custom Vision で犬種分類アプリケーションを使用するための Azure Logic App を構築します。
最初に、2つの Azure ストレージアカウントを作成します。
Azure ポータルに移動し、左上にある [リソースの作成] をクリックします。Storage セクションを選択し、最初のオプションの 'Storage Account' を選択します。
2つのストレージアカウントを作成します:
以下の手順を 2回実行して、合計 2個 のストレージアカウントを作成します
ストレージアカウント作成ページで、設定するためのオプションを入力します:
機能および作成 を選択し、検証されたことを確認してから 作成 を選択します。
展開が完了したら、リソースにアクセスしてアカウント設定を確認します。空のBLOBストレージアカウントを確認するには、[BLOB] を選択します。
画像と結果を保存するためにストレージアカウントにコンテナーを追加する必要があります。
コンテナー ボタンを選択して、コンテナーの名前を作成します
ainightsstor アカウントには 'images' コンテナーを作成します
resultsainights アカウントには 'results' コンテナーを作成します
パブリックアクセスレベルでは、'コンテナー(コンテナーと BLOB の匿名読み取りアクセス)' を選択します
上の設定で、イメージ保存アカウントと結果保存アカウントについて上記の手順を実行します。
いよいよロジックアプリを作成します - 画像保存アカウントをあなたの AI 分類サービスに接続し、結果保存アカウントに結果を入れます。
Azure ポータルのホームページで、[リソースの作成] を選択します。Logic App と入力してサービスを選択します。
以下のように設定の詳細を入力してロジックアプリを作成します:
作成 をクリックします。
作成したら、リソースに移動します。ここから、ロジックプロセスを作成します。左側のメニューから [ロジックアプリデザイナー] を選択し、次に [Event Grid のリソースイベントが発生するとき] を選択します。
Azure 認証情報を使用してサインインし、Azure Event Grid に接続します。
接続して緑色のチェックマークが表示されたら、[続行]を選択します。
以下のオプションを選択してください:
[新しいステップ] を選択します。 json と入力して、候補の中から JSON の解析 を選択します
[新しいステップ] を選択します。'http' と入力して、HTTP を選択します。
訳注
Custom Vision 専用のコネクターが存在しますが、2019/4時点では Custom Vision の API のバージョンアップに伴い一時的に利用ができなくなっているため、今回は HTTPのコネクターを利用しています。今後、利用ができるようになると思われますので、利用時は随時チェックしてみましょう。
Postman で確認したときと同様に 方法(POST)、URI、ヘッダーを入力します。本文 には、前のステップで作成した JSON の解析 結果から url を選択して埋め込みます。([本文] ボックスにカーソルを合わせると右側に表示される [動的なコンテンツの追加] で 'URL' を検索して選択します。)
[新しいステップ]をクリックします。再び JSON の解析 を選択します。
[新しいステップ]をクリックします。for each と入力して、'For each' という灰色のコントロールを選択します。
条件ボックスでは
true の場合 内の アクションの追加 を選択します。
'Azure Blob Storage' で検索して、Azure Blob Storage アイコンを選択し、BLOB の作成 を選択します。
接続名に results と入力し、'ストレージアカウント' には、先ほど結果を置く用に作成したストレージアカウントを選択します。
'フォルダーのパス': 右端にあるフォルダーアイコンを選択し、'results' を選択します。
'BLOB 名' フィールド: 'result-' と入力し、[動的なコンテンツの追加] で JSON の解析2 から id を選択します。最後に .txt と入力します。
'BLOB コンテンツ': [動的なコンテンツの追加] から で JSON の解析2 の 'もっと見る' を選択します。その中で tagName を選択しします。その後ろに ':' と入力します。続いて[動的なコンテンツの追加]で JSON の解析2 の 'もっと見る' の中から probability を選択します。
最後に、Logic Apps の上部のアクションバーで 保存 を選択します。 保存に成功したら、出力をテストしてみましょう。アクションバーで 実行 を選択します。
訳注 実行すると '実行を表示するには、開始操作を実行してください' と表示されます。そのまま次の手順に進んでください。
ここで、作成した画像ストレージアカウント (ainightsstor) に移動します(リソースグループから探すと簡単です)。BLOB を選択して、Blobを選択して 'images' コンテナーを選択します。'アップロード' ボタンがあるので、Dogs データテストセットフォルダーから任意の画像をアップロードします。Blobにファイルが保存されたのをトリガーに Logic Apps が起動します。
Azure ポータルのLogic Apps のリソースを開き、概要を開きます。ページ下部の '実行の履歴' から '成功' した履歴をクリックします。
すべてのセクションに緑色のチェックマークが付いているはずです。各セクションを選択して、レイヤー間の入力と出力を表示できます(これは、正しく実行されなかった場合にデバッグするのにも最適な方法です)。
最後に、'resultsainights' BLOBストレージアカウントに移動して、BLOB を選択し、'results' コンテナーを開き、そこに作成されたファイルを確認します。ファイルの内容は、犬の画像から得られた予測のタグと信頼度スコアです。
最後に、この後これらのリソースが必要ない場合は、リソースグループを削除することで、その中にある複数のリソースを一括で削除できます。 このワークショップのリソースグループを選択し、[リソースグループの削除]を選択してから、削除するリソースグループの名前を確認します。