Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于相似性的图像分类_Python_Amazon Web Services_Image Processing_Aws Lambda_Classification - Fatal编程技术网

Python 基于相似性的图像分类

Python 基于相似性的图像分类,python,amazon-web-services,image-processing,aws-lambda,classification,Python,Amazon Web Services,Image Processing,Aws Lambda,Classification,我有30,40张人类的图片,我想在Python代码中得到。并制作一组相似的图片。比如5张约翰的照片和10张彼得的照片。这样地。我是图像处理方面的新手。所以我的问题是哪种算法最适合这个。我想在AWS lambda函数上做这个。任何帮助都将不胜感激 (这是我在这一领域的第一个任务。请忽略“告诉我如何改进”的错误,谢谢)我建议你用AWS Rekognition做这件事。这很简单。 您可以通过3个简单的步骤实现您的目标: 1。上载带有元数据的图像:表示您正在将带有姓名的人的图像上载到s3,以存储他们的信

我有30,40张人类的图片,我想在Python代码中得到。并制作一组相似的图片。比如5张约翰的照片和10张彼得的照片。这样地。我是图像处理方面的新手。所以我的问题是哪种算法最适合这个。我想在AWS lambda函数上做这个。任何帮助都将不胜感激


(这是我在这一领域的第一个任务。请忽略“告诉我如何改进”的错误,谢谢)

我建议你用AWS Rekognition做这件事。这很简单。 您可以通过3个简单的步骤实现您的目标:

1。上载带有元数据的图像:表示您正在将带有姓名的人的图像上载到s3,以存储他们的信息,供以后参考

2。照片索引这意味着向人脸添加信息标签,该信息存储在dynamodb中,这是通过索引人脸api完成的

3。将照片与索引人脸进行比较:这将通过rekognition按图像搜索人脸来实现

现在是第1部分代码:使用元数据批量上传

现在是第2部分代码:索引

现在是第3部分代码:比较

import boto3
import io
from PIL import Image

rekognition = boto3.client('rekognition', region_name='eu-west-1')
dynamodb = boto3.client('dynamodb', region_name='eu-west-1')

image = Image.open("group1.jpeg")
stream = io.BytesIO()
image.save(stream,format="JPEG")
image_binary = stream.getvalue()


response = rekognition.search_faces_by_image(
        CollectionId='family_collection',
        Image={'Bytes':image_binary}                                       
        )

for match in response['FaceMatches']:
   print (match['Face']['FaceId'],match['Face']['Confidence'])

    face = dynamodb.get_item(
        TableName='family_collection',  
        Key={'RekognitionId': {'S': match['Face']['FaceId']}}
        )

    if 'Item' in face:
        print (face['Item']['FullName']['S'])
    else:
        print ('no match found in person lookup')
使用上述比较功能,您将获得照片中的人脸名称,然后您可以决定下一步要做什么,例如通过重命名照片将同名照片存储到不同的文件夹中,这将在不同的文件夹中提供不同人物的照片

先决条件:

创建一个名为family\u collection的rekognition集合

aws rekognition create-collection --collection-id family_collection --region eu-west-1 
aws dynamodb create-table --table-name family_collection \
--attribute-definitions AttributeName=RekognitionId,AttributeType=S \
--key-schema AttributeName=RekognitionId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
--region eu-west-1
创建名为family\u collection的dynamodb表

aws rekognition create-collection --collection-id family_collection --region eu-west-1 
aws dynamodb create-table --table-name family_collection \
--attribute-definitions AttributeName=RekognitionId,AttributeType=S \
--key-schema AttributeName=RekognitionId,KeyType=HASH \
--provisioned-throughput ReadCapacityUnits=1,WriteCapacityUnits=1 \
--region eu-west-1

你已经结账了吗?这说明了一个识别人脸的实际例子。@AsadFerozAli链接是关于videohi之间的人脸,Wao感谢您的帮助。它解释得太漂亮了。我能再问一件事吗?这些代码将在哪里编写?在lambda函数中?什么时候触发?再次感谢您,您将在lambda函数中编写这些代码,索引函数和比较函数将在lambda中运行,照片上载代码必须在本地计算机中运行,因为您将使用它一次性从计算机上载图像。ya触发器,只要您将任何图像上传到s3 bucket,lambda就会被触发,但请注意,PIL或PILLOW是一个图像处理python库,而不是lambda环境中的标准python库,因此您需要一个自定义部署包,然后部署它。以下是你将如何做到这一点:谢谢你的回复。好的,我明白了。我想从本地机器上传图像到dropbox,然后从dropbox上传到S3。所以我必须在本地机器上更改“上传带有元数据的图像”功能?我应该在本地web应用程序中使用2个数据库,在aws live服务器(如dynamodb)上使用1个数据库吗?