## 前言
近年来,人工智能技术的飞速发展为智能家居和安全防护领域带来了全新的机遇。常见的智能家居产品有家居摄像头,智能门锁,智能安防监控等。如何利用AI的能力丰富这些智能家居安防产品的功能,提升其智能化和自动化水平,成为了业界关注的热点。
基于这一背景,本案例中使用Anthropic Claude 3.5 Sonnet大模型的多模态能力,结合亚马逊云科技的托管图像识别服务Rekognition,搭建了家居环境安全监控的解决方案,探索AI技术在智能家居领域的应用前景。该方案融合了计算机视觉、模式识别、图像处理等多种人工智能技术,具备火灾监测、人脸识别、图像与视频分析等核心功能。一旦发现异常火情,系统能够立即启动报警机制,通过电话、短信、邮件等方式给用户发送通知;同时,此方案也支持对人员的面部图像进行验证,有效防止外来者的非法闯入。
此案例主要由两部分场景组成。第一个场景基于家居摄像头的实时监控影像,通过对影像的截取形成关键帧,再通过大语言模型进行图像内容的识别。一旦识别到风险情况,大语言模型会触发agents进行报警操作,及时通知用户处理。第二个场景同时基于家居摄像头和智能门锁,此场景通过调用[Amazon Rekognition](https://aws.amazon.com/cn/rekognition/?trk=cndc-detail)的人脸比对功能,将实时获取的人脸图像与已经存储的人员面部图像做比对,判断是否为合法人员。本篇文章中,将对使用到的相关服务进行介绍,并通过一个可视化的Demo,展示上述两个场景的功能。
## 亚马逊云科技AI/ML相关服务介绍
### Amazon Bedrock
[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/) 是一项完全托管的服务,它通过统一的 API 将来自领先的 AI 公司和 Amazon 的高性能基础模型 (FM) 供您使用。您可以从各种基础模型中进行选择,以找到最适合您的用例的模型。[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 还提供一系列广泛的功能,用于构建具有安全性、隐私性和负责任 AI 的生成式 AI 应用程序。
使用 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),您可以轻松地试验和评估适用于您使用场景的基础模型,使用微调和检索增强生成 (RAG) 等技术或是使用您的数据进行微调,并构建使用您的企业系统和数据源执行任务的个性化应用。
借助 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的[无服务器](https://aws.amazon.com/cn/serverless/?trk=cndc-detail)体验,您可以快速入门,使用自己的数据自定义基础模型或直接调用预置的基础模型,并使用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](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail)中以API的形式可用,本案例中使用此大模型来监控家居环境的状况。
#### Amazon Bedrock Agents
[Amazon Bedrock Agents](https://aws.amazon.com/cn/bedrock/agents/?nc1=h_ls) 使您能够在应用程序中构建和配置自动化的Agent。Agent帮助您的最终用户根据组织数据和用户输入完成操作。Agent协调基础模型 (FM)、数据源、软件应用程序和用户对话之间的交互。此外,Agent会自动调用 API 来采取操作,并调用知识库来补充这些操作的信息。开发人员可以通过集成Agent来加速生成式人工智能应用程序的交付,从而节省数周的开发工作量。
通过Agent,您可以自动为客户执行任务并回答他们的问题。例如,您可以创建帮助客户处理保险索赔的代理或帮助客户预订旅行的Agent。您无需配置容量、管理基础设施或编写自定义代码。 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 管理即时工程、内存、监控、加密、用户权限和 API 调用。在本案例中,我们通过Claude 3.5 Sonnet进行家居环境的安全状况监测,并在出现火警、烟雾等异常情况时调用Agent向用户报警。
### Amazon Rekognition
[Amazon Rekognition](https://docs.aws.amazon.com/zh_cn/rekognition/latest/dg/what-is.html) 是一项基于云的图像和视频分析服务,可以轻松地向应用程序添加高级计算机视觉功能。该服务由久经考验的深度学习技术提供支持,无需任何[机器学习](https://aws.amazon.com/cn/machine-learning/?trk=cndc-detail)专业知识即可使用。[Amazon Rekognition](https://aws.amazon.com/cn/rekognition/?trk=cndc-detail) 包含一个易于使用的 API,可以快速分析存储在 [Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail) 中的任何图像或视频文件。
您可以使用 Rekognition 的 API 添加检测对象、文本、不安全内容、分析图像/视频以及将人脸与应用程序进行比较的功能。借助 [Amazon Rekognition](https://aws.amazon.com/cn/rekognition/?trk=cndc-detail) 的人脸识别 API,您可以在各种使用案例中检测、分析和比较不同人脸,例如用户验证、编录、人员计数和公共安全等领域。
### 整体架构
![image.png](https://dev-media.amazoncloud.cn/897cdb6000044737a1a0eceb3a703aa8_image.png "image.png")
上图为此解决方案的整体架构,主要流程为:
1. 智能家居中的摄像头采集到的视频数据存储到S3中;
2. 用户使用EC2部署Demo的前后端,对S3中的视频进行预处理;
3. 对于家庭环境智能监控场景,将监控视频的关键帧进行抽取,并由Bedrock中的大模型进行图像理解,如果存在火灾、烟雾等异常情况,由Bedrock Agents调用Lambda函数,再经由Lambda触发SES或Connect及时将异常情况通过邮件或电话通报给房屋主人;
4. 对于人脸检测及校验场景,将监控视频中的人脸图像与Rekognition中提前预置的人脸图像进行比对,检验是否是已知人员。此场景适用于陌生人入侵防范或智能门锁;
5. 使用Cloudwatch监控各项服务的性能指标,使用DynamoDB记录每次的识别数据,以便后续处理与分析。
## 实验步骤
本次实验以 **US East(N. Virginia)** **us-east-1** ****区域为例。
### 申请模型访问权限
[Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 用户需要先请求访问模型,然后才能使用模型。 如果您想要添加用于文本、聊天和图像生成的其他模型,您需要请求访问 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 中的模型。请注意,只有具有所需 IAM 权限的用户才能管理此帐户的模型访问权限。
1. 登录您的亚马逊云科技账户,进入管理控制台,在控制台右上角选择您方案部署的区域。这里选择了 us-east-1 进行实验演示,**请选择US East (N. Virginia)区域进行后续操作**。
![image.png](https://dev-media.amazoncloud.cn/21992386a5044fae89d50e5b006d3dc6_image.png "image.png")
2. 点击控制台的查找框,搜索 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail),进入 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 的控制台界面,找到下图所示的“Model access”,点击“Manage model access”。
![image.png](https://dev-media.amazoncloud.cn/3e5fdc8b021f4a5685025c25be218eb1_image.png "image.png")
3. 此处可以看到 [Amazon Bedrock](https://aws.amazon.com/cn/bedrock/?trk=cndc-detail) 提供的模型,勾选需要的模型,并点击“Save changes”。设置好请求访问模型后,模型即刻便可访问。本次实验主要会用到 Anthropic-Claude系列模型,由于Bedrock按需计费,仅根据您实际使用情况计费,不使用不会收费,为方便后续测试其他模型能力,在这里勾选了全部模型。
![image.png](https://dev-media.amazoncloud.cn/e08f02418ef4442b8fc5e7a2975d65b5_image.png "image.png")
### 部署实验环境
### Bedrock agent部署
首先部署的是用于大模型触发报警的agent。登陆进您的亚马逊云科技账号,切换到us-east-1区域,搜索Bedrock服务,点击进入Bedrock的控制台页面,在左侧找到Agents并打开。
![image.png](https://dev-media.amazoncloud.cn/db7d80f84b6d479b9c50db3963c73b3b_image.png "image.png")
在Agents中,您会看到对于Agents的介绍。点击Create Agent按钮创建一个新的agent。
![image.png](https://dev-media.amazoncloud.cn/28e527d132704abe9b1b3efac1029428_image.png "image.png")
进入到创建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。
![image.png](https://dev-media.amazoncloud.cn/4bdd9fcaa27146dc91f3a49bc578650c_image.png "image.png")
在新建action的页面中,找到Action group function 1的部分,在顶部输入任意Name,在随后的Parameters中点击Add parameter添加一个参数,Name部分填入`text_to_speak` ,Description随意填写,Required字段设置为`True`。
![image.png](https://dev-media.amazoncloud.cn/c59faae3c9a04c289b5026028c74a7f7_image.png "image.png")
其余部分保持不变,点击最下方的Create。此时会返回到创建agent的页面,检查提示词和Action group是否已经配置正确,检查后滑动到顶部点击Save and exit。此时agent的状态为NOT_PREPARED。点击右侧Prepare,使agent就绪。
![image.png](https://dev-media.amazoncloud.cn/feae38381f2a4df0b5fc5670e897e76a_image.png "image.png")
接下来,需要配置agent调用的Lambda函数,此函数在大模型监测到危险情况时由agent调用,并触发Connect或SES服务对用户进行电话或邮件提醒。这里以SES邮件提醒的Lambda函数为例进行部署。在搜索框中输入Lambda,进入Lambda控制台。在Lambda控制台的Functions中,应能看到以action-group开头的函数,此为上一步中创建action-group时自动创建的由agent触发的函数。点击打开进行修改。
![image.png](https://dev-media.amazoncloud.cn/1b1f0985b5504d53add5a2a77b17ac36_image.png "image.png")
点击后会进入代码编辑的IDE页面。将[此链接](https://github.com/jiaMery/SmartMultiModeAnalysis/blob/main/src/agent_lambda.py)中的代码复制到IDE中,并修改邮箱为SES中的合法邮箱。修改完成后,点击Deploy部署此函数。
> [Amazon Simple Email Service](https://aws.amazon.com/cn/ses/?trk=cndc-detail)(SES)是亚马逊云科技的邮件发送服务。在此演示demo中,您需要首先在SES中对您的邮箱进行验证,才能收到由agent发送的邮件。邮箱验证步骤请查阅SES相关文档。
![image.png](https://dev-media.amazoncloud.cn/6e86220babba47e6bbe7c65fbbf83914_image.png "image.png")
点击“Configuration”进入Lambda配置页面,选择“Permissions”权限,点进“Role name”超链接跳转至该IAM Roles的配置界面。
![image.png](https://dev-media.amazoncloud.cn/ee9373ac9c484f58a72ee752a1caf2c1_image.png "image.png")
点击“Edit”编辑,确认并添加 允许使用 SES 服务向已验证的电子邮件地址发送电子邮件 的权限。
![image.png](https://dev-media.amazoncloud.cn/9956522befd84221a228c1017c80615b_image.png "image.png")
至此,Bedrock Agent部署完毕。接下来进行前端操作页面的部署。
#### 前端部署
首先登录进您的亚马逊云科技控制台,然后点击[快速部署链接](https://us-east-1.console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/quickcreate?templateURL=https%3A%2F%2Faws-cn-getting-started.s3.us-west-2.amazonaws.com%2FsmartVideoAnalysis%2FsmartAnalysisAlarm.yaml\\&stackName=smartVideoAnalysis\\¶m_InstanceType=t2.micro),会跳转到以下界面。选中复选框,点击Create Stack。
![image.png](https://dev-media.amazoncloud.cn/1c6f27d8e42f49a687460aef9bc5bc03_image.png "image.png")
等待Stack部署完成后,点击Resources标签,点击MyEC2Instance的Physical ID,跳转到EC2控制台。
![image.png](https://dev-media.amazoncloud.cn/85dea844b9434e2292bc50e80bcb1811_image.png "image.png")
选中此实例,点击右上角Connect,选择EC2 Instance Connect连接到实例。
![image.png](https://dev-media.amazoncloud.cn/89ee035bd3034f75bb33f98e061ed123_image.png "image.png")
登录进实例后,执行以下命令。
```
cd SmartMultiModeAnalysis
chmod +x webui.sh
./webui.sh
```
执行后,复制https\://xxxxx.gradio.live的地址到浏览器新的标签页,进入前端页面。请勿在实验过程中关闭此终端,否则前端页面可能会停止运行。
![image.png](https://dev-media.amazoncloud.cn/645dbf8636054b64bdca737c5ebbfb4f_image.png "image.png")
### 功能测试
#### 图像处理
部分情况下,原始视频或图像需要进行灰度、二值化等预处理,以保证后续的分析效果。在第一部分中集成了常见的图像预处理操作,点击对应按钮即可对上传的图片或示例图片进行预处理。
![image.png](https://dev-media.amazoncloud.cn/64497535870d4b409198fa53e4d53c1b_image.png "image.png")
灰度图:
![image.png](https://dev-media.amazoncloud.cn/71e69de8474c418895a2908e3e25c881_image.png "image.png")
二值化:
![image.png](https://dev-media.amazoncloud.cn/93fd79d7dd364cc8abbc4d7bb1d82bba_image.png "image.png")
添加噪声:
![image.png](https://dev-media.amazoncloud.cn/dd31b2a4b42448a58f1d850f0bcdcdd0_image.png "image.png")
添加水印:
![image.png](https://dev-media.amazoncloud.cn/9768ba22e33f4fa897c930e219fb3814_image.png "image.png")
#### 视频分析
视频分析功能演示包括了两部分,第一部分是对视频或图片内容的分析,检测是否有火灾等危险情况。第二部分是对视频或图片中出现人物的人脸检测,区分是否是合法用户。
![image.png](https://dev-media.amazoncloud.cn/2a3bbd81290b48e5bf28914b187315b1_image.png "image.png")
首先演示视频或图片内容分析的部分。点击示例视频中的第三个,此视频是一个家庭监控的录像,点击Video Screenshot进行截图,再点击Screenshot Analysis对截图分析。
![image.png](https://dev-media.amazoncloud.cn/0d16ad781e5c4994819788afe77e15bf_image.png "image.png")
结果可以看到,Rekognition服务识别出了图片中出现的多个目标,Claude3.5 Sonnet模型对图片中的内容进行了文字描述。如果要对整个视频进行分析,点击Video Intelligent Analysis。
![image.png](https://dev-media.amazoncloud.cn/f6453eb938f7464eb734536b472de81d_image.png "image.png")
可以看到,视频分析检测到了火灾的情况。同时,Bedrock Agents调用了预先配置的Lambda函数,通过SES向指定的邮箱发送了火灾的警报邮件。
![image.png](https://dev-media.amazoncloud.cn/21a3de7f285d47a7864b2348fc3bb52c_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/3f22b7b4152e42a2a5da873cb9e168fd_image.png "image.png")
接下来,测试人脸检测的部分。在示例视频中,点击第二个人物访谈视频。首先点击Video Screenshot,采集人脸的照片,然后点击Face Verification进行人脸的比对。在网页底部可以看到人脸比对库中的人脸,由于视频中的人脸出现在了比对库中,因此检测通过。
![image.png](https://dev-media.amazoncloud.cn/4a4c4316cdfd46b18f80a62d42697063_image.png "image.png")
![image.png](https://dev-media.amazoncloud.cn/e323eb94c57a4de1a8a81a122466dab8_image.png "image.png")
### 结论
在本实验中,主要介绍了使用Bedrock上的Claude3.5 Sonnet大模型和Rekognition图像识别服务,对视频和图像内容进行智能分析的案例。同时利用Bedrock Agents功能,对于识别到的安全隐患及时的告知用户。此方案能够使用在诸如智能安防,智能门锁,智能摄像头,威胁检测等场景,降低传统巡检工作量,使用AI服务提高效率。
### 资源清理
在实验结束后,您需要手动清除S3桶中的文件,删除Bedrock Agents和关联的Lambda函数,并删除部署的CloudFormation模板,以避免其他费用。
### 清除S3桶中文件
导航到[Amazon S3](https://aws.amazon.com/cn/s3/?trk=cndc-detail)控制台,选择以smart-analysis开头的存储桶,点击Empty,根据指引清空桶内文件。此操作将会删除所有保存在S3中的文件。之后点击Delete,删除此存储桶。
![image.png](https://dev-media.amazoncloud.cn/07e32a612a7746a48bcdd892f7a597ee_image.png "image.png")
### 清除CloudWatch中的日志
导航到[Amazon CloudWatch](https://aws.amazon.com/cn/cloudwatch/?trk=cndc-detail)控制台,搜索名为“/aws/smartAnalysis”的日志组,点击删除日志组即可。
![image.png](https://dev-media.amazoncloud.cn/71a70937d0ef48758e9397d6332815ab_image.png "image.png")
### 删除Bedrock Agents
进入到Bedrock服务,点击Agents,选中刚刚创建的agent后,点击Delete,按照指引删除。
![image.png](https://dev-media.amazoncloud.cn/27f0fd3bc9af42e493100bbffd82a75b_image.png "image.png")
### 删除CloudFormation模板
导航到Amazon CloudFormation控制台,选择SmartVideoAnalysis堆栈,点击删除。此操作将会删除部署的EC2资源。
![image.png](https://dev-media.amazoncloud.cn/ea1075de8f7f4f8aad4416e77dc6cd01_image.png "image.png")
至此,资源清理完毕。
**\*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。**