【以下的问题经过翻译处理】 大家好,
我正在测试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 中使用情感检测,但是目前并不支持。