Visual Prompting
视觉提示通过点击、框、掩码或示例图像告诉视觉模型要查找什么,而不是使用文字。介绍 SAM 和开放集检测器如何使用视觉提示。
视觉提示是指通过在图像本身上标记,告知计算机视觉模型要分割或检测什么;标记方式可以是点击、方框、涂鸦、掩码或示例,而不是用文字描述目标。Meta 的 Segment Anything Model (SAM)等支持提示的基础模型,会将每个标记转换为嵌入,并预测所指对象的掩码,无需重新训练。视觉提示会指向某个特定实例,或展示要查找对象的示例;当目标难以通过文本提示命名时,例如特定缺陷或不熟悉的零件,这种方式尤其有用。视觉提示微调虽然名称相似,却是一种提示微调方法,会在微调期间学习额外的输入 Token,而无需任何人标记图像。
视觉提示的工作原理#
Meta 于 2023 年发布了 SAM,并同时推出 SA-1B 数据集;该数据集包含 1100 万张图像中的 11 亿个掩码。SAM 将工作分为三部分:大型图像编码器(即视觉 Transformer)每张图像运行一次;轻量级提示编码器将点和方框转换为位置嵌入;掩码解码器将两者结合,在约 50 毫秒内预测掩码,可在网页浏览器中运行,因此每次新点击都会交互式地更新结果。单击的含义可能不明确,因为它既可能指一件衬衫,也可能指穿着衬衫的人,因此 SAM 可以返回三个候选掩码,并为每个掩码提供质量分数。Meta 的 SAM 2(2024)将提示扩展到了视频,可借助对先前帧的记忆,将点击选中的对象追踪到后续帧。SAM 2.1 可在 Ultralytics 软件包中运行,其中点击表示一个点,并带有标签:前景为 1,背景为 0:
from ultralytics import SAM
# 加载 Meta 的 SAM 2.1 基础模型
model = SAM("sam2.1_b.pt")
# 在深色外套男子身上进行一次前景点击(标签为 1)
results = model("https://ultralytics.com/images/bus.jpg", points=[280, 600], labels=[1])
result = results[0]
# 保存带有点击对象预测掩码的图像
result.save(filename="sam_point_prompt.jpg")保存的图像显示了 SAM 2.1 根据这一次点击预测出的掩码。交互式分割会重复此步骤,直到掩码正确为止。Ultralytics Platform的智能标注模式也采用这种方式:每次点击都会成为 SAM 点提示;在当前掩码外点击会添加该区域,在掩码内点击则会移除该区域;然后根据数据集的任务,将结果保存为多边形、边界框或旋转框。
视觉提示的类型#
- 点和方框: 前景和背景点击可选择或排除区域;围绕对象绘制粗略方框比单击更明确,而且还允许检测器的边界框自动提示分割器。
- 掩码和涂鸦: 使用上一步生成的粗略掩码,或在对象上绘制笔画,可以修正仅靠点击无法正确预测的结果。
- 示例框:围绕一个示例绘制方框,就能让模型找出所有与该示例相似的物体;因此,只需一个示例框就能统计某一种螺丝的总数。T-Rex2 和YOLOE等开放集检测器,以及 Meta 的SAM 3(2025),都支持这类示例提示。
- 上下文示例: 将示例图像与所需输出(例如掩码或边缘图)配对,以此定义任务本身;模型会通过类比补全新图像的输出。
- 视觉语言模型的标记: 集合标记提示会在图像区域上绘制编号标记,使模型能够在回答中指代“区域 3”,从而提升视觉依据能力。










