news 2026/8/22 13:27:22

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
CSWin Transformer核心代码逐行解析:LePEAttention、CSWinBlock与四级层级结构详解

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

【免费下载链接】CSWin-TransformerCSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped, CVPR 2022项目地址: https://gitcode.com/gh_mirrors/cs/CSWin-Transformer

CSWin Transformer(CVPR 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_size=3, stride=1, padding=1, groups=dim)

这个 3×3 深度可分离卷积只作用在V(value)分支上,在注意力聚合前先给 token 注入局部上下文,论文称之为 LePE(Local Positional Encoding 的卷积版)——零额外参数、极低开销,却显著提升了精度。

前向流程(forward,第 111~137 行)

  1. im2cswin:把 B×L×C 的 token 序列切分成条带窗口(借助 img2windows);
  2. get_lepe:对 V 做窗口切分 + 深度卷积;
  3. 标准注意力:attn = softmax(q @ kᵀ) @ v,再+ lepe融合局部信息;
  4. windows2img(models/cswin.py):把窗口拼回原特征图。

🧱 CSWinBlock:双分支并行 + 残差 MLP

CSWinBlock(models/cswin.py)是标准 Transformer Block 的"交叉版":

  • qkv 一次投影self.qkv = nn.Linear(dim, dim * 3)同时算出 q、k、v(第 196 行);
  • 两分支各用一半通道:非末级时branch_num = 2,qkv 按通道切成两半,分别送入 idx=0(水平)和 idx=1(垂直)的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 行)。

🏛️ 四级层级结构:特征翻倍、分辨率减半

CSWinTransformer(models/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_embed(7×7、stride=4 卷积)完成 token 化,替代了 ViT 的 16×16 patch 切块(第 258~262 行);
  • Merge_Block用 3×3、stride=2 卷积把分辨率减半、通道翻倍(models/cswin.py),是四个 Stage 之间唯一的"下采样器"。

📦 四个规模的模型注册

文件末尾(models/cswin.py)注册了 Tiny / Small / Base / Large:

模型embed_dimdepthnum_headsImageNet Top-1
CSWin-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.py,UperNet 配置在segmentation/configs/cswin/upernet_cswin_base.py(CSWin-B 在 ADE20K 上可达 51.1 mIoU)。

📝 小结:为什么 CSWin 值得读

  1. 算力友好:交叉形状条带让全局注意力的复杂度从 O(N²) 降到近似线性,224 输入下 Base 版仅 15G FLOPs;
  2. 代码精简:分类骨干全部核心逻辑集中在一个cswin.py,Mlp、LePEAttention、CSWinBlock、Merge_Block、CSWinTransformer 五段结构层层递进;
  3. 通用骨干:同一套四级层级结构无缝支撑分类、检测(COCO 50.8 box mAP)与分割(ADE20K 55.7 mIoU)。

顺着forward入口 →CSWinBlockLePEAttentionimg2windows/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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/22 13:27:06

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转

BDSup2Sub:位图字幕转换工具,一次搞定 SUP、VobSub、DVD-SUP 互转 【免费下载链接】BDSup2Sub Blu-Ray/DVD subtitle editor 项目地址: https://gitcode.com/gh_mirrors/bd/BDSup2Sub 不同平台的字幕格式互不兼容,蓝光 SUP、DVD-SUP、…

作者头像 李华
网站建设 2026/8/22 13:25:32

如何用 DDrawCompat 修复老游戏黑屏与画面撕裂

如何用 DDrawCompat 修复老游戏黑屏与画面撕裂 【免费下载链接】DDrawCompat DirectDraw and Direct3D 1-7 compatibility, performance and visual enhancements for Windows Vista, 7, 8, 10 and 11 项目地址: https://gitcode.com/gh_mirrors/dd/DDrawCompat DDrawCo…

作者头像 李华
网站建设 2026/8/22 13:25:23

Win_ISO_Patching_Scripts 三步 ISO 补丁集成,生成最新安装镜像

Win_ISO_Patching_Scripts 三步 ISO 补丁集成,生成最新安装镜像 【免费下载链接】Win_ISO_Patching_Scripts Win_ISO_Patching_Scripts 项目地址: https://gitcode.com/gh_mirrors/wi/Win_ISO_Patching_Scripts 新装的 Windows 要逐个下载安装上百个累积更新…

作者头像 李华
网站建设 2026/8/22 13:25:21

使用 LLaMA-Factory 训练 MoE 模型:混合专家微调完整实战指南

使用 LLaMA-Factory 训练 MoE 模型:混合专家微调完整实战指南 【免费下载链接】LlamaFactory Unified Efficient Fine-Tuning of 100 LLMs & VLMs (ACL 2024) 项目地址: https://gitcode.com/GitHub_Trending/ll/LlamaFactory 显存是大模型微调的第一道坎…

作者头像 李华
网站建设 2026/8/22 13:24:43

API接口安全防护全方案,彻底杜绝数据泄露与接口被刷

在数字化转型全面落地的当下,API接口作为业务系统、移动端、小程序、第三方平台之间数据交互的核心载体,支撑着企业绝大多数线上业务运转。但从全网安全漏洞监测数据来看,超70%的企业数据泄露、业务被刷、越权攻击事件,均源于API接…

作者头像 李华
网站建设 2026/8/22 13:22:46

量子LDPC码的多智能体发现:从稀疏图到实用量子纠错

1. 从经典到量子:为什么我们需要量子LDPC码?如果你在经典信息论领域待过,对LDPC码(低密度奇偶校验码)一定不会陌生。这东西在5G、Wi-Fi 6这些现代通信标准里几乎是标配,因为它能逼近香农极限,用…

作者头像 李华