4

我正在尝试按照 AWS 文档中的说明使用 AWS Rekognitionthrough Python boto3 比较人脸。

我的 API 调用是:

client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region )

source_bytes = open('source.jpg', 'rb')
target_bytes = open('target.jpg', 'rb')

response = client.compare_faces(
    SourceImage = {
        'Bytes':bytearray(source_bytes.read())
    },
    TargetImage = {
        'Bytes':bytearray(target_bytes.read())
    },
    SimilarityThreshold = SIMILARITY_THRESHOLD
)

source_image.close()
target_image.close()

但是每次我运行这个程序时,我都会收到以下错误:

botocore.errorfactory.InvalidParameterException: An error occurred (InvalidParameterException) when calling the CompareFaces operation: Request has Invalid Parameters

我已经正确指定了秘密、密钥、区域和阈值。如何清除此错误并使请求调用正常工作?

4

3 回答 3

1

你的代码很好,

对于 AWS Rekognition,图像尺寸很重要。

Amazon Rekognition 的限制

以下是 Amazon Rekognition 中的限制列表:

  1. 存储为 Amazon S3 对象的最大图像大小限制为 15 MB。
  2. 高度和宽度的最小像素分辨率为 80 像素。作为参数传递给 API 的原始字节的最大图像大小为 5 MB。
  3. Amazon Rekognition 支持 PNG 和 JPEG 图像格式。也就是说,您作为各种 API 操作(例如 DetectLabels 和 IndexFaces)的输入提供的图像必须采用受支持的格式之一。
  4. 您可以在单个面部集合中存储的最大面部数量为 100 万。搜索 API 返回的最大匹配面数为 4096。

来源:AWS 文档

于 2017-09-28T12:02:03.720 回答
1

您打开文件的方式,您不需要强制转换为 bytearray。

尝试这个:

client = boto3.client('rekognition', aws_access_key_id=key, aws_secret_access_key=secret, region_name=region )

source_bytes = open('source.jpg', 'rb')
target_bytes = open('target.jpg', 'rb')

response = client.compare_faces(
    SourceImage = {
        'Bytes':source_bytes.read()
    },
    TargetImage = {
        'Bytes':target_bytes.read()
    },
    SimilarityThreshold = SIMILARITY_THRESHOLD
)

source_image.close()
target_image.close()
于 2017-10-09T23:48:30.213 回答
0

对于那些仍在寻找答案的人,

我遇到了同样的问题,而@mohanbabu 指出了官方文档中应该输入的compare_faces内容,我意识到在和中compare_faces寻找面孔。我通过首先使用 aws 检测人脸并将检测到的人脸传递给.SourceImageTargetImagedetect_facescompare_faces

compare_facesdetect_faces当检测到的面部有点模糊时,几乎所有时间都失败了。

所以,如果你的任何一个SourceImage或被TargetImage紧紧地裁剪到脸上那张AND脸不是立即明显的,那么总结一下,compare_faces将会失败。

可能还有其他原因,但这个观察对我有用。

前任:

缩小

在上图中,您可以相当自信地说中间有一张脸

但,

在此处输入图像描述

现在,不是那么明显。

这至少是我的原因,检查你的图像,你应该知道。

于 2020-02-20T14:22:49.397 回答