Функция Aws Lambda возвращает доверие 99% ко всему, что я загружаю - PullRequest
0 голосов
/ 02 декабря 2018

Я делаю что-то не так здесь, сравнивая два изображения в разных S3 Bucket.

Несмотря на то, что я сравниваю изображения мужчин и женщин, это даст уверенность в 99%

или я что-то пропустил в объявлении

Возможно, эта строка вызывает проблему

key_target = "targett /" + key

Или мойКод события подвержен ошибкам. Здесь я упомянул исходную корзину, хотя упоминал ее в лямбда-функции для тестирования ниже.Что еще мне нужно исправить, чтобы оно вернуло доверие в пределах указанного диапазона

from __future__ import print_function

import boto3
from decimal import Decimal
import json
import urllib

print('Loading function')

rekognition = boto3.client('rekognition')
#iot = boto3.client('iot-data')


 # --------------- Helper Functions to call Rekognition APIs ------------------

def compare_faces(bucket, key, key_target, threshold=75):
response = rekognition.compare_faces(
    SourceImage={
        "S3Object": {
            "Bucket": 'dacss',
            "Name": 'obama.jpg',
        }
    },
    TargetImage={
        "S3Object": {
            "Bucket": 'targett',
            "Name": 'michelle.jpg',
        }
    },
    SimilarityThreshold=threshold,
)
return response['SourceImageFace'], response['FaceMatches']

 # --------------- Main handler ------------------


def lambda_handler(event, context):
print("Received event: " + json.dumps(event, indent=2))
bucket = event['Records'][0]['s3']['bucket']['name']
key = urllib.unquote_plus(event['Records'][0]['s3']['object'] 
['key'].encode('utf8'))
key_target = "targett/" + key
try:
    response = compare_faces(bucket, key, key_target)
    print(response)
#       mypayload = json.dumps(response)
#      iotResponse = iot.publish(
 #         topic="rekognition/result",
 #        qos=1,
 #       payload=mypayload)
  #  print(iotResponse)
   # return iotResponse
    print(response)
    return response
 except Exception as e:
    print(e)
    print("Error processing object {} from bucket {}. ".format(key, 
 bucket) 
 +
          "Make sure your object and bucket exist and your bucket is in 
 the 
 same region as this function.")
    raise e


 ---------------output-----------------
  Response:
[
{
"BoundingBox": {
  "Width": 0.7813892960548401,
  "Top": 0.15193353593349457,
  "Left": 0.1047489121556282,
  "Height": 0.8365015387535095
  },
  "Confidence": 99.99993896484375
 },
 []
 ]

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

я думаю, что у вас здесь есть какое-то недопонимание

{
    'FaceMatches': [
        {
            'Face': {
                'BoundingBox': {
                    'Height': 0.33481481671333313,
                    'Left': 0.31888890266418457,
                    'Top': 0.4933333396911621,
                    'Width': 0.25,
                },
                'Confidence': 99.9991226196289,
            },
            'Similarity': 100,
        },
    ],
    'SourceImageFace': {
        'BoundingBox': {
            'Height': 0.33481481671333313,
            'Left': 0.31888890266418457,
            'Top': 0.4933333396911621,
            'Width': 0.25,
        },
        'Confidence': 99.9991226196289,
    },
    'ResponseMetadata': {
        '...': '...',
    },
}

Здесь показатель достоверности не показывает, соответствует ли лицо лицу или нет, он показывает, что он нашел лицо на изображении.«Similarty» показывает фактическое совпадение изображения.

0 голосов
/ 02 декабря 2018

Эти строки:

TargetImage={
    "S3Object": {
        "Bucket": targett,
        "Name": obama.jpg,
    }

должны быть:

TargetImage={
    "S3Object": {
        "Bucket": 'targett',
        "Name": key_target,
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...