一句话定义:截图标记提示(Set-of-Marks,简称 SoM)是一种给视觉语言模型(Vision-Language Model,VLM)喂图的方式——先用程序在截图上框出可操作的元素并标上编号,再让模型用编号来指代目标,而不是让它自己猜坐标。
为什么需要它
视觉语言模型看图很在行,"这是一张购物车页面"张口就来;但让它说出某个按钮在图片里的精确位置(像素坐标),准确率会明显掉下来。原因不难理解:坐标是连续数值,模型要"回归"出一个精确小数,而它在训练里学得更多的是语义匹配。
打个比方。你让新同事去点外卖,有两种说法:
- "帮我点那份 32 块钱、带番茄和鸡蛋的",对方得自己一项项对。
- "帮我点 7 号",他扫一眼菜单编号,一秒就懂。
SoM 干的就是第二件事:给图上每个候选元素发一个号牌。
它怎么运作
流程通常三步:
1. 找候选:用目标检测、图像分割或界面解析工具,在截图上找出按钮、输入框、链接等元素,画出边界框。
2. 编号:给每个框贴一个数字(1、2、3……),直接画在图上。
3. 提问:把这张带编号的图交给模型,问"点击 7 号""在 3 号里输入邮箱"。
任务的性质由此改变:从"输出一串坐标"变成"在可见的标签里挑一个"。后者更接近分类或选择题,模型擅长得多。模型只负责说编号,编号到真实坐标的映射由确定性代码完成,这一步不会出错。
和相邻概念的区别
| 做法 | 模型输出的东西 | 稳定性 |
|---|---|---|
| 直接输出坐标 | 一串数字,可能偏几十像素 | 低 |
| 网格/分块提示 | 格子编号,粒度较粗 | 中 |
| 截图标记提示 | 图上显式的元素编号 | 较高 |
| 纯文字描述定位 | "右上角那个按钮" | 依赖理解,易歧义 |
关键差异在于:SoM 把"指哪里"这件事从模型内部挪到了图面上,用外部程序保证框和编号的准确性。
对从业者的意义
做 GUI 智能体(GUI Agent)、界面自动化、RPA、端到端测试的人,常把 SoM 当作稳定化手段。它把"看懂界面"和"点对位置"解耦:前者交给模型,后者交给检测器和编号映射。调试也直观——模型说要点 7 号,你打开标注图就能看出 7 号是不是它想点的东西。
对普通人的意义
你可能已经在用带这类技术的助手:让它帮你填表、点餐、跨应用操作。它少点错一次,背后往往就是"先编号、再点号"在起作用。反过来,当助手点错按钮时,问题多半出在前一步没框对,而不是模型"没看懂"。
两点提醒:编号框依赖前置检测,界面密集或动态变化时容易框漏、框重;编号也只解决了"指代",不解决"该不该点"。具体实现与效果,以各家官方文档和页面为准。
