#Amazon Rekognition 顔登録時のフィルター機能・顔数制限概要
Amazon Rekognition IndexFaces API アクション時に登録したい顔の最大個数や、
鮮明ではなくぼやけている顔などを排除することが可能です。
##対象者
- Amazon Rekognitionで質を保ちたい
- クオリティーの低い画像を排除しお金を節約したい
デフォルト設定では、ぼけている画像や、背景に紛れ込んでいる顔画像も登録対象となり精度低下を招きます。
従来、IndexFacesすると入力画像の最大15の顔にインデックスを付けます。
顔検出モデルの新しいバージョンでは、入力画像の最大100の顔にインデックスが付けられます。
##使用できるフィルター一覧
MaxFaces
登録したい顔画像の最大値を設定できる
登録される画像は鮮明ではっきりした画像が優先度上位。
QualityFilter
質の悪い画像を除外するフィルター
QualityFilterを自動にした場合は、Amazonが質の悪い画像を除外してくれる。
##フィルター制度コントロール方法
フィルターをかけるレベルはコントロール可能
フィルターをAmazon側の自動にしたい場合は「AUTO」
判定甘めなフィルター「LOW」
中間的なフィルター「MEDIUM」
厳密なフィルタ「HIGH」
フィルタリングしない場合は、「NONE」を指定
##フィルター使用例
import boto3
collection = "qrestia"
image_file = "TestImage.jpg"
external_image_id = "Qiita test ID"
def index_faces():
rekognition_client = boto3.client('rekognition')
with open(image_file, 'rb') as image:
rekognition_response = rekognition_client.index_faces(
Image={'Bytes': image.read()},
CollectionId=collection,
ExternalImageId=external_image_id,
QualityFilter="AUTO", # QualityFilterを「自動」に設定する
MaxFaces=3) # 顔検出の最大枚数を3つにする
print(rekognition_response)
if __name__ == '__main__':
index_faces()
##弾かれた原因確認する方法
画像で検出されたが、インデックスされていない顔に関する情報はUnindexedFaceオブジェクトの配列で確認可能です。
この応答から原因を把握し、適宜フィルター調整を行うことができます。
- EXTREME_POSE-顔が検出できないポーズになっています。たとえば、頭がカメラから離れすぎています。
- EXCEEDS_MAX_FACES-検出された顔の数がMaxFacesで指定した数よりも多い。
- LOW_BRIGHTNESS-画像が暗すぎる。
- LOW_SHARPNESS-画像がぼやけている。
- LOW_CONFIDENCE-低い信頼度で顔が検出。
- SMALL_BOUNDING_BOX-顔の周りの境界ボックスが小さすぎる。