欢迎光临
我们一直在努力

掌握 DeiT(Data-efficient Image Transformer)模型结构——让 Vision Transformer 摆脱海量数据依赖

目录

一、前言

二、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 才真正走出实验室,开始广泛应用于工业界和学术界,并成为现代视觉大模型发展的重要里程碑。

赞(0)
未经允许不得转载:171主机测评 » 掌握 DeiT(Data-efficient Image Transformer)模型结构——让 Vision Transformer 摆脱海量数据依赖
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址