尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

CSWin Transformer注意力机制深度剖析:十字形窗口比滑动窗口高效的7个原因

CSWin Transformer注意力机制深度剖析:十字形窗口比滑动窗口高效的7个原因 CSWin Transformer注意力机制深度剖析十字形窗口比滑动窗口高效的7个原因【免费下载链接】CSWin-TransformerCSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped, CVPR 2022项目地址: https://gitcode.com/gh_mirrors/cs/CSWin-TransformerCSWin Transformer 是微软开源的 CVPR 2022 通用视觉 Transformer 骨干网络gh_mirrors/cs/CSWin-Transformer它的核心创新是用十字形窗口自注意力替代 Swin Transformer 的滑动窗口注意力仅用 O(N·SW) 的线性计算代价就实现了全图行/列级感受野在 ImageNet 上以 97G FLOPs 拿下 87.5% Top-1 精度。本文将用简单的数学逐层拆解它为什么更高效。项目简介一个分层式视觉 TransformerCSWin 采用典型的分层hierarchical架构一张 224×224 的图像先经 7×7 卷积做 Token 嵌入然后经过 4 个阶段特征图逐级下采样、通道数逐级翻倍阶段特征图通道 C块数 N条纹宽 SWStage 156×569623Stage 228×2819245Stage 314×1438467Stage 47×77682全局其中 N 为各阶段 CSWin Block 数量如CSWin_96_24322_base表示 243212 个块即 24322。架构定义见 models/cswin.py。为什么 Swin 的滑动窗口不够用Swin Transformer 用 7×7滑动窗口自注意力把全图注意力的 O(N²) 降为 O(N·M²)M 为窗口 token 数如 7×749实现了线性复杂度。但它有一个天然瓶颈每个 token一次只能看见自己所在的 7×7 邻域感受野约 7 个 patch跨窗口的信息交互必须依靠移位窗口shifted window要让相隔很远的两个 token 直接产生注意力信息需要逐块接力传播——块堆得越深感受野才越大。对于语义分割、检测这类需要全图上下文的任务局部窗口 多块堆叠的传播路径就显得太长、太慢。CSWin 的解法把窗口掰成十字形CSWin 的思路很直白既然全注意力太贵、小窗口视野又太窄那就只保留一行 一列拼成一个十字Cross-Shaped窗口宽度记为 SWstripe width默认 7水平分支把特征图沿水平方向切成 N/SW 条宽为 SW 的水平条纹每个 token 与条纹内全部 token 做注意力垂直分支同样垂直切条做一次独立的注意力拼接输出两个分支各占用一半通道输出沿通道维拼接。关键收益一次前向token 就能直接看见整行和整列的所有 token——不需要移位、不需要多块堆叠单块即拥有行/列级全局感受野。核心实现是 LePEAttention 与 CSWinBlock 中的双分支并行逻辑branch_num2。底层数学一次算清两者的计算量设特征图尺寸为 H×Wtoken 总数 NH·W注意力计算量近似为每 token 交互数 × N。Swin 滑动窗口窗口 M×M每 token 交互 M² 个 → 总量O(N·M²)CSWin 十字形窗口条纹宽 SW水平分支每 token 交互 SW 个垂直分支同样 SW 个但各只用 C/2 通道等效折半→ 总量约O(N·SW)两者其实同为线性复杂度差别在于常数项与感受野注意力每 token 交互数单块感受野Swin7×7497 个 patch需移位堆块扩展CSWinSW7≈7714整行 整列全局全注意力N全局直觉解释Swin 用面积M²换局部精度CSWin 用长度SW换全局视野。想要 42 像素的全局感受野Swin 需要 42/76 个移位块接力CSWin 在第 3 阶段一个块就到位。这就是高效的数学本质——用更少的注意力乘法换来更长的信息通路。另外两点工程上的省法也值得注意无需移位窗口移位窗口需要额外的窗口重排partition/reverse与相对位置偏置查表CSWin 完全省掉LePE 局部位置分支CSWin 用深度可分离卷积为 Value 注入局部位置先验见 get_lepe替代 Swin 的相对位置偏置显存更省这也是 LePEAttention 名字的由来。实测性能同算力下更强官方 ImageNet-1K 主结果模型输入分辨率Top-1参数量FLOPsCSWin-T224×22482.823M4.3GCSWin-S224×22483.635M6.9GCSWin-B384×38485.578M47.0GCSWin-L384×38487.5173M96.8G下游任务同样亮眼ADE20K 语义分割 55.7 mIoUCSWin-L UPerNetCOCO 检测 box mAP 达 53.9。更长的信息通路对分割这类像素级任务的收益尤其明显分割配置见 segmentation/configs/cswin/。快速上手从安装到训练克隆仓库git clone https://gitcode.com/gh_mirrors/cs/CSWin-Transformer cd CSWin-Transformer bash install_req.sh训练 CSWin-Base8 卡bash train.sh 8 --data data path --model CSWin_96_24322_base_224 -b 128 --lr 1e-3 --weight-decay .1 --amp --img-size 224 --warmup-epochs 20 --model-ema-decay 0.99992 --drop-path 0.5显存不足时加--use-chk启用梯度检查点或用-b 128 --lr 1e-3降批量384 分辨率微调见 finetune.sh。小结7 个要点回顾十字形窗口 水平条 垂直条并行计算后拼接复杂度 O(N·SW)与滑动窗口同阶但常数更小单块即达全行/全列感受野无需移位窗口接力省去移位重排与相对位置偏置的开销LePE 用深度卷积低成本注入局部位置先验最后 7×7 阶段自动退化为全局注意力单分支97G FLOPs 拿到 87.5% ImageNet 精度下游分割/检测全面提升。延伸阅读项目内文件分类模型主实现models/cswin.py训练入口与脚本main.py、train.sh、finetune.sh语义分割MMSegmentationsegmentation/README.md分割 backbone 接入segmentation/backbone/cswin_transformer.py类别索引数据dataset/imagenet_class_index.json【免费下载链接】CSWin-TransformerCSWin Transformer: A General Vision Transformer Backbone with Cross-Shaped, CVPR 2022项目地址: https://gitcode.com/gh_mirrors/cs/CSWin-Transformer创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表