SAM:5 行代码点出图像分割任意对象
【免费下载链接】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 Model(SAM)是 Meta AI 发布的提示驱动图像分割模型,在 1100 万张图像、11 亿个掩码上训练,靠点和框提示即可零样本生成对象掩码。
项目全景
传统分割网络是任务绑定的:训一次人,再训一次车。SAM 把模型固定住,只换输入提示——点、框、已有掩码都能进,输出就是掩码。与按任务训练的方案相比,这是"一套模型对任意类别"的关键差异。
三个模块分工明确:图像编码器(ViT 骨干,输出 256 维图像嵌入)、提示编码器(统一处理点/框/掩码输入)、掩码解码器(2 层双向 Transformer,最多输出 3 个候选掩码并给出自估 IoU 分数)。
🏁 3 分钟跑通
git clone https://gitcode.com/GitHub_Trending/se/segment-anything cd segment-anything && pip install -e .依赖 python>=3.8、pytorch>=1.7、torchvision>=0.8(README 建议装 CUDA 版);checkpoint 下载链接见仓库 README 的 Model Checkpoints 一节。
from segment_anything import SamPredictor, sam_model_registry sam = sam_model_registry"vit_h" predictor = SamPredictor(sam) predictor.set_image(image) # image 为 RGB numpy 数组 masks, scores, logits = predictor.predict(point_coords=[[x, y]], point_labels=[1])运行后你会看到原图分辨率的二值掩码数组masks、模型自估的掩码质量分scores,以及 256×256 的低分辨率 logits——后者可回传给predict做迭代细化。
怎么选模型
三个骨干版本,输入均固定 1024×1024:
| 模型 | 骨干(embed_dim × 层数) | 注意力头 | 定位 |
|---|---|---|---|
vit_h | 1280 × 32 | 16 | 注册表中default指向的版本 |
vit_l | 1024 × 24 | 16 | 中等骨干 |
vit_b | 768 × 12 | 12 | 最小骨干,适合快速验证流程 |
默认用vit_h:sam_model_registry里"default"就是它,示例与 ONNX 导出脚本也默认走这个版本;若只是验证管线连通,从vit_b起步即可。
🧩 进阶用法
调用 AutomaticMaskGenerator 一键生成全图掩码
不想给每个对象都点提示,就换用SamAutomaticMaskGenerator:它自动枚举候选区域,一次吐出全图所有对象掩码。
generator = SamAutomaticMaskGenerator(sam) masks = generator.generate(image) # 返回掩码字典列表运行后你会得到覆盖图中主要对象的掩码列表,每项含 COCO RLE 掩码、bbox、面积、稳定性分数等字段。
导出 ONNX 掩码解码器跑浏览器推理
掩码解码器体量和主模型解耦,可单独导出为 ONNX,在浏览器里用 ONNX Runtime 跑。仓库demo/目录就是一个 React 单页应用:加载图像嵌入与 ONNX 模型后,鼠标移动实时刷新掩码。
python scripts/export_onnx_model.py --checkpoint sam_vit_h_4b8939.pth --model-type vit_h --output sam.onnx用 amg.py 命令行批量处理图像文件夹
不写 Python 也能出掩码,scripts/amg.py直接吃单张图或整个文件夹:
python scripts/amg.py --checkpoint <checkpoint路径> --input <图片或文件夹> --output <输出路径>落地场景
- 电商主图抠图:商品上点一次得到抠图掩码,替代人工抠图
- 遥感影像目标提取:用框提示批量圈出建筑、车辆,新类别不用重训
- 交互式标注数据构建:
amg.py先出全图掩码初稿,标注员只做修正
下一步
SAM 是一个"用提示换任务泛化"的分割基座模型。打开notebooks/predictor_example.ipynb,点一个点,看到你的第一个掩码。
【免费下载链接】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),仅供参考