VisionAgent 是来自 LandingAI 的视觉AI领航员。给它一个提示和一张图片,它会自动选择合适的视觉模型并输出可直接运行的代码——让你在几分钟内构建出具备视觉能力的应用。你可以通过 examples/chat 中的本地 Web 应用体验 VisionAgent,具体请遵循该目录下的 README.md 说明:
https://github.com/user-attachments/assets/752632b3-dda5-44f1-b27e-5cb4c97757ac
VisionAgent 使用来自 Anthropic 和 Google 的模型来响应提示并生成代码。
当你运行 VisionAgent 时,应用需要使用你的 API 密钥来访问 Anthropic 和 Google 的模型。这确保了你在 VisionAgent 上运行的项目不会受到 LandingAI 账户的速率限制影响,同时也防止众多用户使 LandingAI 的速率限制过载。
Anthropic 和 Google 各自有其速率限制和付费层级。请参考它们的文档和定价以了解更多信息。
注意: 在 VisionAgent v1.0.2 及更早版本中,VisionAgent 由 Anthropic Claude-3.5 和 OpenAI o1 驱动。如果使用这些版本的 VisionAgent,你需要获取一个 OpenAI API 密钥并将其设置为环境变量。
使用 uv 安装:
uv add vision-agent
使用 pip 安装:
pip install vision-agent
遵循此快速开始指南,学习如何向 VisionAgent 提问。掌握基础后,你可以自定义提示和工作流以满足你的需求。
quickstart 的文件夹。quickstart 文件夹。source.py 的文件中。将该文件保存到 quickstart 文件夹。source.py。generated_code.py 的文件,并将生成的代码保存在其中。在运行 VisionAgent 代码之前,你必须将 Anthropic、Google 和 VisionAgent API 密钥设置为环境变量。每个操作系统提供了不同的设置方法。
以下是设置变量的代码:
export VISION_AGENT_API_KEY="your-api-key"
export ANTHROPIC_API_KEY="your-api-key"
export GOOGLE_API_KEY="your-api-key"
要使用 VisionAgent 生成代码,可以使用以下脚本作为起点:
# 从 VisionAgent 包中导入所需的类
from vision_agent.agent import VisionAgentCoderV2
from vision_agent.models import AgentMessage
# 启用详细输出
agent = VisionAgentCoderV2(verbose=True)
# 添加你的提示(内容)和图像文件(媒体)
code_context = agent.generate_code(
[
AgentMessage(
role="user",
content="Describe the image",
media=["friends.jpg"]
)
]
)
# 将输出写入文件
with open("generated_code.py", "w") as f:
f.write(code_context.code + "\n" + code_context.test)
当你提交一个提示时,VisionAgent 会执行以下任务。
查看此 Jupyter Notebook,了解如何使用 VisionAgent 来统计图像中的易拉罐数量:
VisionAgent 库包含一套工具,这些是完成特定任务的独立模型或函数。当你向 VisionAgent 提问时,VisionAgent 会选择其中一个或多个工具来完成你提示中概述的任务。
例如,如果你提示 VisionAgent “统计图像中的狗的数量”,VisionAgent 可能会使用 florence2_object_detection 工具来检测所有的狗,然后使用 countgd_object_detection 工具来统计检测到的狗的数量。
安装 VisionAgent 库后,你也可以在自己的脚本中使用这些工具。例如,如果你正在编写一个跟踪视频中对象的脚本,你可以调用 owlv2_sam2_video_tracking 函数。换句话说,你可以在单纯向 VisionAgent 提问之外使用这些工具。
这些工具位于 vision_agent.tools API 中。
你可以调用 countgd_object_detection 函数来统计图像中的对象数量。
为此,你可以运行以下脚本:
# 导入 VisionAgent 工具库;导入 Matplotlib 以可视化结果
import vision_agent.tools as T
import matplotlib.pyplot as plt
# 加载图像
image = T.load_image("people.png")
# 调用函数统计图像中的对象,并指定你想统计人
dets = T.countgd_object_detection("person", image)
# 在图像上可视化 countgd 的边界框
viz = T.overlay_bounding_boxes(image, dets)
# 将可视化结果保存到文件
T.save_image(viz, "people_detected.png")
# 显示可视化结果
plt.imshow(viz)
plt.show()
你可以调用 countgd_sam2_video_tracking 函数来跟踪视频中的人,并将其与 extract_frames_and_timestamps 函数配对,以返回这些人出现的帧和时间戳。
为此,你可以运行以下脚本:
# 导入 VisionAgent 工具库
import vision_agent.tools as T
# 调用函数获取帧和时间戳
frames_and_ts = T.extract_frames_and_timestamps("people.mp4")
# 从 frames_and_ts 列表中提取帧
frames = [f["frame"] for f in frames_and_ts]
# 调用函数跟踪对象,并指定你想跟踪人
tracks = T.countgd_sam2_video_tracking("person", frames)
# 在帧上可视化 countgd 跟踪结果并保存视频
viz = T.overlay_segmentation_masks(frames, tracks)
T.save_video(viz, "people_detected.mp4")
VisionAgent 使用 Anthropic Claude 3.7 Sonnet 和 Gemini Flash 2.0 Experimental (gemini-2.0-flash-exp) 来响应提示并生成代码。我们发现这些模型为 VisionAgent 提供了最佳性能,并且在其提供商的免费层级(有速率限制)中可用。
如果你希望仅使用其中一个模型或一组不同的模型,可以更改此文件中的选定 LLM 提供商:vision_agent/configs/config.py。你还必须将提供商的 API 密钥添加为环境变量。
例如,如果你想仅使用 Anthropic 模型,请运行以下命令:
cp vision_agent/configs/anthropic_config.py vision_agent/configs/config.py
或者,你也可以在 config.py 文件中手动输入模型详细信息。例如,如果你想将规划器模型从 Anthropic 更改为 OpenAI,你需要将以下代码:
planner: Type[LMM] = Field(default=AnthropicLMM)
planner_kwargs: dict = Field(
default_factory=lambda: {
"model_name": "claude-3-7-sonnet-20250219",
"temperature": 0.0,
"image_size": 768,
}
)
替换为此代码:
planner: Type[LMM] = Field(default=OpenAILMM)
planner_kwargs: dict = Field(
default_factory=lambda: {
"model_name": "gpt-4o-2024-11-20",
"temperature": 0.0,
"image_size": 768,
"image_detail": "low",
}
)