news 2026/8/24 12:08:14

DynamicViT T-PAMI扩展版深度解析:动态空间稀疏化如何把token剪枝带到ConvNeXt与Swin

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
DynamicViT T-PAMI扩展版深度解析:动态空间稀疏化如何把token剪枝带到ConvNeXt与Swin

DynamicViT T-PAMI扩展版深度解析:动态空间稀疏化如何把token剪枝带到ConvNeXt与Swin

【免费下载链接】DynamicViT[NeurIPS 2021] [T-PAMI] DynamicViT: Efficient Vision Transformers with Dynamic Token Sparsification项目地址: https://gitcode.com/gh_mirrors/dy/DynamicViT

DynamicViT 是一个面向视觉模型的动态 token 稀疏化框架(NeurIPS 2021 原始版本)。其被 T-PAMI 收录的扩展版将方法升级为通用的动态空间稀疏化框架,把 token 剪枝从 Vision Transformer 推广到ConvNeXt 与 Swin Transformer,并扩展到目标检测、语义分割等下游任务:FLOPs 降低超30%,吞吐量提升超40%,而精度损失控制在0.5%以内。

从 token 剪枝到动态空间稀疏化:扩展版改了什么?

NeurIPS 2021 的 DynamicViT 只支持 DeiT、LV-ViT 这类标准 Vision Transformer;T-PAMI 期刊版则回答了一个更普遍的问题:"按输入动态删掉冗余空间位置"这件事,能不能做成所有视觉网络通用的模块?答案是能,对比如下:

维度NeurIPS 2021(DynamicViT)T-PAMI 扩展版(动态空间稀疏化)
支持网络DeiT、LV-ViT 等 ViT 家族新增 ConvNeXt(CNN)、Swin Transformer
下游任务图像分类新增目标检测、语义分割
剪枝对象ViT 的 token 序列通用空间特征图,天然适配 CNN
保留率设计ρ、ρ²、ρ³ρ、ρ−0.2、ρ−0.4

代码层面,保留率与剪枝位置的设定集中在 infer.py 中:ViT 系网络用KEEP_RATE1 = [ρ, ρ², ρ³],ConvNeXt/Swin 则用KEEP_RATE2 = [ρ, ρ−0.2, ρ−0.4];剪枝点PRUNING_LOC设在各个 stage 交界处(例如 ConvNeXt-Tiny 在[1,2,3],Swin-Small 在[2,4,6])。对应的三套网络实现分别位于models/dyvit.pymodels/dyconvnext.pymodels/dyswin.py

动态空间稀疏化如何工作:网络自己决定剪哪里 🎯

1. 输入依赖的动态打分

在每个剪枝点,网络会额外预测一张空间重要性分数图:分数高的位置(通常是前景、物体主体)保留,分数低的冗余区域(背景、纹理重复区)被剪掉。也就是说,剪哪些位置不是固定的,而是每张图都不一样——这正是"动态"二字的含义。

上图是viz_example.ipynb可视化 notebook 的官方输出示例:从左到右是网络逐层剪枝的过程,背景区域逐渐"消失",而木勺(前景)始终完整保留。

2. 师生蒸馏 + 比例约束损失

训练时无需两阶段流程,直接用一个未剪枝的教师网络做知识蒸馏。losses.py 中提供了两个损失模块:

  • DistillDiffPruningLoss_dynamic:面向 ViT 家族,做 token 级别的特征对齐;
  • ConvNextDistillDiffPruningLoss:面向 ConvNeXt,做空间位置级别的对齐。

总损失由三部分构成:分类 KL 蒸馏 + token/特征蒸馏 + 比例约束损失ratio_weight控制),其中比例约束会把各剪枝层实际的保留率拉向目标 ρ,让网络"学会按预算剪枝"。

ImageNet 分类性能清单:精度几乎不掉,算力省三成

扩展版提供的 ImageNet 预训练模型主要指标如下(ρ 为 base_rate):

模型ρTop-1Top-5FLOPs
DynamicViT-DeiT-S0.779.3294.682.9G
DynamicViT-DeiT-B0.781.4395.4611.4G
DynamicViT-LVViT-M0.783.8296.588.5G
DynamicCNN-T(ConvNeXt-T)0.781.5995.723.6G
DynamicCNN-S(ConvNeXt-S)0.782.5796.295.8G
DynamicCNN-B(ConvNeXt-B)0.983.9696.7611.9G
DynamicSwin-T(Swin-T)0.780.9195.424.0G
DynamicSwin-S(Swin-S)0.783.2196.336.9G
DynamicSwin-B(Swin-B)0.783.4396.4512.1G

⚡ 另一个实用亮点:推理时保留率可以自由调节--base_rate参数),同一套权重就能在不同算力预算下灵活权衡速度与精度,无需重新训练。

3 步快速上手 DynamicViT 本地部署 🚀

第 1 步:获取代码与安装依赖

git clone https://gitcode.com/gh_mirrors/dy/DynamicViT cd DynamicViT

核心依赖:torch>=1.8.0torchvision>=0.9.0timm==0.3.2fvcore(后者用于 FLOPs 统计,实现在calc_flops.py)。

第 2 步:单卡评估预训练模型

python infer.py --data_path /path/to/ILSVRC2012/ --model convnext-t \ --model_path /path/to/model --base_rate 0.7

--model支持deit-sdeit-blvvit-s/mconvnext-t/s/bswin-t/s/b等名称;--base_rate越小稀疏度越高、推理越快。

第 3 步:从零训练稀疏网络(8 卡示例)

python -m torch.distributed.launch --nproc_per_node=8 --use_env main.py \ --output_dir logs/dynamic_conv-t --model convnext-t --input_size 224 \ --batch_size 128 --data_path /path/to/ILSVRC2012/ --epochs 120 \ --base_rate 0.7 --lr 4e-3 --drop_path 0.2 --update_freq 4 --lr_scale 0.2

训练主流程在main.pyengine.py中,Swin/ConvNeXt 还可通过run_with_submitit.py提交到多机集群训练。

小结:适合谁来用 DynamicViT?

  • 想给现成的 ViT / ConvNeXt / Swin 模型加速,又不想重新设计网络结构——动态空间稀疏化几乎即插即用;
  • 研究模型压缩、动态推理的工程师与算法同学,可把它作为"输入自适应剪枝"的完整参考实现(含训练、蒸馏、评估全流程);
  • 不想直接跑训练?可以打开可视化 notebookviz_example.ipynb或线上演示colab_demo.ipynb,几分钟就能直观看到逐层剪枝效果。

一句话总结:T-PAMI 扩展版让"动态 token 剪枝"从 ViT 的专属技巧,变成了通用视觉骨干网络的标配加速手段

【免费下载链接】DynamicViT[NeurIPS 2021] [T-PAMI] DynamicViT: Efficient Vision Transformers with Dynamic Token Sparsification项目地址: https://gitcode.com/gh_mirrors/dy/DynamicViT

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

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

Recurly.js validate 5大校验技巧:在浏览器端拦截无效卡号

Recurly.js validate 5大校验技巧:在浏览器端拦截无效卡号 【免费下载链接】recurly-js Simple subscription billing in the browser 项目地址: https://gitcode.com/gh_mirrors/re/recurly-js Recurly.js 是一款在浏览器端完成订阅支付卡信息校验与令牌化的…

作者头像 李华
网站建设 2026/8/24 12:07:00

国内便捷访问Claude、GPT-5.6与GPT Image 2.0:聚合平台使用全指南

最近在尝试使用一些前沿的AI模型,比如Claude、GPT-5.6和GPT Image 2.0时,很多开发者都遇到了一个共同的难题:访问限制和复杂的部署流程。无论是官方渠道的注册门槛,还是网络环境的限制,都让快速体验和测试这些强大工具…

作者头像 李华
网站建设 2026/8/24 12:05:53

单片机毕业设计-基于 STM32 与 WiFi 的坐姿健康监测智能座椅控制系统设计 基于 STM32 的环境光敏采集坐姿提醒智能设备开发(018404)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于嵌入式单片机,Java、小程序技术领域和毕业项目实战 ✌️…

作者头像 李华
网站建设 2026/8/24 12:02:12

Maven从入门到精通:核心概念、安装配置与实战避坑指南

1. 项目概述:为什么我们需要Maven? 如果你刚开始接触Java开发,或者刚从其他语言转过来,面对一个项目里动辄几十上百个Jar包依赖,是不是会感到头皮发麻?哪个版本和哪个版本兼容?这个包又依赖了另…

作者头像 李华