注意

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 304:顔認識MR and Azure 304: Face recognition

このコースの完了の結果

このコースでは、Microsoft Face API と共に Azure Cognitive Services を使用して、mixed reality アプリケーションに顔認識機能を追加する方法について説明します。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.

このコースを完了すると、mixed reality 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 ベースの mixed reality アプリケーションに結果を取得する方法について説明します。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. このコースは、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.

デバイスのサポート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) ヘッドセットにはアクセス可能なカメラがないため、外部カメラが 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

Azure でFace APIサービスを使用するには、アプリケーションで使用できるようにサービスのインスタンスを構成する必要があります。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 アカウントを持っていない場合は、アカウントを作成する必要があります。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. ログインしたら、左上隅にある [新規] をクリックし、 Face APIを検索して、 enter キーを押します。Once you are logged in, click on New in the top left corner, and search for Face API, press Enter.

    face api の検索

    注意

    新しいポータルで、 Newという単語がリソースの作成に置き換えられました。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 the bottom left of this prompt, select the Create button, to create an association with this service.

    face api 情報

  4. 作成:Once you have clicked on Create:

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

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

    3. 適切な価格レベルを選択します。これがFace API サービスを初めて作成する場合は、free レベル (F0) を使用できます。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アプリでは、場所として "米国西部" を使用する必要があります。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*.

      face 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.

Chapter 2-"Person Maker" UWP アプリケーションの使用Chapter 2 - Using the 'Person Maker' UWP application

Person Maker」というビルド済みの UWP アプリケーションをダウンロードしてください。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.

個人のメーカーでは、ユーザーとグループに関連付けられている 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.

:個人所有者は、いくつかの基本的な調整を使用して、無料サブスクリプションレベルで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. 調整が行われると、上部の緑色のテキストが赤に変わり、' アクティブ ' として更新されます。この場合は、アプリケーションを待機するだけです (これは、次に顔サービスへのアクセスが続行されるまで待機し、再度使用できるように "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).

このアプリケーションでは、 ProjectOxfordライブラリを使用します。これにより、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. 個人のメーカーアプリでは、次のことが可能です。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. 各ユーザーには、多数のイメージが関連付けられています。Each person has a number of Face images associated with it.

  • 顔イメージ担当者に割り当てて、Azure Face API サービスが対応するによって個人を認識できるようにします。Assign face images to a Person, to allow your Azure Face API Service to recognize a Person by the corresponding face.

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

このため、このアプリをトレーニングしてユーザーを認識させるには、個人グループに追加する各ユーザーの 10 (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. 各写真が明確になっていることを確認する必要があります (ぼかし、覆い、または大きすぎないようにしてください)。また、画像ファイルのサイズが4 MB以下で、 1 KB未満の画像を jpg または png ファイル形式にしてください。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.

実行中のユーザーのメーカー:Running Person Maker:

  1. [個人] フォルダーを開き、[個人]ソリューションをダブルクリックしてVisual Studioで開きます。Open the PersonMaker folder and double click on the PersonMaker solution to open it with Visual Studio.

  2. 個人メーカーソリューションが開いたら、次のことを確認してください。Once the PersonMaker solution is open, make sure that:

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

    2. ソリューションプラットフォームx86に設定されているThe 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. InsertInsert:

    1. Person グループに割り当てる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. Person グループに割り当てる名前(スペースを含めることができます)。The Name you want to assign to the Person Group (can have spaces).
  6. [ Person Group を作成] ボタンをクリックします。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. 作成するユーザー名前を挿入します。Insert the Name of the Person you want to create.

    1. [ Create Person ] ボタンをクリックします。Click the Create Person button.

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

    3. 以前に作成したユーザーを削除する場合は、名前をテキストボックスに入力し、del personキーを押します。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. [作成] をクリックしてフォルダーを開き、ユーザーに関連付けられているフォルダーにエクスプローラーを開きます。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

次に示すのは、mixed reality で開発するための一般的な設定です。そのため、他のプロジェクトに適したテンプレートです。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. 次に、[ファイル > ビルド設定] に移動し、[プラットフォームの切り替え] ボタンをクリックして、プラットフォームをユニバーサル Windows プラットフォームに切り替えます。Next, go to File > Build Settings and switch the platform to Universal Windows Platform, by clicking on the Switch Platform button.

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

  5. [ファイル > ビルド設定] にアクセスし、次のことを確認します。Go to File > Build Settings and make sure that:

    1. ターゲットデバイスHoloLensに設定されていますTarget Device is set to HoloLens

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

    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. シーンを保存し、ビルドに追加します。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. それ以外の設定は、[ビルド設定] の [既定] のままにしておきます。The remaining settings, in Build Settings, should be left as default for now.

  6. [ビルドの設定] ウィンドウで、[プレーヤーの設定] ボタンをクリックします。これにより、インスペクターが配置されている領域の関連パネルが開きます。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. スクリプト ランタイムのバージョン実験的である必要があります (.net 4.6 と同等)。Scripting Runtime Version should be Experimental (.NET 4.6 Equivalent). これを変更すると、エディターを再起動する必要が生じます。Changing this will trigger a need to restart the Editor.

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

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

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

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

      • InternetClientInternetClient

      • カメラWebcam

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

    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.

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

  8. ビルド設定に戻ります 。 C# Unity プロジェクトはグレーで表示されなくなりました。このの横にあるチェックボックスをオンにします。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. このパッケージには、 5 章で説明されているNEWTONSOFT DLLのインポートも含まれることに注意してください。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. [階層] パネルで、メインカメラを選択します。In the Hierarchy Panel, select the Main Camera.

  2. 選択すると、メインカメラのすべてのコンポーネントが [インスペクター] パネルに表示されます。Once selected, you will be able to see all the components of the Main Camera in the Inspector Panel.

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

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

    3. 変換位置0、0、0に設定されていることを確認します。Make 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 サービスに送信されたオブジェクトを逆シリアル化およびシリアル化するには、 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 ライブラリをインポートする

Chapter 6-FaceAnalysis クラスの作成Chapter 6 - Create the FaceAnalysis class

FaceAnalysis クラスの目的は、Azure Face 認識サービスとの通信に必要なメソッドをホストすることです。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. [プロジェクト] パネルにある [アセット] フォルダーを右クリックし、[フォルダー作成 > ] をクリックします。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 -";
    

    注意

    キーおよびユーザーをサービスキーで置き換え、前に作成したグループの Id に置き換えます。Replace the key and the personGroupId with your Service Key and the Id of the group that you created previously.

  9. Initialises () メソッドを追加します。このメソッドは、クラスを作成し、 Imagecaptureクラスをメインカメラに追加して、ラベルの作成メソッドを呼び出します。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 () メソッドを追加します。このメソッドは、分析結果を表示するLabelオブジェクトを作成します。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. 検出された 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. このメソッドは、person 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 エディターで、[プロジェクト] パネルの [スクリプト] フォルダーから、[階層] パネルのメインカメラオブジェクトに 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. 先ほど作成したScriptsフォルダー内を右クリックし、[作成]、 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. クラスを初期化するために必要な起動前 () および開始 () メソッドを追加し、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. ユーザーがTapジェスチャを実行したときに呼び出される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. 次のように、 Executeimagecapの Andanalysis () メソッドを追加します。これにより、イメージキャプチャのプロセスが開始されます。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は、メインカメラオブジェクトにアタッチされます。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. 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 を参照)。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 が開発者モードになっていることを確認するには、HOLOLENS の IP アドレス (リモートデプロイ用) が必要です。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. 次に、[ビルド] メニューの [ソリューションの配置] をクリックして、ローカルコンピューターに配置します。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. Tap ジェスチャを使用して、人物の写真をキャプチャします。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. 数秒ごとに tap ジェスチャを使用して、キャプチャプロセスを繰り返すことができます。You can repeat the capture process using the tap gesture every few seconds.

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

これで、Azure Face 認識サービスを活用してイメージ内の顔を検出し、既知の顔を識別する、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.