从像素到区域:MaskFormer 系列详解

1.MaskFormer概述

1.背景

在图像分割任务中,传统方法如 U-Net、DeepLab 系列通常采用“逐像素点分类”的策略:模型需要判断图像中每一个像素所属的类别。这种方式在语义分割中表现出色,但在实例分割场景下却存在明显的局限性。例如,同一类别的多个实例往往难以区分,因此仅靠逐像素分类很难准确完成实例级的区域划分。

针对这一问题,Facebook Research 团队提出了 MaskFormer,其核心思想是将图像分割任务从“逐像素点分类”转化为“mask 分类”,即:不是预测每一个像素的类别,而是直接预测整块区域(mask)的类别标签。

2.核心思想

传统的图像分割方法采用逐像素分类的方式,就像是在工厂里进行质检——每一颗螺丝钉、每一块电路板都要单独检查,每一个细节都不能放过。这种方式追求的是精细度,每一个像素都必须被准确判断属于哪个类别。
而 MaskFormer 提出的“mask 分类”方法,更像是仓库管理中的“整托管理”:不再一件一件地点数、检查,而是直接判断“这一整箱是什么货物”,例如“这托盘上是饮料”、“那一堆是书籍”。它关注的是区域的整体语义,而不是逐个像素的归属。
也就是说,传统方法在做“逐件清点”,而 MaskFormer 在做“批量识别”。

3.大致实现思路

MaskFormer 的结构中存在多个查询(queries),可以将其理解为有多个“工人”,每一个工人负责“识别一类区域”。具体机制如下:

  • 每个查询输出一个二分类 mask:例如某个查询预测“这是肝脏 vs 不是肝脏”,另一个查询预测“这是肺 vs 不是肺”,如此类推
  • 每个查询对应一个全局类别标签:也就是说,每个 mask 预测结果不仅是一个区域,还附带一个类别标签,用于告诉我们“这块区域是什么”
  • 竞争机制:多个查询可能会关注相似区域(比如两个都关注白菜),但最终只有得分最高的一个查询会被采纳为最终结果。其他无效或重复的查询则被归为“背景”
  • 多余查询的处理:例如在一个三类别的任务中,模型可能有 100 个查询,大多数查询关注的是背景。只有前几个最有信心的查询会被保留用于预测输出

这种机制避免了像素级预测中复杂的后处理流程(如 NMS、聚类等),而是直接在 mask 层面做预测和分类,从而实现更简洁高效的分割流程。

4.优势与适用场景

MaskFormer 的设计带来了几个明显优势:

  • 统一的框架:语义分割、实例分割、全景分割都可在同一结构下完成
  • 模块兼容性强:可直接兼容以往网络中的编码器、损失函数、训练流程,无需大规模修改
  • 适用于复杂任务:尤其在类别数量较多(如超过 30 类、50 类等)时,mask 分类相较于逐像素分类更具优势
  • 易于扩展:为后续改进提供了清晰方向,例如更强的查询机制、更灵活的匹配策略等

在面对众多分割模型时,如果优先选择具有代表性、通用性和先进性的模型,MaskFormer 无疑是值得深入研究和学习的对象。

2.MaskFormer模型解析


这张图正是 MaskFormer 的大致的模型结构图,它展示了从输入图像到最终语义分割结果的完整流程,模型可以分为三个主要模块:

1.Pixel-Level Module(像素级模块)

这一部分主要负责从图像中提取逐像素的语义表示,构建“图像的细节描述”。

1.Backbone(主干网络)

提取图像的多尺度特征,这是整个模型的信息“感知器”。

具体机制:
给定一张原始图像(比如 512×512 的 RGB 图像),Backbone(通常是 ResNetSwin Transformer 等)会对图像进行多层次的卷积或注意力计算,提取出多个尺度的特征图,例如:

  • 第一级:分辨率较高但语义浅(比如 1/4 尺寸)
  • 第四级:分辨率低但语义强(比如 1/32 尺寸)

这些不同尺度的特征图分别编码了从边缘细节语义概念的各种信息。

输出多组不同分辨率的特征图,记作:
$$ \mathcal{F}_1, \mathcal{F}_2, …, \mathcal{F}_n $$
它们是接下来 Pixel Decoder 的输入。

打个比方,Backbone 就像是一台照X光的扫描仪,它能从一张图片中“看出”不同层级的结构——既能看到轮廓边缘,也能识别出深层语义,比如“这里可能是猫脸”,“那边是草地”。

2.Pixel Decoder(像素解码器)

目的是多尺度特征融合,恢复高分辨率空间,并为每个像素构建语义向量。

具体机制:
输入是刚才Backbone输出的多组特征图 $\mathcal{F}_i$,输出是一张大小为 $H \times W$、每个位置是一个 $C$ 维特征的图,这叫做 pixel embedding map
这一步的主要逻辑包括:

  1. 多尺度融合:将不同分辨率的特征图通过上采样、卷积等方式融合(类似 FPN 或 Transformer-FPN)
  2. 空间还原:恢复到原图大小或接近原图大小
  3. 语义压缩:将融合后的特征,压缩成每个像素点的语义向量(类似 per-pixel descriptor)

打个比方,Pixel Decoder 就像一台“语义地图生成机”——它接收从 backbone 来的各种“粗略草图”,将它们拼接整合,最终生成一张每个像素都带有“身份描述”的地图。比如说,这个像素的 embedding 可能意味着“它很有可能属于猫耳朵区域”,另一个像素的embedding 表示“它看起来像是马路的一部分”。

2.Transformer Module(Transformer 模块)

这一部分是模型的“理解引擎”,它尝试从图像中识别出语义区域(或称为 mask 对象),其中每个区域对应一个查询。

1.Learnable Queries(可学习查询)

作为“假设区域”的探针,每个 query 对应图中潜在的一个语义区域。

具体机制:
模型预设了 $N$ 个 learnable queries(通常是长度为 $d$ 的向量),可以理解为“区域建议器”。这些 queries 是参数向量,在训练中不断被优化,学习如何“提问”或“寻找”图像中的不同语义区域。

打个比方,想象图像是一幅地图,这些 learnable queries 就像是一群探险家,每人带着一个任务:“你去找猫”,“你去找人”,“你去找建筑”……虽然最开始大家是“盲猜”,但经过一轮轮训练后,他们会越来越擅长精准找到自己“负责的区域”。

2.Transformer Decoder

将每个 query 与图像特征交互,理解并捕捉对应的语义区域。

具体机制

  1. 输入
    图像的语义特征图(来自 pixel decoder) $\mathcal{E}_{\text{pixel}} \in \mathbb{R}^{C \times H \times W}$ 以及 Learnable queries $\mathcal{Q} \in \mathbb{R}^{N \times d}$
  2. 交互过程
    每一层 decoder 都会进行:
    • Self-Attention(query 之间互动,协调信息)
    • Cross-Attention(query 和图像像素特征互动,定位语义区域)
    • FeedForward(更新 query 表示)
  3. 输出
    得到 $N$ 个 enriched query 表示,每个 query 现在“知道自己该关注哪里了”

打个比方,decoder 是一个开会的过程,每个 query 是一个代表,会议中它不仅要和其他代表沟通(self-attention),还要去图像里取证、调研(cross-attention),最后形成报告(输出表示),告诉你它代表的是什么区域、区域是什么类别。

3.输出两类向量(来自每个 Query)

Decoder 最终输出 $N$ 个 query 向量,模型会将它们分成两个不同用途的分支:

1.类别预测向量(Classification Head)

每个 query 输出一个向量 $q_i$,送入一个小的 MLP → 输出维度为 $K+1$($K$ 个类别 + 1 个“无效/空”类),表示这个 query 所代表的区域是哪个语义类别。训练时通过 cross-entropy loss 与 ground truth 类别对齐。

2.Mask Embedding 向量(Mask Head)

同一个 query 还会输出一个 embedding(或将 query 自身作为 embedding)→ 记为 $e_i$。这个 embedding 会去和 Pixel Decoder 输出的每个像素向量做点积匹配,生成该 query 对应的全图掩码。每个 query 相当于“用自己的形状模板”去和整张图进行匹配,得出一个 mask。

每个 query 其实就像一名记者:

  • 他写了一篇报道(query 向量),说明自己发现了什么(这个区域是猫还是人)
  • 他还画了一张地图(mask embedding),标记出“这片区域就是我看到的对象”

3.Segmentation Module(分割模块)

这一部分负责根据 mask embedding 和逐像素特征之间的相似度,生成每个 query 对应的空间掩码,即哪些位置属于这个 query 表示的区域。

1.掩码生成(Mask Generation)

根据每个 query 的语义“印象”,判断图中哪些像素属于这个区域。

具体机制

  • 输入
    • 每个 query 输出的 mask embedding 向量(记为 $e_i$)
    • 来自 Pixel Decoder 的 每个像素的语义向量(记为 $\mathcal{E}_{\text{pixel}}(x, y)$)
  • 操作
    对每个 query $i$,通过点积方式得到一张大小为 $H \times W$ 的 mask heatmap,表示每个像素属于该区域的“相似度”。
  • 输出
    共得到 $N$ 张掩码图,每张对应一个 query 的区域分布,通常这个 mask heatmap 会再过一个 sigmoid 函数,将其映射为 [0, 1] 区间,用作 概率图soft mask

把 mask embedding 想象成“某个物体的特征模板”,然后它去整张图里“匹配相似的像素”。比如:一个 embedding 是“猫”的特征,那么当它与每个像素点比较时,猫脸、猫耳朵的区域点积值就会更高,从而生成对应的“猫 mask”。

2.监督信号(训练阶段)

训练时,需要对分类和掩码两个部分分别进行监督。

1. 分类损失(Classification Loss)

每个 query 会预测一个类别($K+1$ 类,包括一个“空”类别)。使用 Cross-Entropy Loss 计算预测类别和 Ground Truth 类别之间的差距。如果一个 query 没有匹配任何真实目标,它应被分类为“空”类。

2. 掩码损失(Mask Loss)

每个 query 对应的 mask 会与 Ground Truth 的真实 mask 进行比较。
损失通常包括两部分:

  • Binary Cross Entropy (BCE) Loss:逐像素的概率误差。
  • Dice LossFocal Loss:用于处理不平衡或边界模糊的情况。
    只有被匹配到的 query(非空)才会参与 mask loss 的计算。
3. Hungarian Matching(匈牙利匹配)机制

为了让 query 与 Ground Truth 区域一一对应(而不是乱序配对),采用 匈牙利匹配算法 计算最佳一对一分配。依据分类损失 + 掩码损失的总和来找最优匹配方案。

就像在考试中,每个学生(query)要回答一个问题(类别),还要画一张图(mask)。
评分时:先通过“匈牙利匹配”来决定谁答哪道题,然后评分两部分:答对题(分类损失)+ 图画得准(掩码损失)。

3.推理阶段(Inference Only)

在测试或实际使用时,模型只进行前向传播,不再使用损失函数,而是基于预测结果生成最终分割图。

推理流程:

  1. 丢弃无效 query
    分类结果为 “空类” 的 query 所生成的 mask 丢弃(这些 query 被认为没有匹配到任何真实区域)。
  2. 有效 query 的融合
    每个剩下的有效 query 会输出一个类别概率:表示它认为这个区域属于哪个类。soft mask($H \times W$):表示区域的空间分布。把每个 mask 乘上其对应类别的概率分数,得到加权掩码:
    $$
    \text{Mask}_i(x, y) = p_i^{\text{class}} \cdot \sigma(\hat{M}_i(x, y))
    $$
  3. 最终语义图组合
    所有有效 query 的掩码叠加,按每个像素的最大响应决定最终类别。得到一个语义分割图:
    $$
    \text{Segmentation map} \in \mathbb{R}^{K \times H \times W}
    $$

想象你组织一场采访活动,最终要做一张报道图:

  • 有些记者(query)啥也没采访到(被丢弃)
  • 剩下的记者提交了采访对象(类别)和报道区域(mask)
  • 你把他们的图和打分叠加起来,就能合成一张完整的语义地图

4.总结

MaskFormer 把语义分割转换为一个“mask + 分类”的任务,而不是传统的“逐像素分类”。

每个 query 就像一个“候选语义区域”,模型只需判断它是什么类别,以及它的区域范围即可。这种做法统一了语义分割、实例分割和全景分割的形式,也为后来的 Mask2Former 奠定了基础。

3.Mask2Former

1.概述

Mask2Former(CVPR 2022) 对 MaskFormer 做了全面升级,它不仅保留了“mask 分类”的核心思想,还引入了一系列结构性改进,使其能更好地适配 语义分割、实例分割、全景分割 三大任务。

Mask2Former是在 MaskFormer 基础上做了一些改进,它使用 query 自身预测出的 mask 来引导 attention 位置,既提升了效率,又提高了准确率,Masked Cross Attention = Mask2Former 的精髓,如下图是 Mask2Former 的核心结构图:

2.左侧:Mask2Former 的整体流程图

1.Backbone + Pixel Decoder

1.Backbone

从图像中提取出多层次的语义特征,常见结构:如 ResNet, Swin Transformer 等,输出:多个不同尺度的 feature maps,例如:

  • P2(高分辨率,低语义)
  • P3、P4、P5(越来越低分辨率,但语义更强)

打个比方,Backbone 就像一个分层的“观察塔”,从近处细节(P2)到远处全貌(P5),逐层提取不同抽象层次的特征。

2.Pixel Decoder

将多尺度的特征(P2 ~ P5)进行融合与还原,得到一张高分辨率、语义丰富的“统一特征图”。使用的机制:Multi-scale Deformable Attention:从不同层中灵活采样关键点,类似于升级版的 FPN,更智能、更灵活。
输出:一张尺寸为 $H \times W$ 的融合特征图,记作:
$$
\mathcal{E}_{\text{pixel}} \in \mathbb{R}^{C \times H \times W}
$$
Pixel Decoder 就像一台“图像语义压缩/拼接机”,把从各层收集到的信息拼成一张“每个像素都有语义”的地图,供后续模块查询。

2.Transformer Decoder

这个部分是整个模型的“理解中心”,负责根据图像特征,挖掘图像中可能存在的语义区域(mask),并识别出它们是什么类别。

相比 MaskFormer 做了如下改进:

改进点 MaskFormer Mask2Former
1. 注意力方式 标准 Cross-Attention(无区域引导) 掩码引导注意力(Mask Attention):只在 mask 区域交互
2. 掩码生成时机 mask embedding 点积后独立生成 每层 decoder block 都生成 mask,引导下一轮交互
3. 多层级特征交互 单一分辨率特征(decoder 与 pixel decoder 输出交互) 使用 pixel decoder 输出的多尺度特征 + deformable attention
4. 解码方式 decoder 后直接分类 & mask 输出 decoder 迭代 refinement,每轮都更新 mask、区域逐步清晰
5. 计算效率优化 全图 dense 运算,显存开销大 支持稀疏点采样,显存和训练效率提升显著

Mask2Former 对 Transformer Decoder 做了结构和机制上的全面升级,核心是“区域感知 + 多尺度特征融合 + 高效监督”。它让每个 query 更专注、训练更高效、分割结果更准确,是真正从“dense 交互”迈向“精细区域建模”的一步飞跃。

3.右侧:Decoder Block 内部结构

这部分展示的是 Transformer Decoder 的单个 Block,重点是它采用了 Masked Attention

相比 MaskFormer 做了如下改进:

组件 MaskFormer Mask2Former
Cross Attention 标准 cross-attention(无引导) Masked Cross Attention(掩码引导交互)
Query 区域建模 全图注意力:不知目标在哪 通过 mask(soft mask)控制 attention 区域:更聚焦、更高效
信息更新频率 只在最后一层 decoder 生成 mask 每一层 decoder 都生成 mask,循环 refine
训练计算量 Dense 全图交互,开销大 掩码调制 attention weights,显著减少冗余计算

Mask2Former 的 Decoder Block 在结构形式上延续了 Transformer 架构(Self-Attn + Cross-Attn + FFN),但核心创新是:引入掩码引导机制(Masked Cross Attention),并将 mask 迭代融入每一层中,使得每个 query 更高效、专注地定位并 refine 自己的目标区域。

这使得它比 MaskFormer 更准确、更高效、更适配大图像和多目标场景。

4.总结

MaskFormer 系列从本质上重塑了我们对“分割任务”的理解:它不再执着于像素级判断,而是从“区域感知”角度出发,将分割任务提升到一个更结构化、更具扩展性的层次。

Mask 分类范式的提出不仅解决了过去的一些效率与精度问题,更为图像理解、交互式分割、跨模态建模等方向铺平了道路。未来,我们可以期待更多融合前景估计、跨模态 prompt、稀疏 attention 的分割模型,真正做到“高效、通用、可控”的视觉理解系统

5.备注