构建情绪检测应用程序
Posted woshicver
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建情绪检测应用程序相关的知识,希望对你有一定的参考价值。
计算机视觉(Computer Vision,CV)可能是一个理论性很强的领域,需要有大量的ML和数学知识来理解为诸如目标检测、人脸识别和目标跟踪等主题提供动力的算法。
如果你在理论上没有经验,或者没有时间构建定制的ML/CV模型,那么AWS Rekognion使你能够通过API调用构建功能强大的CV应用程序。
AWS Rekognion是AWS提供的众多汽车AI服务之一。这些服务是为那些在ML方面没有太多背景知识的开发人员,或者是时间不多的数据科学家提供的,他们可以快速构建功能强大的ML应用程序,或者根据你可能正在开发的自定义模型对性能进行基准测试。
AWS Rekognion是AWS上用于计算机视觉的事实上的自动人工智能服务。如果你对构建自定义模型感兴趣,请查看AWS SageMaker和我关于如何在那里部署自定义TensorFlow模型的文章:https://towardsdatascience.com/training-and-deploying-custom-tensorflow-models-with-aws-sagemaker-72027722ad76。
在本文中,我们将构建一个Streamlight应用程序,该应用程序接受图像并使用Rekognion返回图像中检测到的情感。
注意:对于那些刚接触AWS的人(最好有一些经验来完全理解这篇文章),如果你想继续学习,请确保在下面的链接上创建一个帐户:https://aws.amazon.com/console/。
我还将提供我们将使用的服务列表,以及更深入的定义。如果你已经熟悉这些服务,请跳到代码演示。
目录
AWS服务
设置Streamlight应用程序
整合 Rekognition
代码和结论
AWS服务
AWS Rekognition:AWS主要的汽车AI计算机视觉服务。具有从人脸检测、文本检测到目标跟踪的大量特征。
AWS S3:Amazon的存储服务,我们将使用此服务存储我们的训练数据和模型/信息。
Boto3:AWS软件开发工具包(SDK),用于Python开发人员,可以使用它来处理AWS服务。对于这个用例,我们将使用Boto3与S3访问我们的图像并调用Rekognition。
身份访问和管理(IAM):允许你通过权限和角色管理AWS服务的访问。使用我的代码时,你可能希望通过AWS CLI对用户进行身份验证。如果你需要安装方面的帮助,这里有一篇文章详细介绍了该过程:https://blog.gruntwork.io/authenticating-to-aws-with-the-credentials-file-d16c0fbcbf9e。
设置Streamlight应用程序
在开始处理Rekognition部分之前,我们需要设置web应用程序。
我们希望我们的应用程序能够上传一个文件,然后我们可以在后端使用Rekognion进行处理。
Streamlit有一个整洁的文件上传功能,我们可以在这个用例中使用它。我已经创建了一个样本图像的小目录,我们可以调用它进行分析。
import streamlit as st
import boto3
# S3 Bucket
s3 = boto3.resource('s3', region_name = 'us-east-1')
inputFile = st.file_uploader("Image for Emotion Detection", type = "jpeg")
# 将文件上传到S3
if inputFile is not None:
imageFileName = inputFile.name
S3Name = "streamlit-" + imageFileName
s3.meta.client.upload_file(f"./TestImages/{imageFileName}", imagesBucket, S3Name)
我们从示例图像目录中捕获该文件。然后,我们使用Boto3与S3协作,将本地图像存储在我们创建的S3 bucket中。
要创建S3 bucket,你可以转到AWS控制台并手动创建,或者如果你有AWS CLI设置,则只需运行AWS mb unique-bucket-name来创建你的bucket。
我们需要S3中的数据,因为Rekognition直接与S3集成用于API调用,因此需要将图像上传到S3的代码。
我们现在有了Streamlight应用程序,可以接受图像并将其推送到S3,以便与Rekognion一起工作。
整合Rekognition
我们现在可以专注于在样本图像上运行情感检测。Rekognition在detect_faces中有一个API调用,它获取输入图像并返回各种参数,例如:年龄范围、性别、睁眼、情绪等。
在本应用程序中,我们将重点关注情绪参数。我们首先需要为Rekognition创建一个boto3客户机,就像我们对S3所做的那样。
rekogClient = boto3.client('rekognition', region_name = 'us-east-1')
我们现在有了客户端,现在可以将适当的数据提供给detect_faces API调用。
# 情绪检测
response = rekogClient.detect_faces(
Image = {
'S3Object': {
'Bucket': imagesBucket,
'Name': S3Name
}
},
Attributes = ['ALL']
)
现在,我们已经得到了API响应,我们希望解析输出以关注脸部检测到的情绪。下面显示了我们为演示上传的示例图像。
现在,我们解析响应以显示大多数情绪和检测到的所有其他情绪,以及Rekognion在情绪中的信心分数。
st.subheader("Main Emotion Detected")
emotions = response['FaceDetails'][0]['Emotions']
for emotion in emotions:
confidence = emotion['Confidence']
if confidence >= 50:
st.write("Majority Emotion: " + emotion['Type'])
st.write("Confidence Score: " + str(confidence))
st.subheader("All Emotions Detected")
for emotion in emotions:
st.write(str(emotion['Type']) + ": " + str(emotion['Confidence']))
现在,如果我们使用streamlit run filename.py运行streamlit应用程序,我们将看到我们的应用程序成功运行。
我们可以看到Rekognition检测到的所有情绪,为了清理UI,你还可以添加一个CV库,如PIL,以显示你正在上传的示例图像或文件。
全部代码和结论
https://github.com/RamVegiraju/MoodDetectionApp
要访问项目的完整代码,请单击上面的链接。
自动人工智能正在迅速扩张,AWS、Azure和GCP等云提供商也在增长,并提供各种尖端服务,如Rekognion,使你能够以简单的方式使用ML为应用程序供电。
Rekognion对于数据科学家和非ML背景的人来说非常有用,可以快速启动并运行计算机视觉应用程序。
☆ END ☆
如果看到这里,说明你喜欢这篇文章,请转发、点赞。微信搜索「uncle_pn」,欢迎添加小编微信「 woshicver」,每日朋友圈更新一篇高质量博文。
↓扫描二维码添加小编↓
以上是关于构建情绪检测应用程序的主要内容,如果未能解决你的问题,请参考以下文章