顔認識モデルを指定する

注意

Microsoft の責任ある AI の原則をサポートするために、Face サービスの利用は、適格性と使用基準に基づいて制限されています。 Face サービスは、Microsoft が管理する顧客とパートナーのみが利用できます。 顔認識受付フォームを使用して利用申請を行ってください。 詳細については、「Face の制限付きアクセス」ページを参照してください。

このガイドでは、Azure AI Face サービスを使用した顔の検出、識別、および類似検索のための顔認識モデルを指定する方法を示します。

Face サービスは、機械学習モデルを使って、画像で見えている人間の顔に対して操作を実行します。 お客様からのフィードバックや研究の進展に基づいてモデル精度の改善を続けており、これらの改善をモデルの更新として提供します。 開発者は、使用する顔認識モデルのバージョンを指定して、ユース ケースに最も適したモデルを選択できます。

モデルの互換性

Azure AI Face サービスには、4 つの認識モデルが用意されています。 モデル recognition_01 (2017 年公開)、recognition_02 (2019 年公開)、recognition_03 (2020 年公開) は、これらのモデルを使って作成された FaceList または PersonGroup を使っているお客様に下位互換性を保証するため、引き続きサポートされています。 FaceList または PersonGroup では、常に、それが作成された認識モデルが使われ、新しい顔が追加されるとこのモデルに関連付けられます。 作成後にこれを変更することはできず、お客様は、対応する認識モデルを、対応する FaceList または PersonGroup と一緒に使う必要があります。

都合のよいときに新しい認識モデルに移行することはできますが、選択した認識モデルを使用して、新しい FaceList と PersonGroup を作成する必要があります。

recognition_04 モデル (2021 年公開) は、現在使用できる最も正確なモデルです。 新しいお客様の場合は、このモデルを使用することをお勧めします。 Recognition_04 を使うと、類似性比較と人物照合比較の両方の正確性が向上します。 Recognition_04 を使用すると、フェイス カバー (サージカル マスク、N95 マスク、布マスク) を装着した登録されているユーザーの認識が向上します。 最新の detection_03 モデルを使用して、登録されているユーザーがフェイス カバーを装着しているかどうかを検出する、安全でシームレスなユーザー エクスペリエンスを構築できるようになりました。 その後、最新の recognition_04 モデルを使用して、その ID を識別できます。 各モデルは他のモデルとは独立して動作します。1 つのモデルに対して設定された信頼度しきい値は、他の認識モデルで比較することを目的としたものではありません。

以下、モデルの競合を回避しながら、さまざまな顔の操作で選択されたモデルを指定する方法について説明します。 上級ユーザーであり、最新モデルに切り替えるべきかどうかを判断したい場合は、「さまざまなモデルを評価する」セクションに進みます。 新しいモデルの評価や、現在のデータ セットを使用した結果の比較を行うことができます。

前提条件

AI による顔の検出と識別の概念を理解している必要があります。 そうでない場合は、まずこれらのガイドを参照してください。

指定されたモデルで顔を検出する

顔の検出では、人間の顔の視覚的な目印を識別し、それらの境界ボックスの位置を見つけます。 また、顔の特徴を抽出して最大 24 時間一時的に保存し、識別に使用します。 この情報のすべてが 1 つの顔の表現を形成します。

認識モデルは顔の特徴の抽出時に使用されるので、検出操作を実行するときにモデルのバージョンを指定できます。

Face - Detect API を使用するときは、recognitionModel パラメーターを使用してモデルのバージョンを割り当てます。 使用できる値は次のとおりです。

  • recognition_01
  • recognition_02
  • recognition_03
  • recognition_04

必要に応じて、returnRecognitionModel パラメーター (既定値は false) を指定し、recognitionModel が応答で返されるかどうかを指定できます。 したがって、Face - Detect REST API の要求 URL は次のようになります。

https://westus.api.cognitive.microsoft.com/face/v1.0/detect[?returnFaceId][&returnFaceLandmarks][&returnFaceAttributes][&recognitionModel][&returnRecognitionModel]&subscription-key=<Subscription key>

クライアント ライブラリを使用している場合、バージョンを表す文字列を渡すことによって recognitionModel の値を割り当てることができます。 未割り当てのままにした場合は、既定のモデル バージョン recognition_01 が使用されます。 .NET クライアント ライブラリの次のコード例を参照してください。

string imageUrl = "https://news.microsoft.com/ceo/assets/photos/06_web.jpg";
var faces = await faceClient.Face.DetectWithUrlAsync(url: imageUrl, returnFaceId: true, returnFaceLandmarks: true, recognitionModel: "recognition_01", returnRecognitionModel: true);

Note

後の手順で顔認識シナリオを有効にするには、returnFaceId パラメーターを true に設定する必要があります。

指定されたモデルを使って顔を識別する

Face サービスは画像から顔データを抽出し、(Add face API の呼び出しなどによって) それを Person オブジェクトに関連付けることができます。また、複数の Person オブジェクトを PersonGroup にまとめて格納することができます。 次に、Face - Identify の呼び出しによって) 新しい顔を PersonGroup と比較し、そのグループ内の一致した人物を識別することができます

PersonGroup は、すべての Person に対して 1 つの一意な認識モデルを持つ必要があります。これは、グループを作成する (PersonGroup - Create または LargePersonGroup - Create) ときに recognitionModel パラメーターを使用して指定できます。 このパラメーターを指定しない場合、元の recognition_01 モデルが使用されます。 グループは常に、その作成時に指定された認識モデルを使用します。新しい顔が追加されると、その顔はこのモデルに関連付けられます。 グループの作成後にこれを変更することはできません。 PersonGroup に設定されているモデルを調べるには、returnRecognitionModel パラメーターを true に設定して PersonGroup - Get API を使用します。

.NET クライアント ライブラリの次のコード例を参照してください。

// Create an empty PersonGroup with "recognition_04" model
string personGroupId = "mypersongroupid";
await faceClient.PersonGroup.CreateAsync(personGroupId, "My Person Group Name", recognitionModel: "recognition_04");

このコードでは、mypersongroupid という ID の PersonGroup を作成し、recognition_04 モデルを使用して顔の特徴を抽出するように設定します。

それに対応して、顔検出時に (Face - Detect API によって) この PersonGroup と比較するために使用するモデルを指定する必要があります。 使用するモデルは常に PersonGroup の設定と一致している必要があります。していない場合、互換性のないモデルが原因で操作が失敗します。

Face - Identify API に変更はありません。検出でモデルのバージョンを指定することだけが必要です。

指定されたモデルを使って似た顔を検索する

類似検索のための認識モデルも指定できます。 FaceList - Create API または LargeFaceList - CreateFaceList を作成するときに、recognitionModel でモデルのバージョンを割り当てることができます。 このパラメーターを指定しない場合、既定では recognition_01 モデルが使用されます。 FaceList は常に、その作成時に指定された認識モデルを使用します。新しい顔がリストに追加されると、その顔はこのモデルに関連付けられます。これは作成後に変更できません。 FaceList に構成されているモデルを調べるには、returnRecognitionModel パラメーターを true に設定して FaceList - Get API を使用します。

.NET クライアント ライブラリの次のコード例を参照してください。

await faceClient.FaceList.CreateAsync(faceListId, "My face collection", recognitionModel: "recognition_04");

このコードは、特徴抽出のための recognition_04 モデルを使用して、My face collection という名前の FaceList を作成します。 新しく検出された顔に似た顔をこの FaceList から検索するときは、その顔が recognition_04 モデルを使用して検出 (Face - Detect) 済みである必要があります。 前のセクションと同様に、モデルは一貫している必要があります。

Face - Find Similar API に変更はありません。検出でモデルのバージョンを指定するだけです。

指定されたモデルを使って顔を検証する

Face - Verify API は、2 つの顔が同じ人のものかどうかチェックします。 認識モデルについては Verify API での変更はありませんが、互いに比較できるのは同じモデルで検出された顔だけです。

さまざまなモデルを評価する

独自のデータに対してさまざまな認識モデルのパフォーマンスを比較したい場合は、次の手順を実行する必要があります。

  1. recognition_01recognition_02recognition_03recognition_04 をそれぞれ使って、4 つの PersonGroup を作成します。
  2. 画像データを使用して顔を検出し、これらの 4 つの PersonGroup 内の Person に登録します。
  3. PersonGroup - Train API を使って PersonGroup をトレーニングします。
  4. 4 つすべての PersonGroup に対して Face - Identify でテストを実行し、結果を比較します。

信頼度しきい値 (顔を識別するために要求されるモデルの信頼度を決定する 0 ~ 1 の値) をいつも指定する場合、モデルごとに異なるしきい値を使用することが必要な場合があります。 あるモデルのしきい値を別のモデルと共有することは想定されておらず、共有しても同じ結果が得られるとは限りません。

次のステップ

この記事では、さまざまな Face サービスの API で使用する認識モデルを指定する方法について説明しました。 次は、クイックスタートに従って顔検出を使い始めてみましょう。