Skip to content
🔗 分享本题
查看我的学习进度 →

21 模块 Q5 教学图:多模态Agent如何处理多图输入?和单图有什么区别?

🧠 图解记忆:策略1:图像拼接(早期方案);点击图片可查看原图。

💡 答案要点

多图处理的三种策略:

策略1:图像拼接(早期方案)

python
# 把多图拼接成一张大图
grid = make_grid(images, nrow=2)  # 2×2拼接
# 缺点:分辨率下降,位置信息丢失

策略2:独立编码+注意力融合(主流方案)

python
# 每张图独立编码
image_tokens = [vision_encoder(img) for img in images]
# → [Token1(图片1), Token2(图片2), ..., TokenN(图片N)]

# 拼接送入LLM
all_tokens = text_tokens + sum(image_tokens, [])
response = llm(all_tokens)

策略3:原生多图支持(GPT-4o/Gemini)

python
# 原生支持多图,无需特殊处理
response = gpt4o.chat([
    {"type": "text", "text": "比较图1和图2的差异"},
    {"type": "image_url", "image_url": {"url": "图1base64"}},
    {"type": "image_url", "image_url": {"url": "图2base64"}}
])

实战案例:UI截图对比Agent

python
# 场景:检测UI改版前后的视觉差异
def detect_ui_changes(before_img, after_img, spec):
    prompt = f"""
    你是一个UI测试Agent。
    需求规格:{spec}
    请比较改版前后的截图,列出所有视觉差异。
    """

    response = multimodal_llm.generate([
        {"type": "text", "text": prompt},
        {"type": "image_url", "image_url": {"url": before_img}},
        {"type": "image_url", "image_url": {"url": after_img}}
    ])

    # 解析差异列表
    changes = parse_changes(response)
    return changes

面试话术:

"多图处理的核心是位置编码和对齐。我在实现UI测试Agent时,用独立编码+顺序拼接,让Agent明确知道'图1是改版前,图2是改版后'。原生多图模型(如GPT-4o)在这个场景优势明显,不需要手动处理。"

📚 参考:Qwen-VL(多图输入能力见模型论文)