sam model

Sam model

计算机识别任务

目标分割 —> 目标检测 —> 目标识别 —> 目标追踪

Target Segmentation —> Target Detection —> Target Recognition —> Target Tracking

sam 的厉害之处 在于 零样本学习 和 prompt ---- 这个和chatGPT非常相似

什么是Sam

sagmentation-aware model

Segment分割的本质是:判断图像中的某个像素属于哪一个具体的对象。

image-20240902220414141

prompt可以是以下几种类型:

  • point
  • box
  • mask
  • 任意格式的文本

model

image-20240902220525862

image-20240902223114590

Segment Anything Model (SAM) overview. A heavyweight image encoder outputs an image embedding that can then be efficiently queried by a variety of input prompts to produce object masks at amortized(摊销) real-time speed. For ambiguous prompts corresponding to more than one object, SAM can output multiple valid masks and associated confidence scores.

  1. image 通过 encoder 转换为 image embedding
  2. Prompt 经过 prompt encoder 转为 prompt embedding
  3. 上面两个部分的embedding 经过 mask decoder 得到 blending后的 features

SAM 模型架构

Segment Anything Model:卷积神经网络(CNN)和基于 Transformer 的架构结合

  1. bone network:预训练的 Vision Transformer

    ViT的目的: 从输入图像中提取特征

  2. 使用了FPN

    FPN Feature Pyramid Network 特征金字塔网络

    利用深度神经网络在不同层次上提取的特征

    通过一个层级结构组合这些特征 —> 从而在多个尺度上有效地检测对象。

FPN举例子理解

  1. 输入一个图像, 图像包含 不同尺寸和在不同距离上的车辆。

  2. 使用bone network 比如 ResNet,这个ResNet 由多个CNN组成

    每个CNN层可以提取 不同输出不同分辨率的特征图

  3. FCN 可以将 不同层级 之间的信息合并

    FPN可以将第四层的特征图上采样,然后与第三层的特征图合并,接着这个合并的特征图再次上采样与第二层的特征图合并,以此类推。

历史回顾

**过去 **

分割方法1: 交互式分割

允许对任何类型的对象分割, 但是需要迭代

分割方法2: 自动分割

允许预先定义特定对象分割

比如 对 猫的segementation

但是需要大量手动标记

现在

segement everything

前两类方法综合而成的单一模型,可执 行交互式分割和自动分割

Sam 拓展玩法

和 stable difussion model结合实现 自动化换衣服

Grounded-Segment-Anything

Reference

https://arxiv.org/abs/2304.02643