コレクション内での顔の検索 - Amazon Rekognition

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

コレクション内での顔の検索

Amazon Rekognition を使用すると、入力された顔を使用して、保存されている顔のコレクションから一致する顔を検索できます。まず、検出した顔の情報を、サーバー側のコンテナである「コレクション」に保存します。コレクションには、個々の顔とユーザー (同じ人の複数の顔) の両方が保存されます。個々の顔は、顔を数学的に表現した顔ベクトルとして保存されます (実際の顔の画像ではなく)。同じ人物の異なるイメージを使用して、同じコレクションに複数の顔ベクトルを作成して保存できます。その後、同じ人物の複数の顔ベクトルを集約して、ユーザーベクトルを作成できます。ユーザーベクトルは、さまざまなレベルの明るさ、シャープネス、ポーズ、見た目などを含む、より安定した表現であり、より高い精度で顔を検索できます。

コレクションを作成したら、入力した顔を使用して、コレクション内の一致するユーザーベクトルまたは顔ベクトルを検索できます。ユーザーベクトルを検索すると、個々の顔ベクトルを検索する場合よりも精度を大幅に高めることができます。イメージ、保存済みビデオ、ストリーミングビデオ内で検出された顔を使用して、保存した顔ベクトルに対して検索を行うことができます。画像内で検出された顔を使用して、保存されているユーザーベクトルに対して検索を行えます。

顔の情報を保存するときは、次の操作を行う必要があります。

  1. コレクションを作成する - 顔情報を保存するには、まずアカウント内のAWSいずれかのリージョンで顔コレクションを作成 (CreateCollection) する必要があります。この顔コレクションは、IndexFaces オペレーションを呼び出すときに指定します。

  2. インデックス顔 - IndexFacesオペレーションはイメージ内の顔 (1 つ) を検出し、コレクション内の顔ベクトル (1 つ) を抽出して保存します。このオペレーションを使用して、イメージ内の顔を検出し、検出した顔の特徴に関する情報をコレクション内に保持できます。サービスが顔ベクトル情報をサーバーに保持するため、こちらはストレージベースの API オペレーションの一例です。

ユーザーを作成し、このユーザーに複数の顔ベクトルを関連付けるには、次の操作を行う必要があります。

  1. ユーザーの作成 - まず を使用してユーザーを作成する必要がありますCreateUser。同一人物の複数の顔ベクトルをユーザーベクトルに集約することで、顔照合の精度を高めることができます。1 つのユーザーベクトルには、最大で 100 個の顔ベクトルを関連付けることができます。

  2. 顔の関連付け - ユーザーを作成したら、 AssociateFacesオペレーションを使用して、そのユーザーに既存の顔ベクトルを追加できます。顔ベクトルをユーザーベクトルに関連付けるには、顔ベクトルがユーザーベクトルと同じコレクション内に存在している必要があります。

コレクションを作成して顔ベクトルとユーザーベクトルを保存した後に、以下のオペレーションを使って一致する顔を検索できます。

  • SearchFacesByImage - 保存した個々の顔と画像からの顔を検索する。

  • SearchFaces - 指定された顔 ID を持つ保存された個々の顔を検索します。

  • SearchUsers - 指定された顔 ID またはユーザー ID を持つ保存されたユーザーを検索します。

  • SearchUsersByImage - イメージから顔を持つ保存されたユーザーを検索します。

  • StartFaceSearch - 保存したビデオ内の顔を検索します。

  • CreateStreamProcessor - ストリーミングビデオ内の顔を検索します。

注記

コレクションには顔ベクトルが保存されます。顔ベクトルは、顔の数学的表現です。コレクションには顔の画像は保存されません。

コレクションは、さまざまなシナリオで使用できます。例えば、IndexFaces および AssociateFaces オペレーションを使用することにより、スキャンした従業員バッジのイメージや政府発行の ID から検出した顔を保存する顔コレクションを作成できます。社員が建物内に入ると、その顔のイメージがキャプチャされ、SearchUsersByImage オペレーションに送信されます。十分に高い類似スコア (99% など) で顔が一致すると、この社員を認証できます。

コレクションの管理

顔コレクションは Amazon Rekognition リソースの第一次リソースであり、顔コレクションを作成するたびに一意の Amazon リソースネーム (ARN) が割り当てられます。各顔コレクションは、アカウントの特定の AWS リージョンで作成します。コレクションを作成すると、最新バージョンの顔検出モデルに関連付けられます。詳細については、「モデルのバージョニング」を参照してください。

コレクションに対しては、以下の管理オペレーションを実行できます。

コレクション内の顔の管理

顔コレクションを作成したら、それに顔を保存できます。Amazon Rekognition では、以下のオペレーションを使用してコレクション内の顔を管理できます。

  • IndexFaces オペレーションでは、入力イメージ (JPEG または PNG) 内の顔を検出し、これを指定された顔コレクションに追加します。イメージで検出された顔ごとに一意の顔 ID が返されます。顔を保存したら、顔コレクション内で一致する顔を検索できます。詳細については、「コレクションへの顔の追加」を参照してください。

  • ListFaces オペレーションは、コレクション内の顔を一覧表示します。詳細については、「コレクションへの顔の追加」を参照してください。

  • DeleteFaces オペレーションは、コレクションから顔を削除します。詳細については、「コレクションからの顔の削除」を参照してください。

コレクション内のユーザーの管理

同一人物の複数の顔ベクトルを保存した場合、それらすべての顔ベクトルを 1 つのユーザーベクトルに関連付けることで、精度を高めることができます。次のオペレーションを使用するとユーザーを管理できます。

  • CreateUser - オペレーションは、指定された一意のユーザー ID を持つコレクションに新しいユーザーを作成します。

  • AssociateUsers - ユーザー IDs に 1~100 個の一意の顔 ID を追加します。ユーザーに 1 つ以上の顔 ID をユーザーに関連付けると、コレクショでそのユーザーに一致するものを検索できるようになります。

  • ListUsers - コレクション内のユーザーを一覧表示します。

  • DeleteUsers - 指定されたユーザー ID を持つコレクションからユーザーを削除します。

  • DisassociateFaces - ユーザーから 1 つ以上の顔 IDs を削除します。

顔の関連付けに類似度しきい値を使用する

特定のユーザーに関連付けられている顔がすべて同一人物のものであることを、確認することが重要です。そのため、UserMatchThreshold パラメータは、新しい顔を、FaceID を既に 1 つ以上含んでいる UserID に関連付けるために必要な最小限のユーザーマッチ信頼度を指定します。これにより、FaceIds を適切な UserID に関連付けることができます。値の範囲は 0~100 で、デフォルト値は 75 です。

の使用に関するガイダンス IndexFaces

一般的なシナリオで IndexFaces を使用するためのガイダンスを以下に示します。

重要または公共安全のアプリケーション

  • 各画像に 1 つの顔のみを含む画像で IndexFaces を呼び出し、返された顔 ID を画像の被写体の識別子と関連付けます。

  • インデックス作成の前に DetectFaces を使用して、画像内の顔が 1 つのみであることを確認できます。複数の顔が検出された場合は、確認後、顔が 1 つだけの状態で画像を再送信してください。これにより、誤って複数の顔にインデックスを作成し、それらを同じ人物に関連付けることを防ぎます。

写真共有とソーシャルメディアアプリケーション

  • 家族のアルバムのようなユースケースでは、複数の顔を含む画像に制限なく、IndexFaces を呼び出す必要があります。このような場合は、すべての写真の各人物を識別し、その情報を使用して写真に写っている人物ごとに写真をまとめる必要があります。

一般的な使用

  • 同一人物の複数の異なる画像、特に異なる顔属性 (顔のポーズ、ひげなど) の画像にインデックスを付け、ユーザーを作成し、異なる顔をそのユーザーに関連付けて照合の質を高めます。

  • その後の顔照合能力を向上させるために、失敗した照合が正しい顔識別子で索引付けされることができるようにレビュープロセスを含めます。

  • 画像品質の詳細については、「顔比較用の入力イメージに関する推奨事項」を参照してください。

コレクション内の顔とユーザーの検索

顔コレクションを作成して顔ベクトルまたはユーザーベクトルを保存したら、顔コレクション内で一致する顔を検索できます。Amazon Rekognition では、以下と一致するコレクション内の顔を検索できます。

CompareFaces オペレーションを使用すると、ソースイメージの顔とターゲットイメージの顔を比較できます。この比較の範囲は、ターゲットイメージで検出された顔に制限されます。詳細については、「イメージ内の顔を比較する」を参照してください。

以下のリストにあるさまざまな検索オペレーションでは、顔 (FaceId または入力イメージで識別される) を、特定の顔コレクションに保存されているすべての顔と比較します。

類似度しきい値を使用した顔のマッチング

類似度しきい値を入力パラメータとして指定することで、すべての検索オペレーション (CompareFacesSearchFacesSearchFacesByImageSearchUsers、、SearchUsersByImage) の結果を制御できます。

FaceMatchThreshold は、SearchFacesSearchFacesByImage の間における類似度しきい値の入力属性であり、照合した顔の類似度に基づいて返される結果の数をコントロールします。SearchUsersSearchUsersByImage の類似度しきい値の属性は UserMatchThreshold であり、照合したユーザーベクトルの類似度に基づいて返される結果の数をコントロールします。しきい値属性は、CompareFacesSimilarityThreshold です。

Similarity レスポンス属性値がしきい値より小さいレスポンスは返されません。このしきい値は、ユースケースに合わせて調整することが重要です。この値により、一致結果に含まれる誤認識の数が変わるためです。これにより、検索結果のリコールが制御されます。しきい値が低いほど、リコールが高くなります。

すべての機械学習システムは確率的です。適切な類似度しきい値の設定には、ユースケースに応じて、お客様の判断が必要です。たとえば、外見が類似した家族を識別する写真アプリケーションを構築する場合は、より低いしきい値 (80% など) を選択できます。一方、多くの法律執行のユースケースでは、偶発的な誤認識を減らすため、99% 以上の高いしきい値を使用することをお勧めします。

FaceMatchThresholdUserMatchThreshold に加え、偶然的な誤認識を減らす手段として Similarity のレスポンス属性を使用できます。たとえば、低いしきい値 (80% など) を使用して、より多くの結果が返されるようにできます。その後、レスポンス属性 Similarity (類似度の割合) を使用してそれらの結果を絞り込み、アプリケーションで正しいレスポンスが得られるようにフィルタリングできます。ここでも、高い類似度 (99% 以上など) を指定すると、誤認識のリスクが軽減されます。