Facebook data-efficient transformer模型介绍

【论文阅读】DeiT | Training data-efficient image transformers & distillation through attention 本文主要对Facebook最近提出来的DeiT模型进行阅读分析。 动机:DeiT解决什么问题? 方法 实验效果 总结 参考资料 阅读详情

前言

Transformer 作为自然语言处理领域的主流方法,近年被越来越多研究应用于机器视觉任务且能实现SOTA 结果。ViT(Vision Transformer)是Transformer在计算机视觉领域成功的应用,也是目前图片分类效果最好的模型,超越了曾经最好的卷积神经网络(CNN)。高性能的ViT可以在JFT-300M这样的巨大数据集上达到理想的分类结果,但当数据集不够大时,其效果是不如CNN的,限制了其应用。2021年Facebook AI与索邦大学联合开发了一项新技术:Data-efficient image Transformers (DeiT),是一种新的高效图像分类算法,用Transformer替代卷积,只需要较少的数据和算力就可以在ImageNet数据集上达到与顶尖的卷积网络(CNN)媲美的图像分类结果(GitHub源码见[4],本文中一,三,四部分所插入图片引用自参考资料[1])。

一、为什么要推出DeiT模型

对于普通开发者,要想利用ViT获得理想的泛化能力,需要庞大的计算资源和数以亿计的图像进行预训练,成本昂贵,而Facebook的DeiT模型(8600万参数)仅用3天时间在一台 8-GPU 的服务器上进行训练,即可在ImageNet数据集上取得比ViT性能更为优秀的效果。在此基础上,加入蒸馏(Distillation)操作,能使性能进一步提升。如下图所示,横轴代表ImageNet数据集上的吞吐量(即throughout, 一秒内可以处理的最大输入实例数),⚗表示加上了特定蒸馏操作的DeiT模型。b08f49f8dcf7545ca10ca205fe365536.png

二、相关知识

1. 知识蒸馏的作用机制

1. 原理

知识蒸馏是在深度学习,模型压缩领域非常重要的一个方法。其本质是从已训练完善的教师模型,“蒸馏”出“知识”用于学生模型的训练,希望轻量级的学生模型能够达到和教师模型相同的表现。

对于一个模型,我们关注其经过调试能够正确表达输入到输出的映射关系,这种映射关系通常是可以量化为概率的。Hinton等人认为对于分类任务,需要蒸馏出来的知识,就存在于大模型输出错误预测的相对概率。

通常在分类目标中的hard target是0/1编码的,通过熵看携带的信息量比连续的概率输出要少。比如在进行图片分类时,一辆汽车只有很小的概率被误认为是垃圾车,但这种错误的可能性仍然比把它误认为胡萝卜高出许多倍,这种类别间的概率分布对于学生模型的进一步学习很有用,它定义了一种丰富的数据相似结构。将复杂大模型的泛化能力转化到小模型上的一个明显方法就是利用大模型产生的类别概率(一般为softmax输出)作为训练小模型的软目标(soft target),软目标能够提供比hard target更多的信息。

2. 流程

1)带温度的softmax函数e6ca1b14818d1f00c3ec32b7ff57a553.png通过这个带温度参数的softmax函数,类别间概率分布中存在的相似性信息通过升温被放大,这样才能对损失函数产生更大的影响。也即汽车被误认为垃圾车的概率在升温之后其相对值会变大。

2)损失函数 最终损失函数是软目标函数和硬目标函数的结合:ef06ae7706d99f6992c7095fd5d4864a.png知识蒸馏的过程,简单而言,第一,利用大规模数据训练一个教师网络;第二,利用数据和教师网络指导训练一个学生网络。算法的整体流程如图所示:5eb1878c5f508acdd71e3e75e5f9765e.png

2. 关于ViT

受NLP领域中Transformer成功应用的启发,ViT(Vision Transformer)尝试将标准的Transformer结构直接应用于图像,并对整个图像分类流程进行最少的修改。ViT会将整幅图像拆分成小图像块,然后把这些小图像块的线性嵌入序列作为Transformer的输入送入网络,之后使用监督学习的方式进行图像分类的训练。ViT算法结构示意图如下图所示,具体地,先将三维图像展平分块,并对图像块进行embedding得到想要的维度,随后class token与input token合并为向量一起输入Transformer结构中进行特征提取,最后进入MLP层,class token最后的输出结果用来预测类别(下图引用自参考资料[3])。fb6abd2a974d00ff4c9f531ab6abb888.pngViT在不同规模数据集上的实验表现为:

  1. 在ImageNet等小数据集上,同等规模的ViT训练精度比不上ResNet;

  2. 随着训练数据集规模的增加,ViT的性能将开始攀升,并最终超过ResNet。

三、DeiT模型介绍

ViT在大数据集(JFT-300M)上的表现可以达到或超越当前的SOTA水平,但是在小数据集上表现不理想,限制了其应用范围。DeiT的网络结构跟ViT基本一致,主要的区别在于添加了一个蒸馏token以及训练策略不同。d4f9221a7b2c46faf98eb06e30a60e32.png如上图,在ViT架构基础上引入的蒸馏token,参与了整体信息的交互过程(在slef-attention layer中与class token和patch token不断交互)。蒸馏token的地位与class token相同,唯一的区别在于,class token的目标是跟真实的label一致,而蒸馏token是要跟teacher模型预测的label一致。蒸馏分为两种,一种是软蒸馏(soft distillation),一种是硬蒸馏(hard-label distillation)。软蒸馏 以交叉熵为分类损失,KL散度为蒸馏损失,用教师网络的softmax输出为标签,也即是常规蒸馏方式:fdb8d292c85c49ff183074250f4e3000.png硬蒸馏 以交叉熵为蒸馏损失,以教师网络的硬输出为标签:2515fd30690a2d01ddc3c8dc5181c429.png蒸馏token 见上图模型结构,在输入embedding处添加一个蒸馏token,蒸馏token的使用与class token类似,它通过slef-attention与其他embedding交互。通过训练迭代后,二者的余弦相似性会逐渐增大(但始终小于1),这也表明蒸馏embedding允许我们从teacher的输出中学习,同时与class embedding保持互补。

联合分类器 经过测试发现,class token和蒸馏token是朝着不同的方向收敛的,对各个layer的这两个token计算余弦相似度,平均值只有0.06,但是其余弦相似度随着网络传输会越来越大,在最后一层达到0.93。那么在测试时我们将分别拥有两个token的输出向量,考虑把二者的softmax输出相加,进行预测。

四、实验

DeiT相比于ViT,在结构上添加了蒸馏token。为了便于比较,构建了与ViT类似的三种不同规模的对照组DeiT,其详细参数如下表所示:c8be84d48277e2fb79e36f54ed378dae.png利用CNN做教师网络 蒸馏出的学生模型在准确率和吞吐量之间的权衡胜过其教师网络,有趣的是,卷积网络作为教师网络的结果要比用Transformer作为教师网络的结果更佳。962b22d9149cbeb7f766577a59bcd329.png不同蒸馏策略的比较 从实验结果得出,硬蒸馏显著优于软蒸馏,且class+distillation联合token的效果优于单一token:979c64a1685f54ac984503abb23ce30d.pngepoch的个数 增加epoch的数量会显著提升蒸馏训练效果,但是一定数量后也会趋于饱和:aaa90543a0f3242a03b17921cde9f184.png下游任务的迁移 已知DeiT在ImageNet上表现良好,为了衡量它的泛化能力,在不同数据集上进行迁移学习。下表将DeiT迁移学习结果与ViT和EfficientNet进行了比较,DeiT与CNN模型的表现相当,这与之前在ImageNet-1k上得到的结论一致:95a1231edf60ed7c31bff121353384dc.png原论文中还包含了一些关于token评估、权衡速度与精度、数据增强、训练策略、fine-tune分辨率等的讨论,不再赘述。

五、总结

我们介绍了一种用于图像transformer的模型,由于改进了训练,特别是引入蒸馏策略,因此不需要非常大量的数据进行训练。这对我们项目当前的研究启发主要有:

  1. 蒸馏模型在权衡精度和吞吐量之后的优越性甚至高于teacher模型,说明了蒸馏的有效性;

  2. 在Transformer中硬蒸馏的性能是优于软蒸馏的;

  3. 对于跨模型的蒸馏,teacher模型的选择很关键,会影响性能的提升;

  4. DeiT模型在小数据集上通过蒸馏token的方式提升精度的思路值得参考,使得实验免于巨量的数据集和训练资源。

对于DeiT,我们的训练依赖于现有的数据增强和卷积网络的正则化策略,除了蒸馏token外,没有引入任何重要的架构更改,因此,期待对图像Transformer的进一步研究。

参考资料

[1] Touvron H, Cord M, Douze M, et al. Training data-efficient image transformers & distillation through attention[C]//International Conference on Machine Learning. PMLR, 2021: 10347-10357. 

[2] Hinton G, Vinyals O, Dean J. Distilling the knowledge in a neural network[J]. arXiv preprint arXiv:1503.02531, 2015, 2(7). 

[3] Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020.

[4] https://github.com/facebookresearch/deit

DeiT详解:知识蒸馏的Transformer DeiT模型(8600万参数)仅用一台 GPU 服务器在 53 hours train,20 hours finetune,仅使用 ImageNet 就达到了 84.2 top-1 准确性,而无需使用任何外部数据进行训练,性能与最先进的卷积神经网络(CNN)可以抗衡。其核心是提出了针对 ViT 的教师-学生蒸馏训练策略,并提出了方法,使得在视觉领域训练得又快又好。 阅读详情

相关推荐

Pytorch使用手册-优化 Vision Transformer 模型以用于部署(专题十六)

自 2012 年深度学习兴起以来,卷积神经网络(CNN)一直是图像分类的主要模型,但 CNN 通常需要数亿张图像进行训练才能达到最先进的成果。DeiT 是一种 Vision Transformer 模型,它需要更少的数据和计算资源进行训练,却能够在图像分类任务中与领先的 CNN 竞争。数据增强:通过数据增强模拟在更大数据集上的训练效果;原生蒸馏:允许 Transformer 网络从 CNN 的输出中学习。DeiT 表明,即使数据和资源有限,Transformer 也可以成功应用于计算机视觉任务。

418

第十四章 原理篇:DEIT

简要介绍DEIT的原理和代码实现。

小闹钟的机器学习时间 1131

第50步 深度学习图像识别:Data-efficient Image Transformers建模(Pytorch)

第50步 深度学习图像识别:Data-efficient Image Transformers建模(Pytorch)

Jet4505的博客 1576

轻量级模型解读——轻量transformer系列

轻量级transformer系列模型解读

lishanlu136的博客 6411

腾讯开源CubeSandbox:为Agent打造可随时丢弃的安全沙箱环境

在人工智能与自动化技术快速发展的今天,智能体(Agent)在执行复杂任务时往往需要独立、完整的计算环境,但环境失控带来的安全风险一直是落地瓶颈。为解决这一痛点,可丢弃式沙箱技术应运而生。它通过轻量虚拟化原理实现环境秒级重建,并严格隔离宿主资源,即使Agent执行了恶意或误操作,也不会波及其他系统。这种技术价值在于平衡了灵活性与安全性,使开发者敢于赋予Agent更多自主操作权限。目前,这类技术已广泛应用于AI编程、自动化测试、数字员工、恶意代码分析等真实场景,成为Agent可靠运行的基石。腾讯开源的CubeS

weixin_42539414的博客 253

UE4逆向实战:如何快速定位UWorld和GName的5种实用技巧(含版本差异分析)

本文详细介绍了UE4逆向工程中快速定位UWorld和GName的5种实用技巧,包括特征码定位法、动态行为分析法、静态符号分析法等,并针对不同版本差异提供了适配方案。特别强调了UWorld作为游戏世界核心容器和GName作为名称管理系统的重要性,帮助开发者高效进行游戏逆向分析。

star的博客 895

Deit:知识蒸馏与vit的结合 学习笔记(附代码)

DeiT使用知识蒸馏(Knowledge Distillation)的方法进行训练。这意味着它通过从一个大型预训练模型中传递知识来训练,而不是从头开始训练。这有助于在资源受限的情况下实现更好的性能。

PLANTTHESON的博客 1万+

RTX 5090配Ubuntu 24.04踩坑记:手把手搞定OpenVLA-OFT环境(附版本避坑清单)

本文详细记录了在RTX 5090显卡和Ubuntu 24.04系统上部署OpenVLA-OFT环境的完整过程,包括驱动安装、CUDA配置、PyTorch版本选择等关键步骤。提供了经过验证的版本组合清单和常见错误解决方案,帮助开发者高效搭建AI开发环境。

weixin_30342209的博客 465

经典网络—DeiT:高效的数据蒸馏视觉Transformer

DeiT 由 Facebook AI 研究团队在论文中提出。它主要解决ViT 需要大量数据预训练数据蒸馏(Distillation through Attention)蒸馏 Token(Distillation Token)高效的训练策略。

Azperk的博客 1284

手把手教你用Simulink给C2000配置SCI串口发送数据(附模型与避坑点)

本文详细介绍了如何使用Simulink为C2000系列微控制器配置SCI串口发送数据,包括硬件资源分配、模型搭建、参数设置及调试技巧。通过代码生成和串口通信实践,帮助开发者高效实现嵌入式系统开发,避免常见通信问题。

weixin_30831529的博客 295

qt下使用grpc编程(2) —— 练手!自己改的一个简单小例子!1

(1)在研究了grpc官方提供的helloworld例程后,自己试着写了个小程序。 (2)编写proto文件。 proto文件用于定义服务和消息,用protobuf的语法编写,protobuf是一种通信协议,详细请百度。下面附上源码: syntax = "proto3"; option java_multiple_files = true; option java_pac

u011099079的博客 3925

Facebook开源数据高效图像Transformer,媲美SOTA CNN

作者|魔王、小舟、杜伟来源|机器之心将自然语言处理领域主流模型 Transformer 应用在视觉领域似乎正在成为趋势。最近,Facebook 研究人员提出一项新技术——数据高效图像 ...

Paper weekly 426

从点击图标到Activity亮屏:AMS、Zygote、ActivityThread的Binder协作之旅

Launcher通过Context调用 startActivity(),最终会通过 Activity.startActivity() 传递到 ActivityManager.getService(),获取AMS的Binder代理对象(IActivityManager)。这里的 attach() 方法通过Binder调用AMS的 attachApplication(),将新进程的 IApplicationThread 代理对象传递给AMS。这一步的Binder通信,是整个启动流程的关键转折点,值得细细品味。

大模型大数据攻城狮的专栏 1071

速度、准确率与泛化性能媲美SOTA CNN,Facebook开源高效图像Transformer

机器之心报道参与:魔王、小舟、杜伟将自然语言处理领域主流模型 Transformer 应用在视觉领域似乎正在成为趋势。最近,Facebook 研究人员提出一项新技术——数据高效图像 Tr...

zandaoguang的博客 271

基于 ESP32 的分布式光伏微电网智能监控系统设计与实现

设备 / 模块连接 ESP32 引脚备注I2C 总线(SDA)GPIO21所有 I2C 设备共用I2C 总线(SCL)GPIO22所有 I2C 设备共用DS18B20(单总线)GPIO18单总线通信,需外接 4.7K 上拉电阻有源蜂鸣器GPIO19低电平触发,串联 100Ω 限流电阻ESP32 供电5V/GND由 LM2596 输出 5V 供电,或直接 USB 供电(调试阶段)INA219(光伏)光伏阵列正负极接 INA219 的 VIN+/VIN-

weixin_42300449的博客 303

基于Python的雪球网投资组合数据爬取与分析实战:从入门到精通

在当今数字化投资时代,数据已成为投资者最重要的资产之一。雪球网作为中国领先的投资社交平台,汇聚了大量优质的投资组合数据,这些数据对于量化投资研究和个人投资决策具有重要价值。本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的雪球网投资组合爬虫,并深入分析获取的数据。投资组合持仓明细及变动历史投资收益率曲线与风险指标投资者操作策略与调仓频率热门行业与个股关注度。

2201_76125261的博客 920

Training data-efficient image transformers & distillation through attention

本视觉Transformers(86M参数)在ImageNet上达到83.1%的top-1精度,蒸馏版本高达84.4%!优于ViT、RegNet和ResNet等,代码刚刚开源! 注:文末附【Transformer】学习交流群 Training data-efficient image transformers & distillation through attention 作者单位:Facebook AI, 索邦大学。注:其中一位也是DETR的作者之一 代码(不到一天,已经近200 star

阿木寺的博客 4873

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Facebook开源高效图像Transformer,速度、准确率与泛化性能媲美SOTA CNN

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 转自 | 机器之心将自然语言处理领域主流模型 Transformer 应用在视觉领域似乎正在成为...

小白学视觉 637

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

深度解析deit_base_distilled_patch16_224.fb_in1k:Facebook的革命性图像分类模型如何实现8730万参数高效推理

deit_base_distilled_patch16_224.fb_in1k是由Facebook AI团队开发的革命性图像分类模型,作为 DeiT(Data-efficient Image Transformers)系列的重要成员,它凭借8730万参数实现了高效推理,在ImageNet-1k数据集上展现出卓越性能。本文将深入剖析这一模型的核心技术、架构优势及实际应用方法,帮助新手快速掌握其工作原

gitblog_00494的博客 968

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DeiT模型解析:数据高效的视觉Transformer实现

视觉Transformer(ViT)通过自注意力机制实现了图像识别任务的突破,但其依赖大规模数据预训练的特性限制了应用范围。DeiT(Data-efficient image Transformer)作为改进架构,通过知识蒸馏体系、训练策略优化和模型结构精简三大技术创新,显著提升了数据利用效率。该模型采用CNN教师模型进行硬蒸馏和软蒸馏,结合重复增强技术和DropPath等正则化策略,仅需ImageNet-1k数据即可达到79.8%的top-1准确率。在计算资源优化方面,DeiT通过改进patch嵌入层设计

weixin_34008805的博客 339

DeiT:数据高效视觉Transformer技术解析与架构选型指南

DeiT(Data-efficient Image Transformers)是Facebook Research针对数据稀缺场景优化的视觉Transformer模型,通过创新的知识蒸馏技术,在仅使用ImageNet-1K数据的情况下,实现了与需要大规模预训练的ViT模型相媲美的性能表现。本文面向技术决策者和中级开发者,深入解析DeiT的技术原理、架构设计、性能权衡及部署实践,为计算机视觉项目提供

gitblog_00014的博客 474

DeiT-small-patch16-224:高效图像分类的终极Vision Transformer指南

DeiT-small-patch16-224是一款基于Vision Transformer架构的高效图像分类模型,通过数据高效训练策略实现了优异的性能。作为HuggingFace镜像项目的一部分,该模型为开发者提供了便捷的图像分类解决方案,特别适合资源有限但需要高精度识别的场景。 ## 🌟 什么是DeiT模型? Data-efficient Image Transformer (DeiT)

gitblog_00358的博客 1016

EmulatorJS 完整指南:五分钟在浏览器里跑通 38 款经典游戏机

EmulatorJS 是一个自托管的浏览器游戏模拟器,本质上是 RetroArch 的 Web 前端:它把 NES、PSX、N64、街机这类经典主机的模拟工作,拆成一组 JavaScript 库和 WebAssembly 编译的模拟器核心,让 ROM 直接在浏览器里加载和运行,不需要用户装任何客户端。下面按"先跑通、再验证、后扩展"的顺序,说明部署路径、仓库里能查到的事实依据,以及上线前需要确认的

gitblog_00292的博客 922

FairSeq深度解析:Facebook开源序列建模工具包的技术架构与实战应用

**FairSeq**作为Facebook AI Research团队推出的高性能序列到序列学习框架,在自然语言处理、语音识别和多模态学习等领域展现了卓越的技术实力。本文将从核心理念、技术架构、应用场景三个维度深入剖析这一开源工具包的设计哲学与实现细节,为中级开发者和技术决策者提供深度的技术解析。 ## 核心理念:模块化设计驱动的研究与生产平衡 FairSeq的核心设计理念在于**研究友好性与

gitblog_01143的博客 284
上一篇: 浅谈视觉超大模型
下一篇: OneDNN GEMM(AVX FP32)算法浅析
Linux基金会AI&Data基金会
博客等级 码龄6年 101粉丝 47原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值