注意

Mixed Reality Academy チュートリアルは、HoloLens (第1世代) と Mixed Reality イマーシブヘッドセットを念頭に置いて設計されています。The Mixed Reality Academy tutorials were designed with HoloLens (1st gen) and Mixed Reality Immersive Headsets in mind. そのため、これらのデバイスの開発に関するガイダンスをまだ探している開発者には、これらのチュートリアルを残しておくことが重要です。As such, we feel it is important to leave these tutorials in place for developers who are still looking for guidance in developing for those devices. これらのチュートリアルは いない 最新のツールセットや相互作用が使用されている HoloLens 2 で更新されます。These tutorials will not be updated with the latest toolsets or interactions being used for HoloLens 2. サポートされているデバイスでの作業を続行するために管理されます。They will be maintained to continue working on the supported devices. 今後、HoloLens 2 向けの開発方法を示す新しい一連のチュートリアルが掲載されています。There will be a new series of tutorials that will be posted in the future that will demonstrate how to develop for HoloLens 2. この通知は、これらのチュートリアルが投稿されたときのリンクと共に更新されます。This notice will be updated with a link to those tutorials when they are posted.


MR と Azure 307:機械学習MR and Azure 307: Machine learning

最終製品-開始

このコースでは、Azure Machine Learning Studio を使用して Machine Learning (ML) 機能を mixed reality アプリケーションに追加する方法について説明します。In this course, you will learn how to add Machine Learning (ML) capabilities to a mixed reality application using Azure Machine Learning Studio.

Azure Machine Learning Studioは Microsoft のサービスであり、開発者は多数の機械学習アルゴリズムを使用できます。これは、データの入力、出力、準備、および視覚化に役立ちます。Azure Machine Learning Studio is a Microsoft service, which provides developers with a large number of machine learning algorithms, which can help with data input, output, preparation, and visualization. これらのコンポーネントから、予測分析実験を開発し、それを反復処理して、モデルのトレーニングに使用することができます。From these components, it is then possible to develop a predictive analytics experiment, iterate on it, and use it to train your model. 次のトレーニングでは、Azure クラウド内でモデルを操作できるようになり、新しいデータをスコア付けできるようになります。Following training, you can make your model operational within the Azure cloud, so that it can then score new data. 詳細については、 Azure Machine Learning Studio のページを参照してください。For more information, visit the Azure Machine Learning Studio page.

このコースを完了すると、現実のイマーシブヘッドセットアプリケーションが完成し、次の操作方法を学習できるようになります。Having completed this course, you will have a mixed reality immersive headset application, and will have learned how do the following:

  1. Azure Machine Learning Studioポータルに売上データのテーブルを提供し、人気のあるアイテムの将来の売上を予測するためのアルゴリズムを設計します。Provide a table of sales data to the Azure Machine Learning Studio portal, and design an algorithm to predict future sales of popular items.
  2. ML サービスから予測データを受信して解釈できるUnity プロジェクトを作成します。Create a Unity Project, which can receive and interpret prediction data from the ML service.
  3. Predication データをUnity プロジェクト内に視覚的に表示し、最も人気のある販売品目を棚に提供します。Display the predication data visually within the Unity Project, through providing the most popular sales items, on a shelf.

アプリケーションでは、結果をデザインと統合する方法については、お客様のニーズに合わせてください。In your application, it is up to you as to how you will integrate the results with your design. このコースは、Azure サービスを Unity プロジェクトと統合する方法を説明することを目的としています。This course is designed to teach you how to integrate an Azure Service with your Unity Project. このコースで得られた知識を使用して、mixed reality アプリケーションを強化することができます。It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

このコースは自己完結型のチュートリアルであり、他の Mixed Reality ラボに直接は関与しません。This course is a self-contained tutorial, which does not directly involve any other Mixed Reality Labs.

デバイスのサポートDevice support

までCourse HoloLensHoloLens イマーシブ ヘッドセットImmersive headsets
MR と Azure 307:機械学習MR and Azure 307: Machine learning ✔️✔️ ✔️✔️

注意

このコースでは主に Windows Mixed Reality イマーシブ (VR) ヘッドセットに焦点を当てていますが、このコースで学習した内容を Microsoft HoloLens に適用することもできます。While this course primarily focuses on Windows Mixed Reality immersive (VR) headsets, you can also apply what you learn in this course to Microsoft HoloLens. このコースに従うと、HoloLens をサポートするために必要となる可能性のある変更に関する注意事項が表示されます。As you follow along with the course, you will see notes on any changes you might need to employ to support HoloLens. HoloLens を使用する場合、音声キャプチャ中にエコーが発生することがあります。When using HoloLens, you may notice some echo during voice capture.

必須コンポーネントPrerequisites

注意

このチュートリアルは、Unity とC#の基本的な経験を持つ開発者向けに設計されています。This tutorial is designed for developers who have basic experience with Unity and C#. また、このドキュメントに記載されている前提条件と記述に記載されている手順は、作成時にテストおよび検証されたものを表します (2018 年5月)。Please also be aware that the prerequisites and written instructions within this document represent what has been tested and verified at the time of writing (May 2018). 「ツールのインストール」の記事に記載されているように、最新のソフトウェアを自由に使用できます。ただし、このコースの情報は、以下に記載されているものよりも新しいソフトウェアで見つかったものと完全に一致するとは限りません。You are free to use the latest software, as listed within the install the tools article, though it should not be assumed that the information in this course will perfectly match what you'll find in newer software than what's listed below.

このコースでは、次のハードウェアとソフトウェアをお勧めします。We recommend the following hardware and software for this course:

開始前の準備Before you start

このプロジェクトのビルドで問題が発生しないように、このチュートリアルで説明されているプロジェクトをルートまたはほぼルートフォルダーに作成することを強くお勧めします (長いフォルダーパスはビルド時に問題を引き起こす可能性があります)。To avoid encountering issues building this project, it is strongly suggested that you create the project mentioned in this tutorial in a root or near-root folder (long folder paths can cause issues at build-time).

章 1-Azure Storage アカウントのセットアップChapter 1 - Azure Storage Account setup

Azure Translator API を使用するには、アプリケーションで使用できるようにサービスのインスタンスを構成する必要があります。To use the Azure Translator API, you will need to configure an instance of the service to be made available to your application.

  1. Azure Portalにログインします。Log in to the Azure Portal.

    注意

    まだ Azure アカウントを持っていない場合は、アカウントを作成する必要があります。If you do not already have an Azure account, you will need to create one. このチュートリアルを教室またはラボの状況で行っている場合は、新しいアカウントの設定について、インストラクターまたはそのいずれかの対処を依頼してください。If you are following this tutorial in a classroom or lab situation, ask your instructor or one of the proctors for help setting up your new account.

  2. ログインしたら、左側のメニューの [ストレージアカウント] をクリックします。Once you are logged in, click on Storage Accounts in the left menu.

    Azure Storage アカウントのセットアップ

    注意

    新しいポータルで、 Newという単語がリソースの作成に置き換えられました。The word New may have been replaced with Create a resource, in newer portals.

  3. [ストレージアカウント] タブで、[追加] をクリックします。On the Storage Accounts tab, click on Add.

    Azure Storage アカウントのセットアップ

  4. [ストレージアカウントの作成] パネルで、次のようにします。In the Create Storage Account panel:

    1. アカウントの名前を挿入します。このフィールドには数字と小文字のみを使用できることに注意してください。Insert a Name for your account, be aware this field only accepts numbers, and lowercase letters.

    2. [デプロイモデル] で、 [リソースマネージャー] を選択します。For Deployment model, select Resource manager.

    3. [アカウントの種類] で、[ストレージ (汎用 v1) ] を選択します。For Account kind, select Storage (general purpose v1).

    4. [パフォーマンス] で [標準] を選択します。For Performance, select Standard.

    5. レプリケーションの場合は、[読み取りアクセス-geo 冗長ストレージ (RA-GRS) ] を選択します。For Replication select Read-access-geo-redundant storage (RA-GRS).

    6. 安全な転送は無効のまましておく必要があります。Leave Secure transfer required as Disabled.

    7. サブスクリプションを選択します。Select a Subscription.

    8. リソースグループを選択するか、新しいリソースグループを作成します。Choose a Resource Group or create a new one. リソースグループは、Azure 資産のコレクションの課金を監視、制御する方法を提供します。A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 1つのプロジェクトに関連付けられているすべての Azure サービス (たとえば、これらのラボなど) を共通のリソースグループに保持することをお勧めします。It is recommended to keep all the Azure services associated with a single project (e.g. such as these labs) under a common resource group).

      Azure リソースグループの詳細については、リソースグループに関する記事をご覧ください。If you wish to read more about Azure Resource Groups, please visit the resource group article.

    9. リソースグループの場所を決定します (新しいリソースグループを作成している場合)。Determine the Location for your resource group (if you are creating a new Resource Group). この場所は、アプリケーションを実行するリージョンに配置するのが理想的です。The location would ideally be in the region where the application would run. 一部の Azure 資産は、特定のリージョンでのみ利用できます。Some Azure assets are only available in certain regions.

  5. また、このサービスに適用されている使用条件を理解していることを確認する必要があります。You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    Azure Storage アカウントのセットアップ

  6. [作成] をクリックした後、サービスが作成されるまで待機する必要があります。これには1分かかることがあります。Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  7. サービスインスタンスが作成されると、ポータルに通知が表示されます。A notification will appear in the portal once the Service instance is created.

    Azure Storage アカウントのセットアップ

Chapter 2-Azure Machine Learning StudioChapter 2 - The Azure Machine Learning Studio

Azure Machine Learningを使用するには、アプリケーションで使用できるように Machine Learning サービスのインスタンスを構成する必要があります。To use the Azure Machine Learning, you will need to configure an instance of the Machine Learning service to be made available to your application.

  1. Azure Portal で、左上隅にある [新規] をクリックし、 Machine Learning Studio ワークスペースを検索して、enter キーを押しますIn the Azure Portal, click on New in the top left corner, and search for Machine Learning Studio Workspace, press Enter.

    Azure Machine Learning Studio

  2. 新しいページには、 Machine Learning Studio ワークスペースサービスの説明が表示されます。The new page will provide a description of the Machine Learning Studio Workspace service. このプロンプトの左下にある [作成] ボタンをクリックして、このサービスとの関連付けを作成します。At the bottom left of this prompt, click the Create button, to create an association with this service.

  3. [作成] をクリックすると、新しいMachine Learning Studio サービスに関する詳細を指定する必要があるパネルが表示されます。Once you have clicked on Create, a panel will appear where you need to provide some details about your new Machine Learning Studio service:

    1. このサービスインスタンスに必要なワークスペース名を挿入します。Insert your desired Workspace name for this service instance.

    2. サブスクリプションを選択します。Select a Subscription.

    3. リソースグループを選択するか、新しいリソースグループを作成します。Choose a Resource Group or create a new one. リソースグループは、Azure 資産のコレクションの課金を監視、制御する方法を提供します。A resource group provides a way to monitor, control access, provision and manage billing for a collection of Azure assets. 1つのプロジェクトに関連付けられているすべての Azure サービス (たとえば、これらのラボなど) を共通のリソースグループに保持することをお勧めします。It is recommended to keep all the Azure services associated with a single project (e.g. such as these labs) under a common resource group).

      Azure リソースグループの詳細については、リソースグループに関する記事をご覧ください。If you wish to read more about Azure Resource Groups, please visit the resource group article.

    4. リソースグループの場所を決定します (新しいリソースグループを作成している場合)。Determine the Location for your resource group (if you are creating a new Resource Group). この場所は、アプリケーションを実行するリージョンに配置するのが理想的です。The location would ideally be in the region where the application would run. 一部の Azure 資産は、特定のリージョンでのみ利用できます。Some Azure assets are only available in certain regions. 前の章で Azure Storage の作成に使用したものと同じリソースグループを使用する必要があります。You should use the same resource group that you used for creating the Azure Storage in the previous Chapter.

    5. [ストレージアカウント] セクションで、[既存のものを使用] をクリックし、ドロップダウンメニューをクリックします。そこから、最後の章で作成したストレージアカウントをクリックします。For the Storage account section, click Use existing, then click the dropdown menu, and from there, click the Storage Account you created in the last Chapter.

    6. ドロップダウンメニューから適切なワークスペースの価格レベルを選択します。Select the appropriate Workspace pricing tier for you, from the dropdown menu.

    7. [ Web サービスプラン] セクションで、[新規作成]クリックし、テキストフィールドに名前を挿入します。Within the Web service plan section, click Create new, then insert a name for it in the text field.

    8. [ Web サービスプランの価格レベル] セクションで、選択した価格レベルを選択します。From the Web service plan pricing tier section, select the price tier of your choice. DEVTEST Standardという開発テストレベルは、無料でご利用いただけます。A development testing tier called DEVTEST Standard should be available to you at no charge.

    9. また、このサービスに適用されている使用条件を理解していることを確認する必要があります。You will also need to confirm that you have understood the Terms and Conditions applied to this Service.

    10. [作成] をクリックします。Click Create.

      Azure Machine Learning Studio

  4. [作成] をクリックした後、サービスが作成されるまで待機する必要があります。これには1分かかることがあります。Once you have clicked on Create, you will have to wait for the service to be created, this might take a minute.

  5. サービスインスタンスが作成されると、ポータルに通知が表示されます。A notification will appear in the portal once the Service instance is created.

    Azure Machine Learning Studio

  6. 通知をクリックして、新しいサービスインスタンスを探索します。Click on the notification to explore your new Service instance.

    Azure Machine Learning Studio

  7. 通知の [リソースへのジャンプ] ボタンをクリックして、新しいサービスインスタンスを探索します。Click the Go to resource button in the notification to explore your new Service instance.

  8. 表示されたページの [追加リンク] セクションで [ Machine Learning Studio の起動] をクリックすると、ブラウザーがMachine Learning Studioポータルに送信されます。In the page displayed, under the Additional Links section, click Launch Machine Learning Studio, which will direct your browser to the Machine Learning Studio portal.

    Azure Machine Learning Studio

  9. 右上または中央にある [サインイン] ボタンを使用して、Machine Learning Studio にログインします。Use the Sign In button, at the top right or in the center, to log into your Machine Learning Studio.

    Azure Machine Learning Studio

章 3-Machine Learning Studio:データセットのセットアップChapter 3 - The Machine Learning Studio: Dataset setup

Machine Learning アルゴリズムが動作する方法の1つは、既存のデータを分析し、既存のデータセットに基づいて将来の結果を予測することです。One of the ways Machine Learning algorithms work is by analyzing existing data and then attempting to predict future results based on the existing data set. これは一般に、既存のデータが多いほど、将来の結果を予測するアルゴリズムの方が優れていることを意味します。This generally means that the more existing data you have, the better the algorithm will be at predicting future results.

このコースでは、 Productstablecsv というサンプルテーブルが提供されており、ここでダウンロードできます。A sample table is provided to you, for this course, called ProductsTableCSV and can be downloaded here.

重要

上記の .zip ファイルには、 Productstablecsvunitypackageの両方が含まれています。これについては、第6章で必要になります。The above .zip file contains both the ProductsTableCSV and the .unitypackage, which you will need in Chapter 6. このパッケージは、この章にも記載されていますが、csv ファイルとは別のものです。This package is also provided within that Chapter, though separate to the csv file.

このサンプルデータセットには、2017年の各日の1時間ごとに最適な販売オブジェクトのレコードが含まれています。This sample data set contains a record of the best-selling objects at every hour of each day of the year 2017.

Machine Learning Studio:データセットのセットアップ

たとえば、2017年の午前1時に、1pm (時間 13) では、最も売れた項目がソルトと胡椒になりました。For example, on day 1 of 2017, at 1pm (hour 13), the best-selling item was salt and pepper.

このサンプルテーブルには、9998のエントリが含まれています。This sample table contains 9998 entries.

  1. Machine Learning Studioポータルに戻り、このテーブルを ML のデータセットとして追加します。Head back to the Machine Learning Studio portal, and add this table as a Dataset for your ML. これを行うには、画面の左下隅にある [ + 新規] ボタンをクリックします。Do this by clicking the + New button in the bottom left corner of the screen.

    Machine Learning Studio:データセットのセットアップ

  2. セクションは下部に表示され、左側にナビゲーションパネルがあります。A section will come up from the bottom, and within that there is navigation panel on the left. [データセット] をクリックし、右側の [ローカルファイル] をクリックします。Click Dataset, then to the right of that, From Local File.

    Machine Learning Studio:データセットのセットアップ

  3. 新しいデータセットをアップロードするには、次の手順を実行します。Upload the new Dataset by following these steps:

    1. [アップロード] ウィンドウが表示されます。このウィンドウで、新しいデータセットのハードドライブを参照できます。The upload window will appear, where you can Browse your hard drive for the new dataset.

      Machine Learning Studio:データセットのセットアップ

    2. 選択してアップロードウィンドウに戻ると、チェックボックスはオンのままにしておきます。Once selected, and back in the upload window, leave the checkbox unticked.

    3. 下のテキストフィールドで、データセットの名前として「 Productstablecsv .csv 」と入力します (ただし、自動的に追加されます)。In the text field below, enter ProductsTableCSV.csv as the name for the dataset (though should automatically be added).

    4. [種類] のドロップダウンメニューを使用して、ヘッダー (.csv) を含む汎用 CSV ファイルを選択します。Using the dropdown menu for Type, select Generic CSV File with a header (.csv).

    5. アップロードウィンドウの右下にあるティックを押すと、データセットがアップロードされます。Press the tick in the bottom right of the upload window, and your Dataset will be uploaded.

Chapter 4-Machine Learning Studio:実験Chapter 4 - The Machine Learning Studio: The Experiment

機械学習システムを構築する前に、実験を作成して、データに関する理論を検証する必要があります。Before you can build your machine learning system, you will need to build an experiment, to validate your theory about your data. 結果によって、さらに多くのデータが必要かどうか、またはデータと考えられる結果の間に相関関係がないかどうかがわかります。With the results, you will know whether you need more data, or if there is no correlation between the data and a possible outcome.

実験の作成を開始するには:To start creating an experiment:

  1. ページの左下にある [ + 新規] ボタンをもう一度クリックし、[実験 > 用の空の実験] をクリックします。Click again on the + New button on the bottom left of the page, then click on Experiment > Blank Experiment.

    Machine Learning Studio:実験

  2. 空の実験で新しいページが表示されます。A new page will be displayed with a blank Experiment:

  3. 左側のパネルで、[保存されたデータセット > マイデータセット] を展開し、[ productstablecsv ] を実験キャンバスにドラッグします。From the panel on the left expand Saved Datasets > My Datasets and drag the ProductsTableCSV on to the Experiment Canvas.

    Machine Learning Studio:実験

  4. 左側のパネルで、[データ変換 > のサンプルと分割] を展開します。In the panel on the left, expand Data Transformation > Sample and Split. 次に、[データの分割] 項目を実験キャンバスにドラッグします。Then drag the Split Data item in to the Experiment Canvas. データの分割項目によって、データセットが2つの部分に分割されます。The Split Data item will split the data set into two parts. 機械学習アルゴリズムのトレーニングに使用する1つのパート。One part you will use for training the machine learning algorithm. 2番目の部分は、生成されたアルゴリズムの精度を評価するために使用されます。The second part will be used to evaluate the accuracy of the algorithm generated.

    Machine Learning Studio:実験

  5. 右側のパネル (キャンバスの [データの分割] 項目が選択されている状態) で、最初の出力データセットの行の割合0.7に変更します。In the right panel (while the Split Data item on the canvas is selected), edit the Fraction of rows in the first output dataset to 0.7. これにより、データは2つの部分に分割され、最初の部分はデータの 70% になり、2番目の部分は残りの 30% になります。This will split the data into two parts, the first part will be 70% of the data, and the second part will be the remaining 30%. データがランダムに分割されるようにするには、[ランダム分割] チェックボックスがオンのままになっていることを確認します。To ensure that the data is split randomly, make sure the Randomized split checkbox remains checked.

    Machine Learning Studio:実験

  6. キャンバスのProductstablecsv項目のベースから分割データ項目の一番上に接続をドラッグします。Drag a connection from the base of the ProductsTableCSV item on the canvas to the top of the Split Data item. これにより、項目が接続され、 Productstablecsvデータセットの出力 (データ) が分割データ入力に送信されます。This will connect the items and send the ProductsTableCSV dataset output (the data) to the Split Data input.

    Machine Learning Studio:実験

  7. 左側の実験パネルで、[ Machine Learning > トレーニング] を展開します。In the Experiments panel on the left side, expand Machine Learning > Train. [モデルのトレーニング] 項目を実験キャンバスにドラッグします。Drag the Train Model item out in to the Experiment canvas. キャンバスは次のようになります。Your canvas should look the same as the below.

    Machine Learning Studio:実験

  8. [データの分割]項目の左下から、[モデルのトレーニング] 項目の右上に接続をドラッグします。From the bottom left of the Split Data item drag a connection to the top right of the Train Model item. データセットからの最初の 70% の分割は、アルゴリズムをトレーニングするために Train モデルによって使用されます。The first 70% split from the dataset will be used by the Train Model to train the algorithm.

    Machine Learning Studio:実験

  9. キャンバスで [モデルのトレーニング] 項目を選択し、[プロパティ] パネル (ブラウザーウィンドウの右側) で、[列セレクターの起動] ボタンをクリックします。Select the Train Model item on the canvas, and in the Properties panel (on the right-hand side of your browser window) click the Launch column selector button.

  10. テキストボックスに「 product 」と入力し、 enterキーを押します。製品は、予測をトレーニングするための列として設定されます。In the text box type product and then press Enter, product will be set as a column to train predictions. 次に、右下隅にある目盛りをクリックして、選択ダイアログを閉じます。Following this, click on the tick in the bottom-right corner to close the selection dialog.

    Machine Learning Studio:実験

  11. 多クラスロジスティック回帰アルゴリズムをトレーニングして、その日の時間と日付に基づいて販売された製品を予測します。You are going to train a Multiclass Logistic Regression algorithm to predict the most sold product based on the hour of the day and the date. Azure Machine Learning studio によって提供されるさまざまなアルゴリズムの詳細については、このドキュメントでは説明しません。ただし、 Machine Learning アルゴリズムの詳細については、「」を参照してください。It is beyond the scope of this document to explain the details of the different algorithms provided by the Azure Machine Learning studio, though, you can find out more from the Machine Learning Algorithm Cheat Sheet

  12. 左側の [実験項目] パネルで [ Machine Learning > のモデル > 分類の初期化] を展開し、多クラスロジスティック回帰項目を実験キャンバスにドラッグします。From the experiment items panel on the left, expand Machine Learning > Initialize Model > Classification, and drag the Multiclass Logistic Regression item on to the experiment canvas.

  13. 多クラスロジスティック回帰の一番下にある出力を、[モデルのトレーニング] 項目の左上の入力に接続します。Connect the output, from the bottom of the Multiclass Logistic Regression, to the top-left input of the Train Model item.

    Machine Learning Studio:実験

  14. 左側のパネルにある実験項目の一覧で [ Machine Learning > スコア] を展開し、[モデルのスコア付け] 項目をキャンバスにドラッグします。In list of experiment items in the panel on the left, expand Machine Learning > Score, and drag the Score Model item on to the canvas.

  15. トレーニングモデルの下部にある出力を、スコアモデルの左上の入力に接続します。Connect the output, from the bottom of the Train Model, to the top-left input of the Score Model.

  16. 分割されたデータから、モデルのスコア付け項目の右上の入力に、右下の出力を接続します。Connect the bottom-right output from Split Data, to the top-right input of the Score Model item.

    Machine Learning Studio:実験

  17. 左側のパネルにある実験項目の一覧で、[ Machine Learning > 評価] を展開し、[モデルの評価] 項目をキャンバスにドラッグします。In the list of Experiment items in the panel on the left, expand Machine Learning > Evaluate, and drag the Evaluate Model item onto the canvas.

  18. スコアモデルの出力を、評価モデルの左上の入力に接続します。Connect the output from the Score Model to the top-left input of the Evaluate Model.

    Machine Learning Studio:実験

  19. 最初の Machine Learning 実験を作成しました。You have built your first Machine Learning Experiment. これで、実験を保存して実行できるようになりました。You can now save and run the experiment. ページの下部にあるメニューで、[保存] ボタンをクリックして実験を保存し、[実行] をクリックして実験を開始します。In the menu at the bottom of the page, click on the Save button to save your experiment and then click Run to the start the experiment.

    Machine Learning Studio:実験

  20. キャンバスの右上にある実験の状態を確認できます。You can see the status of the experiment in the top-right of the canvas. 実験が終了するまでしばらく待ちます。Wait a few moments for the experiment to finish.

    ビッグ (実際の) データセットがある場合は、実験の実行に時間がかかる可能性があります。If you have a big (real world) dataset it is likely that the experiment could take hours to run.

    Machine Learning Studio:実験

  21. キャンバスで [モデルの評価] 項目を右クリックし、コンテキストメニューから、評価結果にマウスポインターを移動して、[視覚化] を選択します。Right click on the Evaluate Model item in the canvas and from the context menu hover the mouse over Evaluation Results, then select Visualize.

    Machine Learning Studio:実験

  22. 予測された結果と実際の結果を示す評価結果が表示されます。The evaluation results will be displayed showing the predicted outcomes versus the actual outcomes. これにより、前に分割した元のデータセットの 30% がモデルの評価に使用されます。This uses the 30% of the original dataset, that was split earlier, for evaluating the model. 結果が最適ではないことがわかります。各行の最大数が列の強調表示された項目になるのが理想的です。You can see the results are not great, ideally you would have the highest number in each row be the highlighted item in the columns.

    Machine Learning Studio:実験

  23. 結果を閉じます。Close the Results.

  24. 新しくトレーニングされた Machine Learning モデルを使用するには、 Web サービスとして公開する必要があります。To use your newly trained Machine Learning model you need to expose it as a Web Service. これを行うには、ページの下部にあるメニューの [ Web サービスの設定] メニュー項目をクリックし、[予測 Web サービス] をクリックします。To do this, click on the Set Up Web Service menu item in the menu at the bottom of the page, and click on Predictive Web Service.

    Machine Learning Studio:実験

  25. 新しいタブが作成され、新しい web サービスを作成するためにトレーニングモデルが結合されます。A new tab will be created, and the train model merged to create the new web service.

  26. ページの下部にあるメニューで [保存] をクリックし、[実行] をクリックします。In the menu at the bottom of the page click Save, then click Run. 実験キャンバスの右上隅に更新された状態が表示されます。You will see the status updated in the top-right corner of the experiment canvas.

    Machine Learning Studio:実験

  27. 実行が完了すると、[ Web サービスのデプロイ] ボタンがページの下部に表示されます。Once it has finished running, a Deploy Web Service button will appear at the bottom of the page. これで、web サービスをデプロイする準備が整いました。You are ready to deploy the web service. ページの下部にあるメニューで、[ Deploy Web Service (クラシック)] をクリックします。Click Deploy Web Service (Classic) in the menu at the bottom of the page.

    Machine Learning Studio:実験

    ブラウザーでポップアップを許可するように求められる場合があります。ただし、[デプロイ] ページが表示されない場合は、[ Web サービスのデプロイ] をもう一度クリックする必要があります。Your browser may prompt to allow a pop-up, which you should allow, though you may need to press Deploy Web Service again, if the deploy page does not show.

  28. 実験が作成されると、 API キーが表示されるダッシュボードページにリダイレクトされます。Once the Experiment has been created you will be redirected to a Dashboard page where you will have your API Key displayed. その時点でメモ帳にコピーします。コードですぐに必要になります。Copy it into a notepad for the moment, you will need it in your code very soon. API キーを書き留めたら、キーの下にある [既定のエンドポイント] セクションの [要求/応答] ボタンをクリックします。Once you have noted your API Key, click on the REQUEST/RESPONSE button in the Default Endpoint section underneath the Key.

    Machine Learning Studio:実験

    注意

    このページで [テスト] をクリックすると、入力データを入力して出力を表示できるようになります。If you click Test in this page, you will be able to enter input data and view the output. 日付時刻を入力します。Enter the day and hour. 製品エントリを空白のままにします。Leave the product entry blank. 次に、[確認] ボタンをクリックします。Then click the Confirm button. ページの下部にある出力には、各製品が選択されている可能性を表す JSON が表示されます。The output on the bottom of the page will show the JSON representing the likelihood of each product being the choice.

  29. 新しい web ページが開き、Machine Learning Studio に必要な要求構造に関する指示といくつかの例が表示されます。A new web page will open up, displaying the instructions and some examples about the Request structure required by the Machine Learning Studio. このページに表示されている要求 URIをメモ帳にコピーします。Copy the Request URI displayed in this page, into your notepad.

    Machine Learning Studio:実験

これで、過去の購入データに基づいて販売される可能性の高い製品を提供する機械学習システムが構築されました。これは、その年の日付と時刻に関連付けられています。You have now built a machine learning system that provides the most likely product to be sold based on historical purchasing data, correlated with the time of the day and day of the year.

Web サービスを呼び出すには、サービスエンドポイントの URL とサービスの API キーが必要です。To call the web service, you will need the URL for the service endpoint and an API Key for the service. 上部のメニューから [使用] タブをクリックします。Click on the Consume tab, from the top menu.

[従量課金情報] ページには、コードから web サービスを呼び出すために必要な情報が表示されます。The Consumption Info page will display the information you will need to call the web service from your code. プライマリキー要求-応答URL のコピーを取得します。Take a copy of the Primary Key and the Request-Response URL. これらは、次の章で必要になります。You will need these in the next Chapter.

章 5-Unity プロジェクトの設定Chapter 5 - Setting up the Unity Project

Mixed Reality のイマーシブヘッドセットをセットアップしてテストします。Set up and test your Mixed Reality Immersive Headset.

注意

このコースでは、モーションコントローラーは必要ありませんYou will not require Motion Controllers for this course. イマーシブヘッドセットの設定をサポートする必要がある場合は、ここをクリックしてください。If you need support setting up the Immersive Headset, please click HERE.

  1. Unityを開き、MR _ の "e" という名前の新しい unity プロジェクトを作成します。Open Unity and create a new Unity Project called MR_MachineLearning. プロジェクトの種類が3dに設定されていることを確認します。Make sure the project type is set to 3D.

  2. 既定値を確認する必要が開いている Unity、 スクリプト エディター に設定されている Visual Studio します。With Unity open, it is worth checking the default Script Editor is set to Visual Studio. [設定編集 > ] に移動し、新しいウィンドウで [外部ツール] に移動します。Go to Edit > Preferences and then from the new window, navigate to External Tools. 変更 External Script EditorVisual Studio 2017 します。Change External Script Editor to Visual Studio 2017. [基本設定] ウィンドウを閉じます。Close the Preferences window.

  3. 次に、[ファイル > ] [ビルドの設定] の順に移動し、[プラットフォームの切り替え] ボタンをクリックして、プラットフォームをユニバーサル Windows プラットフォームに切り替えます。Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

  4. また、次のことを確認してください。Also make sure that:

    1. ターゲットデバイス、任意のデバイスに設定されます。Target Device is set to Any Device.

      Microsoft HoloLens の場合は、ターゲットデバイスHoloLensに設定します。For the Microsoft HoloLens, set Target Device to HoloLens.

    2. ビルドの種類D3Dに設定されています。Build Type is set to D3D.

    3. SDKは、インストールされている最新のバージョンに設定されます。SDK is set to Latest installed.

    4. Visual Studio のバージョンが、インストールされている最新のバージョンに設定されています。Visual Studio Version is set to Latest installed.

    5. ビルドと実行ローカルコンピューターに設定されています。Build and Run is set to Local Machine.

    6. 後で提供されているように、現時点では設定について心配しないでください。Do not worry about setting up Scenes right now, as these are provided later.

    7. ここでは、残りの設定は既定値のままにしておきます。The remaining settings should be left as default for now.

      Unity プロジェクトの設定

  5. [ビルドの設定] ウィンドウで、[プレーヤーの設定] ボタンをクリックします。これにより、インスペクターが配置されている領域の関連パネルが開きます。In the Build Settings window, click on the Player Settings button, this will open the related panel in the space where the Inspector is located.

  6. このパネルでは、いくつかの設定を確認する必要があります。In this panel, a few settings need to be verified:

    1. [その他の設定] タブで、次のようにします。In the Other Settings tab:

      1. スクリプト ランタイムのバージョン実験的である必要があります (.net 4.6 と同等)Scripting Runtime Version should be Experimental (.NET 4.6 Equivalent)

      2. バックエンド.netである必要がありますScripting Backend should be .NET

      3. API 互換性レベル.net 4.6である必要がありますAPI Compatibility Level should be .NET 4.6

        Unity プロジェクトの設定

    2. [発行の設定] タブの [機能] で、次の項目を確認します。Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

        Unity プロジェクトの設定

    3. パネルの下の [ XR settings (発行の設定] の下にあります) で、[サポートされている仮想現実] をティックし、 Windows Mixed reality SDKが追加されていることを確認します。Further down the panel, in XR Settings (found below Publish Settings), tick Virtual Reality Supported, make sure the Windows Mixed Reality SDK is added

      Unity プロジェクトの設定

  7. ビルド設定に戻るUnity C# プロジェクトはグレーで表示されなくなりました。このの横にあるチェックボックスをオンにします。Back in Build Settings Unity C# Projects is no longer greyed out; tick the checkbox next to this.

  8. [ビルドの設定] ウィンドウを閉じます。Close the Build Settings window.

  9. プロジェクトを保存します (ファイル > プロジェクトに保存します)。Save your Project (FILE > SAVE PROJECT).

第6章-MLProducts Unity パッケージのインポートChapter 6 - Importing the MLProducts Unity Package

このコースでは、 unitypackageという名前の Unity アセットパッケージをダウンロードする必要があります。For this course, you will need to download a Unity Asset Package called Azure-MR-307.unitypackage. このパッケージは、すべてのオブジェクトがあらかじめ構築されているシーンで完成しているので、すべての作業に専念できます。This package comes complete with a scene, with all objects in that prebuilt, so you can focus on getting it all working. ShelfKeeperスクリプトが用意されていますが、シーンのセットアップ構造ではパブリック変数のみが保持されます。The ShelfKeeper script is provided, though only holds the public variables, for the purpose of scene setup structure. 他のすべてのセクションを実行する必要があります。You will need to do all other sections.

このパッケージをインポートするには:To import this package:

  1. Unity ダッシュボードを使用して、画面の上部にあるメニューの [アセット] をクリックし、[パッケージのインポート, カスタムパッケージ] をクリックします。With the Unity dashboard in front of you, click on Assets in the menu at the top of the screen, then click on Import Package, Custom Package.

    MLProducts Unity パッケージをインポートしています

  2. ファイルピッカーを使用してunitypackageパッケージを選択し、[開く] をクリックします。Use the file picker to select the Azure-MR-307.unitypackage package and click Open.

  3. この資産のコンポーネントの一覧が表示されます。A list of components for this asset will be displayed to you. インポートを確認するには、[インポート] をクリックします。Confirm the import by clicking Import.

    MLProducts Unity パッケージをインポートしています

  4. インポートが完了すると、一部の新しいフォルダーが Unity の [プロジェクト] パネルに表示されます。Once it has finished importing, you will notice that some new folders have appeared in your Unity Project Panel. これらは、3D モデルと、作業する事前に作成されたシーンの一部であるそれぞれのマテリアルです。Those are the 3D models and the respective materials that are part of the pre-made scene you will work on. このコースでは、大部分のコードを記述します。You will write the majority of the code in this course.

    MLProducts Unity パッケージをインポートしています

  5. [プロジェクトパネル] フォルダー内の [シーン] フォルダーをクリックし、( MR_MachineLearningSceneと呼ばれる) シーンをダブルクリックします。Within the Project Panel folder, click on the Scenes folder and double click on the scene inside (called MR_MachineLearningScene). シーンが開きます (下図を参照)。The scene will open (see image below). 赤いひし形が欠けている場合は、[ゲーム] パネルの右上にある [ギズモ] ボタンをクリックします。If the red diamonds are missing, simply click the Gizmos button, at the top right of the Game Panel.

    MLProducts Unity パッケージをインポートしています

第7章-Unity での Dll のチェックChapter 7 - Checking the DLLs in Unity

(シリアル化と逆シリアル化に使用される) JSON ライブラリの使用を活用するために、作成したパッケージに Newtonsoft DLL が実装されています。To leverage the use of JSON libraries (used for serializing and deserializing), a Newtonsoft DLL has been implemented with the package you brought in. ライブラリには適切な構成が必要です (特に、コードが動作していない問題が発生している場合)。The library should have the correct configuration, though it is worth checking (particularly if you are having issues with code not working).

そのためには次を行います。To do so:

  • プラグインフォルダー内の Newtonsoft ファイルを左クリックし、[インスペクター] パネルを確認します。Left-click on the Newtonsoft file inside the Plugins folder and look at the Inspector panel. プラットフォームがあることを確認します。Make sure Any Platform is ticked. [ UWP] タブにアクセスし、[処理が行われないようにする] もオンにします。Go to the UWP tab and also ensure Don't process is ticked.

    Unity での Dll のインポート

章 8-ShelfKeeper クラスを作成するChapter 8 - Create the ShelfKeeper class

ShelfKeeperクラスは、シーンで生成された UI と製品を制御するメソッドをホストします。The ShelfKeeper class hosts methods that control the UI and products spawned in the scene.

インポートされたパッケージの一部として、このクラスは不完全ですが、指定されています。As part of the imported package, you will have been given this class, though it is incomplete. このクラスは、次のように完了します。It is now time to complete that class:

  1. ShelfKeeperスクリプトをScriptsフォルダー内でダブルクリックして、 Visual Studio 2017で開きます。Double click on the ShelfKeeper script, within the Scripts folder, to open it with Visual Studio 2017.

  2. スクリプト内の既存のすべてのコードを次のコードに置き換えます。このコードは、時刻と日付を設定し、製品を表示するメソッドを持っています。Replace all the code existing in the script with the following code, which sets the time and date and has a method to show a product.

    using UnityEngine;
    
    public class ShelfKeeper : MonoBehaviour
    {
        /// <summary>
        /// Provides this class Singleton-like behavior
        /// </summary>
        public static ShelfKeeper instance;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for data
        /// </summary>
        public TextMesh dateText;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for time
        /// </summary>
        public TextMesh timeText;
    
        /// <summary>
        /// Provides references to the spawn locations for the products prefabs
        /// </summary>
        public Transform[] spawnPoint;
    
        private void Awake()
        {
            instance = this;
        }
    
        /// <summary>
        /// Set the text of the date in the scene
        /// </summary>
        public void SetDate(string day, string month)
        {
            dateText.text = day + " " + month;
        }
    
        /// <summary>
        /// Set the text of the time in the scene
        /// </summary>
        public void SetTime(string hour)
        {
            timeText.text = hour + ":00";
        }
    
        /// <summary>
        /// Spawn a product on the shelf by providing the name and selling grade
        /// </summary>
        /// <param name="name"></param>
        /// <param name="sellingGrade">0 being the best seller</param>
        public void SpawnProduct(string name, int sellingGrade)
        {
            Instantiate(Resources.Load(name),
                spawnPoint[sellingGrade].transform.position, spawnPoint[sellingGrade].transform.rotation);
        }
    }
    
  3. Unityに戻る前に、変更内容をVisual Studioに保存してください。Be sure to save your changes in Visual Studio before returning to Unity.

  4. Unity エディターに戻り、 ShelfKeeperクラスが次のようになっていることを確認します。Back in the Unity Editor, check that the ShelfKeeper class looks like the below:

    ShelfKeeper クラスを作成する

    重要

    スクリプトに参照ターゲット (つまりDate (テキストメッシュ) ) がない場合は、対応するオブジェクトを階層パネルからターゲットフィールドにドラッグするだけです。If your script does not have the reference targets (i.e. Date (Text Mesh)), simply drag the corresponding objects from the Hierarchy Panel, into the target fields. 必要に応じて、以下の説明を参照してください。See below for explanation, if needed:

    1. ShelfKeeperコンポーネントスクリプト内の生成ポイントの配列を、左クリックして開きます。Open the Spawn Point array within the ShelfKeeper component script by left-clicking it. サブセクションは、配列のサイズを示すsizeという名前で表示されます。A sub-section will appear called Size, which indicates the size of the array. [サイズ] の横にあるテキストボックスに「 3 」と入力し、 enterキーを押すと、3つのスロットが下に作成されます。Type 3 into the textbox next to Size and press Enter, and three slots will be created beneath.

    2. 階層内で、時間表示オブジェクトを展開します (横にある矢印を左クリックします)。Within the Hierarchy expand the Time Display object (by left-clicking the arrow beside it). 次に、階層内のメインカメラをクリックして、インスペクターにその情報が表示されるようにします。Next click the Main Camera from within the Hierarchy, so that the Inspector shows its information.

    3. [階層] パネルメインカメラを選択します。Select the Main Camera in the Hierarchy Panel. [階層] パネル日付時刻のオブジェクトを、 ShelfKeeperコンポーネントのメインカメラインスペクター内の [ date text ] および [ time] テキストスロットにドラッグします。Drag the Date and Time objects from the Hierarchy Panel to the Date Text and Time Text slots within the Inspector of the Main Camera in the ShelfKeeper component.

    4. イメージに示されているように、[階層] パネル(オブジェクトの下) から、生成ポイントの配列の下にある3 要素参照ターゲットに生成ポイントをドラッグします。Drag the Spawn Points from the Hierarchy Panel (beneath the Shelf object) to the 3 Element reference targets beneath the Spawn Point array, as shown in the image.

      ShelfKeeper クラスを作成する

第9章-ProductPrediction クラスを作成するChapter 9 - Create the ProductPrediction class

次に作成するクラスは、 Productpredictionクラスです。The next class you are going to create is the ProductPrediction class.

このクラスの役割は次のとおりです。This class is responsible for:

  • 現在の日付と時刻を指定して、 Machine Learning サービスインスタンスを照会しています。Querying the Machine Learning Service instance, providing the current date and time.

  • JSON 応答を使用可能なデータに逆シリアル化しています。Deserializing the JSON response into usable data.

  • データを解釈し、3つの推奨される製品を取得します。Interpreting the data, retrieving the 3 recommended products.

  • ShelfKeeperクラスのメソッドを呼び出して、シーンにデータを表示します。Calling the ShelfKeeper class methods to display the data in the Scene.

このクラスを作成するには:To create this class:

  1. [プロジェクト] パネルの [スクリプト] フォルダーにアクセスします。Go to the Scripts folder, in the Project Panel.

  2. フォルダー内を右クリックし、[ C#スクリプト作成 > ] をクリックします。Right-click inside the folder, Create > C# Script. Productpredictionのスクリプトを呼び出します。Call the script ProductPrediction.

  3. 新しいProductpredictionスクリプトをダブルクリックして、 Visual Studio 2017で開きます。Double click on the new ProductPrediction script to open it with Visual Studio 2017.

  4. 場合、ファイル変更の検出ダイアログ ポップアップ、 をクリック *ソリューションの再読み込みします。If the File Modification Detected dialog pops up, click *Reload Solution.

  5. ProductPrediction クラスの先頭に次の名前空間を追加します。Add the following namespaces to the top of the ProductPrediction class:

    using System;
    using System.Collections.Generic;
    using UnityEngine;
    using System.Linq;
    using Newtonsoft.Json;
    using UnityEngine.Networking;
    using System.Runtime.Serialization;
    using System.Collections;
    
  6. Productpredictionクラス内で、複数の入れ子になったクラスで構成される次の2つのオブジェクトを挿入します。Inside the ProductPrediction class insert the following two objects which are composed of a number of nested classes. これらのクラスは、Machine Learning サービスの JSON をシリアル化および逆シリアル化するために使用されます。These classes are used to serialize and deserialize the JSON for the Machine Learning Service.

        /// <summary>
        /// This object represents the Prediction request
        /// It host the day of the year and hour of the day
        /// The product must be left blank when serialising
        /// </summary>
        public class RootObject
        {
            public Inputs Inputs { get; set; }
        }
    
        public class Inputs
        {
            public Input1 input1 { get; set; }
        }
    
        public class Input1
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
        /// <summary>
        /// This object containing the deserialised Prediction result
        /// It host the list of the products
        /// and the likelihood of them being sold at current date and time
        /// </summary>
        public class Prediction
        {
            public Results Results { get; set; }
        }
    
        public class Results
        {
            public Output1 output1;
        }
    
        public class Output1
        {
            public string type;
            public Value value;
        }
    
        public class Value
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
  7. 次に、前のコードの上に次の変数を追加します (JSON 関連のコードは、スクリプトの一番下にあり、他のすべてのコードの下にあります)。Then add the following variables above the previous code (so that the JSON related code is at the bottom of the script, below all other code, and out of the way):

        /// <summary>
        /// The 'Primary Key' from your Machine Learning Portal
        /// </summary>
        private string authKey = "-- Insert your service authentication key here --";
    
        /// <summary>
        /// The 'Request-Response' Service Endpoint from your Machine Learning Portal
        /// </summary>
        private string serviceEndpoint = "-- Insert your service endpoint here --";
    
        /// <summary>
        /// The Hour as set in Windows
        /// </summary>
        private string thisHour;
    
        /// <summary>
        /// The Day, as set in Windows
        /// </summary>
        private string thisDay;
    
        /// <summary>
        /// The Month, as set in Windows
        /// </summary>
        private string thisMonth;
    
        /// <summary>
        /// The Numeric Day from current Date Conversion
        /// </summary>
        private string dayOfTheYear;
    
        /// <summary>
        /// Dictionary for holding the first (or default) provided prediction 
        /// from the Machine Learning Experiment
        /// </summary>    
        private Dictionary<string, string> predictionDictionary;
    
        /// <summary>
        /// List for holding product prediction with name and scores
        /// </summary>
        private List<KeyValuePair<string, double>> keyValueList;
    

    重要

    Machine Learning ポータルから、主キー要求-応答のエンドポイントを、ここでの変数に挿入してください。Make sure to insert the primary key and request-response endpoint, from the Machine Learning Portal, into the variables here. 次の画像は、キーとエンドポイントを取得した場所を示しています。The below images show where you would have taken the key and endpoint from.

    Machine Learning Studio:実験

    Machine Learning Studio:実験

  8. このコードをStart () メソッド内に挿入します。Insert this code within the Start() method. Start () メソッドは、クラスの初期化時に呼び出されます。The Start() method is called when the class initializes:

        void Start()
        {
            // Call to get the current date and time as set in Windows
            GetTodayDateAndTime();
    
            // Call to set the HOUR in the UI
            ShelfKeeper.instance.SetTime(thisHour);
    
            // Call to set the DATE in the UI
            ShelfKeeper.instance.SetDate(thisDay, thisMonth);
    
            // Run the method to Get Predication from Azure Machine Learning
            StartCoroutine(GetPrediction(thisHour, dayOfTheYear));
        }
    
  9. Windows から日付と時刻を収集し、Machine Learning 実験でテーブルに格納されているデータと比較するために使用できる形式に変換するメソッドを次に示します。The following is the method that collects the date and time from Windows and converts it into a format that our Machine Learning Experiment can use to compare with the data stored in the table.

        /// <summary>
        /// Get current date and hour
        /// </summary>
        private void GetTodayDateAndTime()
        {
            // Get today date and time
            DateTime todayDate = DateTime.Now;
    
            // Extrapolate the HOUR
            thisHour = todayDate.Hour.ToString();
    
            // Extrapolate the DATE
            thisDay = todayDate.Day.ToString();
            thisMonth = todayDate.ToString("MMM");
    
            // Extrapolate the day of the year
            dayOfTheYear = todayDate.DayOfYear.ToString();
        }
    
  10. Update () メソッドは、このクラスでは使用されないため、削除できます。You can delete the Update() method since this class will not use it.

  11. 次のメソッドを追加します。このメソッドは、現在の日付と時刻を Machine Learning エンドポイントに伝え、JSON 形式で応答を受信します。Add the following method which will communicate the current date and time to the Machine Learning endpoint and receive a response in JSON format.

        private IEnumerator GetPrediction(string timeOfDay, string dayOfYear)
        {
            // Populate the request object 
            // Using current day of the year and hour of the day
            RootObject ro = new RootObject
            {
                Inputs = new Inputs
                {
                    input1 = new Input1
                    {
                        ColumnNames = new List<string>
                        {
                            "day",
                            "hour",
                        "product"
                        },
                        Values = new List<List<string>>()
                    }
                }
            };
    
            List<string> l = new List<string>
            {
                dayOfYear,
                timeOfDay,
                ""
            };
    
            ro.Inputs.input1.Values.Add(l);
    
            Debug.LogFormat("Score request built");
    
            // Serialise the request
            string json = JsonConvert.SerializeObject(ro);
    
            using (UnityWebRequest www = UnityWebRequest.Post(serviceEndpoint, "POST"))
            {
                byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
                www.uploadHandler = new UploadHandlerRaw(jsonToSend);
    
                www.downloadHandler = new DownloadHandlerBuffer();
                www.SetRequestHeader("Authorization", "Bearer " + authKey);
                www.SetRequestHeader("Content-Type", "application/json");
                www.SetRequestHeader("Accept", "application/json");
    
                yield return www.SendWebRequest();
                string response = www.downloadHandler.text;
    
                // Deserialize the response
                DataContractSerializer serializer;
                serializer = new DataContractSerializer(typeof(string));
                DeserialiseJsonResponse(response);
            }
        }
    
  12. 次のメソッドを追加します。このメソッドは、JSON 応答を逆シリアル化し、逆シリアル化の結果をShelfKeeperクラスに伝達します。Add the following method, which is responsible for deserializing the JSON response, and communicating the result of the deserialization to the ShelfKeeper class. この結果は、現在の日付と時刻を最も多く販売するために予測される3つの項目の名前になります。This result will be the names of the three items predicted to sell the most at current date and time. 次のコードをProductpredictionクラスの前のメソッドの下に挿入します。Insert the code below into the ProductPrediction class, below the previous method.

        /// <summary>
        /// Deserialize the response received from the Machine Learning portal
        /// </summary>
        public void DeserialiseJsonResponse(string jsonResponse)
        {
            // Deserialize JSON
            Prediction prediction = JsonConvert.DeserializeObject<Prediction>(jsonResponse);
            predictionDictionary = new Dictionary<string, string>();
    
            for (int i = 0; i < prediction.Results.output1.value.ColumnNames.Count; i++)
            {
                if (prediction.Results.output1.value.Values[0][i] != null)
                {
                    predictionDictionary.Add(prediction.Results.output1.value.ColumnNames[i], prediction.Results.output1.value.Values[0][i]);
                }
            }
    
            keyValueList = new List<KeyValuePair<string, double>>();
    
            // Strip all non-results, by adding only items of interest to the scoreList
            for (int i = 0; i < predictionDictionary.Count; i++)
            {
                KeyValuePair<string, string> pair = predictionDictionary.ElementAt(i);
                if (pair.Key.StartsWith("Scored Probabilities"))
                {
                    // Parse string as double then simplify the string key so to only have the item name
                    double scorefloat = 0f;
                    double.TryParse(pair.Value, out scorefloat);
                    string simplifiedName =
                        pair.Key.Replace("\"", "").Replace("Scored Probabilities for Class", "").Trim();
                    keyValueList.Add(new KeyValuePair<string, double>(simplifiedName, scorefloat));
                }
            }
    
            // Sort Predictions (results will be lowest to highest)
            keyValueList.Sort((x, y) => y.Value.CompareTo(x.Value));
    
            // Spawn the top three items, from the keyValueList, which we have sorted
            for (int i = 0; i < 3; i++)
            {
                ShelfKeeper.instance.SpawnProduct(keyValueList[i].Key, i);
            }
    
            // Clear lists in case of reuse
            keyValueList.Clear();
            predictionDictionary.Clear();
        }
    
  13. Visual Studioを保存し、 Unityに戻ります。Save Visual Studio and head back to Unity.

  14. ProductpredictionクラススクリプトをScriptフォルダーからメインカメラオブジェクトにドラッグします。Drag the ProductPrediction class script from the Script folder, onto the Main Camera object.

  15. シーンとプロジェクトファイル > の保存シーン/ファイル > 保存プロジェクトを保存します。Save your scene and project File > Save Scene/File > Save Project.

第10章-UWP ソリューションのビルドChapter 10 - Build the UWP Solution

この時点で、プロジェクトを UWP ソリューションとしてビルドし、スタンドアロンアプリケーションとして実行できるようになりました。It is now time to build your project as a UWP solution, so that it can run as a standalone application.

ビルドするには:To Build:

  1. [ファイル > ] [保存] [シーン] をクリックして、現在のシーンを保存します。Save the current scene by clicking on File > Save Scenes.

  2. ファイル > のビルド設定に進むGo to File > Build Settings

  3. Unity C#プロジェクトと呼ばれるチェックボックスをオンにします (ビルドの完了後にクラスを編集できるため、これは重要です)。Check the box called Unity C# Projects (this is important because it will allow you to edit the classes after build is completed).

  4. [開いているシーンの追加] をクリックします。Click on Add Open Scenes,

  5. [Build] をクリックします。Click Build.

    UWP ソリューションを構築する

  6. ソリューションをビルドするフォルダーを選択するように求められます。You will be prompted to select the folder where you want to build the Solution.

  7. ビルドフォルダーを作成し、そのフォルダー内で、適切な名前を指定して別のフォルダーを作成します。Create a BUILDS folder and within that folder create another folder with an appropriate name of your choice.

  8. 新しいフォルダーをクリックし、[フォルダーの選択] をクリックして、その場所でビルドを開始します。Click your new folder and then click Select Folder, to begin the build at that location.

    UWP ソリューションを構築する

    UWP ソリューションを構築する

  9. Unity のビルドが完了すると (時間がかかる場合があります)、ビルドの場所でファイルエクスプローラーウィンドウを開きます (ウィンドウの上に常に表示されるとは限りませんが、新しいウィンドウが追加されたことが通知されます)。Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build (check your task bar, as it may not always appear above your windows, but will notify you of the addition of a new window).

第11章-アプリケーションのデプロイChapter 11 - Deploy your Application

アプリケーションをデプロイするには:To deploy your application:

  1. 新しい Unity ビルド (アプリフォルダー) に移動し、 Visual Studioでソリューションファイルを開きます。Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

  2. Visual Studio を開いた状態で、NuGet パッケージを復元する必要があります。これを行うには、MachineLearningLab_Build ソリューションを右クリックし、(Visual Studio の右側にある) ソリューションエクスプローラーから、[NuGet パッケージの復元] をクリックします。With Visual Studio open, you need to Restore NuGet Packages, which can be done through right-clicking your MachineLearningLab_Build solution, from the Solution Explorer (found to the right of Visual Studio), and then clicking Restore NuGet Packages:

    NuGet パッケージを追加します。

  3. ソリューション構成で、[デバッグ] を選択します。In the Solution Configuration select Debug.

  4. ソリューションプラットフォームで、[ x86,ローカルコンピューター] を選択します。In the Solution Platform, select x86, Local Machine.

    Microsoft HoloLens の場合、これをリモートコンピューターに設定する方が簡単な場合があります。これにより、コンピューターにテザリングさされることはありません。For the Microsoft HoloLens, you may find it easier to set this to Remote Machine, so that you are not tethered to your computer. ただし、次の手順も実行する必要があります。Though, you will need to also do the following:

    • HoloLens のIP アドレスを確認します。これは、 [設定 > ネットワーク & インターネット > Wi-fi > 詳細オプション] にあります。IPv4 は、使用するアドレスです。Know the IP Address of your HoloLens, which can be found within the Settings > Network & Internet > Wi-Fi > Advanced Options; the IPv4 is the address you should use.
    • 開発者モードオンになっていることを確認します。開発者向けのセキュリティ > の更新プログラム & の > の設定にあります。Ensure Developer Mode is On; found in Settings > Update & Security > For developers.

    NuGet パッケージを追加します。

  5. [ビルド] メニューの [ソリューションの配置] をクリックして、アプリケーションを PC にサイドロードします。Go to Build menu and click on Deploy Solution to sideload the application to your PC.

  6. アプリがインストール済みのアプリの一覧に表示され、起動できる状態になります。Your App should now appear in the list of installed apps, ready to be launched.

Mixed Reality アプリケーションを実行すると、Unity シーンで設定されたベンチが表示されます。また、初期化時に、Azure 内に設定したデータがフェッチされます。When you run the Mixed Reality application, you will see the bench that was set up in your Unity scene, and from initialization, the data you set up within Azure will be fetched. データはアプリケーション内で逆シリアル化され、現在の日付と時刻の上位3つの結果が、ベンチに3つのモデルとして視覚的に表示されます。The data will be deserialized within your application, and the three top results for your current date and time will be provided visually, as three models on the bench.

完成した Machine Learning アプリケーションYour finished Machine Learning application

これで、Azure Machine Learning を活用してデータ予測を行い、シーンに表示する mixed reality アプリを構築しました。Congratulations, you built a mixed reality app that leverages the Azure Machine Learning to make data predictions and display it on your scene.

NuGet パッケージを追加します。

今回Exercise

演習1Exercise 1

アプリケーションの並べ替え順序を試して、3つの下位予測がシェルフに表示されるようにします。このデータも役に立つ可能性があるためです。Experiment with the sort order of your application and have the three bottom predictions appear on the shelf, as this data would potentially be useful also.

演習2Exercise 2

Azure テーブルを使用すると、新しいテーブルに気象情報が挿入され、データを使用して新しい実験が作成されます。Using Azure Tables populate a new table with weather information and create a new experiment using the data.