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

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

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

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

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

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

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

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

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

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

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

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

  • SearchFacesByImage - イメージから顔を持つ保存された個々の顔を検索します。

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

  • SearchUsers - 指定された顔 ID またはユーザー ID を持つストアドユーザーを検索します。

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

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

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

注記

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

次の図は、コレクションを使用する目標に基づいて、 オペレーションを呼び出す順序を示しています。

ユーザーベクトルとの最大精度マッチングの場合:

コレクション内のユーザー顔ベクトルの保存と検索を示す図は、 CreateCollection、、、 IndexFaces CreateUser AssociateFaces、 などのオペレーションを示しています SearchUsersByImage SearchUsers。

個々の顔ベクトルとの高精度マッチングの場合:

コレクション内の顔の保存と検索を示す図は、 CreateCollection、、、 IndexFaces StartFaceSearch CreateStreamProcessor、 などのオペレーションを示しています SearchFacesByImage SearchFaces。

コレクションは、さまざまなシナリオで使用できます。例えば、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 を使用するためのガイダンスを以下に示します。

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

  • 各イメージIndexFacesに顔が 1 つだけ含まれているイメージで を呼び出し、返された Face ID をイメージのサブジェクトの識別子に関連付けます。

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

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

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

一般的な使用

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

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

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

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

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

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

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

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

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

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

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

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

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