MR and Azure 304:顔認識

こんにちは、ナレコム菅井です。

今回はMR and Azure 304のアプリを作っていきます。

開発環境は以下の通りです。
・Windows
・Unity 2017.4.11f1
・Visual Studio 2017
・HoloLens

目標はAzure Cognitive ServiceとBluetooth対応キーボードを使って顔認識アプリを作ることです。それではさっそく始めていきましょう!

0.準備


はじめに、以下の順に準備を進めていきます。

ステップ1. Azure PortalでFace APIを追加する。
ステップ2. Person MakerでFace APIに顔を学習させる。

ステップ1
1. Azure Portalにログインします。

2. [リソースの作成]からFace APIと検索します。下のようなアイコンが出てきたら開きます。

3. Face APIの説明画面にスライドしますので、[作成]をクリックします。

4. Face APIに関する情報を入力する画面になりますので、入力していきます(※記入例です)。ただし、[場所]は米国西部とします。入力し終わったら、[作成]をクリックします。

5. お知らせタブを開きます。デプロイが終了したら、[リソースへ移動]します。

6. [Quick start]->[1 キーを取得する]->[key]をクリックし、キーを確認します。これは後ほど使いますのでメモしておきます。

ステップ2
1. Person Makerをダウンロードします。

2. ダウンロードしたPerson Makerフォルダー内のPerson Makerをダブルクリックします。Visual Studioが開きます。

3. [ソリューションの構成]をDebug、[ソリューション プラットフォーム]をx86、[ターゲットプラットフォーム]をローカルコンピュータに変更します。

4. (おそらく)画面右側にある[ソリューションエクスプローラー]から[ソリューション’Person Maker’]を右クリックし[NuGetパッケージの復元]をクリックします。

5. ローカルコンピューターの左側の再生▶︎をおします。

6. PERSON MAKERが開きますので必要な項目を入力していきます。
a. 1で先ほどのFace API の鍵を入れます。
b. 2で Person Group IDとPerson Group Nameを決めます。入力し終わったら、[Create a Person Name]をクリックします。※Person Group IDは後ほど使います。

c. 3で認識したい人物の名前を入力します。入力し終わったら、[Create a Person ]をクリックします。※仮名で大丈夫です。
d. 5で[Create and Open Folder]をクリックして、認識したい人物の画像を10枚以上(多いとなお良い)を選択し、6の[Submit To Azure]をクリックします。無事送信された旨が表示されるたらオッケーです。
e. 7で[Train]をクリックします。学習された旨が表示されるはずです。

以上で準備完了です。

1.Unityの設定


続いてUnityの設定を行っていきます。以下の手順で進めていきましょう。

1.Unityを開き、[New]から新しいプロジェクトを作成します。
名前をFaceRecognitionとして、[Create project]をクリックします。

2. [Build Settings..]からさまざまな項目を編集します。
[File]->[Build Settings..]を開きます。

a.プラットフォームの変更
[PC, Mac & Linux Standalone]を[Universal Windows Platform]に変更し、[Switch Platform]をクリックします

b.[Player Settings..]を編集します。
[Player Settings..]をクリックします。

そのあと[Other Settings]、[Publishing Settings]->[Capabilities]、[XR Settings]を以下のように設定します。

続いて、[Unity C#]にチェックを入れます。

[Build Settings..]の変更は以上です。

3. 続いてシーンを保存します。[Add Open Scenes]をクリックして、[新しいフォルダー]を選択しScenesと名前をつけた後、そのフォルダー内に名前をSceneとして[保存]します。

2.シーンの編集


デフォルトで備わっているMain Cameraの代わりにHoloToolkitを使います。使うものをこちらから以下のToolkitをダウンロードしてください。
HoloToolkit-Unity-2017.4.2.0.unitypackage
HoloToolkit-Unity-Example-2017.4.2.0.unitypackage

a. [Assets]->[Import Package]->[Custom Package..]からダウンロードしたpackageを二つともインポートします。

b. [Hierarchy]->[Main camera]をdeleteします。

c. [Project]から以下の2つを検索し、[Hierarchy]パネルへD&Dします。
・MixedRealityCameraParent
・InputManger

d. [Hierarchy]->[MixedRealityCameraParent]->[MixedRealityCamera]の[Inspector]を編集していきます。
[Camera]
Clear Flags : Solid Color

[Mixed Reality Camera Manager]
Clear Flags : color
Near clip : 0.2
Clear Flags : color

 

3.スクリプトの作成


ここでは以下の2つのスクリプトを作ります。
・FaceAnalysis
・ImageCaptureFace

スクリプトの作り方はまず、すべてのスクリプトをまとめておくフォルダーを作成します。[Project]->[Create]をクリックし、[Folder]を選択して新しいフォルダーを作ります。名前をScriptsとします。続いて[Project]->[Create]->[C# Script]をクリックし、クラス名をつけていきます。

・FaceAnalysis
このスクリプトはAzure Face Recognition Serviceとやりとりしたり、データをシリアライズ、デシリアライズしたりするためのクラスやメソッドが記述されています。ここで0.準備で取得したFace APIの鍵と入力したPerson Group IDを使います。–Insert your key–、–Insert your ID–へそれぞれ挿入します。コードは以下の通りです。

記述し終わったら、スクリプトを[Hierarchy]->[MixedRealityCameraParent]->[MixedRealityCamera]へD&Dします。

・ImageCaptureFace
このクラスにはtapジェスチャーやキーボード上の操作を利用して認識を始めるためのメソッドや画像の情報などを利用するためのメソッドなどが記述されています。コードは以下の通りです。

4.ビルド


[File]->[Build Settings..]->[Build]の順に選択します。新しいフォルダー(App)を作ります。このフォルダーを選択し、保存します。

この後の手順についてはこちらを参照してください。

Unity上で実行した時の様子です。

続いてHoloLens上で実行していきたいと思います。Bluetoothキーボードの接続方法はこちらを参考にしました(同じキーボードを使いました)。

HoloLensで実行した時の様子です。エンターキーで画像のキャプチャを始めます。対象の人物にカーソルを合わせてエンターキーを押しましょう。

以上となります。お疲れ様でした。

この記事を書いた人

azure-recipe-user