跳过正文
  1. 日常记录、技术札记与转载收藏。/

Mask2Former

目录

模型提出
#

核心
#

MaskFormer 让分割任务变成 “预测一组掩码 + 类别”; Mask2Former 让模型 “只看自己负责的掩码区域,更聪明地预测掩码”。

Mask2Former 的 Masked Attention 是最核心的改进。

传统 MaskFormer 的 cross-attention 是:

每个 query 对所有像素做 attention,计算复杂且容易受背景干扰。

而 Mask2Former 改成:

每个 query 仅在它的 mask 区域内做 attention(即 masked attention)。

优点:

  • 显著减少计算量;

  • 强化 query 对局部区域的关注;

  • 提升掩码预测的准确性与边界细节。

类似 Per-Pixel Transformer Decoder + FPN式多尺度融合

模型架构
#

Image
Image

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\) 机制。

Image

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

Image

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。

效果
#

Image
Image

怎么做Loss
#

Image

总结手绘
#

Image

相关文章