,

1. 图像分割基础与传统方法

主要介绍无监督、自底向上的分割方法

基本概念:将图像中相似的像素聚集在一起,将图像分离成连贯的“对象”

1.1 K-Means

传统的K-means没有考虑空间一致性,只有特征相似,因此我们将空间信息加入,形成 $(r,g,b,x,y)$ 的特征聚类,能够获得更好的Spatial coherence

优点:模型十分简单;收敛到误差函数的最小值。

缺点:内存密集型;需要超参数K值;对初始值敏感;对异常者敏感;只能找到“球形”聚类

1.2 Mean Shift

1.2.1 基本概念

Mean Shift算法寻找空间特征中密度的模式或局部最大值

Claster:Attraction basin 中的所有数据点

Attraction basin:所有漂移轨迹最终同留在一个Mode(峰值)的起始像素点

1.2.2 迭代过程

对于每一个像素点(或者选定的部分点),执行以下“爬山”操作:

  1. 定义窗口 (Window): 以该点为中心,画一个固定半径(带宽 Bandwidth)的圆/球体区域。
  2. 计算重心 (Center of Mass): 计算窗口内所有点的平均值(即重心)。由于密度大的地方点多,重心会向密度高的地方偏移。
  3. 移动 (Shift): 生成一个从“当前中心”指向“新重心”的向量(即 Mean Shift 向量),并将窗口中心移动到新的重心位置。
  4. 重复: 在新位置重复上述步骤,窗口会不断向数据密度最高的地方移动。
  5. 收敛 (Convergence): 当重心不再移动(或移动距离极小)时,说明到达了局部的密度峰值(Mode)

1.2.3 聚类与分割

当所有像素点都完成上述过程后:

  • 吸引盆地 (Attraction Basin): 所有通过漂移轨迹最终停留在同一个峰值(Mode)的起始像素点,都属于同一个“吸引盆地”。
  • 归类: 将属于同一个吸引盆地的所有像素标记为同一个段(Segment)。
  • 合并 (Merge): 如果两个峰值靠得很近,可以将它们对应的区域合并,以减少过度分割。

优点:不需要假设球形聚类;只需要一个参数(窗口大小);可找到不同数量的modes;对异常值非常鲁棒

缺点:输出取决于窗口的大小;计算量巨大;随着空间为度的增加,其性能下降很快

1.3 Graph-based(N-Cut)

基本假设:像素是节点,像素间的相似度是边的权重

Minimum Cut:寻找权重和最小的边进行切割。缺点是容易切出孤立的小区域。

Normalized Cut (N-Cut, 归一化割):

  • 原理: 在最小化切割权重的同时,最大化子集内部的权重,解决了最小割偏向小区域的问题。
  • 求解: 转化为广义特征值问题,利用第二小的特征向量进行分割。
  • 纹理特征: 为了处理复杂纹理,可以使用滤波器组(Filter Bank)提取纹理基元(Textons)来计算相似度。

1.3.1 Affinity

相似度/亲和度,也就是边的权重

计算亲和度的数学核心——广义高斯核函数 (Generalized Gaussian Kernel)

  1. 基本设定:

    • 假设每个像素由一个特征向量 $\mathbf{x}$ 表示(这可以是颜色 $RGB$、位置 $XY$、或者是纹理特征)。
    • 定义了一个适合该特征的“距离函数” $\text{dist}(\mathbf{x}_i, \mathbf{x}_j)$(比如欧氏距离)。
  2. 核心公式:

    $$\text{affinity}_{ij} = \exp\left(-\frac{1}{2\sigma^2}\text{dist}(\mathbf{x}_i, \mathbf{x}_j)^2\right)$$

    • 转换机制: 这个公式的作用是把距离(Distance) 转化为 亲和度(Affinity/Similarity)
      • 距离越小(接近 0): $e^0 = 1$ $\rightarrow$ 亲和度最大。
      • 距离越大(无穷大): $e^{-\infty} = 0$ $\rightarrow$ 亲和度最小。
    • 直观理解: 就像打分一样,距离越近分数越高(最高 1 分),距离越远分数越低(最低 0 分)。

$\sigma$ 的选择至关重要

  • $\sigma$ 太小 $\rightarrow$ 视野太窄,只看得到极其局部的邻居(容易过分割)。
  • $\sigma$ 太大 $\rightarrow$ 视野太宽,把不该连的都连上了(容易欠分割)。
  • 合适的 $\sigma$ 才能让 Affinity Matrix 呈现出清晰的块状结构 (Block Structure),从而利于后续的分割。

1.3.2 具体内容

N-Cut 对“切割成本”进行了归一化处理,不再仅仅看切断了多少权重,还要看分割出来的区域有多大(总连接权重)。

  • 目标函数:
    $$Ncut(A, B) = \frac{cut(A, B)}{assoc(A, V)} + \frac{cut(A, B)}{assoc(B, V)}$$
    • $cut(A, B)$:A 和 B 两个区域之间被切断的边的权重和(越小越好)。
    • $assoc(A, V)$:A 区域内所有节点与图中所有节点的连接权重之和(代表 A 的“体积”)。
  • 哲学含义: N-Cut 试图同时满足两个条件:
    1. 组间差异大: 切断的边权重小(不同区域的像素不相似)。
    2. 组内联系紧: 分割出的子集内部权重不能太小(避免切出孤立的小点)。

直接最小化 N-Cut 的成本是一个 NP-complete(计算上不可行)的问题。因此,算法采用了“松弛(Relaxation)”的方法,将其转化为线性代数问题。

  • 矩阵定义:
    • $W$:邻接矩阵(Adjacency Matrix),记录像素间的相似度。
    • $D$:度矩阵(Degree Matrix),对角矩阵,记录每个节点的总连接权重。
  • 求解公式:
    问题最终转化为求解广义特征值问题
    $$(D - W)y = \lambda Dy$$
  • 关键结论:
    • 虽然我们想要的是离散的分割(属于A或B),但我们先求出一个连续的实数向量 $y$。
    • 最优解由第二小的特征值对应的特征向量提供。(这也是该算法最著名的特征)。

1.3.3 算法步骤

实际操作流程如下:

  1. 构图: 将图像表示为加权图,计算任意两点间的权重(相似度),生成矩阵 $W$ 和 $D$。
  2. 求解: 计算方程 $(D - W)y = \lambda Dy$ 的特征值和特征向量。
  3. 分割: 找到对应第二小特征值的特征向量。这个向量中的每个数值对应一个像素。
  4. 二值化: 设定一个阈值(如 0 或中位数),将特征向量中的值分为两类(大于阈值的为一类,小于的为另一类),从而实现图像的二分割。
  5. 递归: 如果需要分割成多于两个的区域,就对切分后的子图重复上述过程。

  • 优点(Pros):
    • 通用性强: 这是一个通用框架,可以结合任意定义的特征(颜色、纹理、位置)和相似度函数(Affinity)。
    • 全局视角: 相比于只看局部的算法,它利用了整个图的全局属性进行分割。
  • 缺点(Cons):
    • 计算代价高: 求解大型矩阵的特征值非常耗时,且内存占用大(High storage and time complexity)。
    • 形状偏见: N-Cut 倾向于将图像分割成大小相等的块(Equal segments),这有时并不符合实际物体的形状(例如一个大背景和一个小物体)。

1.3.4 纹理特征分割

Normalized Cut (N-Cut) 框架下处理纹理分割(Texture Segmentation)时,传统的基于像素颜色或强度的相似度计算已经失效(因为纹理是像素亮度的规律性变化,而不是单一数值)。面对如豹纹、树叶堆叠等图像,物体是由重复的图案组成的。单纯看像素颜色,同一个物体内部差异巨大(比如豹子的黑斑和黄毛)。因此,必须提取纹理特征来定义相似度。

1.3.4.1 纹理特征提取流程

N-Cut 引入了以下三个步骤来将图像转化为可以计算纹理相似度的形式:

  • **第一步:滤波器组卷积 (

    • 不再使用原始的 RGB 像素值。
    • 使用一组**滤波器组(Bank of Filters)**与图像进行卷积。这些滤波器通常包含不同方向、不同尺度的边缘检测器(如高斯导数滤波器)。
    • 结果: 每个像素点不再是一个颜色值,而变成了一个高维的滤波器响应向量
  • **第二步:生成纹理基元 **

    • 为了简化上述的高维向量,对所有像素的滤波器响应向量进行聚类(如 K-Means)。
    • 聚类得到的中心点被称为**“纹理基元(Textons)”**。
    • 结果: 图像中的每个像素被分配给最近的 Texton ID。图像从“颜色图”变成了“Texton ID 图”(Slide 49 右图展示了这一点,不同的纹理区域由不同的颜色点表示)。
  • 第三步:计算局部直方图 (Texton Histogram,

    • 纹理是区域属性,不是单点属性。
    • 对于每个像素,定义一个局部窗口(Local Scale),统计该窗口内各 Texton 出现的频率,生成一个Texton 直方图
    • 相似度计算: 此时,两个像素之间的**Affinity(亲和度/权重)**取决于它们局部窗口内 Texton 直方图的相似程度(通常使用 $\chi^2$ 距离等方法计算)。
1.3.4.2 修正缺陷:介入轮廓
  • 缺陷: 仅仅依靠纹理特征(直方图)有时会导致边界模糊,或者在纹理变化剧烈的地方产生误判。
  • 解决方案: 引入 Intervening Contours(介入轮廓) 机制。
  • 原理: 在计算像素 $i$ 和像素 $j$ 的连接权重时,不仅看纹理相似度,还要检查 $i$ 和 $j$ 的连线上是否存在强边缘(Contour)
    • 如果 $i$ 和 $j$ 之间有一条明显的边缘线,即使它们的纹理直方图看起来相似,算法也会强制降低它们之间的权重。
    • 这确保了分割结果能够贴合图像中显著的边缘轮廓。

2. 基于深度学习的解决方案

基于 CNN (Convolutional Neural Network) 的图像分割解决方案。

随着深度学习的兴起,CNNs 在图像分类任务上取得了巨大成功。自然而然地,研究者们也将其引入到图像分割领域,并推动了该领域的飞速发展。

核心思想转变:

  • 传统方法 (K-Means, Mean Shift, N-Cut): 依赖手工设计的特征(颜色、纹理)、距离度量和聚类/图论算法,属于无监督或半监督范畴。
  • CNN-based 方法: 通过端到端(end-to-end)的学习方式,自动从数据中提取层次化的特征,并直接输出像素级的预测。这通常是有监督学习,需要大量的标注数据。

关键挑战:

  • 定位精度 (Localization Accuracy): CNN 通常通过池化 (Pooling) 操作来扩大感受野并提取高级语义信息,但这会降低空间分辨率,导致像素级分割的定位不精确,边缘模糊。
  • 尺度变化 (Scale Variation): 图像中的物体大小差异很大,如何处理不同尺度的物体是关键。
  • 上下文信息 (Contextual Information): 理解像素点周围的全局信息有助于区分相似物体或处理复杂场景。

主流方法分类 :
CNNs-based 解决方案分为以下几大类,它们代表了解决上述挑战的不同策略:

  1. Fully Convolutional Models (全卷积模型)
  2. CNNs With Graphical Models (CNN结合图模型)
  3. Encoder-Decoder Based Models (编码器-解码器模型)
  4. Multiscale and Pyramid Network Based Models (多尺度与金字塔网络模型)
  5. Dilated Convolutional Models (空洞卷积模型)
  6. RNN Based Models (RNN模型)
  7. Attention-Based Models (注意力机制模型)
  8. Generative Models and Adversarial Training (生成模型与对抗训练)
  9. R-CNN Based Models (R-CNN模型)

接下来我们逐一详细介绍这些解决方案。


2.1 Fully Convolutional Models

  • 代表模型: FCN (Fully Convolutional Network), ParseNet
  • 核心思想:
    • 将传统分类网络中的全连接层 (Fully Connected Layers) 替换为卷积层 (Convolutional Layers)。这样网络就能够接受任意尺寸的输入图像,并输出相应尺寸的分割图。
    • 通过上采样 (Upsampling) 操作(如反卷积/转置卷积)将低分辨率的语义特征图恢复到原始图像尺寸。
    • 跳跃连接 (Skip Connections): FCN-8s, FCN-16s, FCN-32s 等变体通过将深层(高语义,低分辨率)特征与浅层(低语义,高分辨率)特征融合,来弥补池化造成的空间信息损失,提高分割细节。
  • FCN 优点: 实现端到端训练,解决了传统方法特征提取和分类分离的问题。
  • FCN 局限:
    • 定位不精确: 即使有跳跃连接,由于多次池化,像素级别的精确边界定位仍然具有挑战性。
    • 缺乏全局上下文: 局部卷积操作对全局语义的理解有限。
    • ParseNet (Slide 59): 针对 FCN 缺乏全局上下文的问题,ParseNet 引入了全局平均池化 (Global Average Pooling) 来捕获整个图像的语义上下文信息,并将其融合到局部特征中。

2.2 CNNs With Graphical Models

  • 代表模型: DeepLab-CRF (早期的DeepLab版本)
  • 核心思想: 结合 CNN 提取的高级语义特征和图模型的细粒度建模能力
    • CNN (DeepLab): 负责提取像素级的语义类别分数。由于池化,这些分数通常定位不准,边缘粗糙。
    • CRF (Conditional Random Field): 作为后处理步骤,利用像素之间的局部关系(例如颜色相似的相邻像素更有可能是同一类别)来平滑和细化 CNN 的预测结果。它能将粗糙的预测图锐化,使边界更清晰。
  • 优点: 结合了 CNN 的语义理解能力和 CRF 的空间一致性建模能力,有效提升了分割细节。
  • 局限: CRF 作为独立的后处理步骤,不是端到端训练的,计算成本较高。后续的 DeepLab 版本(如 DeepLabv2/v3/v3+)逐渐将 CRF 替换为可训练的模块或更高效的空洞卷积。

2.3 Encoder-Decoder Based Models

  • 核心思想: 将分割任务分解为两个主要阶段:
    • 编码器 (Encoder): 通常是预训练的分类网络 (如 VGG, ResNet),通过一系列卷积和池化层提取图像的高级语义特征,同时逐渐降低空间分辨率。
    • 解码器 (Decoder): 通过一系列上采样和卷积层,将编码器输出的低分辨率语义特征图恢复到原始图像尺寸,并生成像素级的分割预测。
  • 代表模型:
    • DeConvNet : 使用反卷积 (Deconvolution) 和反池化 (Unpooling) 来恢复空间分辨率。它尝试重建原始图像的结构,以辅助分割。
    • SegNet : 关键创新是重用编码器中的池化索引 (Pooling Indices)。在编码器进行最大池化时,记录最大值的位置;在解码器进行反池化时,将特征值放到这些记录的位置,其他位置补零。这能更好地保留边缘信息,并且减少了需要学习的参数。
    • U-Net : 在医学图像分割领域非常流行。其特点是U形结构大量的跳跃连接 (Skip Connections)。编码器的每一层特征图都会直接跳过并拼接 (Concatenate) 到解码器相应层的特征图上。这使得解码器可以直接访问浅层(细节)和深层(语义)的特征,极大地提升了分割的精细度。
    • HRNet (High-Resolution Net, Slide 64): 提出全程保持高分辨率特征,而不是先下采样再上采样。它并行地维护高分辨率到低分辨率的不同分支,并通过重复的多尺度融合来交换信息。这避免了下采样带来的不可恢复的信息损失。
  • 优点: 结构直观,易于实现,特别是 U-Net 及其变体,在需要精确边界的场景(如医学图像)表现出色。
  • 局限: 编码器部分通常仍然依赖预训练的分类网络,可能存在一些架构上的不匹配。

2.4 Multiscale and Pyramid Network Based Models

  • 核心挑战: 物体在图像中具有不同的大小,单一尺度的特征难以有效处理。
  • 核心思想: 通过构建特征金字塔或利用金字塔结构来捕获和融合不同尺度的信息。
  • 代表模型:
    • FPN (Feature Pyramid Network, Slide 66): 最初用于目标检测,后广泛应用于分割。它在编码器的不同层级上构建一个特征金字塔,通过自上而下和自下而上的路径融合高层语义和底层细节。这样,在不同层级都能获得语义丰富的特征,有助于检测和分割不同尺度的物体。
    • PSPNet (Pyramid Scene Parsing Network, Slide 67): 专注于上下文信息。在 Backbone 输出的特征图上,PSPNet 应用了金字塔池化模块 (Pyramid Pooling Module)。它以不同的池化核大小(例如 1x1, 2x2, 3x3, 6x6)对特征图进行池化,然后上采样到相同大小并拼接。这能够捕获不同区域尺度的全局上下文信息,弥补了 FCN 缺乏全局上下文的不足。
  • 优点: 有效解决了多尺度物体分割的难题,提升了对复杂场景的理解。

2.5 Dilated Convolutional Models

  • 核心挑战: 在不损失分辨率的情况下扩大感受野。传统的池化操作会降低分辨率。
  • 核心思想: 引入空洞卷积 (Dilated Convolution / Atrous Convolution)
    • 空洞卷积在不增加参数和计算量的情况下,通过在卷积核元素之间插入“空洞”,有效地扩大了卷积核的感受野
    • 优点: 既能捕获更广阔的上下文信息,又能保持高分辨率的特征图,避免了池化带来的信息损失。
  • 代表模型: DeepLab 系列 (特别是 DeepLabv2/v3/v3+)
    • ASPP (Atrous Spatial Pyramid Pooling, Slide 69): DeepLab 系列中的关键模块。它使用不同空洞率 (Dilation Rate) 的空洞卷积并行处理特征图,从而在多个尺度上捕获上下文信息。这类似于金字塔池化,但保持了高分辨率。
  • 优点: 同时兼顾了高分辨率特征和大的感受野,是语义分割领域非常重要的技术。

2.6 RNN Based Models

  • 核心思想: 利用 RNN (Recurrent Neural Network) 建模像素之间的长距离依赖关系,尤其是序列性地处理图像信息。
    • 图像的分割结果需要全局一致性,像素之间存在复杂的关联。RNN 可以模拟这种依赖,例如通过在图像上进行水平和垂直方向的扫描。
  • 代表模型: ReSeg , 结合 LSTM 的模型 。
  • 优点: 能够捕捉像素间的全局上下文和长距离依赖。
  • 局限:
    • 顺序性 (Sequential Nature): RNN 的本质是顺序计算,这使得难以并行化,导致训练和推理速度较慢,远不如 CNN。
    • 计算成本: 处理高分辨率图像时,RNN 的计算量非常大。
    • 因此,在语义分割中,RNN 的应用不如 CNN 广泛。

2.7 Attention-Based Models

  • 核心思想: 让网络**“关注”**图像中最重要的区域或特征,并动态调整不同特征的重要性。
  • 分类:
    • 空间注意力 (Spatial Attention): 让网络学习在空间维度上,图像的哪些区域对当前任务更重要。
    • 通道注意力 (Channel Attention): 让网络学习在通道维度上,哪些特征通道对当前任务更重要。
  • 代表模型:
    • SENet (Squeeze-and-Excitation Networks, 通道注意力): 通过全局池化压缩通道信息,然后用全连接层学习通道之间的依赖性,生成每个通道的权重。
    • Non-local Net / CCNet (Criss-Cross Attention Network, 空间注意力, Slide 74): 能够捕捉图像中任意两个像素点之间的长距离依赖关系,而不仅仅是局部感受野内的。CCNet 更是通过两次交叉注意力机制,以更高效的方式实现了全局上下文建模。
    • Dual Attention Network (Slide 75): 同时结合了空间注意力和通道注意力,以更好地捕获复杂的特征依赖。
  • 优点: 提高了网络理解全局上下文的能力,使得网络能够动态地聚焦于有用的信息,对物体边界和细节的识别更加准确。
  • Reverse Attention Network (Slide 76): 提出通过学习“非目标”区域(即反向注意力)来帮助网络更好地区分目标和背景,以及解决边界模糊问题。

2.8 Generative Models and Adversarial Training

  • 核心思想: 将 GAN (Generative Adversarial Network) 引入分割任务。
    • 生成器 (Segmentor): 负责生成分割掩码。
    • 判别器 (Adversarial Network): 区分生成器生成的分割掩码是真实的(来自人工标注)还是伪造的(来自生成器)。
  • 目标: 通过对抗训练,使得生成器生成的分割结果不仅像素级准确,而且在整体视觉上更逼真、更符合真实物体的结构和纹理。判别器帮助生成器避免产生不自然的分割结果。
  • 优点: 能够纠正高阶不一致性,使得分割结果更具视觉真实感和结构一致性。
  • 应用: 也可用于半监督学习 (Semi-supervised Learning)。当标注数据不足时,可以通过生成假数据来扩充训练集,提高模型的泛化能力 (SegAN, Slide 78)。

2.9 R-CNN Based Models (R-CNN 模型)

  • 核心思想: R-CNN 系列模型最初是为了目标检测 (Object Detection) 设计的。当扩展到分割时,它主要用于实例分割 (Instance Segmentation)
    • 实例分割: 不仅区分像素类别,还要区分同一类别的不同实例。例如,识别出图像中有两只狗,并分别分割出它们的区域。
  • 代表模型: Mask R-CNN
    • Mask R-CNN 在 Fast R-CNN 的基础上增加了一个并行的 FCN 分支,用于预测每个检测到的 RoI (Region of Interest) 内部的二值掩码 (Binary Mask)
    • RoIAlign (区域对齐): 解决了 RoIPooling 带来的量化误差,使得特征与原图对齐更精确,对像素级任务至关重要。
  • 优点: 实现了目标检测和实例分割的统一,能够区分不同实例,是目前实例分割领域非常强大的基准模型。

面临的挑战:

  • 速度: 实时应用对模型速度要求高。
  • 性能: 像素精度、边界准确性、泛化能力。
  • 困难场景: 类别不平衡、复杂场景(遮挡、光照、背景杂乱)。

关键问题与方法总结 :

  • 全局上下文 (Global Context): RNN, Transformer, 多尺度与金字塔模型
  • 细节增强 (Detail Enhancement): 图模型, 编码器-解码器模型, 生成模型与对抗训练
  • 多尺度上下文 (Multi-scale Contexts): 编码器-解码器模型, 多尺度与金字塔模型, 空洞卷积模型
  • 特征交互与适应性 (Feature Interaction and Adaptivity): 注意力机制模型

DL-based Solution – Summary :
从模型设计的角度,总结了 Context 在 Backbone (主干网络), Head (预测头), Loss (损失函数) 中的体现和作用。

  • Backbone 中的 Context: 传统 Backbone 为分类设计,但分割需要同时兼顾分类和定位。需要在保持感受野的同时,尽量保留空间分辨率,并平衡计算成本。
  • Head 中的 Context: 旨在通过增加感受野(如多尺度池化)和利用全局上下文(如全局池化)来提升预测头的性能,同时保持效率。
  • Loss 中的 Context: 通过设计特定的损失函数(如“Thing”和“Stuff”的互补性),将上下文信息编码到训练目标中,以鼓励更好的特征表示。

未解决的问题 :

  • 更具挑战性的数据集: 大规模、多对象、重叠、3D数据。
  • 可解释性 (Interpretable Deep Models): 深度模型如何学习,其内部机制是什么。
  • 弱监督与无监督学习: 减少对大量标注数据的依赖。
  • 轻量化与实时模型: 适应边缘设备。
  • 其他领域应用: 3D点云分割、医学图像分割、遥感图像分割等。

这些未解决的问题也为后续通用分割大模型 SAM 的研究和发展奠定了基础。

3. 通用分割大模型

这部分内容详细介绍了深度学习图像分割的最新形态——通用分割模型(Universal Segmentation Model),其核心代表是 Meta AI 提出的 SAM (Segment Anything Model)


3.1 背景与动机:为什么要搞”通用”模型?

在 SAM 出现之前,传统的分割模型(如 U-Net, DeepLab)存在三个主要局限:

  1. 任务依赖性强 (Task Dependency): 一个模型只能干一件事(比如专门分割肝脏的模型不能分割猫)。每换一个任务都需要重新训练。
  2. 高标注需求 (High Annotation Requirements): 需要大量高质量的像素级标注,非常昂贵且耗时。
  3. 适应性差 (Poor Adaptability): 难以处理从未见过的物体类型、尺度或复杂背景。

我们需要什么样的模型?

  • 高泛化能力 (High Generalization): 一个基础模型(Foundation Model)就能搞定所有分割任务。
  • 降低标注依赖: 可以通过交互式的方式(Prompting)指导模型,甚至实现零样本(Zero-shot)分割。

3.2 核心架构:SAM

SAM 是一个基于 Transformer 架构的视觉模型,其核心机制是将图像分割视为一个“提示(Prompting)”问题

A. 工作流程

  • 输入: 图像 + 提示 (Prompts)
    • 提示可以是:一个点、一个框、一段文本、或者一个粗糙的掩码。
  • 输出: 对应提示的像素级分割掩码 (Mask)。

B. 模型架构 (Slide 92)

SAM 由三个主要部分组成:

  1. Image Encoder (图像编码器):
    • 基于 ViT (Vision Transformer)
    • 作用: 对图像进行一次性处理,提取丰富的视觉特征嵌入 (Embedding)。这是最耗时的部分,但每张图只需要算一次。
  2. Prompt Encoder (提示编码器):
    • 作用: 处理用户的交互输入。将点、框、文本等转换为统一的向量表示。
    • 特点: 能够处理稀疏提示(点/框)和密集提示(掩码)。
  3. Mask Decoder (掩码解码器):
    • 作用: 极其轻量级。将图像特征和提示特征在同一个隐空间(Latent Space)中结合。
    • 核心: 利用 Self-Attention (自注意力机制) 学习图像结构与用户意图之间的关系,实时生成掩码。

3.3 成功的关键:以数据为中心的 AI

SAM 的强大不仅仅源于架构,更源于数据。它采用了一种“数据引擎”策略:

  1. 手动标注: 训练初始模型,人工修正。
  2. 半自动标注: 模型先标,人工只修不确定的地方。
  3. 全自动标注: 训练好的模型对海量图片进行自动分割。

成果: SA-1B 数据集,包含 1100 万张图像和 11 亿 (1.1 Billion) 个掩码。这种海量数据让 SAM 拥有了极其强悍的泛化能力。

3.4 SAM 的局限性与改进方案

尽管 SAM 很强,但原版 SAM 存在三个主要问题,课件详细介绍了针对这些问题的扩展研究

3.4.1 问题一:细节分割失败 (Fail to segment fine details)

  • 现象: 对于复杂的边界(如椅子的镂空花纹),SAM 往往只能分割出大概轮廓。
  • 原因: 推理仅依赖高层特征;训练数据多关注整体物体。
  • 解决方案:
    • HQ-SAM (High Quality SAM): 引入 HQ-Token,融合早期(高分辨率)和晚期(强语义)的特征,复用 SAM 权重,仅增加少量参数。
    • PA-SAM: 引入可训练的 Adapter (适配器),利用图像梯度作为指导,增强对细微边缘的捕捉。

3.4.2 问题二:缺乏语义信息 (Lacking Semantics)

  • 现象: SAM 只知道“切哪里”,不知道“切的是什么”。输出的 Mask 没有类别标签(如“人”、“车”)。
  • 原因: 架构设计上是类别无关的(Class-agnostic),训练时只优化形状(IOU/Dice Loss)。
  • 解决方案:
    1. 串联法 (Serial Pipeline):
      • Grounded-SAM: 先用 Grounding DINO 把文本(如”找猫”)变成框,再把框给 SAM 切割。
      • SAM-CLIP: 先让 SAM 切出所有东西,再用 CLIP 对切出来的图进行分类。
    2. 内嵌法 (Insert Semantics):
      • Semantic-SAM: 修改 SAM 的解码器,增加分类头或语义记忆模块,使其能同时输出 Mask 和 Label。
    3. 大模型驱动 (LLM Driven):
      • LISA / SEEM:LLM (大语言模型) 当“大脑”。用户说“把维生素C含量最高的食物切出来”,LLM 进行推理,告诉 SAM 去切哪个位置。

3.4.3 问题三:新任务适应性 (Adapt to new tasks)

  • 挑战: SAM 在特定领域(如医疗、视频)可能表现不佳。
  • 解决方案:
    • 医疗领域 (SAMed): 使用 LoRA (Low-Rank Adaptation) 微调技术,在不破坏预训练参数的前提下,让 SAM 适应 CT/MRI 图像。
    • 图像编辑 (Inpaint Anything): 结合生成式修补模型(如 LaMa),选中物体后直接移除或替换。
    • 视频分割 (SAM-PT): 结合点追踪技术(Point Tracking),实现视频中的零样本物体分割与追踪。

通用分割模型(SAM)代表了图像分割的未来方向:

  • 不再从头训练: 而是基于一个强大的基础模型。
  • Adapter (适配器) 模式: 通过插入轻量级的适配器,赋予 SAM 新的能力(更好的细节、语义理解、特定领域适应),就像给一个全能机器人换上不同的工具手。

这标志着计算机视觉从“特定模型解决特定任务”向**“基础模型 + 提示/适配”**范式的转变。