使用 Amazon Rekognition 进行计算机视觉
介绍
计算机能看东西吗?如果计算机分析图像,它能像人类一样解释图像吗?在计算机视觉领域,我们试图实现这一点。而且我们可以做到,而且准确度很高。但这仍然是一个难题,知识和所需资源并不是每个人都能掌握的。但随着机器学习越来越频繁地被使用,那些没有计算机视觉所需知识和资源的人如何跟上呢?
AWS Rekognition
Amazon Web Services 提供了一款名为 Rekognition(发音类似“recognition”)的产品。Rekognition 的目的是分析图像并预测图像中有哪些物体、是否有人脸、转录文本以及执行其他任务。但要使用 Rekognition,您几乎不需要了解任何有关计算机视觉或机器学习的知识!您只需将 Rekognition 指向存储的图像文件,告诉它您想要执行什么计算机视觉任务,向 Amazon 支付少量费用(有 12 个月的免费限额),然后即可获得结果。听起来很简单?确实如此!
访问 Rekognition 和其他 AWS 产品的推荐方法是通过客户端库。许多不同的 AWS 客户端库支持不同的语言。在本指南中,我将使用 Python 和boto3包。查看文档以了解受支持的其他语言。我不会在这里介绍如何安装boto3,但这并不难。
入门
在使用 Rekognition 之前,您需要将图像存储在 Rekognition 可以访问的位置,通常是在云端。在本指南中,我将把几张图片上传到 S3。
import boto3
s3 = boto3.resource('s3')
for image in ['faces.jpg', 'objects.jpg', 'text.jpg']:
s3.Bucket('ps-guide-rekognition').upload_file(image, image)
图片来自 Unsplash,可分别在以下网址找到:
- https://source.unsplash.com/jH12C1yOvsY
- https://source.unsplash.com/GkP0kt2mlXo
- https://source.unsplash.com/FYlFYAqukyg
检测物体
要使用 Rekoginition,首先要创建一个客户端。
rek = boto3.client('rekognition', region_name='us-east-1')
注意使用客户端而不是资源。创建一个表示 S3 中图像位置的字典。
image_dict = {'S3Object':{'Bucket': 'ps-guide-rekognition', 'Name':'objects.jpg'}}
将图像连同要检测的标签/对象的数量一起传递给Image关键字参数中的detect_labels方法。
labels = rek.detect_labels(Image=image_dict, MaxLabels=10)
生成的字典有一个Labels键,其中包含检测到的标签。每个标签都有一个Name和一个Confidence。
for label in labels['Labels']:
print('{} - {}'.format(label['Name'], label['Confidence']))
结果如下。
Furniture - 99.87967681884766
Table - 99.26332092285156
Wood - 99.20465087890625
Desk - 98.95134735107422
Person - 98.12129974365234
Flooring - 98.12129974365234
Hardwood - 97.50928497314453
Floor - 88.36457061767578
Electronics - 85.74508666992188
Interior Design - 83.3857192993164
图片如下:
检测到的对象的边界框也会返回到dict中。并且 Rekognition 不仅可以检测图像中的对象,还可以检测视频中的对象。
检测人脸
要检测人脸,请调用detect_faces方法并将一个类似于detect_labels的字典传递给Image关键字参数。Attributes关键字参数是要检测的不同特征的列表,例如年龄和性别。在本指南中,我将传递单个值ALL来获取所有属性。
image_dict = {'S3Object': {'Bucket': 'ps-guide-rekognition', 'Name': 'faces.jpg'}}
faces = rek.detect_faces(Image=image_dict, Attributes=['ALL'])
这是图片:
人脸存储在FaceDetails键中。此图像中只有一张人脸。人脸的键是属性。
face = faces['FaceDetails'][0]
for key in face.keys():
print(key)
BoundingBox
AgeRange
Smile
Eyeglasses
Sunglasses
Gender
Beard
Mustache
EyesOpen
MouthOpen
Emotions
Landmarks
Pose
Quality
Confidence
在属性中,我们可以看到 Rekognition 预测年龄范围为 16-28 岁,性别为女性,置信度几乎为 100%,并且对象的眼睛是睁开的,但嘴巴没有睁开。它预测对象最可能的情绪是平静。
f['AgeRange']
{'Low': 16, 'High': 28}
f['Gender']
{'Value': 'Female', 'Confidence': 99.82478332519531}
f['EyesOpen']
{'Value': True, 'Confidence': 98.96699523925781}
f['MouthOpen']
{'Value': False, 'Confidence': 94.9305191040039}
f['Emotions']
{'Type': 'CALM'
与物体检测一样,视频也受支持。
文本检测
要检测文本,请调用detect_text方法和Image关键字参数。
text = rek.detect_text(Image={'S3Object':{'Bucket':'ps-guide-rekognition', 'Name':'text.jpg'}})
这是一张带有一些文字的图片:
检测到的文本位于TextDetections键中,每个检测都有一个DetectedText键。
for detection in text['TextDetections']:
print(detection['DetectedText'])
DANGER
HARD HAT
PROTECTION
REQUIRED
DANGER
HARD
HAT
PROTECTION
REQUIRED
看起来好像文本被检测到了两次。但请注意,在图像中,“hard”和“hat”这两个词位于同一行。前四个检测是文本行。其余检测是针对单词的。
您可能已经猜到了,它还支持视频。
结论
AWS Rekognition 是一种简单、轻松、快速且经济高效的方法,可用于检测静态图像和视频中的对象、面部、文本等。您无需了解任何有关计算机或机器学习的知识。您只需要了解如何使用客户端库的 API。本指南使用了 Python。还有其他适用于流行语言的客户端库。这使您无需投入资源重新发明 Rekognition 构建的轮子。感谢您的阅读!
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~