背景引出#
提出一个层级(多尺度)且不依赖位置编码的 Transformer 编码器(MiT),可以直接输出多尺度特征(1/4、1/8、1/16、1/32),避免了 ViT 在不同测试分辨率下必须插值位置编码带来的性能下降。
设计轻量的 All-MLP 解码器:用简单的线性层(MLP)统一通道、上采样并拼接多尺度特征后再用 MLP 预测像素分类,避免了复杂、计算昂贵的解码器结构。
Mix-FFN(在 FFN 中加入 3×3 conv)用来提供位置信息,从而可以去掉显式的位置编码(PE),提高对不同测试分辨率的鲁棒性。
提出若干工程上的高效做法:overlapped patch merging(重叠补丁合并)保持局部连续性,sequence-reduction(按阶段不同的降采样比)降低自注意力复杂度。论文在 ADE20K、Cityscapes、COCO-Stuff 上做了大量实验证明性能与效率
模型架构#

经过overlapped patch merging一个很重要的设计,原始的vit是直接切分patch,但是overlapped patch merging会通过卷积操作,让相邻的特征像素会重合部分,保证了特征的连续性质。同时也控制着特征大小的一步一步缩小,但是通道数放大,相当于是seqlen会进一步的放大。这个和卷积是一样的因为这一步就是卷积实现的。Mix-FFN:在 FFN 里插入 3×3(depthwise)卷积以获得位置信息,从而去掉固定 PE,在测试分辨率与训练分辨率不同的情况下更稳健。最后再将上面4层的特征都上采样到1/4再拼接在一起。
流程细节#
overlapped patch merging#

本质上就是将步长变短了小于卷积核的大小。
Efficient self-attention#


这个就是所谓的创新,直接用卷积下采样,就是框架图中的,特征图大小根据stride来确定的,通道数不变,通过控制步伐,这个操作就是卷积实现的。
Mix-FFN#

很直接,很粗暴,假设我们把 Transformer 的 token map 重新恢复成特征图 \(H×W\), 那么每个位置经过 3×3 卷积后, 它的输出值会融合自己 + 上下左右 8 个相邻 patch 的信息:
+—+—+—+
| a | b | c |
+—+—+—+
| d | e | f | ← 卷积核中心在 e
+—+—+—+
| g | h | i |
+—+—+—+
但是这个东西真的会比位置编码好吗?其实理论上来说可能会更好,因为二维的空间特征,需要包括上下左右patch的位置,传统的位置编码基本相当于是一个线性的位置,而不是一个二维平面的。这个可以进一步有机会可以做做实验去验证。

验证可以!!!
Decode#

直接4个mlp,然后统一用双线性插值直接插,统一到1/4的特征大小,然后直接4个torch.cat\(\[_c4, _c3, _c2, _c1\], dim=1\)拼接在一起就刚好恢复了H*W再通过一个线性融合
最后再通过一个卷积进行就行:

实验效果#


很强了,这个!!!!
怎么做loss#
依然万年不变的交叉损失,因为本质是就是对每个像素点进行分类。






