Boto AWS Rekognition出错

时间:2017-02-02 09:47:25

标签: python amazon-web-services boto3 amazon-rekognition

我正在尝试按照AWS文档中的说明,使用AWS Rekognition through 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

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

3 个答案:

答案 0 :(得分:1)

你的代码非常好,

图像维度在AWS 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.
  5. 来源:AWS Docs

答案 1 :(得分: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()

答案 2 :(得分:0)

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

我遇到了同样的问题,而@mohanbabu则指向compare_faces的官方文档,但我意识到compare_facesSourceImage和{ TargetImage。我首先通过使用aws的detect_faces检测脸部并将检测到的脸部传递给compare_faces来证实了这一点。

compare_facesdetect_faces检测到的脸部模糊不清的情况下几乎一直失败。

因此,要想总结一下SourceImageTargetImage中的任何一个,即使它们紧紧地修剪在AND的面孔上,但该面孔并非立即可见,compare_faces就会失败。

还有其他原因,但是这种观察对我有用。

例如:

zoomed_out

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

但是

enter image description here

现在,不是很明显。

这是我至少要检查一下图像的原因,并且您应该知道。