概览
Segment Anything 的核心输出是掩码,也就是标记图像哪些像素属于某个区域。用户可以在物体上给出提示点或边界框,让模型生成候选区域,再根据实际用途挑选和调整。另一种入口会在整幅图像中自动寻找候选区域,适合先生成标注草稿。 在产品图片、素材整理和数据标注中,SAM 可以承担区域选择这一步。后续的类别命名、背景替换、质量检查和数据导出由应用继续处理。将这些步骤分开设计,可以清楚判断问题出在目标选择、边缘质量还是输出格式上。
主要功能
- SamPredictor 接收点、框等提示,为当前图像生成分割掩码。
- SamAutomaticMaskGenerator 为整张图片生成多个候选区域。
- 提供 ViT-B、ViT-L、ViT-H 等对应的模型检查点入口。
- 保留图像嵌入,方便对同一图片反复调整提示。
- 提供 Notebook、命令行批处理与掩码输出示例。
- 支持轻量掩码解码器的 ONNX 导出,并提供浏览器演示。
要求、安装和快速入门
在独立 Python 环境中准备兼容的 PyTorch 与 TorchVision,再运行 pip install git+https://github.com/facebookresearch/segment-anything.git。按仓库模型列表下载所选检查点,并保存模型类型与文件路径。
先使用 predictor_example Notebook,加载一张清晰图片并给出一个目标提示。需要图片读取、COCO 格式处理或 ONNX 导出时,再安装对应的可选依赖。模型类型必须与检查点匹配,显卡配置也应与 PyTorch 安装方式对应。
先使用 predictor_example Notebook,加载一张清晰图片并给出一个目标提示。需要图片读取、COCO 格式处理或 ONNX 导出时,再安装对应的可选依赖。模型类型必须与检查点匹配,显卡配置也应与 PyTorch 安装方式对应。
用法
实践案例:为一批商品图片制作区域标注。
1. 选择背景和物体大小各不相同的少量样本,约定需要保留的是整个商品还是某个部件。
2. 加载图像后调用 set_image,为目标添加正向提示点;如果掩码包含背景,再增加排除背景的提示。
3. 比较候选掩码的边缘、空洞与细小部件,选择符合标注目标的结果。
4. 为选中的区域补上人工确认的类别和对象编号。
5. 导出二值掩码或标注格式,记录原图尺寸和坐标系。
6. 批量处理前,回读导出的文件并叠加到原图,检查缩放、方向和编号是否一致。
交互式标注适合逐个确认目标;自动掩码适合先得到候选集合,再按面积、重叠和任务规则筛选。
工作原理
图像编码器先把图片转换为特征表示,提示编码器处理点、框或已有掩码,掩码解码器结合两者预测区域。对同一张图片调整提示时,可以复用图像特征。自动掩码流程在图像中采样提示并筛选候选结果,应用再根据自己的标注规则组织输出。
适合谁使用
计算机视觉开发者、数据标注团队,以及需要为图片编辑器加入交互区域选择功能的产品团队。
环境与输入
Python、PyTorch、TorchVision、模型检查点和图像读取工具。批量处理与大模型可使用 GPU,运行前按输入分辨率和模型选择安排显存。
具体使用场景
• 标注加速:先生成区域草稿,再人工确认类别与边缘。
• 图片编辑:把选中区域交给背景替换、局部增强或裁切步骤。
• 数据整理:导出区域面积、位置和掩码,为后续视觉任务准备输入。
实施要点
小目标、透明物体、细线和复杂遮挡需要逐类检查。掩码表示区域范围,类别语义需要其他模型或人工补充。ONNX 示例导出的是掩码解码器,浏览器应用还需安排图像特征的生成和传递。
常见问题
问:能直接得到物体名称吗?
SAM 的主要结果是区域掩码,类别名称由你的标注流程或其他识别组件补充。
问:为什么同一目标会出现多个掩码?
提示可能对应不同粒度的区域,可以结合目标定义、候选得分和边缘检查进行选择。
关联项目与搭配思路
facebookresearch/sam2:适合比较后续模型的图像与视频分割能力,两个项目的模型文件和接口应分别配置。
google-ai-edge/mediapipe:适合已有端侧视觉任务的开发者比较部署方式和任务接口,按具体平台选择运行路径。
1. 选择背景和物体大小各不相同的少量样本,约定需要保留的是整个商品还是某个部件。
2. 加载图像后调用 set_image,为目标添加正向提示点;如果掩码包含背景,再增加排除背景的提示。
3. 比较候选掩码的边缘、空洞与细小部件,选择符合标注目标的结果。
4. 为选中的区域补上人工确认的类别和对象编号。
5. 导出二值掩码或标注格式,记录原图尺寸和坐标系。
6. 批量处理前,回读导出的文件并叠加到原图,检查缩放、方向和编号是否一致。
交互式标注适合逐个确认目标;自动掩码适合先得到候选集合,再按面积、重叠和任务规则筛选。
工作原理
图像编码器先把图片转换为特征表示,提示编码器处理点、框或已有掩码,掩码解码器结合两者预测区域。对同一张图片调整提示时,可以复用图像特征。自动掩码流程在图像中采样提示并筛选候选结果,应用再根据自己的标注规则组织输出。
适合谁使用
计算机视觉开发者、数据标注团队,以及需要为图片编辑器加入交互区域选择功能的产品团队。
环境与输入
Python、PyTorch、TorchVision、模型检查点和图像读取工具。批量处理与大模型可使用 GPU,运行前按输入分辨率和模型选择安排显存。
具体使用场景
• 标注加速:先生成区域草稿,再人工确认类别与边缘。
• 图片编辑:把选中区域交给背景替换、局部增强或裁切步骤。
• 数据整理:导出区域面积、位置和掩码,为后续视觉任务准备输入。
实施要点
小目标、透明物体、细线和复杂遮挡需要逐类检查。掩码表示区域范围,类别语义需要其他模型或人工补充。ONNX 示例导出的是掩码解码器,浏览器应用还需安排图像特征的生成和传递。
常见问题
问:能直接得到物体名称吗?
SAM 的主要结果是区域掩码,类别名称由你的标注流程或其他识别组件补充。
问:为什么同一目标会出现多个掩码?
提示可能对应不同粒度的区域,可以结合目标定义、候选得分和边缘检查进行选择。
关联项目与搭配思路
facebookresearch/sam2:适合比较后续模型的图像与视频分割能力,两个项目的模型文件和接口应分别配置。
google-ai-edge/mediapipe:适合已有端侧视觉任务的开发者比较部署方式和任务接口,按具体平台选择运行路径。
模型兼容性与使用场景
使用 SAM 对应的模型结构和检查点。后续 SAM 2 有独立仓库与接口,视频任务应查看 SAM 2 文档,再决定是否迁移流程。
许可证与风险说明
模型与项目采用 Apache-2.0 许可证。SA-1B 数据集采用单独的数据集研究许可,下载数据时按数据页面的说明处理。