Python 基于相似性的图像分类
我有30,40张人类的图片,我想在Python代码中得到。并制作一组相似的图片。比如5张约翰的照片和10张彼得的照片。这样地。我是图像处理方面的新手。所以我的问题是哪种算法最适合这个。我想在AWS lambda函数上做这个。任何帮助都将不胜感激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,以存储他们的信
(这是我在这一领域的第一个任务。请忽略“告诉我如何改进”的错误,谢谢)我建议你用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个数据库吗?