顔認識のデータ構造
この記事では、Face サービスで顔認識操作に使用されるデータ構造について説明します。 これらのデータ構造は、顔と人物に関するデータを保持します。
注意事項
Microsoft の責任ある AI の原則をサポートするために、Face サービスの利用は、適格性と使用基準に基づいて制限されています。 Face サービスは、Microsoft が管理する顧客とパートナーのみが利用できます。 顔認識受付フォームを使用して利用申請を行ってください。 詳細については、「Face の制限付きアクセス」ページを参照してください。
Identify で使用されるデータ構造
Face Identify API では、コンテナー データ構造を使用して、Person オブジェクトの形式で顔認識データ 保持します。 この目的には、最も古いものから最新のものまで、3 種類のコンテナーが挙げられます。 常に最新のものを使用することをお勧めします。
PersonGroup
PersonGroup は、最小のコンテナー データ構造です。
- PersonGroup を作成するときには認識モデルを指定する必要があります。 その PersonGroup に顔が追加されるときに、そのモデルを使用して処理されます。 このモデルでは、detect API からの Face ID とモデル バージョンを一致させる必要があります。
- Train API を呼び出して、新しい顔データを Identify API の結果に反映させる必要があります。 これには、顔の追加/削除、人物の追加/削除が含まれます。
- 無料レベルのサブスクリプションでは、最大 1,000 人を保持できます。 S0 有料のサブスクリプションでは、最大 10,000 人を保持できます。
PersonGroupPerson は、識別されるユーザーを表します。 最大 248 個の顔を保持できます。
大規模人物グループ
LargePersonGroup は、最大 100 万個のエンティティ (S0 レベルのサブスクリプションの場合) をサポートするために導入された最新のデータ構造です。 これは、大規模なデータをサポートするように最適化されています。 PersonGroup の機能の大部分を共有しています。認識モデルは作成時に指定する必要があり、使用する前に Train API を呼び出す必要があります。
人物ディレクトリ
PersonDirectory は、この種の最新のデータ構造です。 これは、より大きなスケールとより高い精度をサポートしています。 各 Azure Face リソースには、既定の 1 つの PersonDirectory データ構造があります。 これは、PersonDirectoryPerson オブジェクトのフラットなリストです。最大 2,000 万個を保持できます。
PersonDirectoryPerson は、識別されるユーザーを表します。 古い PersonGroupPerson モデルに基づいて、異なる認識モデルの顔を同じ人物に追加できます。 ただし、Identify 操作では、同じ認識モデルで取得した顔のみを照合できます。
DynamicPersonGroup は、PersonDirectoryPerson を動的に参照できる軽量のデータ構造です。 トレーニング操作は必要ありません。データが更新されるとすぐに、Identify API で使用する準備が整います。
また、Identify 操作にインプレース人物 ID リストを使用することもできます。 これにより、識別するグループを絞り込んで指定できます。 これを手動で行うことで、大規模なグループの識別パフォーマンスを向上させることができます。
上記のデータ構造は一緒に使用できます。 次に例を示します。
- アクセス制御システムでは、PersonDirectory で会社のすべての従業員を表しておいて、より小さい DynamicPersonGroup で建物の 1 つのフロアにアクセスできる従業員のみを表すことができます。
- フライト搭乗システムでは、PersonDirectory で航空会社のすべての顧客を表し、DynamicPersonGroup で特定のフライトの乗客のみを表すことができます。 インプレース人物 ID リストは、直前に変更を行った乗客を表します。
詳細については、PersonDirectory のハウツー ガイドを参照してください。 LargePersonGroup と PersonDirectory との簡単な比較は次のとおりです。
詳細 | LargePersonGroup | PersonDirectory |
---|---|---|
容量 | LargePersonGroup は、最大 100 万個の PersonGroupPerson オブジェクトを保持できます。 | コレクションには、最大 2,000 万個の PersonDirectoryPerson ID を格納できます。 |
PersonURI | /largepersongroups/{groupId}/persons/{personId} |
(/v1.0-preview-or-above)/persons/{personId} |
所有権 | PersonGroupPerson オブジェクトは、属している LargePersonGroup によって排他的に所有されます。 同じ ID を複数のグループに保持する場合は、グループごとに個別に大規模人物グループの人物を作成し、大規模人物グループの人物の顔を追加する必要があります。これにより、1 組の人物 ID が複数のグループで作成されます。 | PersonDirectoryPerson オブジェクトは、PersonDirectory 内にフラットなリストとして直接格納されます。 インプレース人物 ID リストを使用して、人物ディレクトリから識別するか、必要に応じて動的人物グループを作成し、組み合わせてそのグループに人物を組み込むことができます。 作成された PersonDirectoryPerson オブジェクトは、重複することなく複数の DynamicPersonGroup で参照できます。 |
モデル | 認識モデルは、LargePersonGroup によって決定されます。 すべての PersonGroupPerson オブジェクトの新しい顔は、追加されるときにこのモデルに関連付けられます。 | PersonDirectoryPerson オブジェクトは、認識モデルごとに別々のストレージを準備します。 新しい顔を追加するときにモデルを指定できますが、Identify API は、クエリの顔に関連付けられている、同じ認識モデルで取得された顔のみを照合できます。 |
トレーニング | Train API を呼び出して、新しい顔/人物データを Identify API の結果に反映させる必要があります。 | トレーニング呼び出しを行う必要はありませんが、Add Person Face などの API は実行時間の長い操作になります。つまり、応答ヘッダー "Operation-Location" を使用して更新が完了したかどうかを確認する必要があります。 |
クリーンアップ | Delete Large Person Group は、それが保持しているすべての PersonGroupPerson オブジェクトとその顔データも削除します。 | Delete Dynamic Person Group は、PersonDirectoryPerson のみを参照しません。 実際の人物と顔データを削除するには、「Person を削除する」を参照してください。 |
Find Similar で使用されるデータ構造
Identify API とは異なり、Find Similar API は、 Person の登録を設定するのが困難なアプリケーション (ビデオ分析やフォト アルバム分析からキャプチャされた顔画像など) で使用されます。
FaceList
FaceList は、保存された顔のフラットなリストを表します。 最大 1,000 個の顔を保持できます。
LargeFaceList
LargeFaceList は、最大 1,000,000 個の顔を保持できる新しいバージョンです。
次のステップ
顔のデータ構造を理解したら、Identify 操作でそれらを使用するスクリプトを記述してください。