Rekognition的作业FaceDetection和FaceSearch返回不同的结果...

0

【以下的问题经过翻译处理】 大家好,

我正在测试FaceSearch 和 FaceDetection,发现它们针对 S3 中的同一个视频进行分析,但对于同一个检测目标返回不同的值。例如,两个 Jobs 都对同一个S3存储桶的对象进行分析,我会得到不同的BoundingBox 和 Landmarks ,我认为它们应该是相同的。我还记得,在四个月之前测试,我得到了预期的结果。

例如:同一个人的视频。

  • aws rekognition start-face-detection --video "S3Object={Bucket=facejobs,Name=head-pose-face-detection-female.mp4}"
  • aws rekognition start-face-search --video "S3Object={Bucket=facejobs,Name=head-pose-face-detection-female.mp4}" --collection-id test-collection

获取结果:

aws rekognition get-face-detection --job-id "3661ab79c711bbd530ca5a910003d..."

aws rekognition get-face-search --job-id "cc3555290d2093bec860519bf53403e8..."

比较:

FaceDetection 结果

{  
    "JobStatus": "SUCCEEDED",  
    "VideoMetadata": {  
        "Codec": "h264",  
        "DurationMillis": 134584,  
        "Format": "QuickTime / MOV",  
        "FrameRate": 12.0,  
        "FrameHeight": 432,  
        "FrameWidth": 768  
    },  
    "Faces": \[  
        {  
            "Timestamp": 0,  
            "Face": {  
                "BoundingBox": {  
                    "Width": 0.13135695457458496,  
                    "Height": 0.36436259746551514,  
                    "Left": 0.4154500961303711,  
                    "Top": 0.22901538014411926  
                },  
                "Landmarks": \[  
                    {  
                        "Type": "eyeLeft",  
                        "X": 0.4518287479877472,  
                        "Y": 0.3687707185745239  
                    },  
                    {  
                        "Type": "eyeRight",  
                        "X": 0.5152483582496643,  
                        "Y": 0.3756844997406006  
                    },  
                    {  
                        "Type": "mouthLeft",  
                        "X": 0.451990008354187,  
                        "Y": 0.5045619010925293  
                    },  
                    {  
                        "Type": "mouthRight",  
                        "X": 0.5046293139457703,  
                        "Y": 0.5103421807289124  
                    },  
                    {  
                        "Type": "nose",  
                        "X": 0.47848179936408997,  
                        "Y": 0.4353737533092499  
                    }  
                ],  
                "Pose": {  
                    "Roll": 2.838758707046509,  
                    "Yaw": -1.3927381038665771,  
                    "Pitch": 10.166311264038086  
                },  
                "Quality": {  
                    "Brightness": 79.76757049560547,  
                    "Sharpness": 26.1773681640625  
                },  
                "Confidence": 99.99970245361328  
            }  
        },  
        {  
            "Timestamp": 499, 

FaceSearch

{  
    "JobStatus": "SUCCEEDED",  
    "VideoMetadata": {  
        "Codec": "h264",  
        "DurationMillis": 134584,  
        "Format": "QuickTime / MOV",  
        "FrameRate": 12.0,  
        "FrameHeight": 432,  
        "FrameWidth": 768  
    },  
    "Persons": \[  
        {  
            "Timestamp": 0,  
            "Person": {  
                "Index": 0,  
                "Face": {  
                    "BoundingBox": {  
                        "Width": 0.13410408794879913,  
                        "Height": 0.365193247795105,  
                        "Left": 0.4145432412624359,  
                        "Top": 0.2288028597831726  
                    },  
                    "Landmarks": \[  
                        {  
                            "Type": "eyeLeft",  
                            "X": 0.4514598548412323,  
                            "Y": 0.3685579001903534  
                        },  
                        {  
                            "Type": "eyeRight",  
                            "X": 0.5149661898612976,  
                            "Y": 0.37557920813560486  
                        },  
                        {  
                            "Type": "mouthLeft",  
                            "X": 0.4519285261631012,  
                            "Y": 0.5038205981254578  
                        },  
                        {  
                            "Type": "mouthRight",  
                            "X": 0.5038713216781616,  
                            "Y": 0.5095799565315247  
                        },  
                        {  
                            "Type": "nose",  
                            "X": 0.47897493839263916,  
                            "Y": 0.43512672185897827  
                        }  
                    ],  
                    "Pose": {  
                        "Roll": 1.5608868598937988,  
                        "Yaw": -18.46771240234375,  
                        "Pitch": 8.22950553894043  
                    },  
                    "Quality": {  
                        "Brightness": 81.00172424316406,  
                        "Sharpness": 53.330047607421875  
                    },  
                    "Confidence": 99.99984741210938  
                }  
            },  
            "FaceMatches": \[]  
        },  
        {  
            "Timestamp": 499, 

所以基本上使用这两个调用来获取正确的结果是不可能的。想象一下当您想检测情感并搜索一个面孔时的情况。更奇怪的是,我无法确认在三个月前,我做了同样的测试,两个API返回的结果是相同的。我甚至保存了那个时间的 json,但我无法确定我是如何得到它们的,因为我不记得我是如何实现的,或者我是否篡改了它们:(

当时我得到了如下结果:

FaceDetection

{  
    "JobStatus": "SUCCEEDED",  
    "VideoMetadata": {  
        "Codec": "h264",  
        "DurationMillis": 1500,  
        "Format": "QuickTime / MOV",  
        "FrameRate": 30,  
        "FrameHeight": 720,  
        "FrameWidth": 1280  
    },  
    "Faces": \[{  
            "Timestamp": 499,  
            "Face": {  
                "BoundingBox": {  
                    "Width": 0.16875895857810974,  
                    "Height": 0.4913144111633301,  
                    "Left": 0.4124282896518707,  
                    "Top": 0.2672847807407379  

FaceSearch

{  
    "JobStatus": "SUCCEEDED",  
    "VideoMetadata": {  
        "Codec": "h264",  
        "DurationMillis": 1500,  
        "Format": "QuickTime / MOV",  
        "FrameRate": 30,  
        "FrameHeight": 720,  
        "FrameWidth": 1280  
    },  
    "Persons": \[{  
            "Timestamp": 499,  
            "Person": {  
                "Index": 0,  
                "Face": {  
                    "BoundingBox": {  
                        "Width": 0.16875895857810974,  
                        "Height": 0.4913144111633301,  
                        "Left": 0.4124282896518707,  
                        "Top": 0.2672847807407379  
                    },  
                    "Landmarks": \[{  

所以,可以看出这两个 API 的 BoundingBox 是相同的。

感谢你们能提供任何有用的信息。

再啰嗦一句,用例是希望能够在搜索 API 中使用情感检测,但是目前并不支持。

profile picture
专家
已提问 8 个月前53 查看次数
1 回答
0

【以下的回答经过翻译处理】 hi, brahama80,

感谢您的反馈。可能由于最近面部模型更新至5.0版,所以您看到了差异。当模型更新时,现有集合仍保持与旧版的兼容性,但面部检测和新集合会自动开始使用最新版本。您可以使用此API检查您的集合模型版本(可能为V 4.0)。 https://awscli.amazonaws.com/v2/documentation/api/latest/reference/rekognition/describe-collection.html. 我们建议您能够创建一个新的人脸集合并重新索引人脸,以确保这两个工作流使用相同版本。我们也已经注意到了您要求将情感返回到人脸搜索输出中,我们已将其添加到我们的待办事项中。

profile picture
专家
已回答 8 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则