亚马逊AWS官方博客
有家更有 AI – 基于 Amazon Bedrock、Agents、Rekognition 构建智能家居安防方案
前言
近年来,人工智能技术的飞速发展为智能家居和安全防护领域带来了全新的机遇。常见的智能家居产品有家居摄像头,智能门锁,智能安防监控等。如何利用 AI 的能力丰富这些智能家居安防产品的功能,提升其智能化和自动化水平,成为了业界关注的热点。
基于这一背景,本案例中使用 Anthropic Claude 3.5 Sonnet 大模型的多模态能力,结合亚马逊云科技的托管图像识别服务 Rekognition,搭建了家居环境安全监控的解决方案,探索 AI 技术在智能家居领域的应用前景。该方案融合了计算机视觉、模式识别、图像处理等多种人工智能技术,具备火灾监测、人脸识别、图像与视频分析等核心功能。一旦发现异常火情,系统能够立即启动报警机制,通过电话、短信、邮件等方式给用户发送通知;同时,此方案也支持对人员的面部图像进行验证,有效防止外来者的非法闯入。
此案例主要由两部分场景组成。第一个场景基于家居摄像头的实时监控影像,通过对影像的截取形成关键帧,再通过大语言模型进行图像内容的识别。一旦识别到风险情况,大语言模型会触发 agents 进行报警操作,及时通知用户处理。第二个场景同时基于家居摄像头和智能门锁,此场景通过调用 Amazon Rekognition 的人脸比对功能,将实时获取的人脸图像与已经存储的人员面部图像做比对,判断是否为合法人员。本篇文章中,将对使用到的相关服务进行介绍,并通过一个可视化的 Demo,展示上述两个场景的功能。
亚马逊云科技 AI/ML 相关服务介绍
Amazon Bedrock
Amazon Bedrock 是一项完全托管的服务,它通过统一的 API 将来自领先的 AI 公司和 Amazon 的高性能基础模型 (FM) 供您使用。您可以从各种基础模型中进行选择,以找到最适合您的用例的模型。Amazon Bedrock 还提供一系列广泛的功能,用于构建具有安全性、隐私性和负责任 AI 的生成式 AI 应用程序。
使用 Amazon Bedrock,您可以轻松地试验和评估适用于您使用场景的基础模型,使用微调和检索增强生成 (RAG) 等技术或是使用您的数据进行微调,并构建使用您的企业系统和数据源执行任务的个性化应用。
借助 Amazon Bedrock 的无服务器体验,您可以快速入门,使用自己的数据自定义基础模型或直接调用预置的基础模型,并使用 SDK 等工具轻松安全地将其集成和部署到您的应用程序中,而无需管理任何基础设施。
Anthropic Claude 3.5 Sonnet
Claude 3.5 Sonnet 是 Anthropic 公司 2024 年 6 月发布的大语言模型,性能在多项基准测试中处于领先地位。Claude 3.5 Sonnet 支持多模态,对于图片内容的识别相较于上一代模型 Claude 3 Opus 更为准确。Claude 3.5 Sonnet 在 Amazon Bedrock 中以 API 的形式可用,本案例中使用此大模型来监控家居环境的状况。
Amazon Bedrock Agents
Amazon Bedrock Agents 使您能够在应用程序中构建和配置自动化的 Agent。Agent 帮助您的最终用户根据组织数据和用户输入完成操作。Agent 协调基础模型(FM)、数据源、软件应用程序和用户对话之间的交互。此外,Agent 会自动调用 API 来采取操作,并调用知识库来补充这些操作的信息。开发人员可以通过集成 Agent 来加速生成式人工智能应用程序的交付,从而节省数周的开发工作量。
通过 Agent,您可以自动为客户执行任务并回答他们的问题。例如,您可以创建帮助客户处理保险索赔的代理或帮助客户预订旅行的 Agent。您无需配置容量、管理基础设施或编写自定义代码。 Amazon Bedrock 管理即时工程、内存、监控、加密、用户权限和 API 调用。在本案例中,我们通过 Claude 3.5 Sonnet 进行家居环境的安全状况监测,并在出现火警、烟雾等异常情况时调用 Agent 向用户报警。
Amazon Rekognition
Amazon Rekognition 是一项基于云的图像和视频分析服务,可以轻松地向应用程序添加高级计算机视觉功能。该服务由久经考验的深度学习技术提供支持,无需任何机器学习专业知识即可使用。Amazon Rekognition 包含一个易于使用的 API,可以快速分析存储在 Amazon S3 中的任何图像或视频文件。
您可以使用 Rekognition 的 API 添加检测对象、文本、不安全内容、分析图像/视频以及将人脸与应用程序进行比较的功能。借助 Amazon Rekognition 的人脸识别 API,您可以在各种使用案例中检测、分析和比较不同人脸,例如用户验证、编录、人员计数和公共安全等领域。
整体架构
上图为此解决方案的整体架构,主要流程为:
- 智能家居中的摄像头采集到的视频数据存储到 S3 中;
- 用户使用 EC2 部署 Demo 的前后端,对 S3 中的视频进行预处理;
- 对于家庭环境智能监控场景,将监控视频的关键帧进行抽取,并由 Bedrock 中的大模型进行图像理解,如果存在火灾、烟雾等异常情况,由 Bedrock Agents 调用 Lambda 函数,再经由 Lambda 触发 SES 或 Connect 及时将异常情况通过邮件或电话通报给房屋主人;
- 对于人脸检测及校验场景,将监控视频中的人脸图像与 Rekognition 中提前预置的人脸图像进行比对,检验是否是已知人员。此场景适用于陌生人入侵防范或智能门锁;
- 使用 Cloudwatch 监控各项服务的性能指标,使用 DynamoDB 记录每次的识别数据,以便后续处理与分析。
实验步骤
本次实验以 US East(N. Virginia) us-east-1 区域为例。
申请模型访问权限
Amazon Bedrock 用户需要先请求访问模型,然后才能使用模型。 如果您想要添加用于文本、聊天和图像生成的其他模型,您需要请求访问 Amazon Bedrock 中的模型。请注意,只有具有所需 IAM 权限的用户才能管理此帐户的模型访问权限。
- 此处可以看到 Amazon Bedrock 提供的模型,勾选需要的模型,并点击“Save changes”。设置好请求访问模型后,模型即刻便可访问。本次实验主要会用到 Anthropic-Claude 系列模型,由于 Bedrock 按需计费,仅根据您实际使用情况计费,不使用不会收费,为方便后续测试其他模型能力,在这里勾选了全部模型。
部署实验环境
Bedrock agent 部署
首先部署的是用于大模型触发报警的 agent。登陆进您的亚马逊云科技账号,切换到 us-east-1 区域,搜索 Bedrock 服务,点击进入 Bedrock 的控制台页面,在左侧找到 Agents 并打开。
在 Agents 中,您会看到对于 Agents 的介绍。点击 Create Agent 按钮创建一个新的 agent。
进入到创建 agent 的页面,在模型选择的位置选择 Anthropic 的 Claude 3.5 Sonnet,在随后的 Instructions for the Agent 部分,输入以下提示词:
You are a video monitor, we will send you photos for you to analyze. If something bad happens, you need to call the agent to contact the house owner and send the result you find to the agent.
在随后的 Action groups 部分,点击 Add 新建一个 action。
在新建 action 的页面中,找到 Action group function 1 的部分,在顶部输入任意 Name,在随后的 Parameters 中点击 Add parameter 添加一个参数,Name 部分填入 text_to_speak
,Description 随意填写,Required 字段设置为 True
。
其余部分保持不变,点击最下方的 Create。此时会返回到创建 agent 的页面,检查提示词和 Action group 是否已经配置正确,检查后滑动到顶部点击 Save and exit。此时 agent 的状态为 NOT_PREPARED。点击右侧 Prepare,使 agent 就绪。
接下来,需要配置 agent 调用的 Lambda 函数,此函数在大模型监测到危险情况时由 agent 调用,并触发 Connect 或 SES 服务对用户进行电话或邮件提醒。这里以 SES 邮件提醒的 Lambda 函数为例进行部署。在搜索框中输入 Lambda,进入 Lambda 控制台。在 Lambda 控制台的 Functions 中,应能看到以 action-group 开头的函数,此为上一步中创建 action-group 时自动创建的由 agent 触发的函数。点击打开进行修改。
点击后会进入代码编辑的 IDE 页面。将此链接中的代码复制到 IDE 中,并修改邮箱为 SES 中的合法邮箱。修改完成后,点击 Deploy 部署此函数。
Amazon Simple Email Service(SES)是亚马逊云科技的邮件发送服务。在此演示 demo 中,您需要首先在 SES 中对您的邮箱进行验证,才能收到由 agent 发送的邮件。邮箱验证步骤请查阅 SES 相关文档。
点击“Configuration”进入 Lambda 配置页面,选择“Permissions”权限,点进“Role name”超链接跳转至该 IAM Roles 的配置界面。
点击“Edit”编辑,确认并添加 允许使用 SES 服务向已验证的电子邮件地址发送电子邮件的权限。
至此,Bedrock Agent 部署完毕。接下来进行前端操作页面的部署。
前端部署
首先登录进您的亚马逊云科技控制台,然后点击快速部署链接,会跳转到以下界面。选中复选框,点击 Create Stack。
等待 Stack 部署完成后,点击 Resources 标签,点击 MyEC2Instance 的 Physical ID,跳转到 EC2 控制台。
选中此实例,点击右上角 Connect,选择 EC2 Instance Connect 连接到实例。
登录进实例后,执行以下命令。
执行后,复制 https://xxxxx.gradio.live 的地址到浏览器新的标签页,进入前端页面。请勿在实验过程中关闭此终端,否则前端页面可能会停止运行。
功能测试
图像处理
部分情况下,原始视频或图像需要进行灰度、二值化等预处理,以保证后续的分析效果。在第一部分中集成了常见的图像预处理操作,点击对应按钮即可对上传的图片或示例图片进行预处理。
灰度图:
二值化:
添加噪声:
添加水印:
视频分析
视频分析功能演示包括了两部分,第一部分是对视频或图片内容的分析,检测是否有火灾等危险情况。第二部分是对视频或图片中出现人物的人脸检测,区分是否是合法用户。
首先演示视频或图片内容分析的部分。点击示例视频中的第三个,此视频是一个家庭监控的录像,点击 Video Screenshot 进行截图,再点击 Screenshot Analysis 对截图分析。
结果可以看到,Rekognition 服务识别出了图片中出现的多个目标,Claude 3.5 Sonnet 模型对图片中的内容进行了文字描述。如果要对整个视频进行分析,点击 Video Intelligent Analysis。
可以看到,视频分析检测到了火灾的情况。同时,Bedrock Agents 调用了预先配置的 Lambda 函数,通过 SES 向指定的邮箱发送了火灾的警报邮件。
接下来,测试人脸检测的部分。在示例视频中,点击第二个人物访谈视频。首先点击 Video Screenshot,采集人脸的照片,然后点击 Face Verification 进行人脸的比对。在网页底部可以看到人脸比对库中的人脸,由于视频中的人脸出现在了比对库中,因此检测通过。
结论
在本实验中,主要介绍了使用 Bedrock 上的 Claude 3.5 Sonnet 大模型和 Rekognition 图像识别服务,对视频和图像内容进行智能分析的案例。同时利用 Bedrock Agents 功能,对于识别到的安全隐患及时的告知用户。此方案能够使用在诸如智能安防,智能门锁,智能摄像头,威胁检测等场景,降低传统巡检工作量,使用 AI 服务提高效率。
资源清理
在实验结束后,您需要手动清除 S3 桶中的文件,删除 Bedrock Agents 和关联的 Lambda 函数,并删除部署的 CloudFormation 模板,以避免其他费用。
清除 S3 桶中文件
导航到 Amazon S3 控制台,选择以 smart-analysis 开头的存储桶,点击 Empty,根据指引清空桶内文件。此操作将会删除所有保存在 S3 中的文件。之后点击 Delete,删除此存储桶。
清除 CloudWatch 中的日志
导航到 Amazon CloudWatch 控制台,搜索名为“/aws/smartAnalysis”的日志组,点击删除日志组即可。
删除 Amazon Bedrock Agents
进入到 Bedrock 服务,点击 Agents,选中刚刚创建的 agent 后,点击 Delete,按照指引删除。
删除 CloudFormation 模板
导航到 Amazon CloudFormation 控制台,选择 SmartVideoAnalysis 堆栈,点击删除。此操作将会删除部署的 EC2 资源。
至此,资源清理完毕。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。