模型提出#
核心#
MaskFormer 让分割任务变成 “预测一组掩码 + 类别”; Mask2Former 让模型 “只看自己负责的掩码区域,更聪明地预测掩码”。
Mask2Former 的 Masked Attention 是最核心的改进。
传统 MaskFormer 的 cross-attention 是:
每个 query 对所有像素做 attention,计算复杂且容易受背景干扰。
而 Mask2Former 改成:
每个 query 仅在它的 mask 区域内做 attention(即 masked attention)。
优点:
显著减少计算量;
强化 query 对局部区域的关注;
提升掩码预测的准确性与边界细节。
类似 Per-Pixel Transformer Decoder + FPN式多尺度融合
模型架构#


Transformer Decoder(Mask Transformer Decoder)#
在 Mask2Former 中,一个重要启发是:既然 query 最终要看重某些像素(其 mask),那么在 cross-attention 中让 query 只与其“关注区域”交互,比让 query 和所有像素交互更高效、更精确。为此使用masked attention:用上一层(或同层的初步)掩码预测来约束本层 cross-attention 的权重。
同一个图像特征输入的kv怎么做到不同的query有不同的mask屏蔽#
虽然所有 query 都共享相同的像素特征(即同一组 K/V), 但每个 query 都有一个 独立的掩码预测结果(mask logits / probabilities)。
在计算 cross-attention 时,这个掩码被 动态地用作 attention 权重或屏蔽项, 使每个 query 的注意力分布只集中在它自己 mask 区域。
Mask2Former 的 decoder 是多层结构(一般 6 层), 每层都会根据上层输出的 mask 来更新 attention 掩码。
流程是这样的:
1️⃣ 第一层没有 mask,做全局 cross-attention(等价于标准 DETR)。
2️⃣ 输出的 mask_probs 被用作第二层的 masked attention 引导。
3️⃣ 第二层输出新的 mask embedding → 新的 mask_probs,
供第三层使用。
⋯
6️⃣ 最后一层输出最终的 mask。
这就是 Mask2Former 的 逐层掩码细化 \(iterative mask refinement\) 机制。

前面我们做了Mask相当于是只关注了局部的信息,然后这个又有一个self-attention,相当于是拿完整的KV没有mask掉信息去做一次全局的信息交互。

Pixel Decoder#
第一层:query 与 1/32 特征交互,学习语义大致区域;
第二层:query 与 1/16 特征交互,细化边界;
第三层:query 与 1/8 特征交互,进一步精细化;
每层的输出 query 会作为下一层输入,逐步 refine。
Mask2Former 中:
Transformer Decoder 的 6 层 并不是一一对应 Pixel Decoder 的 3 个尺度;
而是 每两层 decoder 共享一个尺度的 pixel feature(K/V)。
也就是说:
Pixel Decoder 提供 3 个尺度特征(1/32、1/16、1/8),Transformer Decoder 有 6 层,每两个 decoder 层使用同一尺度的 K/V。
效果#


怎么做Loss#

总结手绘#




