基于Transformer的图像分类算法:DeiT(Data-efficient Image Transformer)
题目描述:
DeiT(Data-efficient Image Transformer)是一种专为图像分类任务设计的Transformer模型,其核心目标是解决Vision Transformer(ViT)对海量训练数据依赖性强的问题。ViT需要依赖如JFT-300M(数亿张图像)等超大规模数据集预训练才能达到优异性能,而DeiT通过引入蒸馏令牌(Distillation Token) 和教师-学生蒸馏策略,仅使用ImageNet-1k(约130万张图像)即可训练出高性能的Transformer分类模型,显著提升了数据效率。
解题过程:
-
问题分析:
ViT模型将图像分割为固定大小的图像块(patches),通过线性映射为序列输入Transformer编码器。但Transformer缺乏CNN固有的归纳偏置(如平移不变性),因此需要大量数据学习基础特征。DeiT需在数据有限时,保持ViT的全局建模能力,同时避免过拟合。 -
关键创新:知识蒸馏:
- 蒸馏令牌:DeiT在输入序列中新增一个可学习的"蒸馏令牌",与ViT的"类别令牌"并行输入Transformer编码器。蒸馏令牌的目标是模仿教师模型(如经过预训练的CNN)的输出行为。
- 教师模型选择:使用高性能CNN(如RegNet)作为教师模型,因其在ImageNet上已具备强特征提取能力,且对数据需求低于ViT。
- 蒸馏方式:
- 硬标签蒸馏:学生模型(DeiT)的类别令牌预测真实标签,蒸馏令牌预测教师模型的硬标签(one-hot类别)。损失函数结合交叉熵损失和蒸馏损失。
- 软标签蒸馏:蒸馏令牌学习教师模型的软概率输出(带温度参数的softmax),更好地利用类别间关系。
-
训练细节优化:
- 数据增强:采用RandAugment、MixUp、CutMix等强增强策略,扩充有限数据的多样性。
- 优化策略:使用AdamW优化器,配合余弦学习率衰减,避免训练振荡。
- 分层学习率:对Transformer的不同层设置差异化学习率(如底层学习率低、高层学习率高),稳定训练过程。
-
推理过程:
推理时仅使用学生模型(DeiT)的类别令牌输出进行预测,蒸馏令牌在训练完成后丢弃。模型将图像块序列输入编码器,通过多层自注意力机制提取全局特征,最终由分类头输出类别概率。 -
性能对比:
DeiT在ImageNet-1k上达到与ViT相当甚至更优的精度(如DeiT-Base达85.2% top-1准确率),且训练数据量减少至1/100以下,证明了蒸馏策略在视觉Transformer中的有效性。
总结:
DeiT通过巧妙融合Transformer与知识蒸馏,降低了视觉Transformer对数据的依赖,为资源受限场景提供了高效解决方案。其核心思想是将CNN的局部归纳偏置以蒸馏形式迁移至Transformer,实现优势互补。