简介:多模态模型如何精确“指向”图像中的物体?本文以某开源实验性多模态模型为引,对比符号化视觉原语与自然语言坐标描述两条技术路线,从架构实现、能力边界、工程集成、训练成本与迁移风险等维度系统展开,并给出条件化选型建议与落地注意事项,帮助读者在多模态定位任务中做出合理取舍。
近期,某开源实验性多模态模型(该系列的首个多模态版本)开放了权重与词表。有开发者在检查其 tokenizer 时发现,词表中存在一段连续 id 区间的特殊 token,形如 <|point|> 与 <|/point|>、<|box|> 与 <|/box|>、<|polygon|> 与 <|/polygon|>、<|ref|> 与 <|/ref|> 这样的开闭标签,分别对应“点”“框”“多边形”“引用”四类视觉结构。这正是今年 4 月一项多模态研究提出的“视觉原语(Visual Primitives)”技术路线的典型痕迹。
然而在实际推理中,这些特殊 token 几乎从未显式出现在思维链里:模型描述物体时,直接用自然语言夹杂坐标数值,而不是输出 <|point|>[[a,b]]<|/point|> 这样的显式结构。同时,词表中还存在编号从 0001 到 0442 的图文占位符 token,其数量与文档中“单图最多约 384 个视觉 token”“最多支持数百张图片”的说法在数值上彼此对不上。
这组现象背后,是多模态定位领域两条真实存在的技术路线之争:
本文将围绕这两条路线,从架构、能力、工程集成、训练成本、迁移风险等维度做系统对比,并给出条件化的选型建议。
理解对比对象,先要理解研究提出的两个“鸿沟”:
方案 A(符号化视觉原语)针对的正是“指代鸿沟”:在连续视觉空间中引入无歧义指针。点、框、多边形这些原语可以精确锚定物体位置,<|ref|> 一类标签还能把“描述”与“指代”绑定,避免自然语言歧义对识别任务的干扰。技术上,它需要扩展 tokenizer 词表、新增特殊 token id,并在训练中让模型学会在恰当时机输出这些结构。
方案 B(自然语言坐标描述)则不改动词表:模型在生成文本时,直接以“目标位于约 (0.42, 0.71) 处”这类形式给出位置。坐标精度依赖后训练阶段的对齐与强化,输出格式是一种“约定”,而非受词表约束的“语法”。
方案 A 的实现路径是“词表扩展 + 结构化生成”:在 tokenizer 中新增特殊 token;训练时让模型学习何时输出结构化 span;推理后通过精确匹配解析,得到确定性结果。
方案 B 的实现路径是“后训练对齐 + 约定格式”:词表不动,坐标以普通文本 token 输出;依赖后训练阶段的大量对齐数据把“给坐标”变成行为习惯;工程侧需要用正则或受约束解码来抽取坐标,容错要求高。
示意性伪代码(通用示例):
import re# 方案 A:结构化解析,结果确定性高def parse_primitives(text):points = re.findall(r"<\|point\|>\s*\[\[([-\d.]+),\s*([-\d.]+)\]\]\s*<\|/point\|>", text)boxes = re.findall(r"<\|box\|>\s*(\[[^\]]+\])\s*<\|/box\|>", text)return {"points": [tuple(map(float, p)) for p in points],"boxes": boxes}# 方案 B:自由文本坐标抽取,需要容错与清洗def parse_loose_coords(text):return re.findall(r"\(([-\d.]+)\s*,\s*([-\d.]+)\)", text)
方案 A 的输出是机器可读结构,可直接对接下游系统(画框、触发动作、入库标注),集成逻辑简单可靠;方案 B 需要一个健壮的抽取层,处理小数格式、括号风格、坐标顺序等变体,并在抽取失败时设计降级策略。
方案 A 的思维链中存在显式标记,便于人工审计与自动化评测,可以精确统计“指对了几个”;方案 B 的坐标混在长文本中,评测前需要先抽取。而“词表有能力 ≠ 模型会用”这一观察也说明:对多模态模型的能力评估必须以黑盒行为测试为准,不能只看 tokenizer、配置或论文描述。
方案 A 的特殊 token 语义压缩程度高,表达同样位置信息所需 token 更少;方案 B 的自然语言描述更冗长,长思维链场景下推理成本相应增加,但省去了额外解析层的维护。
该模型还暴露了输入侧的一个差异点:词表中存在编号 0001–0442 的图文占位符 token。合理推测它是图文混排输入中标记图片位置的手段,且一张图片可能由多个 span 共同描述;但“442 个占位符”“单图约 384 个视觉 token”“文档声称的最大图片数”三者数值互相矛盾。这提醒工程团队:输入侧的 token 预算与占位符映射关系同样需要实测验证,不能照抄文档。
两条路线都需要关注:输出坐标的合法性校验(是否越界)、恶意图片诱导模型输出异常结构(变相注入)、推理日志中图像内容的隐私合规与审计留痕。方案 A 的输出受“语法”约束,注入面相对更窄;方案 B 是自由文本,需要在输出过滤上投入更多。
| 维度 | 方案 A:符号化视觉原语 | 方案 B:自然语言坐标描述 |
|---|---|---|
| 实现方式 | 扩展词表,输出结构化 span | 不改词表,坐标内嵌于文本 |
| 指代精度 | 高,无歧义指针 | 依赖后训练,存在歧义累积 |
| 密集计数/复杂定位 | 强适配 | 长链条下易逻辑崩溃 |
| 解析集成 | 确定性解析,易对接下游 | 需正则抽取与容错降级 |
| 词表/版本兼容 | id 稳定性风险,易路线漂移 | 兼容性好,行为约束弱 |
| 可解释性 | 思维链可审计 | 需先抽取再评测 |
| Token 开销 | 更紧凑 | 更冗长 |
| 训练成本 | 词表扩展与 embedding 调整 | 大量后训练对齐数据 |
| 安全面 | 语法约束,注入面较窄 | 自由文本,过滤成本更高 |
回到本文的对比主题:符号化视觉原语与自然语言坐标描述,针对的是同一个“指代鸿沟”,差异在于承载形式——前者把指代做成了受词表约束的“语法”,后者把它做成了后训练习得的“习惯”。前者换来精度、可解析性与可审计性,代价是词表扩展与版本漂移风险;后者换来灵活性与兼容性,代价是歧义累积与抽取工程的持续投入。选型的核心判断依据是:任务的指代密度有多高、下游系统对机器可读结构的依赖有多强、团队对后训练与解析工程的投入意愿有多大。而这次开源观察带来的额外一课是:评估多模态模型,永远以实际行为为准——词表与文档只能作为线索,不能作为结论。