You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Rekognition searchFacesByImage仅返回最多1个匹配结果问题求助

AWS Rekognition searchFacesByImage多人脸匹配返回数量不足问题解决方案

问题根因

searchFacesByImage接口的默认执行逻辑是优先检测输入图像中尺寸最大的1张人脸,仅用这张人脸匹配指定人脸集合。你设置的MaxFaces参数作用是单张查询人脸可返回的最大匹配结果数,并非控制输入图像的人脸检测数量,所以无论输入图包含多少人脸,默认调用都只会返回1张人脸的匹配结果。

解决步骤

  • 第一步:先调用detectFaces接口处理输入图像,提取出图中所有符合质量要求的人脸的BoundingBox坐标参数,可根据需求调整QualityFilter参数过滤模糊、角度过大的无效人脸
  • 第二步:遍历上一步得到的所有人脸边界框,对每一个边界框单独调用searchFacesByImage接口,调用时传入对应的BoundingBox参数指定要匹配的人脸范围,同时保留你设置的MaxFaces、FaceMatchThreshold参数即可

代码示例(Python boto3)

import boto3

rekognition = boto3.client('rekognition')
collection_id = "替换为你的人脸集合ID"
input_image = {'S3Object': {'Bucket': '替换为你的S3桶名', 'Name': '替换为输入图片的S3路径'}}

# 第一步:检测输入图中所有符合要求的人脸
detect_response = rekognition.detect_faces(Image=input_image, Attributes=['DEFAULT'])
all_face_bboxes = [face['BoundingBox'] for face in detect_response['FaceDetails']]

# 第二步:逐个人脸单独发起匹配查询
all_match_results = []
for bbox in all_face_bboxes:
    search_response = rekognition.search_faces_by_image(
        CollectionId=collection_id,
        Image=input_image,
        MaxFaces=6,
        FaceMatchThreshold=70,
        BoundingBox=bbox
    )
    all_match_results.append({
        "input_face_bbox": bbox,
        "face_matches": search_response.get('FaceMatches', [])
    })

注意事项

  • 该方案会根据输入图像的人脸数量产生对应次数的API调用,需要提前确认你的AWS账号Rekognition接口的调用配额,避免触发限流
  • 如果输入图像中人脸尺寸过小、遮挡严重,detectFaces可能无法识别出对应人脸,可适当降低QualityFilter阈值提升召回率

内容的提问来源于stack exchange,提问作者Tomer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 17:36:02