资讯动态

CSWin Transformer核心代码逐行解析:LePEAttention、CSWinBlock与四级层级结构详解

发布时间:2026/8/22 13:27:35 来源:尧图企业网站定制
CSWin Transformer核心代码逐行解析LePEAttention、CSWinBlock与四级层级结构详解【免费下载链接】CSWin-TransformerCSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped, CVPR 2022项目地址: https://gitcode.com/gh_mirrors/cs/CSWin-TransformerCSWin TransformerCVPR 2022是一个通用的视觉 Transformer 骨干网络用交叉形状窗口自注意力Cross-Shaped Window替代传统全局注意力实现有限算力下感受全场的效果。本文带你读懂核心源码LePEAttention如何拆出水平/垂直条带做注意力、CSWinBlock如何双分支并行计算以及四级层级结构Stage 1~4如何逐级下采样——代码全在 models/cswin.py一个文件即可看懂全貌。图中 (a) 展示了核心思想将特征图切成水平和垂直两种条带cross-shaped window分别做注意力(b) 是一个 CSWinBlock 内部结构(c) 是四级层级架构。 核心机制LePEAttention 交叉窗口注意力LePEAttention是整个模型的灵魂models/cswin.py。它和普通窗口注意力的区别在于条带的形状由参数idx控制idx 取值H_sp × W_sp条带尺寸含义0整行 × split_size水平条带感知横向全局1split_size × 整列垂直条带感知纵向全局-1整图 × 整图最后一级的全局注意力3×3 深度卷积 LePE 是隐藏彩蛋注意第 84 行self.get_v nn.Conv2d(dim, dim, kernel_size3, stride1, padding1, groupsdim)这个 3×3 深度可分离卷积只作用在Vvalue分支上在注意力聚合前先给 token 注入局部上下文论文称之为 LePELocal Positional Encoding 的卷积版——零额外参数、极低开销却显著提升了精度。前向流程forward第 111~137 行im2cswin把 B×L×C 的 token 序列切分成条带窗口借助 img2windowsget_lepe对 V 做窗口切分 深度卷积标准注意力attn softmax(q kᵀ) v再 lepe融合局部信息windows2imgmodels/cswin.py把窗口拼回原特征图。 CSWinBlock双分支并行 残差 MLPCSWinBlockmodels/cswin.py是标准 Transformer Block 的交叉版qkv 一次投影self.qkv nn.Linear(dim, dim * 3)同时算出 q、k、v第 196 行两分支各用一半通道非末级时branch_num 2qkv 按通道切成两半分别送入 idx0水平和 idx1垂直的LePEAttention结果torch.cat拼接第 198~201 行——一次前向 横向全局 纵向全局这正是交叉形状的由来末级单分支当patches_resolution split_size时退化为branch_num 1用 idx-1 做整图全局注意力第 156~161 行残差 DropPath MLPx x drop_path(attn)、x x drop_path(MLP)配合逐层递增的 drop_path 率稳定深层训练第 205~206 行。️ 四级层级结构特征翻倍、分辨率减半CSWinTransformermodels/cswin.py串联了 4 个 Stage每级由 N 个 CSWinBlock 1 个Merge_Block组成级别特征分辨率通道数base 版窗口 split_size作用Stage 1H/4 × W/4961细粒度、局部细节Stage 2H/8 × W/81922逐步扩大感受野Stage 3H/16 × W/163847跨形状窗口主力层Stage 4H/32 × W/327687全局注意力分类/语义输入先经stage1_conv_embed7×7、stride4 卷积完成 token 化替代了 ViT 的 16×16 patch 切块第 258~262 行Merge_Block用 3×3、stride2 卷积把分辨率减半、通道翻倍models/cswin.py是四个 Stage 之间唯一的下采样器。 四个规模的模型注册文件末尾models/cswin.py注册了 Tiny / Small / Base / Large模型embed_dimdepthnum_headsImageNet Top-1CSWin-T64[1,2,21,1][2,4,8,16]82.8%CSWin-S64[2,4,32,2][2,4,8,16]83.6%CSWin-B96[2,4,32,2][4,8,16,32]84.2%CSWin-L144[2,4,32,2][6,12,24,24]86.5% (22K 预训练) 跑起来训练、微调与语义分割分类训练入口 main.py一行命令即可启动 8 卡训练脚本见 train.sh如bash train.sh 8 --model CSWin_64_12211_tiny_224 ...高分辨率微调finetune.py 配合 finetune.sh 支持 384×384 分辨率微调与 EMA语义分割segmentation/目录基于 MMSegmentation 封装骨干实现在segmentation/backbone/cswin_transformer.pyUperNet 配置在segmentation/configs/cswin/upernet_cswin_base.pyCSWin-B 在 ADE20K 上可达 51.1 mIoU。 小结为什么 CSWin 值得读算力友好交叉形状条带让全局注意力的复杂度从 O(N²) 降到近似线性224 输入下 Base 版仅 15G FLOPs代码精简分类骨干全部核心逻辑集中在一个cswin.pyMlp、LePEAttention、CSWinBlock、Merge_Block、CSWinTransformer 五段结构层层递进通用骨干同一套四级层级结构无缝支撑分类、检测COCO 50.8 box mAP与分割ADE20K 55.7 mIoU。顺着forward入口 →CSWinBlock→LePEAttention→img2windows/windows2img这条主线索读一遍源码你也能 1 小时吃透 CVPR 2022 的这套交叉窗口设计。【免费下载链接】CSWin-TransformerCSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped, CVPR 2022项目地址: https://gitcode.com/gh_mirrors/cs/CSWin-Transformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价