news 2026/4/15 17:36:18

SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!

SAM3模型简介

SAM3(Segment Anything Model 3)是Meta推出的第三代通用图像分割模型,具备零样本迁移能力,支持多模态输入(如图像、文本提示)。相比前代,SAM3在精度、速度和交互方式上均有显著提升,适用于复杂场景分割任务。

环境准备

Python 3.8+和PyTorch 1.11+是基础依赖。安装SAM3的官方库及相关工具:

pip install segment-anything pip install opencv-python matplotlib

确保CUDA版本与PyTorch匹配以启用GPU加速。

模型下载与加载

SAM3提供预训练权重(默认基于ViT-H backbone)。通过官方仓库下载权重文件(如sam_vit_h_4b8939.pth),并加载模型:

from segment_anything import sam_model_registry model = sam_model_registry["vit_h"](checkpoint="path/to/sam_vit_h_4b8939.pth").to("cuda")

图像分割示例

使用OpenCV读取图像并生成分割掩码:

import cv2 import numpy as np from segment_anything import SamPredictor predictor = SamPredictor(model) image = cv2.imread("image.jpg") image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) predictor.set_image(image) # 通过点提示分割(前景点坐标) input_point = np.array([[x, y]]) # 替换为实际坐标 input_label = np.array([1]) # 1表示前景点 masks, scores, _ = predictor.predict(point_coords=input_point, point_labels=input_label)

多模态提示支持

SAM3支持文本提示分割,需结合CLIP等模型生成文本嵌入。示例代码需调用多模态接口:

text_prompt = "a red car" text_embedding = get_text_embedding(text_prompt) # 需自定义文本编码函数 masks = predictor.predict(text_embedding=text_embedding)

结果可视化

使用Matplotlib显示分割结果:

import matplotlib.pyplot as plt plt.imshow(image) plt.imshow(masks[0], alpha=0.5) # 叠加掩码 plt.scatter(input_point[:,0], input_point[:,1], c='r', marker='*') plt.show()

性能优化技巧

  • 批处理:对多张图像使用predictor.predict_batch提升效率。
  • 量化:加载量化模型减少显存占用:
    model = sam_model_registry["vit_h"](checkpoint="path/to/sam_vit_h_4b8939.pth", quant=True)
  • ONNX导出:转换为ONNX格式部署至边缘设备。

常见问题

  • 显存不足:尝试使用vit_bvit_l等轻量版模型。
  • 分割不准确:增加更多交互提示点或调整提示文本的粒度。

通过以上步骤可快速体验SAM3的核心功能,更多高级用法参考官方文档和开源社区示例。

SAM3模型来了,手把手带你运行SAM3模型代码,SAM3模型初探!

Meta 终于把 SAM3 开源了! 虽然论文和模型架构早就放出来了,但权重一直锁着,直到前两天才真正公开。 我第一时间冲去跑通,效果真的逆天——纯文本提示就能精准分割多个同类目标,还带 ID 和置信度,完爆 SAM2 的点+框交互方式。

先直接上干货,下方是原始图像:

输入提示词 "shoe",结果:

再换提示词 "child",结果:

这才是真正的“语义理解+分割”啊! 支持文本、参考图像、视频追踪等多模态提示,潜力巨大。

下面我把整个 Windows 本地跑通过程手把手写成最详细图文教程,包含我踩过的所有坑 + 解决方案,跟着做,100%能跑起来。

环境要求(必须满足)

  • NVIDIA 独显(AMD/核显无解)
  • CUDA ≥ 12.6(强烈建议更新到最新显卡驱动)
  • 已安装 Conda(Miniconda 或 Anaconda 都行)

完整步骤(已亲测 4090 + Win11 完美运行)

  1. 创建并激活环境
conda create -n sam3 python=3.12 -y conda activate sam3
  1. 安装 PyTorch(必须这个版本,官方指定)
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu126
  1. 下载源码(推荐直接下载 zip,避免 git 克隆不稳定)

GitHub 地址:https://github.com/facebookresearch/sam3

下载 ZIP → 解压 → 打开文件夹

  1. 进入项目目录,安装核心依赖
cd path\to\sam3-main pip install -e .
  1. 安装示例所需额外包
pip install opencv-python matplotlib pandas tqdm

重大坑位一:Windows 下缺少 triton 包

直接运行会报 No module named 'triton' 官方 triton 不支持 Windows,但社区大佬已编译好替代版:

pip install triton-windows==3.3.0.post19

装完这步基本解决 90% 人的卡死问题

重大坑位二:权重无法下载(最致命)

SAM3 权重放在 Hugging Face,需要申请访问权限。 我申请了 → 被拒了 很多人也一样被拒,目前 Meta 不知道按什么标准批。

好在社区已经有人放出了直链,我下载好了: 文件:sam3.pt 大小约 3.2GB

把 sam3.pt 复制到项目根目录(和 sam3 文件夹同级)

然后修改源码,让它加载本地权重(否则默认去 HF 下载,会一直网络错误)

打开文件:sam3/model_builder.py

找到以下两处(Ctrl+F 搜索关键字):

load_from_hf = True → 改成 False
checkpoint_path = None → 改成 "sam3.pt"

改完保存。

最终测试代码

新建 main.py 文件,粘贴以下代码:

import torch import matplotlib.pyplot as plt from PIL import Image from sam3.model_builder import build_sam3_image_model from sam3.model.sam3_image_processor import Sam3Processor from sam3.visualization_utils import plot_results # 加载模型(会自动读取本地 sam3.pt) model = build_sam3_image_model() processor = Sam3Processor(model) # 加载测试图片 image = Image.open("assets/images/test_image.jpg") # 设置图像(这一步会做全图编码) inference_state = processor.set_image(image) # 文本提示分割(换成你想要的词) inference_state = processor.set_text_prompt(state=inference_state, prompt="child") # 或者分割鞋子:prompt="shoe" # 或者试试:prompt="foot" / "sock" / "person" / "hat" 都好使 # 可视化结果(我修复了官方 plot_results 没 plt.show() 的 bug) plot_results(image, inference_state) plt.show() # 加上这句才能弹出图片

运行 python main.py

第一次运行会稍微慢一点(加载模型),之后就很快了。

至此,SAM3 就在你本地完美跑起来了! 后续我还会继续出:

  • 参考图像分割
  • 视频目标追踪
  • 结合 CLIP 做更复杂提示
  • 自定义数据集微调等进阶玩法

系列都会持续更新,建议关注 + 收藏,随时来看最新进展~

最后:关于权重文件 sam3.pt

我这里已经下载好了(3.2GB,完整官方权重)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 20:37:47

超轻量SAM模型部署:ONNX量化与Transformer剪枝全攻略

以下是超轻量SAM模型部署的技术方案,涵盖ONNX量化与Transformer剪枝的完整实施流程:ONNX动态量化实践导出基础ONNX模型python scripts/export_onnx_model.py \--checkpoint sam_vit_b_01ec64.pth \--model-type vit_b \--output sam_vit_b.onnx \--opset…

作者头像 李华
网站建设 2026/4/15 8:43:36

【开发必知】localhost 和 127.0.0.1 的本质区别与使用场景

做开发的小伙伴在跑本地项目时(比如自己搭个博客、写个小网站),一定会使用localhost 或者 127.0.0.1这两个网址来进行预览 比如小编自己搭的Python学习网站(别问链接,还没上线呢😂)&#xff0c…

作者头像 李华
网站建设 2026/4/14 11:07:02

LeetCode 热题 100--字母异位词分组

题目:解析:核心思路字母异位词的特征:相同字母组成的不同单词,排序后会得到相同的字符串使用排序字符串作为哈希键:将每个单词排序后作为分组的唯一标识哈希表存储分组:键是排序后的字符串,值是…

作者头像 李华
网站建设 2026/4/11 19:25:50

AI模型推理延迟突增?架构师教你:模型轻量化+缓存优化应急响应技巧

AI模型推理延迟突增?架构师教你:模型轻量化+缓存优化应急响应技巧 关键词:AI模型、推理延迟、模型轻量化、缓存优化、应急响应、架构设计、性能优化 摘要:本文主要探讨当AI模型推理延迟突然增加时,如何通过模型轻量化与缓存优化的应急响应技巧来解决问题。首先介绍相关背景…

作者头像 李华