使用方法

在线体验:快速入门分割工具

访问 Segment Anything 官方演示页面,无需任何安装即可直接上手。将任意图片拖拽或上传至网页,模型会自动生成全图的分割掩码。你可以通过点击图片上的任意点或框选区域,指定需要分割的目标物体,系统会在毫秒级响应并输出对应的分割结果。演示界面还提供了“分割所有物体”的批量模式,适合快速预览模型能力。

本地环境搭建与模型加载

如需在本地运行 Segment Anything,首先确保已安装 Python 3.8 或更高版本,并配置 PyTorch 和 CUDA(若使用 GPU 加速)。通过 pip 安装官方发布的 segment-anything 库:pip install git+https://github.com/facebookresearch/segment-anything.git。下载预训练模型权重文件(如 sam_vit_h_4b8939.pth)并放置在指定目录。加载模型时,使用 sam_model_registry 通过模型类型和权重路径初始化 SamPredictor 对象,即可准备执行分割任务。

使用自动分割与提示驱动分割

Segment Anything 支持两种核心用法。自动分割模式无需任何人工提示:调用 SamAutomaticMaskGenerator 类,传入图片数组,即可返回包含所有物体掩码、置信度、边界框等信息的列表。提示驱动模式则通过 SamPredictorset_image 方法加载图片后,使用 predict 方法传入点坐标(正负提示)或矩形框坐标,得到单一或多个物体的高质量分割掩码。提示可以组合使用,例如先框选区域,再点击排除干扰物,显著提升复杂场景下的分割精度。

处理视频与批量图片

对于视频流或批量图片,需逐帧调用上述自动或提示分割逻辑。官方推荐结合 OpenCV 读取视频帧,对每一帧执行一次 SamPredictor 的分割操作,并利用后处理(如形态学操作)稳定掩码连续性。批量图片处理则可通过循环加载文件夹内图片,缓存每个图片的嵌入向量(predictorfeatures 属性),避免重复计算,从而提升处理速度。注意,对于高分辨率图片,建议在输入前进行适当缩放以平衡性能与精度。

参数调优与输出格式处理

使用 SamAutomaticMaskGenerator 时,可调整 points_per_sidepred_iou_threshstability_score_thresh 等参数控制分割粒度与质量。提示模式下,multimask_output 参数设为 True 可返回三个候选掩码供选择。输出结果通常为二值掩码(布尔或 uint8 格式),可直接用于绘制轮廓、计算面积或叠加在原图上。官方示例代码中 show_anns 函数演示了如何将掩码可视化,你可以根据需要将其保存为 PNG 或 JSON 格式(使用 mask_to_rle_pytorch 进行 RLE 编码)以便后续存储和交换。

集成到自定义应用与部署

Segment Anything 的核心模型可被封装为 API 或嵌入到桌面应用中。通过 Flask 或 FastAPI 暴露 /segment 端点,接收图片和提示参数,返回掩码数据供前端渲染。移动端部署可借助 ONNX Runtime 将模型转换为 ONNX 格式,再调用设备推理。官方提供了官方的 export 脚本将 PyTorch 模型导出为 TorchScript 或 ONNX,适用于无 Python 环境的场景。务必注意模型显存占用(VI-L 版本约需 10GB 显存),若硬件受限可选用轻量版 sam_vit_bsam_vit_l