Segment Anything 完全使用指南:点一下就能分割图像中的任意对象
【免费下载链接】segment-anythingThe repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/GitHub_Trending/se/segment-anything
Segment Anything(SAM)是 Meta AI 开源的图像分割模型:输入一个点或一个框,它就输出对应的对象掩码,也可以自动生成整张图的全部对象掩码。它在 1100 万张图像、11 亿个掩码的数据集上训练,零样本即可投入各类分割任务。
模型架构:三个组件如何协作
从上图可以看出,SAM 的推理由三个组件串联完成:
- 图像编码器:把整张图像编码为图像嵌入,只需计算一次,后续提示可反复复用
- 提示编码器:把点、框等提示编码成向量
- 掩码解码器:结合图像嵌入与提示,产出多个候选掩码并给出质量分数
图像编码一次后即可缓存,之后每加一个提示只跑轻量解码器,交互响应快。
SAM 安装步骤
环境要求:Python >= 3.8、PyTorch >= 1.7、TorchVision >= 0.8,建议安装带 CUDA 支持的版本。
git clone https://gitcode.com/GitHub_Trending/se/segment-anything cd segment-anything pip install -e .如需掩码后处理、COCO 格式保存或运行示例 notebook,再安装可选依赖:pip install opencv-python pycocotools matplotlib onnxruntime onnx。模型权重文件见下文"三个模型版本怎么选"。
从点提示到掩码:最短可用示例
如图所示,SAM 对不同类型的提示都能输出高质量掩码:
- 点提示:点在对象内部,输出对应对象
- 框提示:框住目标区域,按框生成掩码
- 组合提示:点与框可叠加使用,进一步限定范围
from segment_anything import SamPredictor, sam_model_registry sam = sam_model_registry"vit_h" predictor = SamPredictor(sam) predictor.set_image(image) # RGB 图像,嵌入只计算一次 masks, scores, logits = predictor.predict(point_coords=[[x, y]], point_labels=[1])set_image负责计算图像嵌入,predict可反复调用;单击提示有歧义时默认返回 3 个候选掩码,按scores取最高的即可。把上一次的掩码作为新提示传入,还能迭代细化结果。
自动生成整图掩码
不想逐点提示时,SamAutomaticMaskGenerator会在图上铺开点网格,自动过滤低质量和重复掩码,一次性输出整张图的所有对象;也可用仓库中的 scripts/amg.py 脚本在命令行批量处理图片文件夹。
在浏览器里跑 ONNX 演示
项目的 demo/ 目录提供一个纯前端 React 应用,用 ONNX Runtime Web 运行量化后的掩码解码器:
从上图可以看出,演示完全不依赖服务器:鼠标移动时掩码实时更新;WASM 多线程让预测保持流畅。
三个模型版本怎么选
- vit_h(默认):backbone 最大,分割质量最好
- vit_l:中等规模,质量与速度折中
- vit_b:最小版本,显存或推理资源受限时使用
切换方式:把sam_model_registry传入的型号和对应 checkpoint 文件换掉即可,三个版本的权重均可从官方渠道下载。
适用场景
- 抠图与图像编辑:需要精确选区的用户点几下就能得到掩码,替代手动套索
- 数据集构建:批量生成整图掩码(COCO RLE 格式),直接喂给下游模型训练
- 视觉研究:作为零样本分割基线,省去针对目标数据集重新标注
- 工业质检:在产线图像中定位目标物或异常区域
写在最后
把"逐像素标注"压缩成几次点击,是 SAM 最实用的地方:装好依赖、下载权重后,几行代码就能拿到第一个掩码。建议先跑通上面的点提示示例,再打开仓库 notebooks/ 目录里的交互式 notebook 动手试试。 🎯
【免费下载链接】segment-anythingThe repository provides code for running inference with the SegmentAnything Model (SAM), links for downloading the trained model checkpoints, and example notebooks that show how to use the model.项目地址: https://gitcode.com/GitHub_Trending/se/segment-anything
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考