用自然语言指挥AI完成图像识别,VisionAgent让编程更简单!
最近,一个名为VisionAgent的开源工具库引起了广泛关注——它能让你用自然语言指挥AI去完成各种图像识别任务。核心思路很简单:把大语言模型作为“大脑”,由它来理解你的指令并自动生成对应的处理代码。这意味着,哪怕是复杂的图像分析需求,你也不再需要一行行手写算法,动动嘴皮子就能搞定。

想想以前,要做图像识别——比如数清楚一张图里到底有几罐可乐——那得自己吭哧吭哧写代码、调参数,折腾半天。现在呢?只需要告诉VisionAgent:“帮我数数这张图里有几罐可乐”,剩下的它全包了。目前该工具已提供线上demo可以直接体验。
VisionAgent到底是个啥?
简单来说,VisionAgent是一个能让你用“人话”来指挥AI进行图像处理的工具库。它背后依托的是目前最主流的大语言模型(LLM),比如Anthropic的Claude-3.5和OpenAI的o1。这些LLM充当了VisionAgent的“决策中枢”,负责理解你的意图,然后自主生成并执行相应的代码来完成图像分析任务。
VisionAgent能干啥?
它的能力覆盖了多个实用场景,无论是静态图片还是动态视频,都能轻松应对:
- 数数:统计图片中的人头、可乐罐、车辆等目标数量。
- 识别物体:精准检测图片中的各类物体,比如猫、狗、桌、椅等。
- 跟踪物体:在视频中持续追踪特定目标,比如跟踪视频里的一只小狗。
- 生成代码:直接输出可独立运行的图像处理代码,供你学习或二次修改。
怎么用VisionAgent?
上手VisionAgent并不复杂。首先,通过pip完成安装:
pip install vision-agent
然后,准备好Anthropic和OpenAI的API密钥:
export ANTHROPIC_API_KEY="your-api-key" export OPENAI_API_KEY="your-api-key"
搞定这些前置步骤,就可以正式开始用它处理任务了。
例子1:数人头
想知道一张图片里有多少人?操作非常直观:
from vision_agent.agent import VisionAgentCoderV2
from vision_agent.models import AgentMessage
# 创建一个VisionAgent实例
agent = VisionAgentCoderV2(verbose=True)
# 让VisionAgent生成代码来数人头
code_context = agent.generate_code(
[
AgentMessage(
role="user",
content="Count the number of people in this image",
media=["people.png"] # 假设你有一张名为people.png的图片
)
]
)
# 把生成的代码保存到文件里
with open("generated_code.py", "w") as f:
f.write(code_context.code + "n" + code_context.test)
运行这段代码,VisionAgent就会自动生成一个名为generated_code.py的文件,里面就是数人头的完整代码。你可以直接运行,也可以在此基础上自由修改。
例子2:直接用VisionAgent的工具
除了生成代码,VisionAgent还提供了一套即开即用的工具。比如,你想在一张图片里找出所有人,并用框标注出来:
import vision_agent.tools as T
import matplotlib.pyplot as plt
# 加载图片
image = T.load_image("people.png")
# 检测图片里的人
dets = T.countgd_object_detection("person", image)
# 把检测结果(框框)画在图片上
viz = T.overlay_bounding_boxes(image, dets)
# 保存结果
T.sa ve_image(viz, "people_detected.png")
# 显示结果
plt.imshow(viz)
plt.show()
这段代码会生成一张名为people_detected.png的图片,所有人都会被醒目的框标注出来。
例子3:视频处理
VisionAgent的视频处理能力同样出色。比如,想在一段视频中持续跟踪某个物体:
import vision_agent.tools as T
# 从视频里提取每一帧和对应的时间戳
frames_and_ts = T.extract_frames_and_timestamps("people.mp4") # 假设你有一个名为people.mp4的视频
frames = [f["frame"] for f in frames_and_ts]
# 在每一帧里跟踪 "person"
tracks = T.countgd_sam2_video_tracking("person", frames)
# 把跟踪结果(分割掩码)画在每一帧上
viz = T.overlay_segmentation_masks(frames, tracks)
# 把处理后的视频保存下来
T.sa ve_video(viz, "people_detected.mp4")
最终生成的people_detected.mp4中,所有被跟踪的人都会被持续标记出来。
想用其他的LLM?
VisionAgent默认使用Anthropic Claude-3.5和OpenAI o1,但也支持替换成其他大语言模型。只需修改vision_agent/configs目录下的config.py文件即可。例如,如果只想用Anthropic,可以这样操作:
cp vision_agent/configs/anthropic_config.py vision_agent/configs/config.py
同类工具?
目前市场上似乎还没有见到与VisionAgent完全同类的工具。它的独特之处在于将LLM作为智能决策核心,再调用各种视觉工具包来执行具体任务。本质上,VisionAgent的优势在于“大脑”——也就是它所依托的LLM的选择与调度能力,这让它在灵活性和易用性上形成了显著的差异化竞争力。
