注意

Mixed Reality Academy チュートリアルでは、HoloLens として設計された (第 1 世代) と混在の現実イマーシブ ヘッドセットに注意してください。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 304:顔認識MR and Azure 304: Face recognition

このコースを完了するの結果

このコースでは Microsoft Face API を使用した Azure Cognitive Services を使用して複合現実のアプリケーションに顔認識機能を追加する方法についてはします。In this course you will learn how to add face recognition capabilities to a mixed reality application, using Azure Cognitive Services, with the Microsoft Face API.

Azure の Face APIは、開発者はすべてクラウドでの顔アルゴリズムの最も高度な Microsoft のサービスです。Azure Face API is a Microsoft service, which provides developers with the most advanced face algorithms, all in the cloud. Face API 2 つの主な機能: 属性を含む、検出して認識に直面します。The Face API has two main functions: face detection with attributes, and face recognition. これにより、開発者、顔のグループのセットを設定するだけですし、次に、クエリ イメージ サービスへの送信後で、顔が属しているユーザーを決定します。This allows developers to simply set a set of groups for faces, and then, send query images to the service later, to determine to whom a face belongs. 詳細については、次を参照してください。、 Azure 顔認識ページします。For more information, visit the Azure Face Recognition page.

このコースを完了すると、複合現実は、次のことが、HoloLens のアプリケーションが用意されます。Having completed this course, you will have a mixed reality HoloLens application, which will be able to do the following:

  1. 使用して、タップ ジェスチャオンボード HoloLens カメラを使用してイメージのキャプチャを開始します。Use a Tap Gesture to initiate the capture of an image using the on-board HoloLens camera.
  2. キャプチャしたイメージの送信、 Azure の Face APIサービス。Send the captured image to the Azure Face API service.
  3. 結果を受け取る、 Face APIアルゴリズム。Receive the results of the Face API algorithm.
  4. 単純なユーザー インターフェイスを使用すると、一致したユーザーの名前を表示できます。Use a simple User Interface, to display the name of matched people.

Face API のサービスから、Unity に基づく複合現実のアプリケーションに結果を取得する方法が説明されます。This will teach you how to get the results from the Face API Service into your Unity-based mixed reality application.

アプリケーションでは、責任ですが、設計と、結果を統合する方法について。In your application, it is up to you as to how you will integrate the results with your design. このコースは、Unity プロジェクトで Azure サービスを統合する方法を説明する設計されています。This course is designed to teach you how to integrate an Azure Service with your Unity Project. 複合現実アプリを強化するためには、このコース得た知識を使用することがあります。It is your job to use the knowledge you gain from this course to enhance your mixed reality application.

デバイスのサポートDevice support

コースCourse HoloLensHoloLens イマーシブ ヘッドセットImmersive headsets
MR と Azure 304:顔認識MR and Azure 304: Face recognition ✔️✔️ ✔️✔️

注意

このコースは、HoloLens で主にフォーカスします、Windows Mixed Reality 没入型 (VR) ヘッドセットには、このコースで学習する内容を適用することもできます。While this course primarily focuses on HoloLens, you can also apply what you learn in this course to Windows Mixed Reality immersive (VR) headsets. (VR) のイマーシブ ヘッドセットはアクセス可能な cameras があるないため、外部のカメラを PC に接続されている必要があります。Because immersive (VR) headsets do not have accessible cameras, you will need an external camera connected to your PC. コースを実行するとき、没入型の (VR) ヘッドセットをサポートするために使用する必要があります変更でノートが表示されます。As you follow along with the course, you will see notes on any changes you might need to employ to support immersive (VR) headsets.

前提条件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

  1. このプロジェクトのビルドの問題の発生を避けるため、強くお勧めのルートまたはルート近くフォルダーでこのチュートリアルで説明したようにプロジェクトを作成すること (長いフォルダー パスはビルド時に問題を発生できます)。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).
  2. 設定して、HoloLens をテストします。Set up and test your HoloLens. 場合は、HoloLens の設定をサポートする必要があるHoloLens のセットアップ記事を参照してください。 確認します。If you need support setting up your HoloLens, make sure to visit the HoloLens setup article.
  3. (場合によって役立ちますユーザーごとにこれらのタスクを実行する) 新しい HoloLens アプリの開発を始めるときに、調整とセンサーのチューニングを実行することをお勧めします。It is a good idea to perform Calibration and Sensor Tuning when beginning developing a new HoloLens App (sometimes it can help to perform those tasks for each user).

調整に関するヘルプを参照するに従ってくださいこのHoloLens 調整記事へのリンクします。For help on Calibration, please follow this link to the HoloLens Calibration article.

センサーの調整に関する詳細についてに従ってくださいこのHoloLens センサー チューニング記事へのリンクします。For help on Sensor Tuning, please follow this link to the HoloLens Sensor Tuning article.

第 1 章 - Azure PortalChapter 1 - The Azure Portal

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

  1. 最初に、ログイン、 Azure Portalします。First, log in to the Azure Portal.

    注意

    Azure アカウントがいない場合は、1 つを作成する必要があります。If you do not already have an Azure account, you will need to create one. クラスルームまたはラボのような状況では、このチュートリアルをフォローしている場合は、講師または新しいアカウントのセットアップについて proctors のいずれかにお問い合わせください。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. ログインした後は、をクリックして新規左上隅にある検索してFace API、キーを押してEnterします。Once you are logged in, click on New in the top left corner, and search for Face API, press Enter.

    検索 api に直面

    注意

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

  3. 新しいページがの説明を入力、 Face APIサービス。The new page will provide a description of the Face API service. このプロンプトの左下にある at、作成ボタンは、このサービスとの関連付けを作成します。At the bottom left of this prompt, select the Create button, to create an association with this service.

    直面 api 情報

  4. クリックすると作成:Once you have clicked on Create:

    1. このサービス インスタンスのご希望の名前を挿入します。Insert your desired name for this service instance.

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

    3. 作成時刻の場合、これは、最初に、適切な価格レベルを選択、 Face API サービス、(F0 という名前)、free レベルを使用することがあります。Select the pricing tier appropriate for you, if this is the first time creating a Face API Service, a free tier (named F0) should be available to you.

    4. 選択、リソース グループか新規に作成します。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.

    5. UWP アプリ、 Person メーカー、場所 '米国西部' の使用が必要です、後で使用します。The UWP app, Person Maker, which you use later, requires the use of 'West US' for location.

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

    7. 選択 作成*。 Select Create*.

      作成直面 api サービス

  5. クリックすると 作成* サービスを作成するを待機する必要があります、これは少し時間がかかる場合があります。Once you have clicked on Create*, you will have to wait for the service to be created, this might take a minute.

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

    サービスの作成の通知

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

    リソース通知に移動します。

  8. 準備ができたら、クリックしてリソースに移動通知では、新しいサービス インスタンスを表示するボタンをクリックします。When you are ready, click Go to resource button in the notification to explore your new Service instance.

    アクセス直面 api キー

  9. 内でのこのチュートリアルでは、アプリケーションは、サービスのサブスクリプション 'key' を使用して、これは、サービスへの呼び出しを実行する必要があります。Within this tutorial, your application will need to make calls to your service, which is done through using your service's subscription 'key'. クイック スタート ページのFace APIサービス、最初のポイントに番号は 1、キーを取得します。From the Quick start page, of your Face API service, the first point is number 1, to Grab your keys.

  10. サービスページが青色のいずれかを選択しますキーハイパーリンク (クイック スタート ページの場合)、またはキーサービスのナビゲーション メニューのリンク (によって示される、左側に、'キー ' アイコン)、キーを表示します。On the Service page select either the blue Keys hyperlink (if on the Quick start page), or the Keys link in the services navigation menu (to the left, denoted by the 'key' icon), to reveal your keys.

    注意

    キーのいずれかの注意を受け取り、後で必要になると、保護します。Take note of either one of the keys and safeguard it, as you will need it later.

第 2 章 – 'Person メーカー' UWP アプリケーションの使用Chapter 2 - Using the 'Person Maker' UWP application

呼ばれる事前構築済みの UWP アプリケーションをダウンロードすることを確認Person メーカーします。Make sure to download the prebuilt UWP Application called Person Maker. このアプリは、このコースでは、単なるツール、以降のプロジェクトが依存している、Azure のエントリを作成するための最終的な製品ではありません。This app is not the end product for this course, just a tool to help you create your Azure entries, which the later project will rely upon.

Person メーカー 、人のユーザーとグループのユーザーに関連付けられている Azure のエントリを作成することができます。Person Maker allows you to create Azure entries, which are associated with people, and groups of people. アプリケーションは、後で使用できる、FaceAPI で追加した人物の顔を認識するための形式で、必要なすべての情報を配置します。The application will place all the needed information in a format which can then later be used by the FaceAPI, in order to recognize the faces of people whom you have added.

[重要]Person メーカー基本的な調整を使用して、サービス呼び出しの 1 分あたりの数を超えていないことを確保しやすく、無料のサブスクリプション レベルします。[IMPORTANT] Person Maker uses some basic throttling, to help ensure that you do not exceed the number of service calls per minute for the free subscription tier. 上部にある緑のテキストは赤に変更され、調整が行われているときに、'ACTIVE' と更新大文字と小文字の場合は、(を待機する 'IN アクティブ' としてもう一度使用すると、更新、顔のサービスへのアクセスを次に続行できます)、アプリケーションの待機だけです。The green text at the top will change to red and update as 'ACTIVE' when throttling is happening; if this is the case, simply wait for the application (it will wait until it can next continue accessing the face service, updating as 'IN-ACTIVE' when you can use it again).

このアプリケーションを使用して、 Microsoft.ProjectOxford.Faceライブラリは、完全にすることができる Face API を使用します。This application uses the Microsoft.ProjectOxford.Face libraries, which will allow you to make full use of the Face API. このライブラリは NuGet パッケージとして無料で使用できます。This library is available for free as a NuGet Package. 詳細についてと似ていますが、Api API リファレンスの記事を参照してください。 確認します。For more information about this, and similar, APIs make sure to visit the API reference article.

注意

これらは、必要な手順だけ、これらの作業を行う方法については、ドキュメントの後半。These are just the steps required, instructions for how to do these things is further down the document. Person メーカーアプリでは、することはできます。The Person Maker app will allow you to:

  • 作成、人物グループを関連付ける複数のユーザーのグループが構成します。Create a Person Group, which is a group composed of several people which you want to associate with it. Azure アカウントでは、複数のユーザー グループをホストできます。With your Azure account you can host multiple Person Groups.

  • 作成、 Person、人物グループのメンバーであります。Create a Person, which is a member of a Person Group. 各ユーザーがさまざまなFaceイメージが関連付けられています。Each person has a number of Face images associated with it.

  • 割り当てるイメージに直面を認識する、Azure の Face API サービスのことを許可する、、対応するfaceします。Assign face images to a Person, to allow your Azure Face API Service to recognize a Person by the corresponding face.

  • トレーニングAPI サービスを Azure に直面します。Train your Azure Face API Service.

ある人を認識するには、このアプリをトレーニングする場合、10 の拡大写真、ユーザー グループに追加したいが各ユーザーの必要があります。 ため注意してください。Be aware, so to train this app to recognize people, you will need ten (10) close-up photos of each person which you would like to add to your Person Group. Windows 10 の Cam アプリは、これらの考慮をするのに役立ちます。The Windows 10 Cam App can help you to take these. それぞれの写真が明確であることを確認する必要があります (ぼかしやを隠ぺいすると、サブジェクトから離れすぎてを避ける)、jpg または png ファイル形式でないより大きいイメージ ファイルのサイズ、写真がある4 MB、いいえより小さい1 KB.You must ensure that each photo is clear (avoid blurring, obscuring, or being too far, from the subject), have the photo in jpg or png file format, with the image file size being no larger 4 MB, and no less than 1 KB.

注意

このチュートリアルに従っている場合は、上、HoloLens を保存する場合は、自分でを考察することはできません、トレーニングの独自の文字盤を使用しないでください。If you are following this tutorial, do not use your own face for training, as when you put the HoloLens on, you cannot look at yourself. 仕事仲間や仲間の学生の顔を使用します。Use the face of a colleague or fellow student.

実行しているPerson メーカー:Running Person Maker:

  1. 開く、 PersonMakerフォルダー をクリックして、 PersonMaker ソリューションファイルを開くVisual Studioします。Open the PersonMaker folder and double click on the PersonMaker solution to open it with Visual Studio.

  2. 1 回、 PersonMaker ソリューションを開いて、ことを確認します。Once the PersonMaker solution is open, make sure that:

    1. ソリューション構成に設定されているデバッグします。The Solution Configuration is set to Debug.

    2. ソリューション プラットフォームに設定されているx86The Solution Platform is set to x86

    3. ターゲット プラットフォームローカル マシンします。The Target Platform is Local Machine.

    4. する必要がありますNuGet パッケージの復元(を右クリックし、ソリューション選択NuGet パッケージの復元)。You also may need to Restore NuGet Packages (right-click the Solution and select Restore NuGet Packages).

  3. クリックしてローカル マシンされ、アプリケーションが開始されます。Click Local Machine and the application will start. 小さい画面に、注意してください、すべてのコンテンツは可能性がありますそれを表示するさらに下にスクロールできますが、表示されません。Be aware, on smaller screens, all content may not be visible, though you can scroll further down to view it.

    人の作成者のユーザー インターフェイス

  4. 挿入、 Azure 認証キー、する必要がありますが、これから、 Face API内での Azure サービスです。Insert your Azure Authentication Key, which you should have, from your Face API service within Azure.

  5. 挿入します。Insert:

    1. IDに割り当てる、人物グループします。The ID you want to assign to the Person Group. ID は、小文字、スペースなしである必要があります。The ID must be lowercase, with no spaces. この id をメモしておいて後で、Unity プロジェクトで必要になります。Make note of this ID, as it will be required later in your Unity project.
    2. 名前に割り当てる、人物グループ(スペースを持つことができます)。The Name you want to assign to the Person Group (can have spaces).
  6. キーを押して人物グループの作成ボタンをクリックします。Press Create Person Group button. 確認メッセージは、ボタンの下に表示されます。A confirmation message should appear underneath the button.

注意

' アクセス拒否エラーが発生した場合は、Azure サービスに設定する場所を確認します。If you have an 'Access Denied' error, check the location you set for your Azure service. 前述のように、このアプリは米国西部"に設計されています。As stated above, this app is designed for 'West US'.

重要

クリックすることできますも表示されます、知られたグループをフェッチボタン: 既にを作成したかどうか、人、新しく作成するのではなく、それを使用するには、グループ、および希望になります。You will notice that you can also click the Fetch a Known Group button: this is for if you have already created a person group, and wish to use that, rather than create a new one. クリックする場合は注意ユーザー グループを作成する既知のグループと、グループをフェッチこれはもします。Be aware, if you click Create a Person Group with a known group, this will also fetch a group.

  1. 挿入、名前Personを作成します。Insert the Name of the Person you want to create.

    1. をクリックして、ユーザーの作成ボタンをクリックします。Click the Create Person button.

    2. 確認メッセージは、ボタンの下に表示されます。A confirmation message should appear underneath the button.

    3. 以前に作成した担当者を削除する場合は、キーを押してし、テキスト ボックスに名前を記述する人物の削除If you wish to delete a person you have previously created, you can write the name into the textbox and press Delete Person

  2. 10 人のグループに追加したいユーザーの写真の場所を確認してください。Make sure you know the location of ten (10) photos of the person you would like to add to your group.

  3. キーを押しての作成とフォルダーを開くをユーザーに関連付けられているフォルダーに Windows エクスプ ローラーを開きます。Press Create and Open Folder to open Windows Explorer to the folder associated to the person. フォルダー内の 10 のイメージを追加します。Add the ten (10) images in the folder. これらで必要がありますJPGまたはPNGファイル形式。These must be of JPG or PNG file format.

  4. をクリックしてAzure に送信します。Click on Submit To Azure. カウンターでは、メッセージを後に完了すると、送信の状態を表示します。A counter will show you the state of the submission, followed by a message when it has completed.

  5. をクリック、カウンターが完了し、確認メッセージが表示されているトレーニングサービスをトレーニングします。Once the counter has finished and a confirmation message has been displayed click on Train to train your Service.

プロセスが完了すると、Unity に移動する準備が整いました。Once the process has completed, you are ready to move into Unity.

第 3 章 - Unity プロジェクトの設定Chapter 3 - Set up the Unity project

次のコード例が複合現実での開発の一般的な設定して、そのため、他のプロジェクトの適切なテンプレートには。The following is a typical set up for developing with mixed reality, and as such, is a good template for other projects.

  1. 開いているUnityクリック新規します。Open Unity and click New.

    新しい Unity プロジェクトを開始します。

  2. これで、Unity プロジェクト名を指定する必要があります。You will now need to provide a Unity Project name. 挿入MR_FaceRecognitionします。Insert MR_FaceRecognition. 必ず、プロジェクトの種類に設定されて3Dします。Make sure the project type is set to 3D. 設定、場所に該当する別の場所 (ただし、ルート ディレクトリに近づけるためのより良い)。Set the Location to somewhere appropriate for you (remember, closer to root directories is better). をクリックし、プロジェクトの作成です。Then, click Create project.

    新しい Unity プロジェクトの詳細を提供します。

  3. 既定値を確認する必要が開いている 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.

    スクリプト エディターの基本設定を更新します。

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

    [設定] ウィンドウ切り替え UWP プラットフォームをビルドします。

  5. 移動してファイル > Build Settingsことを確認してください。Go to File > Build Settings and make sure that:

    1. デバイスを対象にに設定されているHoloLensTarget Device is set to HoloLens

      イマーシブ ヘッドセット、設定ターゲット デバイス任意のデバイスします。For the immersive headsets, set Target Device to Any Device.

    2. ビルドの種類に設定されているD3DBuild 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. シーンを保存し、ビルドに追加します。Save the scene and add it to the build.

      1. これには、選択開くシーンを追加します。Do this by selecting Add Open Scenes. 保存ウィンドウが表示されます。A save window will appear.

        開いているシーン ボタンの追加 をクリック

      2. 選択、新しいフォルダーボタンは、新しいフォルダーを作成する名前を付けますシーンします。Select the New folder button, to create a new folder, name it Scenes.

        新しいスクリプト フォルダーを作成します。

      3. 新たに作成した開くシーンフォルダー、し、ファイル名: テキスト フィールドに「 FaceRecScene、キーを押します保存しますOpen your newly created Scenes folder, and then in the File name: text field, type FaceRecScene, then press Save.

        シーンの新しい名前を付けます。

    7. 設定に残っているBuild Settings、ここでは既定値として残しておく必要があります。The remaining settings, in Build Settings, should be left as default for now.

  6. Build Settingsウィンドウのプレーヤー設定ボタン、領域に関連するパネルが開き、インスペクターが配置されています。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.

    プレーヤー設定を開きます。

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

    1. その他の設定 タブ。In the Other Settings tab:

      1. Scripting ランタイム バージョンべき試験的(.NET 4.6 Equivalent)。Scripting Runtime Version should be Experimental (.NET 4.6 Equivalent). これを変更すると、エディターを再起動する必要があるされます。Changing this will trigger a need to restart the Editor.

      2. バックエンドの scriptingべき .NETScripting Backend should be .NET

      3. API の互換性レベルべき .NET 4.6API Compatibility Level should be .NET 4.6

        その他の設定を更新します。

    2. 内で、発行の設定] タブの [機能、確認してください。Within the Publishing Settings tab, under Capabilities, check:

      • InternetClientInternetClient

      • Web カメラWebcam

        発行の設定を更新しています。

    3. パネル、下の方にXR 設定(次に示します発行設定)、ティック仮想現実サポート、ことを確認、 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.

      X の R の設定を更新します。

  8. 戻りBuild SettingsUnityC#プロジェクトが不要になったグレー; これの横にあるチェック ボックスをオンにします。Back in Build Settings, Unity C# Projects is no longer greyed out; tick the checkbox next to this.

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

  10. シーンとプロジェクトを保存 (ファイル > シーン保存/ファイル > プロジェクトを保存)。Save your Scene and Project (FILE > SAVE SCENE / FILE > SAVE PROJECT).

第 4 章 - メイン カメラのセットアップChapter 4 - Main Camera setup

重要

スキップする場合、 Unity を設定するのこのコンポーネントである、コース、コードにまっすぐコンティニュし、自由にダウンロードこの .unitypackage、としてプロジェクトにインポート、カスタムパッケージします。If you wish to skip the Unity Set up component of this course, and continue straight into code, feel free to download this .unitypackage, and import it into your project as a Custom Package. このパッケージにも、インポートが含まれることに注意してください、 Newtonsoft DLLの中で説明、第 5 章します。Be aware that this package also includes the import of the Newtonsoft DLL, covered in Chapter 5. このインポートから継続することができます第 6 章します。With this imported, you can continue from Chapter 6.

  1. 階層パネルで、選択、 Main Cameraします。In the Hierarchy Panel, select the Main Camera.

  2. すべてのコンポーネントを参照してください。 選択すると、ができる、 Main Cameraで、インスペクター パネルします。Once selected, you will be able to see all the components of the Main Camera in the Inspector Panel.

    1. Camera オブジェクト名前を指定する必要がありますMain Camera (スペルに注意してください)。The Camera object must be named Main Camera (note the spelling!)

    2. Main Cameraタグに設定する必要がありますMainCamera (スペルに注意してください)。The Main Camera Tag must be set to MainCamera (note the spelling!)

    3. 必ず、変換位置に設定されている0, 0, 0Make sure the Transform Position is set to 0, 0, 0

    4. 設定フラグをクリア純色Set Clear Flags to Solid Color

    5. 設定、バック グラウンドにカメラのコンポーネントの色黒、アルファ 0 (コードを 16 進数: #00000000)Set the Background Color of the Camera Component to Black, Alpha 0 (Hex Code: #00000000)

      カメラのコンポーネントを設定します。

第 5 章 – Newtonsoft.Json ライブラリのインポートChapter 5 – Import the Newtonsoft.Json library

重要

'.Unitypackage' をインポートした場合、最後の章、この章をスキップすることができます。If you imported the '.unitypackage' in the last Chapter, you can skip this Chapter.

逆シリアル化し、Bot Service の送受信にオブジェクトをシリアル化するのに役立つダウンロードする必要があります、 Newtonsoft.Jsonライブラリ。To help you deserialize and serialize objects received and sent to the Bot Service you need to download the Newtonsoft.Json library. 既にこの適切な Unity フォルダー構造を持つ構成されています。 互換性のあるバージョンを見つかりますUnity パッケージ ファイルします。You will find a compatible version already organized with the correct Unity folder structure in this Unity package file.

ライブラリをインポートするには。To import the library:

  1. Unity パッケージをダウンロードします。Download the Unity Package.

  2. をクリックして資産パッケージ インポートカスタム パッケージします。Click on Assets, Import Package, Custom Package.

    Newtonsoft.Json ライブラリをインポートします。

  3. Unity パッケージをダウンロードして、し、[開く] をクリックします。Look for the Unity Package you have downloaded, and click Open.

  4. 確認、パッケージのすべてのコンポーネントがオン、をインポートします。Make sure all the components of the package are ticked and click Import.

    Newtonsoft.Json ライブラリをインポートします。

第 6 章 - FaceAnalysis クラスを作成します。Chapter 6 - Create the FaceAnalysis class

FaceAnalysis クラスでは、Azure 顔の認識サービスとの通信に必要なメソッドをホストします。The purpose of the FaceAnalysis class is to host the methods necessary to communicate with your Azure Face Recognition Service.

  • キャプチャ イメージを送信すると、サービス、分析、および内で、顔の識別され既知のユーザーに属しているいずれかを判断します。After sending the service a capture image, it will analyse it and identify the faces within, and determine if any belong to a known person.
  • 既知のユーザーが見つかった場合、このクラスは、シーン内の UI テキストとして、名前を表示します。If a known person is found, this class will display its name as UI text in the scene.

作成する、 FaceAnalysisクラス。To create the FaceAnalysis class:

  1. 右クリックし、 Assets フォルダープロジェクト パネルにあるをクリックして作成 > フォルダーします。Right-click in the Assets Folder located in the Project Panel, then click on Create > Folder. フォルダーを呼び出すスクリプトします。Call the folder Scripts.

    FaceAnalysis クラスを作成します。

  2. 先ほど作成した、開くフォルダーをダブルクリックします。Double click on the folder just created, to open it.

  3. フォルダー内を右クリックし、をクリックして作成 > C#スクリプトします。Right-click inside the folder, then click on Create > C# Script. スクリプトを呼び出すFaceAnalysisします。Call the script FaceAnalysis.

  4. 新しいをダブルクリックします。 FaceAnalysisスクリプトを Visual Studio 2017 で開くことです。Double click on the new FaceAnalysis script to open it with Visual Studio 2017.

  5. 上記の次の名前空間を入力、 FaceAnalysisクラス。Enter the following namespaces above the FaceAnalysis class:

        using Newtonsoft.Json;
        using System.Collections;
        using System.Collections.Generic;
        using System.IO;
        using System.Text;
        using UnityEngine;
        using UnityEngine.Networking;
    
  6. すべての deserialising に使用されるオブジェクトを追加する必要があります。You now need to add all of the objects which are used for deserialising. これらのオブジェクトを追加する必要があるFaceAnalysis (下の中かっこ) の下のスクリプト。These objects need to be added outside of the FaceAnalysis script (beneath the bottom curly bracket).

        /// <summary>
        /// The Person Group object
        /// </summary>
        public class Group_RootObject
        {
            public string personGroupId { get; set; }
            public string name { get; set; }
            public object userData { get; set; }
        }
    
        /// <summary>
        /// The Person Face object
        /// </summary>
        public class Face_RootObject
        {
            public string faceId { get; set; }
        }
    
        /// <summary>
        /// Collection of faces that needs to be identified
        /// </summary>
        public class FacesToIdentify_RootObject
        {
            public string personGroupId { get; set; }
            public List<string> faceIds { get; set; }
            public int maxNumOfCandidatesReturned { get; set; }
            public double confidenceThreshold { get; set; }
        }
    
        /// <summary>
        /// Collection of Candidates for the face
        /// </summary>
        public class Candidate_RootObject
        {
            public string faceId { get; set; }
            public List<Candidate> candidates { get; set; }
        }
    
        public class Candidate
        {
            public string personId { get; set; }
            public double confidence { get; set; }
        }
    
        /// <summary>
        /// Name and Id of the identified Person
        /// </summary>
        public class IdentifiedPerson_RootObject
        {
            public string personId { get; set; }
            public string name { get; set; }
        }
    
  7. Start()Update() メソッドは使用されません、ようになりましたので削除します。The Start() and Update() methods will not be used, so delete them now.

  8. 内で、 FaceAnalysisクラスで、次の変数を追加します。Inside the FaceAnalysis class, add the following variables:

        /// <summary>
        /// Allows this class to behave like a singleton
        /// </summary>
        public static FaceAnalysis Instance;
    
        /// <summary>
        /// The analysis result text
        /// </summary>
        private TextMesh labelText;
    
        /// <summary>
        /// Bytes of the image captured with camera
        /// </summary>
        internal byte[] imageBytes;
    
        /// <summary>
        /// Path of the image captured with camera
        /// </summary>
        internal string imagePath;
    
        /// <summary>
        /// Base endpoint of Face Recognition Service
        /// </summary>
        const string baseEndpoint = "https://westus.api.cognitive.microsoft.com/face/v1.0/";
    
        /// <summary>
        /// Auth key of Face Recognition Service
        /// </summary>
        private const string key = "- Insert your key here -";
    
        /// <summary>
        /// Id (name) of the created person group 
        /// </summary>
        private const string personGroupId = "- Insert your group Id here -";
    

    注意

    置換、キーpersonGroupIdサービス キーと以前に作成したグループの Id。Replace the key and the personGroupId with your Service Key and the Id of the group that you created previously.

  9. 追加、 Awake() メソッドで、クラスを初期化するには、追加、 ImageCapture Main Camera クラス ラベルの作成メソッドを呼び出します。Add the Awake() method, which initialises the class, adding the ImageCapture class to the Main Camera and calls the Label creation method:

        /// <summary>
        /// Initialises this class
        /// </summary>
        private void Awake()
        {
            // Allows this instance to behave like a singleton
            Instance = this;
    
            // Add the ImageCapture Class to this Game Object
            gameObject.AddComponent<ImageCapture>();
    
            // Create the text label in the scene
            CreateLabel();
        }
    
  10. 追加、 CreateLabel() メソッドで、作成、ラベル分析結果を表示するオブジェクト。Add the CreateLabel() method, which creates the Label object to display the analysis result:

        /// <summary>
        /// Spawns cursor for the Main Camera
        /// </summary>
        private void CreateLabel()
        {
            // Create a sphere as new cursor
            GameObject newLabel = new GameObject();
    
            // Attach the label to the Main Camera
            newLabel.transform.parent = gameObject.transform;
    
            // Resize and position the new cursor
            newLabel.transform.localScale = new Vector3(0.4f, 0.4f, 0.4f);
            newLabel.transform.position = new Vector3(0f, 3f, 60f);
    
            // Creating the text of the Label
            labelText = newLabel.AddComponent<TextMesh>();
            labelText.anchor = TextAnchor.MiddleCenter;
            labelText.alignment = TextAlignment.Center;
            labelText.tabSize = 4;
            labelText.fontSize = 50;
            labelText.text = ".";       
        }
    
  11. 追加、 DetectFacesFromImage()GetImageAsByteArray() メソッド。Add the DetectFacesFromImage() and GetImageAsByteArray() method. 前者は後者は、キャプチャしたイメージをバイト配列に変換するために必要な送信済みのイメージのすべての可能な顔を検出するために、顔認識サービスを要求します。The former will request the Face Recognition Service to detect any possible face in the submitted image, while the latter is necessary to convert the captured image into a bytes array:

        /// <summary>
        /// Detect faces from a submitted image
        /// </summary>
        internal IEnumerator DetectFacesFromImage()
        {
            WWWForm webForm = new WWWForm();
            string detectFacesEndpoint = $"{baseEndpoint}detect";
    
            // Change the image into a bytes array
            imageBytes = GetImageAsByteArray(imagePath);
    
            using (UnityWebRequest www = 
                UnityWebRequest.Post(detectFacesEndpoint, webForm))
            {
                www.SetRequestHeader("Ocp-Apim-Subscription-Key", key);
                www.SetRequestHeader("Content-Type", "application/octet-stream");
                www.uploadHandler.contentType = "application/octet-stream";
                www.uploadHandler = new UploadHandlerRaw(imageBytes);
                www.downloadHandler = new DownloadHandlerBuffer();
    
                yield return www.SendWebRequest();
                string jsonResponse = www.downloadHandler.text;
                Face_RootObject[] face_RootObject = 
                    JsonConvert.DeserializeObject<Face_RootObject[]>(jsonResponse);
    
                List<string> facesIdList = new List<string>();
                // Create a list with the face Ids of faces detected in image
                foreach (Face_RootObject faceRO in face_RootObject)
                {
                    facesIdList.Add(faceRO.faceId);
                    Debug.Log($"Detected face - Id: {faceRO.faceId}");
                }
    
                StartCoroutine(IdentifyFaces(facesIdList));
            }
        }
    
        /// <summary>
        /// Returns the contents of the specified file as a byte array.
        /// </summary>
        static byte[] GetImageAsByteArray(string imageFilePath)
        {
            FileStream fileStream = new FileStream(imageFilePath, FileMode.Open, FileAccess.Read);
            BinaryReader binaryReader = new BinaryReader(fileStream);
            return binaryReader.ReadBytes((int)fileStream.Length);
        }
    
  12. 追加、 IdentifyFaces() メソッドで、要求、顔認識サービス以前に送信されたイメージで検出された、既知の顔を識別するためにします。Add the IdentifyFaces() method, which requests the Face Recognition Service to identify any known face previously detected in the submitted image. 要求には、特定の人が名ではなく id が返されます。The request will return an id of the identified person but not the name:

        /// <summary>
        /// Identify the faces found in the image within the person group
        /// </summary>
        internal IEnumerator IdentifyFaces(List<string> listOfFacesIdToIdentify)
        {
            // Create the object hosting the faces to identify
            FacesToIdentify_RootObject facesToIdentify = new FacesToIdentify_RootObject();
            facesToIdentify.faceIds = new List<string>();
            facesToIdentify.personGroupId = personGroupId;
            foreach (string facesId in listOfFacesIdToIdentify)
            {
                facesToIdentify.faceIds.Add(facesId);
            }
            facesToIdentify.maxNumOfCandidatesReturned = 1;
            facesToIdentify.confidenceThreshold = 0.5;
    
            // Serialise to Json format
            string facesToIdentifyJson = JsonConvert.SerializeObject(facesToIdentify);
            // Change the object into a bytes array
            byte[] facesData = Encoding.UTF8.GetBytes(facesToIdentifyJson);
    
            WWWForm webForm = new WWWForm();
            string detectFacesEndpoint = $"{baseEndpoint}identify";
    
            using (UnityWebRequest www = UnityWebRequest.Post(detectFacesEndpoint, webForm))
            {
                www.SetRequestHeader("Ocp-Apim-Subscription-Key", key);
                www.SetRequestHeader("Content-Type", "application/json");
                www.uploadHandler.contentType = "application/json";
                www.uploadHandler = new UploadHandlerRaw(facesData);
                www.downloadHandler = new DownloadHandlerBuffer();
    
                yield return www.SendWebRequest();
                string jsonResponse = www.downloadHandler.text;
                Debug.Log($"Get Person - jsonResponse: {jsonResponse}");
                Candidate_RootObject [] candidate_RootObject = JsonConvert.DeserializeObject<Candidate_RootObject[]>(jsonResponse);
    
                // For each face to identify that ahs been submitted, display its candidate
                foreach (Candidate_RootObject candidateRO in candidate_RootObject)
                {
                    StartCoroutine(GetPerson(candidateRO.candidates[0].personId));
    
                    // Delay the next "GetPerson" call, so all faces candidate are displayed properly
                    yield return new WaitForSeconds(3);
                }           
            }
        }
    
  13. 追加、 GetPerson() メソッド。Add the GetPerson() method. ユーザー id、このメソッドからの要求を提供することで、顔認識サービス識別されたユーザーの名前を返します。By providing the person id, this method then requests for the Face Recognition Service to return the name of the identified person:

        /// <summary>
        /// Provided a personId, retrieve the person name associated with it
        /// </summary>
        internal IEnumerator GetPerson(string personId)
        {
            string getGroupEndpoint = $"{baseEndpoint}persongroups/{personGroupId}/persons/{personId}?";
            WWWForm webForm = new WWWForm();
    
            using (UnityWebRequest www = UnityWebRequest.Get(getGroupEndpoint))
            {
                www.SetRequestHeader("Ocp-Apim-Subscription-Key", key);
                www.downloadHandler = new DownloadHandlerBuffer();
                yield return www.SendWebRequest();
                string jsonResponse = www.downloadHandler.text;
    
                Debug.Log($"Get Person - jsonResponse: {jsonResponse}");
                IdentifiedPerson_RootObject identifiedPerson_RootObject = JsonConvert.DeserializeObject<IdentifiedPerson_RootObject>(jsonResponse);
    
                // Display the name of the person in the UI
                labelText.text = identifiedPerson_RootObject.name;
            }
        }
    
  14. 保存Unity エディターに戻る前に変更します。Remember to Save the changes before going back to the Unity Editor.

  15. Unity エディターで、[プロジェクト] パネルで、Scripts フォルダーから Main Camera オブジェクトに FaceAnalysis スクリプトをドラッグする、階層パネルします。In the Unity Editor, drag the FaceAnalysis script from the Scripts folder in Project panel to the Main Camera object in the Hierarchy panel. 新しいスクリプト コンポーネントは、メイン カメラにので追加されます。The new script component will be so added to the Main Camera.

メイン カメラに FaceAnalysis を配置します。

7 - 章 ImageCapture クラスを作成します。Chapter 7 - Create the ImageCapture class

目的、 ImageCaptureクラスとの通信に必要なメソッドをホストする、 Azure 顔認識サービスをそれに含まれる面を識別する、キャプチャするイメージを分析して既知のユーザーに属しているかどうかを決定します。The purpose of the ImageCapture class is to host the methods necessary to communicate with your Azure Face Recognition Service to analyse the image you will capture, identifying faces in it and determining if it belongs to a known person. 既知のユーザーが見つかった場合、このクラスは、シーン内の UI テキストとして、名前を表示します。If a known person is found, this class will display its name as UI text in the scene.

作成する、 ImageCaptureクラス。To create the ImageCapture class:

  1. 内側を右クリックし、スクリプトフォルダーをクリックし、以前は、作成した作成C#スクリプトします。Right-click inside the Scripts folder you have created previously, then click on Create, C# Script. スクリプトを呼び出すImageCaptureします。Call the script ImageCapture.

  2. 新しいをダブルクリックします。 ImageCaptureスクリプトを Visual Studio 2017 で開くことです。Double click on the new ImageCapture script to open it with Visual Studio 2017.

  3. ImageCapture クラス上の次の名前空間を入力します。Enter the following namespaces above the ImageCapture class:

        using System.IO;
        using System.Linq;
        using UnityEngine;
        using UnityEngine.XR.WSA.Input;
        using UnityEngine.XR.WSA.WebCam;
    
  4. 内で、 ImageCaptureクラスで、次の変数を追加します。Inside the ImageCapture class, add the following variables:

        /// <summary>
        /// Allows this class to behave like a singleton
        /// </summary>
        public static ImageCapture instance;
    
        /// <summary>
        /// Keeps track of tapCounts to name the captured images 
        /// </summary>
        private int tapsCount;
    
        /// <summary>
        /// PhotoCapture object used to capture images on HoloLens 
        /// </summary>
        private PhotoCapture photoCaptureObject = null;
    
        /// <summary>
        /// HoloLens class to capture user gestures
        /// </summary>
        private GestureRecognizer recognizer;
    
  5. 追加、 Awake()Start() クラスを初期化し、ユーザーのジェスチャをキャプチャする HoloLens をできるようにするために必要なメソッド。Add the Awake() and Start() methods necessary to initialise the class and allow the HoloLens to capture the user's gestures:

        /// <summary>
        /// Initialises this class
        /// </summary>
        private void Awake()
        {
            instance = this;
        }
    
        /// <summary>
        /// Called right after Awake
        /// </summary>
        void Start()
        {
            // Initialises user gestures capture 
            recognizer = new GestureRecognizer();
            recognizer.SetRecognizableGestures(GestureSettings.Tap);
            recognizer.Tapped += TapHandler;
            recognizer.StartCapturingGestures();
        }
    
  6. 追加、 TapHandler() 、ユーザーが実行するときに呼び出されるか、タップジェスチャ。Add the TapHandler() which is called when the user performs a Tap gesture:

        /// <summary>
        /// Respond to Tap Input.
        /// </summary>
        private void TapHandler(TappedEventArgs obj)
        {
            tapsCount++;
            ExecuteImageCaptureAndAnalysis();
        }
    
  7. 追加、 ExecuteImageCaptureAndAnalysis() メソッドで、イメージのキャプチャのプロセスが開始されます。Add the ExecuteImageCaptureAndAnalysis() method, which will begin the process of Image Capturing:

        /// <summary>
        /// Begin process of Image Capturing and send To Azure Computer Vision service.
        /// </summary>
        private void ExecuteImageCaptureAndAnalysis()
        {
            Resolution cameraResolution = PhotoCapture.SupportedResolutions.OrderByDescending
                ((res) => res.width * res.height).First();
            Texture2D targetTexture = new Texture2D(cameraResolution.width, cameraResolution.height);
    
            PhotoCapture.CreateAsync(false, delegate (PhotoCapture captureObject)
            {
                photoCaptureObject = captureObject;
    
                CameraParameters c = new CameraParameters();
                c.hologramOpacity = 0.0f;
                c.cameraResolutionWidth = targetTexture.width;
                c.cameraResolutionHeight = targetTexture.height;
                c.pixelFormat = CapturePixelFormat.BGRA32;
    
                captureObject.StartPhotoModeAsync(c, delegate (PhotoCapture.PhotoCaptureResult result)
                {
                    string filename = string.Format(@"CapturedImage{0}.jpg", tapsCount);
                    string filePath = Path.Combine(Application.persistentDataPath, filename);
    
                    // Set the image path on the FaceAnalysis class
                    FaceAnalysis.Instance.imagePath = filePath;
    
                    photoCaptureObject.TakePhotoAsync
                    (filePath, PhotoCaptureFileOutputFormat.JPG, OnCapturedPhotoToDisk);
                });
            });
        }
    
  8. 写真のキャプチャ プロセスが完了したときに呼び出されるハンドラーを追加します。Add the handlers that are called when the photo capture process has been completed:

        /// <summary>
        /// Called right after the photo capture process has concluded
        /// </summary>
        void OnCapturedPhotoToDisk(PhotoCapture.PhotoCaptureResult result)
        {
            photoCaptureObject.StopPhotoModeAsync(OnStoppedPhotoMode);
        }
    
        /// <summary>
        /// Register the full execution of the Photo Capture. If successfull, it will begin the Image Analysis process.
        /// </summary>
        void OnStoppedPhotoMode(PhotoCapture.PhotoCaptureResult result)
        {
            photoCaptureObject.Dispose();
            photoCaptureObject = null;
    
            // Request image caputer analysis
            StartCoroutine(FaceAnalysis.Instance.DetectFacesFromImage());
        }
    
  9. 保存Unity エディターに戻る前に変更します。Remember to Save the changes before going back to the Unity Editor.

第 8 章 - ソリューションをビルドします。Chapter 8 - Building the solution

アプリケーションの徹底的なテストを実行するには、必要がありますをサイドロードすること、HoloLens にします。To perform a thorough test of your application you will need to sideload it onto your HoloLens.

実行する前にいることを確認します。Before you do, ensure that:

  • 第 3 章で説明されているすべての設定が正しく設定されます。All the settings mentioned in the Chapter 3 are set correctly.
  • スクリプトFaceAnalysis Main Camera オブジェクトに接続されています。The script FaceAnalysis is attached to the Main Camera object.
  • 両方の認証キーグループ Id内で設定されている、 FaceAnalysisスクリプト。Both the Auth Key and Group Id have been set within the FaceAnalysis script.

これをポイントするソリューションをビルドする準備が整いました。A this point you are ready to build the Solution. ソリューションが作成されると、アプリケーションをデプロイする準備ができます。Once the Solution has been built, you will be ready to deploy your application.

ビルド プロセスを開始します。To begin the Build process:

  1. 現在のシーンを保存するには、保存、ファイルをクリックします。Save the current scene by clicking on File, Save.

  2. 開いているシーンを追加するファイル、ビルド設定 をクリックしてに移動します。Go to File, Build Settings, click on Add Open Scenes.

  3. Unity のティックにことを確認C#プロジェクト。Make sure to tick Unity C# Projects.

    Visual Studio からソリューションをデプロイします。

  4. ビルドがキーを押します。Press Build. これを行う時に Unity が作成しにアプリをビルドするフォルダーを選択する必要がある、ファイル エクスプ ローラー ウィンドウを起動します。Upon doing so, Unity will launch a File Explorer window, where you need to create and then select a folder to build the app into. Unity プロジェクト内で次に、そのフォルダーを作成し、アプリを呼び出します。Create that folder now, within the Unity project, and call it App. 選択したアプリのフォルダー、フォルダーの選択キーを押します。Then with the App folder selected, press Select Folder.

  5. Unity では、アプリ フォルダーに、プロジェクトを構築が開始されます。Unity will begin building your project, out to the App folder.

  6. 1 回 Unity には、(少し時間がかかる場合があります) ビルドが完了した、ビルドの場所にファイル エクスプ ローラー ウィンドウが開きます。Once Unity has finished building (it might take some time), it will open a File Explorer window at the location of your build.

    Visual Studio からソリューションをデプロイします。

  7. [アプリ] フォルダーを開き、(上記のよう、MR_FaceRecognition.sln) 新しいプロジェクトのソリューションを開きます。Open your App folder, and then open the new Project Solution (as seen above, MR_FaceRecognition.sln).

第 9 章 - アプリケーションのデプロイChapter 9 - Deploying your application

HoloLens の展開。To deploy on HoloLens:

  1. 必要になります、HoloLens の IP アドレス (リモート) を展開し、HoloLens をことを確認するには開発者モードします。You will need the IP Address of your HoloLens (for Remote Deploy), and to ensure your HoloLens is in Developer Mode. これには、次の手順を実行します。To do this:

    1. ソックスを着けずに、HoloLens 中を開く、設定します。Whilst wearing your HoloLens, open the Settings.
    2. 移動してネットワークとインターネット > Wi-fi > 詳細オプションGo to Network & Internet > Wi-Fi > Advanced Options
    3. 注、 IPv4アドレス。Note the IPv4 address.
    4. 次に移動します設定、し更新とセキュリティ > 開発者向けNext, navigate back to Settings, and then to Update & Security > For Developers
    5. 開発者モードを設定します。Set Developer Mode On.
  2. 新しい Unity ビルドに移動します (、アプリフォルダー) とソリューション ファイルを開くとVisual Studioします。Navigate to your new Unity build (the App folder) and open the solution file with Visual Studio.

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

  4. ソリューション プラットフォーム で選択x86リモート マシンします。In the Solution Platform, select x86, Remote Machine.

    Visual Studio からソリューションをデプロイします。

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

  6. アプリが、起動する準備ができて、HoloLens にインストールされているアプリの一覧に表示されます。Your App should now appear in the list of installed apps on your HoloLens, ready to be launched!

注意

イマーシブ ヘッドセットを展開するには、設定、ソリューション プラットフォームローカル マシン、設定と、構成デバッグx86として、プラットフォームします。To deploy to immersive headset, set the Solution Platform to Local Machine, and set the Configuration to Debug, with x86 as the Platform. ローカルにデプロイし、machine を使用して、ビルド メニューの選択ソリューションの配置します。Then deploy to the local machine, using the Build menu, selecting Deploy Solution.

第 10 章 - アプリケーションの使用Chapter 10 - Using the application

  1. HoloLens、ソックスを着けずに、アプリを起動します。Wearing the HoloLens, launch the app.

  2. 登録したユーザーを見て、 Face APIします。Look at the person that you have registered with the Face API. 次のことを確認します。Make sure that:

    • 個人の顔がないと、遠と明確に表示The person's face is not too distant and clearly visible
    • 環境光が暗すぎます。The environment lighting is not too dark
  3. 個人の写真をキャプチャするのにには、タップ ジェスチャを使用します。Use the tap gesture to capture the person's picture.

  4. 分析要求送信し、応答を受信するアプリを待ちます。Wait for the App to send the analysis request and receive a response.

  5. ユーザーが正常に認識された場合、ユーザーの名前は、UI テキストとして表示されます。If the person has been successfully recognized, the person's name will appear as UI text.

  6. 数秒ごと、タップ ジェスチャを使用して、キャプチャ プロセスを繰り返すことができます。You can repeat the capture process using the tap gesture every few seconds.

完成した Azure Face API アプリケーションYour finished Azure Face API Application

これで、イメージ内の顔を検出して、任意の既知の顔を識別する顔認識の Azure サービスを利用している mixed reality アプリを構築します。Congratulations, you built a mixed reality app that leverages the Azure Face Recognition service to detect faces within an image, and identify any known faces.

このコースを完了するの結果

ボーナスの演習Bonus exercises

手順 1Exercise 1

Azure の Face API 1 つのイメージで最大 64 個の顔を検出するのに十分な強力です。The Azure Face API is powerful enough to detect up to 64 faces in a single image. アプリケーションを拡張で他の多くの人々 の間で、2 つまたは 3 つの顔を認識する可能性があります。Extend the application, so that it could recognize two or three faces, amongst many other people.

手順 2Exercise 2

Azure の Face APIがバックアップのすべての種類の属性情報を提供することもできます。The Azure Face API is also able to provide back all kinds of attribute information. これをアプリケーションに統合します。Integrate this into the application. これは、さらに興味深いと組み合わせて、 Emotion APIします。This could be even more interesting, when combined with the Emotion API.