目录
一、前言
二、ViT为什么难训练
(一)CNN的先天优势
(二)ViT缺乏归纳偏置
(三)训练成本高
三、DeiT提出背景
四、DeiT核心思想
五、DeiT整体结构
六、DeiT继承了ViT哪些结构
(一)Patch切分
(二)Patch Embedding
(三)位置编码
(四)Transformer Encoder
七、知识蒸馏是什么
(一)传统训练方式
(二)知识蒸馏思想
八、Distillation Token原理
(一)什么是Distillation Token
(二)作用
九、DeiT训练流程
(一)分类损失
(二)蒸馏损失
十、硬蒸馏与软蒸馏
(一)Soft Distillation
(二)Hard Distillation
十一、DeiT模型家族
(一)DeiT-Tiny
(二)DeiT-Small
(三)DeiT-Base
十二、DeiT相比ViT的优势
(一)训练数据需求更少
(二)训练成本降低
(三)收敛更快
(四)泛化能力更强
十三、DeiT与ViT对比
(一)模型结构
(二)训练策略
(三)数据需求
(四)工业价值
十四、PyTorch实现蒸馏思想
十五、DeiT对视觉Transformer发展的意义
十六、DeiT的应用场景
(一)图像分类
(二)目标检测
(三)图像分割
(四)医学影像分析
(五)自动驾驶视觉系统
十七、总结
一、前言
在上一篇《掌握 ViT 模型结构》中,我们已经了解了 Vision Transformer(ViT)的基本原理。
ViT 的出现让 Transformer 成功进入计算机视觉领域,并取得了超越传统 CNN 的性能表现。
然而,ViT 也存在一个非常明显的问题:
训练数据需求极大
在 ViT 原始论文中,研究人员使用了:
JFT-300M
数据集。
数据规模超过:
3亿张图片
对于绝大多数企业和研究团队来说,这种训练成本几乎无法承受。
因此,人们开始思考:
能否在普通数据集上训练Transformer?
2021年,Facebook AI Research(FAIR)提出了一篇重量级论文:
《Training Data-Efficient Image Transformers & Distillation through Attention》
论文中提出:
DeiT
即:
Data-efficient Image Transformer
中文通常翻译为:
数据高效视觉Transformer
DeiT最大的贡献在于:
不需要数亿级别的数据,仅使用 ImageNet 数据集就能够训练出高性能的 Vision Transformer。
这一成果极大推动了 Transformer 在计算机视觉领域的普及。
二、ViT为什么难训练
(一)CNN的先天优势
卷积神经网络具有:
局部感知
特点。
例如:
3×3卷积核
天然关注局部区域。
这种设计实际上是一种:
归纳偏置(Inductive Bias)
即:
模型天生认为:
相邻像素关系更重要
因此:
即使数据量较少。
CNN也能学到有效特征。
(二)ViT缺乏归纳偏置
ViT直接使用:
Self-Attention
处理Patch。
其特点:
所有Patch地位平等
模型不会天然关注局部结构。
因此:
需要大量数据学习图像规律。
(三)训练成本高
ViT原始实验:
ImageNet
效果一般
但:
JFT-300M
效果优秀
说明:
ViT对数据极其敏感。
三、DeiT提出背景
Facebook研究团队发现:
虽然ViT结构优秀。
但训练门槛太高。
因此提出:
Data-efficient Training
目标:
降低数据需求
降低训练成本
提升训练效率
最终形成:
DeiT
模型。
四、DeiT核心思想
DeiT本质上仍然是:
Vision Transformer
架构。
最大的创新来自:
知识蒸馏
机制。
即:
Teacher
指导
Student
训练。
五、DeiT整体结构
DeiT总体流程:
Image
↓
Patch Embedding
↓
Position Embedding
↓
Transformer Encoder
↓
CLS Token
+
Distillation Token
↓
Classification Head
↓
Output
与ViT相比。
新增:
Distillation Token
蒸馏Token。
这是DeiT最核心创新。
六、DeiT继承了ViT哪些结构
(一)Patch切分
输入图片:
224×224×3
切分为:
16×16 Patch
得到:
14×14
=
196个Patch
(二)Patch Embedding
每个Patch:
16×16×3
展开:
768维向量
经过Linear层:
生成:
Patch Token
(三)位置编码
加入:
Position Embedding
帮助模型理解:
Patch顺序
信息。
(四)Transformer Encoder
采用标准:
Multi-Head Attention
和:
MLP Block
结构。
七、知识蒸馏是什么
(一)传统训练方式
普通训练:
图片
↓
模型
↓
预测结果
↓
计算损失
模型只能从标签学习。
(二)知识蒸馏思想
知识蒸馏提出:
让强模型教弱模型
例如:
Teacher:
ResNet
EfficientNet
Student:
DeiT
训练过程:
图片
↓
Teacher
↓
软标签
↓
Student
Student不仅学习真实标签。
还学习Teacher经验。
八、Distillation Token原理
(一)什么是Distillation Token
ViT中:
只有:
CLS Token
负责分类。
DeiT增加:
Distillation Token
结构:
CLS
Distillation
Patch1
Patch2
…
Patch196
(二)作用
CLS Token:
学习真实标签。
Distillation Token:
学习Teacher输出。
最终:
同时利用:
真实标签
+
教师知识
训练。
九、DeiT训练流程
整体流程:
Image
↓
Teacher CNN
↓
Soft Label
↓
DeiT
↓
CLS Output
↓
Distillation Output
↓
Loss
损失函数:
由两部分组成。
(一)分类损失
学习真实标签。
Cross Entropy
(二)蒸馏损失
学习Teacher输出。
Distillation Loss
最终:
Total Loss
=
Classification Loss
+
Distillation Loss
十、硬蒸馏与软蒸馏
DeiT提出两种蒸馏方式。
(一)Soft Distillation
Teacher输出:
概率分布
例如:
猫
0.9
狗
0.1
Student学习完整概率。
(二)Hard Distillation
Teacher输出:
最终类别
例如:
猫
训练更简单。
论文实验发现:
Hard Distillation
效果更好。
十一、DeiT模型家族
Facebook发布多个版本。
(一)DeiT-Tiny
参数量:
约:
5M
(二)DeiT-Small
参数量:
约:
22M
(三)DeiT-Base
参数量:
约:
86M
不同版本适用于:
不同计算资源环境。
十二、DeiT相比ViT的优势
(一)训练数据需求更少
ViT:
依赖超大规模数据
DeiT:
ImageNet即可训练
(二)训练成本降低
无需:
数百GPU
训练。
普通服务器即可完成。
(三)收敛更快
Teacher提供额外指导。
减少训练难度。
(四)泛化能力更强
在多个视觉任务中表现优秀。
十三、DeiT与ViT对比
(一)模型结构
ViT:
标准Transformer
DeiT:
ViT
+
Knowledge Distillation
(二)训练策略
ViT:
纯监督学习
DeiT:
监督学习
+
蒸馏学习
(三)数据需求
ViT:
极大
DeiT:
较小
(四)工业价值
DeiT更容易落地。
因此:
企业应用更加广泛。
十四、PyTorch实现蒸馏思想
简化示例:
import torch
import torch.nn.functional as F
teacher_output = teacher(images)
student_output = student(images)
loss_ce = F.cross_entropy(
student_output,
labels
)
loss_distill = F.kl_div(
F.log_softmax(student_output, dim=1),
F.softmax(teacher_output, dim=1),
reduction='batchmean'
)
loss = loss_ce + loss_distill
该代码体现了:
分类损失
+
蒸馏损失
的核心思想。
十五、DeiT对视觉Transformer发展的意义
DeiT最大的贡献并不是提出新的网络结构。
而是证明:
Transformer
可以在普通数据集训练
这大幅降低了视觉Transformer的应用门槛。
推动后续模型发展:
-
Swin Transformer
-
BEiT
-
MAE
-
DINO
-
EVA
-
SAM
等先进视觉模型。
十六、DeiT的应用场景
目前DeiT广泛应用于:
(一)图像分类
例如:
-
ImageNet分类
-
工业视觉分类
(二)目标检测
例如:
-
DETR
-
Deformable DETR
(三)图像分割
例如:
-
SegFormer
-
MaskFormer
(四)医学影像分析
提高疾病识别精度。
(五)自动驾驶视觉系统
增强场景理解能力。
十七、总结
DeiT(Data-efficient Image Transformer)是在 Vision Transformer 基础上发展而来的重要模型,它通过知识蒸馏技术成功解决了 ViT 对超大规模数据依赖的问题。
本文重点掌握了:
1、ViT存在的问题;
2、DeiT提出背景;
3、DeiT整体结构;
4、知识蒸馏原理;
5、Distillation Token机制;
6、训练流程分析;
7、硬蒸馏与软蒸馏区别;
8、DeiT模型家族;
9、DeiT与ViT对比;
10、实际应用场景。
可以将 DeiT 理解为:
“一个由CNN教师模型指导训练的Vision Transformer,它利用知识蒸馏技术,在较小数据集上也能获得优秀性能。”
正因为DeiT的出现,Vision Transformer 才真正走出实验室,开始广泛应用于工业界和学术界,并成为现代视觉大模型发展的重要里程碑。





