
摘要
在视觉变换器中,注意力机制是稀疏的。我们观察到,最终预测仅基于最具信息量的一小部分标记(tokens),这对于准确的图像识别已经足够。基于这一观察结果,我们提出了一种动态标记稀疏化框架,该框架可以根据输入逐步且动态地剪枝冗余标记。具体而言,我们设计了一个轻量级预测模块,用于根据当前特征估计每个标记的重要性得分。该模块被添加到不同的层中,以分层次地剪枝冗余标记。为了以端到端的方式优化预测模块,我们提出了一种注意力掩码策略,通过阻止标记与其他标记之间的交互来实现可微分的剪枝。得益于自注意力机制的特性,非结构化的稀疏标记仍然对硬件友好,这使得我们的框架易于实现实际加速。通过分层次地剪枝66%的输入标记,我们的方法显著减少了31%~37%的浮点运算次数(FLOPs),并将吞吐量提高了40%以上,而各种视觉变换器的精度下降不超过0.5%。配备动态标记稀疏化框架后,DynamicViT模型在ImageNet数据集上可以实现与最先进的卷积神经网络(CNNs)和视觉变换器相比非常有竞争力的复杂度/精度权衡。代码可在 https://github.com/raoyongming/DynamicViT 获取。
代码仓库
vision-sjtu/quadmamba
pytorch
GitHub 中提及
raoyongming/DynamicViT
官方
pytorch
GitHub 中提及
基准测试
| 基准 | 方法 | 指标 |
|---|---|---|
| efficient-vits-on-imagenet-1k-with-deit-s | DynamicViT (70%) | GFLOPs: 2.9 Top 1 Accuracy: 79.3 |
| efficient-vits-on-imagenet-1k-with-deit-s | DynamicViT (90%) | GFLOPs: 4.0 Top 1 Accuracy: 79.8 |
| efficient-vits-on-imagenet-1k-with-deit-s | DynamicViT (80%) | GFLOPs: 3.4 Top 1 Accuracy: 79.8 |
| efficient-vits-on-imagenet-1k-with-lv-vit-s | DynamicViT (70%) | GFLOPs: 4.6 Top 1 Accuracy: 83.0 |
| efficient-vits-on-imagenet-1k-with-lv-vit-s | DynamicViT (80%) | GFLOPs: 5.1 Top 1 Accuracy: 83.2 |
| efficient-vits-on-imagenet-1k-with-lv-vit-s | DynamicViT (90%) | GFLOPs: 5.8 Top 1 Accuracy: 83.3 |
| image-classification-on-imagenet | DynamicViT-LV-M/0.8 | Hardware Burden: Number of params: 57.1M Operations per network pass: Top 1 Accuracy: 83.9 |