AWS Machine Learning Blog

Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers

6.9内容质量
Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers

TL;DR · AI 摘要

Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers Artificial Intelligence Agentic vision:...

核心要点

  • 主题聚焦:Agentic vision: Building visual intelligence wit
  • 来源:AWS Machine Learning Blog,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端#云计算#安全
打开原文

Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers | Artificial Intelligence

Agentic vision: Building visual intelligence with Amazon Bedrock and MCP servers

将人工智能融入实际应用一直受到一个根本性挑战的阻碍:视觉系统、思考系统和行动系统之间的脱节。开发人员在处理复杂集成、管理多个API以及创建自定义解决方案以弥合这些差距时面临困难,导致实现效率低下、成本高昂且通常脆弱。

我们正在融合三大核心技术:计算机视觉、Strands Agents 和模型上下文协议(MCP)。它们共同构建了一个统一框架下的流程,使视觉信息能够被捕获、理解和执行。这种集成消除了感知、决策和行动之间的传统障碍,使人工智能系统能够像人类智能一样协调地进行观察、理解和响应。

在本文中,我们将带您了解计算机视觉MCP服务器,该示例展示了这一方法,说明人工智能系统如何通过单一标准化接口处理视觉信息并做出智能决策。这种融合将曾经复杂的集成挑战转化为简化流程,使人工智能能力能够惠及更广泛的应用和开发人员。

解决方案概述

在我们的架构中,客户端通过一个集中的AWS身份和访问管理(IAM)角色与多个亚马逊网络服务(AWS)进行交互,该角色作为管理权限的安全网关。亚马逊简单存储服务(Amazon S3)负责对象存储以检索和管理数据。亚马逊OpenSearch提供搜索功能以查询索引数据。亚马逊Bedrock提供生成式AI模型,为客户端提供文本生成等AI工具。最后,亚马逊Rekognition专注于图像分析,执行物体检测等功能。该架构强调统一的安全模型,其中IAM角色集中管理权限,消除了客户端中嵌入凭证的需求,并简化了跨多个AWS服务的受控访问。

计算机视觉、Strands Agents 和 MCP 服务器

该解决方案使用三种主要技术。计算机视觉专注于处理图像和视频等视觉信息。Strands Agents 是一个构建AI代理的框架,支持多个模型提供商和部署目标,提供可定制的代理循环,具备可观测性、追踪和可扩展部署等生产功能。最后,模型上下文协议(MCP)是一个标准,旨在简化AI系统与工具和数据源的集成,取代为每个AI模型和数据源对单独构建连接的过程。

用户界面(MCP 客户端)

该界面采用Streamlit聊天UI。左侧有一个菜单面板,用户可以选择用于分析的首选基础模型,默认为具有推理能力的Claude 4 Sonnet,包括Claude 4 Sonnet和Claude 3.7 Sonnet选项。用户还可以通过此侧边栏中的专用按钮重置对话历史记录。

使用该应用程序时,用户可通过界面中央突出显示的“媒体上传”区域上传视觉内容。系统支持图片和视频两种格式,图片支持 PNG、JPG、JPEG、GIF、WEBP 等格式,视频支持 MP4、AVI、MOV、MKV、WEBM、MPEG4 等格式,单个文件最大限制为 200 MB。用户可通过将文件拖拽到指定上传区域,或点击“浏览文件”手动从设备中选择文件。媒体上传后,AI 系统可执行多种分析任务,包括对象裁剪、标签检测和详细内容分析。用户可通过界面底部的消息输入框与系统交互,针对上传的媒体内容提出具体问题或请求特定类型的分析。

以下是代理使用的系统提示:

code
SYSTEM_PROMPT = """您是一个拥有直接访问 CV 工具权限的专用计算机视觉代理。

您的角色:单代理计算机视觉专家

- 负责图像/视频分析、裁剪、背景移除、标签检测
- 可直接使用可用工具处理用户请求
- 提供包含可视化结果的清晰、可操作的响应

可用工具:

1. crop_bounding_box(image_filename, object_name) - 返回 "cropped_image_filename"

...

工具使用模式:

裁剪工作流程:
  1. 调用 crop_bounding_box("image.jpg", "person") - "cropped_person_123.jpg"
  2. 调用 crop_bounding_box("image.jpg", "dog") - "cropped_dog_456.jpg"
  3. 调用 ui_show_images(["cropped_person_123.jpg", "cropped_dog_456.jpg"])
code

...

变量传递:

- 输入:用户查询中包含上传文件名的上下文

...

效率规则:

- 使用 ui_show_images 显示多个结果(可创建更优布局)

...

响应格式:

1. 确认请求
2. 按逻辑顺序执行适当工具
3. 使用 UI 工具显示结果
4. 总结已完成操作
- 调用 ui_show_images 与 ["image_bg_removed_123456.png"] 显示结果

视频分析示例工作流程:

- 调用 analyze_video 工具并传入视频文件名和具体监控指令
- 工具将返回详细分析结果

始终原样返回接收到的错误信息。

"""

计算机视觉 MCP 服务器

我们的实现包含两个服务器,即 CV 服务器和 OpenSearch 服务器。每个服务器处理不同类型的请求,具体说明如下。

CV 服务器

AWS 计算机视觉 MCP 服务器通过将三个 Amazon AI 服务整合为标准化协议,为图像和视频分析提供统一接口。这种集成使 AI 代理能够通过一致的 API 访问和处理视觉内容,从而简化计算机视觉应用的开发。MCP 服务器提供以下工具:

  • describe_image 工具使用 Amazon Bedrock 中的 Claude 模型,根据特定监控指令提供图像分析。该功能从 Amazon S3 存储中检索图像,并通过 Claude 的多模态能力进行处理,支持 AI 驱动的视觉内容解释。适用于需要图像描述或特定属性识别的场景,返回分析结果及状态信息。

代理响应:我将帮助您描述上传的图片。首先让我使用计算机视觉代理进行分析。现在我将显示带有描述的图片:图片描述 上传的图片展示了一个乡村户外场景,包含以下内容:前景有一只羊(置信度为99.07%) 羊似乎正在草甸或牧场中吃草 羊的毛色以灰色/白色为主 场景位于草原/草甸环境中 背景由乡村或田园景观中典型的绿色田野组成 场景具有自然的户外光照 图片捕捉到了一个宁静的乡村场景,羊位于画面中央,背景是绿色的草甸。主要颜色为背景中的各种绿色调(代表草原)和前景羊的灰色/白色调。这是一张自然摄影照片,展示了牲畜在其自然田园环境中的放牧场景,显示羊在开阔的田野中吃草。

以下来自describe_image工具的代码片段展示了工具的整体结构:

code
async def describe_image(image_file_name: str, monitoring_instructions: str) ...
    try:
        # 从S3获取图片
        prefix = f"mcp/{image_file_name}"
        print(f"\n[DEBUG] 正在尝试分析位于s3://{Connections.agent_bucket_name}/{prefix}的图片\n")
        response = Connections.s3_client.get_object(
            Bucket=Connections.agent_bucket_name,
            Key=prefix
        )
        image_data = response['Body'].read()
        content_type = response['ContentType']
        # 确保内容类型被Bedrock支持
        valid_content_types = ['image/jpeg', 'image/png', 'image/gif', 'image/webp']
        if content_type not in valid_content_types:
            # 尝试根据文件扩展名判断
            if image_file_name.lower().endswith(('.jpg', '.jpeg')):
                content_type = 'image/jpeg'
            elif image_file_name.lower().endswith('.png'):
                content_type = 'image/png'
            elif image_file_name.lower().endswith('.gif'):
                content_type = 'image/gif'
            elif image_file_name.lower().endswith('.webp'):
                content_type = 'image/webp'
            else:
                content_type = 'image/jpeg'  # 默认回退
            print(f"[DEBUG] 内容类型已更正为: {content_type}")
        # 为Claude创建提示
        prompt = create_multimodal_prompt(
            image_data=image_data,
            text=monitoring_instructions,
            content_type=content_type,
            system_prompt=(
                "您是一个有帮助的助手,负责分析图片。 "
                "根据用户的指示提供详细准确的描述。"
            )
        )
        # 从Claude获取分析结果
        analysis = invoke_bedrock_model(prompt)
        return ImageAnalysisResponse(
            status="success",
            source=prefix,
            analysis=analysis,
            message="图片分析成功完成"
        )
    except Exception as e:
        logger.error(f"分析图片时出错: {str(e)}")
        return ImageAnalysisResponse(
            status="error",
            source=image_file_name,
            analysis=None,
            message=f"分析图片时出错: {str(e)}"
        )
  • analyze_video 工具利用 Amazon Nova 视频分析功能处理视频内容。该功能可处理存储在 S3 中的视频文件,并可根据特定指令进行分析。

上传的视频:

用户:分析上传的视频

Agent 回复:我将帮助您分析上传的视频。让我将这项任务委托给计算机视觉专家。我已经分析了您上传的视频(15dc6b31_19642406-uhd_3840_2160_30fps.mp4),以下是分析结果:内容描述 视频展示了植物(可能是某种草类)的特写镜头,植物表面覆盖着积雪。场景设定在田野中,看起来是阳光明媚的冬日。背景经过刻意模糊处理,营造出自然的景深效果,突出主体。视觉元素 白色积雪与植物自然的绿色部分形成鲜明的视觉对比。积雪在植物细长的叶片上分布不均。积雪似乎有轻微融化迹象,表明温度较为温和。

  • detect_labels 工具通过 Amazon Rekognition 实现标签检测和图像属性分析。该工具提供对检测参数的控制,包括置信度阈值、最大标签数量和自定义标签过滤器。该工具可识别图像中的物体、场景和活动,并提供详细的边界框信息用于空间定位。

Agent 回复:我将帮助您检测上传图像中的标签。让我使用计算机视觉专家进行分析。现在我已经分析完图像,将用检测到的标签展示结果:## 图像标签检测结果 计算机视觉分析在您的图像中检测到以下标签:主要标签(含置信度):动物(99.99%)、猫(99.99%)、小猫(99.99%)、哺乳动物(99.99%)、宠物(99.99%)| 草(99.99%)、植物(99.99%)| 草坪(95.56%)、曼克斯猫(77.85%)。详情:图像包含5只猫/小猫(通过单独的边界框检测到)。这些猫似乎在草地上。其中一只猫可能是曼克斯猫品种(置信度77.85%)。主色调包含多种灰、绿、棕色。图像主要展示多只小猫或猫在草坪区域放松的场景。

  • crop_bounding_box 工具利用 Amazon Rekognition 的目标检测功能。使用 Amazon Rekognition 进行裁剪时,该服务首先分析图像以识别人脸、物体或文本等关键元素,然后提供精确的边界框坐标用于智能裁剪。
  • remove_background 工具使用 rembg 库,这是一种无需复杂设置或深度机器学习(ML)专业知识即可去除图像背景的解决方案。

OpenSearch 服务器

OpenSearch MCP 服务器为图像的摄入和检索提供统一接口。MCP 服务器中可用的工具包括:

  • generate_image_description 工具使用 Amazon Bedrock Claude 模型分析图像并生成自然语言描述。该工具通过将图像转换为 Claude 多模态能力兼容的格式,然后根据视觉内容生成详细且具有上下文的描述。
  • generate_multimodal_embedding 工具使用 Amazon Titan 多模态模型创建高维向量表示(嵌入),同时捕捉视觉和文本信息。这些嵌入在共享的向量空间中编码图像与文本之间的语义关系,支持相似性比较和跨模态检索任务。
  • ingest_image_to_opensearch 工具为在 OpenSearch 中处理和存储图像提供端到端流水线。它结合图像描述生成和多模态嵌入创建的功能,随后将这些信息连同适当元数据一起在 OpenSearch 中进行索引。
  • query_images_by_text 工具通过使用 OpenSearch 中存储的多模态嵌入,支持在图像集合中进行自然语言搜索。用户可通过文本查询搜索图像,系统会将文本查询转换为嵌入并与存储的图像嵌入进行比较,以找到语义上最相似的匹配项。
  • query_images_by_image 工具实现基于图像的搜索功能,允许用户通过将图像作为查询输入来查找相似图像。它会处理查询图像以生成其嵌入,然后在 OpenSearch 中存储的图像嵌入中执行相似性搜索。

代理响应:我会帮助您在“images”索引中查找与您提供的图像相似的图像。让我先分析这张图像,然后进行搜索。根据搜索结果,我在“images”索引中找到了一张与您的查询匹配的相似图像。让我向您展示原始图像和我找到的相似图像:我已在“images”索引中找到一张与您提供的图像相似的图像。以下是搜索结果:原始图像:一只斑纹猫头鹰(Strix varia)栖息在森林环境中的树干上。猫头鹰有显著的大眼睛和斑驳的羽毛,能有效伪装成树皮。找到的相似图像:另一张显示小型猫头鹰栖息在树枝上的图像,同样具有大而警觉的眼睛和蓬松的羽毛,有助于在森林环境中伪装。这两张图像的相似度评分为 0.65(数值越高表示越相似),表明基于两张图像的视觉元素和上下文有良好的匹配度。这两张照片都捕捉到了猫头鹰在自然森林栖息地中的场景,构图和主题相似。您是否希望我使用不同的关键词搜索更多相似图像,或者需要了解更多关于这两张猫头鹰图像的信息?

  • bulk_ingest_images 工具为大规模图像导入提供批量处理能力。它优化了同时为多张图像生成描述和嵌入的过程,管理并行处理和资源利用率。

设置与依赖项

在了解了应用的不同功能后,现在我们将逐步介绍部署流程。开始之前,请确保已安装以下内容:

  • AWS 命令行界面(AWS CLI)
  • 有效的 AWS 账户
  • Python

要部署该解决方案,请遵循 GitHub 仓库中的 README 指南。点击此处打开 AWS 控制台并跟随操作。

用例扩展

计算机视觉 MCP 服务器有多种应用,包括但不限于以下内容:

用例 1:计算机视觉流水线

无基础设施的计算机视觉流水线提供了一种实现视觉分析能力的方案,无需传统复杂的基础设施搭建和维护。这种架构使开发人员能够执行生成检测对象边界框、创建详细图像描述以及分析视频内容等任务,而无需专用服务器或复杂管理系统。内联代理作为协调者,高效地与MCP服务器协作,访问一系列计算机视觉工具。这种简化方法消除了服务器管理和基础设施维护的需求,同时提供按需付费模式和快速部署的优势。因此,开发人员可以快速构建功能强大的计算机视觉流水线,最小化运营开销,专注于技术使用而非基础设施管理。

用例2:基于嵌入的智能图像分类

智能图像分类系统通过实现基于嵌入的相似性算法来改进传统图像搜索,这些算法支持对视觉内容的语义理解。通过在向量数据库中生成和存储图像嵌入,该解决方案突破了传统基于关键词搜索的限制,实现了基于上下文的图像检索。系统使用AI模型生成丰富的嵌入,捕捉图像的语义本质,使用户即使在没有精确关键词匹配的情况下也能找到视觉相似的内容。这种方法创建了一个可扩展的分类系统,能够理解视觉关系和上下文,特别适用于传统搜索方法难以应对的大型图像集合。最终应用提供了直观的相似性搜索功能,可根据视觉特征、构图元素和语义含义识别相关图像,为视觉内容的组织和检索提供更自然有效的解决方案。

用例3:用于上下文推理的视觉记忆数据库

用于上下文推理的视觉记忆数据库是计算机视觉与语义理解的融合,结合了无基础设施CV流水线的优势和基于嵌入的相似性搜索能力。该系统处理场景以提取对象及其边界框,为每个元素生成嵌入并存储包含时间、空间信息的丰富元数据。这种方法支持跨多个摄像头和时间段的上下文推理,实现复杂查询和洞察。该系统在安防监控、人员追踪和场景综合理解等应用中表现出色,具备可识别模式和异常的时间推理能力。它可以回答关于个人、其关联关系以及特定区域物体存在情况的复杂问题,同时与视频监控代理集成构建上下文视觉记忆。这种集成实现了可疑活动检测和历史模式分析等功能,创建了一个超越简单物体识别的动态智能视觉理解系统,提供深度上下文感知洞察。

清理

为避免持续收费,请完成以下清理步骤:

  • 清空S3存储桶。
  • 删除AWS CloudFormation堆栈。

结论

通过将 Amazon Bedrock 强大的 AI 能力与标准化的 MCP 协议整合,我们展示了现代计算机视觉应用如何既先进又易于使用。三个应用场景证明了这种统一方法的实际价值。这种整合通过无服务器架构、语义理解、上下文推理能力以及标准化接口,有效降低了基础设施复杂性,简化了开发和部署流程。

标准化协议、强大 AI 模型与灵活部署方案的结合,使该解决方案成为下一代视觉智能应用的基础。随着 AI 的持续演进,此处展示的标准化、可访问性与整合原则,将在构建连接视觉感知与智能行动的实用化、可扩展方案中变得愈发重要。这不仅是一项技术突破,更标志着我们开发 AI 视觉系统方式的根本性转变。

我们很想了解您是如何使用计算机视觉 MCP 服务器的。请在评论中分享您的应用场景和问题。

参考资料

  • 计算机视觉
  • Strands Agents
  • 模型上下文协议(MCP)

作者简介

'\"