SAM 2 (Segment Anything ):图像与视频通用分割模型

本文翻译整理自:https://github.com/facebookresearch/sam2

文章目录


一、关于 SAM 2


Segment Anything Model 2 (SAM 2) 是一个基础模型,旨在解决图像和视频中的可提示视觉分割问题。

将单帧图像视为视频的特殊形式,从而将 SAM 的能力扩展到视频领域。该模型采用简单的 Transformer 架构,并引入流式内存机制以实现实时视频处理。

构建了一个"模型在环"数据引擎,通过用户交互持续优化模型和数据,最终收集了迄今为止最大的视频分割数据集 SA-V

基于该数据集训练的 SAM 2 在广泛的任务和视觉领域都展现出强大性能。



相关链接资源



关键功能特性

1、统一图像与视频分割 :通过将图像视为单帧视频,实现统一处理框架

2、实时视频处理 :采用流式内存的 Transformer 架构,支持实时推理

3、多目标跟踪 :支持视频中多个对象的独立推理与跟踪

4、模型优化 :支持 torch.compile 全模型编译,显著提升推理速度

5、大规模数据集:基于 SA-V 数据集(当前最大视频分割数据集)训练


二、最新更新


1、2024-12-11 更新

  • 支持全模型 torch.compile 编译,通过设置 vos_optimized=True 可显著提升视频对象分割(VOS)推理速度
  • 更新 SAM2VideoPredictor 实现,支持多目标跟踪中独立的对象推理
  • 详情查看:<RELEASE_NOTES.md>

2、2024-09-30 更新

  • 发布 SAM 2.1 系列改进模型检查点(详见模型描述
  • 开放训练与微调代码:<training/README.md>
  • 发布网页版 Demo 代码:<demo/README.md>

三、安装指南


系统要求

  • Python ≥ 3.10
  • PyTorch ≥ 2.5.1 和 torchvision ≥ 0.20.1

安装步骤

bash 复制代码
git clone https://github.com/facebookresearch/sam2.git && cd sam2
pip install -e .

Windows 用户注意

强烈建议使用 WSL 配合 Ubuntu 环境安装。


额外依赖(运行示例笔记本)

bash 复制代码
pip install -e ".[notebooks]"

安装注意事项

1、推荐使用 Anaconda 创建新 Python 环境

2、需安装匹配 PyTorch 版本的 CUDA 工具包

3、若出现 Failed to build the SAM 2 CUDA extension 警告可忽略(仅影响部分后处理功能)

4、更多问题参考:INSTALL.md


四、快速入门


1、下载模型检查点

下载所有检查点:

bash 复制代码
cd checkpoints && ./download_ckpts.sh && cd ..

或单独下载:


2、图像分割示例

python 复制代码
import torch
from sam2.build_sam import build_sam2
from sam2.sam2_image_predictor import SAM2ImagePredictor

checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = SAM2ImagePredictor(build_sam2(model_cfg, checkpoint))

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    predictor.set_image(<your_image>)
    masks, _, _ = predictor.predict(<input_prompts>)

更多图像用例参考:


3、视频分割示例

python 复制代码
import torch
from sam2.build_sam import build_sam2_video_predictor

checkpoint = "./checkpoints/sam2.1_hiera_large.pt"
model_cfg = "configs/sam2.1/sam2.1_hiera_l.yaml"
predictor = build_sam2_video_predictor(model_cfg, checkpoint)

with torch.inference_mode(), torch.autocast("cuda", dtype=torch.bfloat16):
    state = predictor.init_state(<your_video>)
    
    # 添加新提示并立即获取当前帧输出
    frame_idx, object_ids, masks = predictor.add_new_points_or_box(state, <your_prompts>)
    
    # 在视频中传播提示以获取连续掩码
    for frame_idx, object_ids, masks in predictor.propagate_in_video(state):
        ...

视频用例详情参考:video_predictor_example.ipynb


五、从 Hugging Face 加载


1、图像预测

python 复制代码
from sam2.sam2_image_predictor import SAM2ImagePredictor
predictor = SAM2ImagePredictor.from_pretrained("facebook/sam2-hiera-large")

2、视频预测

python 复制代码
from sam2.sam2_video_predictor import SAM2VideoPredictor
predictor = SAM2VideoPredictor.from_pretrained("facebook/sam2-hiera-large")

六、模型描述


1、SAM 2.1 检查点(2024-09-29 发布)

模型 参数量(M) 速度(FPS) SA-V测试(J&F) MOSE验证(J&F) LVOS v2(J&F)
sam2.1_hiera_tiny 38.9 91.2 76.5 71.8 77.3
sam2.1_hiera_small 46 84.8 76.6 73.5 78.3
sam2.1_hiera_base_plus 80.8 64.1 78.2 73.7 78.2
sam2.1_hiera_large 224.4 39.5 79.5 74.6 80.6

2、SAM 2 检查点(2024-07-29 发布)

模型 参数量(M) 速度(FPS) SA-V测试(J&F) MOSE验证(J&F) LVOS v2(J&F)
sam2_hiera_tiny 38.9 91.5 75.0 70.9 75.3
sam2_hiera_small 46 85.6 74.9 71.5 76.4
sam2_hiera_base_plus 80.8 64.8 74.7 72.8 75.8
sam2_hiera_large 224.4 39.7 76.0 74.6 79.8

注:速度测试基于 A100 + torch 2.5.1, cuda 12.4,参考 benchmark.py 进行基准测试。


伊织 xAI 2025-04-25(五)

相关推荐
语戚17 小时前
深度解析:Stable Diffusion 底层原理 + U-Net Denoise 去噪机制全拆解
人工智能·ai·stable diffusion·aigc·模型
语戚2 天前
Stable Diffusion 核心模块深度拆解:CLIP、U-Net 与 VAE 原理全解析
人工智能·ai·stable diffusion·aigc·模型
陶甜也2 天前
3D智慧城市:blender建模、骨骼、动画、VUE、threeJs引入渲染,飞行视角,涟漪、人物行走
前端·3d·vue·blender·threejs·模型
语戚4 天前
Stable Diffusion 入门:架构、空间与生成流程概览
人工智能·ai·stable diffusion·aigc·模型
高心星5 天前
鸿蒙6.0应用开发——图片合成视频
视频·图片处理·图片合成视频·鸿蒙6.0·harmonyos6.0
zs宝来了7 天前
Elasticsearch 索引原理:倒排索引与 Segment 管理
elasticsearch·索引·倒排索引·源码解析·segment
Hello.Reader11 天前
一堆 `.ts` 分片合并后音画不同步?从问题定位到通用修复脚本的完整实战
python·ffmpeg·视频
魔士于安11 天前
unity 动物包 大象 鹿 狐狸
游戏·unity·游戏引擎·贴图·模型
ipad协议开发11 天前
视频号直播间全功能自动化场控插件开发指南:基于 API 调用的全链路拆解
运维·微信·自动化·视频·ipad
魔士于安11 天前
unity完整项目走廊
游戏·unity·游戏引擎·贴图·模型