分割算法FastSAM论文详解

FastSAM 论文详解:方法与实验

论文:Fast Segment Anything (arXiv:2306.12156)
FastSAM提出"先全实例分割、后提示筛选"的两阶段框架,以YOLOv8-seg替代SAM的端到端Transformer,实现68M参数、40ms推理速度(50×加速),且不受提示数量影响。通过原型加权机制高效生成Mask,结合CLIP实现文本提示,虽在小目标分割上略逊于SAM,但显著降低训练成本与部署门槛。该方法验证了专用轻量模型在效率与实用性上的优势。


一、核心思想

FastSAM 的核心洞察是:"Segment Anything" 任务可以解耦为两个顺序阶段 :

复制代码
┌─────────────────────┐      ┌─────────────────────────┐
│  Stage 1: 全实例分割  │  →   │  Stage 2: 提示引导选择   │
│  (All-instance      │      │  (Prompt-guided        │
│   Segmentation)     │      │   Selection)           │
└─────────────────────┘      └─────────────────────────┘

这与 SAM 的端到端思路截然不同:

  • SAM:图像 + Prompt 同时输入 Transformer → 直接输出 Mask
  • FastSAM :先用 CNN 检测器一次性分割出图中所有实例 → 再用 Prompt 做后处理筛选

二、方法详解

2.1 第一阶段:All-instance Segmentation(全实例分割)

基座模型:YOLOv8-seg(带实例分割分支的 YOLOv8)

架构组成:

  • CNN Backbone:提取多尺度特征
  • FPN(Feature Pyramid Network):融合不同尺度特征
  • Detect Branch:输出类别 + 边界框
  • Mask Branch :基于 YOLACT 原理输出实例掩膜

YOLACT 分割机制(关键):

YOLOv8-seg 的分割分支输出两部分:

  1. k 个原型Mask(Prototypes):由 ProtoNet 生成,是图像级别的"基础mask模板"
  2. k 个 Mask 系数(Mask Coefficients):每个检测框对应一组系数,范围在 -1, 1

最终实例 Mask 的计算:

复制代码
Instance Mask = Σ (Mask_Coefficient_i × Prototype_i)

即:用系数对原型做加权线性组合,得到每个实例的最终分割掩膜。

这种设计的优势是计算高效:不需要逐个实例做昂贵的 Mask Head 前向传播,只需一次原型生成 + 系数加权。

2.2 第二阶段:Prompt-guided Selection(提示引导选择)

在获得所有实例 Mask 后,根据用户提示筛选目标:

Prompt 类型 筛选机制
Point(点) 判断点落在哪个 Mask 区域内;支持前景点(保留)+ 背景点(过滤)组合;多个 Mask 可合并
Box(框) 计算 Prompt 框与每个实例检测框的 IoU,选 IoU 最高的
Text(文本) 用 CLIP 提取文本 Embedding;将每个 Mask 区域送入 CLIP 图像编码器提取特征;选相似度最高的

Text Prompt 的特别处理:

  • FastSAM 不需要像 SAM 那样修改训练流程来支持文本
  • 推理时直接用预训练 CLIP 做文本-图像匹配即可
  • 缺点:每个 Mask 区域都要单独过 CLIP,速度较慢

三、与 SAM 的本质区别

维度 SAM FastSAM
架构 ViT Transformer 端到端 CNN 检测器(YOLOv8)两阶段
参数 600M+(ViT-H) 68M
速度 2099ms(Everything 32×32) 40ms (50× 加速)
训练数据 SA-1B 全量(11M 图像) SA-1B 的 2%(约 1/50)
Prompt 处理 与图像一起编码,端到端学习 后处理筛选预生成的实例
Everything 模式 需要密集网格点提示,速度随点数增加 一次性生成所有实例,速度恒定

四、实验结果

4.1 运行效率(核心优势)

在单张 NVIDIA RTX 3090 上:

方法 参数量 1 point 10 points 100 points Everything (32×32)
SAM-H 600M 446ms 464ms 627ms 2099ms
SAM-B 136M 110ms 125ms 230ms 1383ms
FastSAM 68M 40ms 40ms 40ms 40ms

关键发现 :FastSAM 的速度不随 prompt 数量变化,因为它总是先分割所有实例;而 SAM 的速度随 prompt 点数线性增长。

4.2 零样本边缘检测(BSDS500)

  • FastSAM 先输出所有实例的 Mask 概率图
  • 用 Sobel 滤波提取边缘
  • 结果与 SAM 相当,R50 指标甚至略高

4.3 零样本目标提议生成(COCO / LVIS)

COCO Box AR@1000:

方法 AR@1000
SAM-H E64 67.7
FastSAM 63.7
SAM-B E32 59.1

LVIS v1 Bbox AR@1000:

方法 all small med. large
ViTDet-H 65.0 53.2 83.3 91.2
FastSAM 57.1 44.3 77.1 85.3
SAM-H E64 52.1 36.6 75.1 88.2

FastSAM 在 bbox 提议上甚至超过了 SAM-H,这得益于 YOLO 检测器在边界框回归上的优势。

LVIS v1 Mask AR@1000:

方法 all small med. large
SAM-H E64 54.2 39.6 77.9 83.9
FastSAM 49.7 35.6 72.7 77.6

Mask 质量低于 SAM,尤其是小目标。

4.4 零样本实例分割(用 ViTDet 的框做 Prompt)

方法 COCO AP LVIS AP
SAM 46.5 30.8
FastSAM 37.9 23.9

实例分割性能有明显差距,主要因为 Mask 精度不如 SAM。

4.5 实际应用场景

论文展示了多个下游任务:

  • 异常检测(MVTec AD):Everything 模式接近 SAM,Point/Box 模式可精确选中缺陷区域
  • 显著目标分割(ReDWeb-S):与 SAM 接近
  • 建筑物提取(遥感图像):规则形状物体表现好,但阴影区域分割较少
  • 文本提示分割:能根据 "The yellow dog" / "The black dog" 正确选择对应实例

五、优缺点总结

优势

  1. 速度极快:50× 于 SAM,且速度不受 prompt 数量影响
  2. 模型轻量:68M 参数,适合工业部署
  3. 训练成本低:仅用 SA-1B 的 2% 数据训练
  4. 即插即用:基于成熟的 YOLOv8 生态,易于集成

局限(论文坦诚指出)

  1. 小目标 Mask 质量差:Mask AR 在小目标上明显低于 SAM
  2. Mask 置信度不准:置信度来自 YOLO 的 bbox 分数,与 mask 质量关联不强
  3. 小物体 Mask 偏方形:YOLACT 原型组合的固有缺陷
  4. 大物体边界伪影:Mask 可能在 bbox 边界处出现 artifacts
  5. 文本 prompt 慢:每个 mask 要单独过 CLIP 提取特征

六、一句话总结

FastSAM 用"先全分割、后筛选"的两阶段策略替代了 SAM 的端到端 Transformer 方案,用 CNN 检测器(YOLOv8-seg)换来了 50 倍速度提升和 1/10 的模型大小,但在 Mask 精细度(尤其是小目标)上有所妥协。它证明了对于特定任务,引入人类先验(CNN 的局部归纳偏置)设计的专用模型,比通用大模型更具效率优势。

相关推荐
星夜离尘561 小时前
MATLAB 5 点滑动平均:filter 与 conv 的输出对齐,以及 2 样本延时的含义
开发语言·算法·matlab·滤波·fir
Dovis(誓平步青云)1 小时前
总用电下降了,为什么家庭能源看板仍然提示异常
java·开发语言·数据库·人工智能·算法·电脑·能源
开开心心就好1 小时前
A3的PDF怎么切成A4?拖一下分割线就行
服务器·开发语言·python·算法·pdf·ocr·tornado
中达瑞和-高光谱·多光谱1 小时前
以“光谱指纹”穿透塑料分选瓶颈——中达瑞和的塑料精准分选能力
人工智能·数码相机·计算机视觉
李福春1 小时前
FDE进化36记-第10记-模型为什么必须可解释、可验证、可监控?
人工智能·深度学习·机器学习·shap·深圳同盟·腾讯云架构师技术同盟·evidently
腾讯数据架构师1 小时前
一套 AI 平台怎么给多个组织隔离使用?CubeStudio 多租户隔离实操(ENABLE_MULTI_TENANT / org 组织 / 三级可见范围)
人工智能·深度学习·机器学习·云原生
闻缺陷则喜何志丹1 小时前
详细设计说明书的内容要求
算法·测试·存储
和裕1 小时前
定制纸箱刀卡、平卡、隔档分别是什么?结构与适用场景区别全解析
大数据·运维·网络·人工智能·算法
晨间晓1 小时前
一张图片主要是什么颜色?用 OpenCV 做图片主色提取工具
人工智能·opencv·计算机视觉