TinyViT: 一种高效的蒸馏方法

这篇具有很好参考价值的文章主要介绍了TinyViT: 一种高效的蒸馏方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

最近,视觉Transformer(ViT)由于其出色的模型能力而在计算机视觉领域引起了极大的关注。然而,大多数流行的ViT模型存在大量参数的问题,这限制了它们在资源有限的设备上的应用。

方法大意

TinyViT: 一种高效的蒸馏方法

快速预训练蒸馏(Fast Pretraining Distillation, FPD)

如何实现快速

常规的pretrain with distillation 非常慢并且成本高。因为teacher网络的每次推理都占用了大量的计算资源(GPU),并且也需要推理时间。为了解决efficient和costly的问题,作者提出了一个fast pretraining distillation 框架。这个框架是如何做的呢?

他在teacher的预训练阶段存储两个信息:一者输入图片的增强 A A A,二者tercher对该图片的预测概率向量 y ^ = T ( A ) \hat{y}=T(A) y^=T(A),记做 ( A , T ( A ) ) (A, T(A)) (A,T(A))。由于数据增强中有随机数,这会导致即使采用同样的增强参数,所获得得增强图片也不一致。因此 ( A , T ( A ) ) (A, T(A)) (A,T(A))需要在不同的迭代位置都保存。

在训练阶段,学生网络会读取teacher网络对同一图片的增强参数,对图片进行增强,优化目标为:
L = C E ( y ^ , S ( A ( x ) ) ) \mathcal{L} = CE(\hat{y}, S(\mathcal{A}(x))) L=CE(y^,S(A(x)))
其中 A ( x ) \mathcal{A}(x) A(x)是增强后的图片, S ( A ( x ) ) S(\mathcal{A}(x)) S(A(x))是学生模型的预测概率分布, y ^ \hat{y} y^是teacher预测的概率分布。 C E CE CE为交叉熵损失。可见这个框架是label-free的,学生网络的训练不依赖标签。因此用该方法可利用大量互联网无标注的图片。

三个细节深入理解FPD
  • 蒸馏阶段没有用GT的标签信息

作者发现,distillation with GT会导致性能下降。作者认为主要的原因可能是imagenet21k的有些标签间的类间差异很小,例如椅子和家具,马和动物,因此基于one-hot的GT标签不能很好的表征物体的类别信息。

  • y ^ \hat{y} y^进行了稀疏编码节约存储空间

对于imgnet21k来说总计有21841个标签,每个向量有21841维,非常大。作者的处理方式是,只存储向量中topk的元素的数值和位置,这大大降低了存储内存。在训练阶段,其它位置基于label smoothing的方式进行补充。

  • 优化数据增强的编码方式

比如一次的数据增强中包含,crop的坐标,旋转的角度等,每一次迭代中对同一图片的增强可能都不一样。直接存储是memory-inefficient的。作者采用了一种编码函数来解决这个问题。比如数据增强参数为d, 为编码的参数。训练过程对该参数进行解码 d = ϵ ′ ( d 0 ) d = \epsilon'(d_0) d=ϵ(d0)

模型架构

作者采用一种渐进式模型压缩方法(processive model contraction approach)实现从一个大模型中剪枝成小模型[1,2]。收缩因子有6个:embedding的维度、每个stage中block的个数、最后3个stage 的window size、MbConv block的通道扩展率、transformer中MLP的通道扩展率、多头attention,每个头的维度。

模型架构简要描述:

  • 类似swin-transformer同样有4个stage,每个stage都会下采样
  • patch embedding 采用了两个kernle为3补偿为2的卷积。
  • stage1 采用MBConv[3],剩下三个stage都是transformer with window attention.
  • 各个stage都用了残差连接。
  • 激活函数都用GELU。
  • 卷积的采用BN,线性层采用LN[4]
    TinyViT: 一种高效的蒸馏方法

训练trick

预训练参数配置(Imagenet21k-pretraining)
epoch 90
optimizer AdamW(weight-decay 0,01)
lr 0.002, cosine scheduler
Warm-up 5-epoch
Batch-size 4096
Gradient-clip Max-norm of 5
Stochastic depth ratio 0 for TinyViT-5/11M, 0,1 for TinyViT 21M
Data-aug Random resize, crop, horizontal-flip, color jitter, random erasing, RandomAugment, Mixup, CutMix
finetuning 参数配置(Imagenet-1k)
epoch 30
optimizer AdamW(weight-decay 10^-8)
lr 0.0005, for each layer is decayed by the rate 0.8 form output to input
Warm-up 5-epoch, cosine learning rate
bn frozon
Batch-size 1024
Gradient-clip Max-norm of 5
Stochastic depth ratio 0 for TinyViT-5/11M, 0,1 for TinyViT 21M
Data-aug Random resize, crop, horizontal-flip, color jitter, random erasing, RandomAugment, Mixup, CutMix

消融实验

Q: 数据是否越多越好?

A: 模型的性能随着数据量的增加而呈现加速度不断降低的增大,同样的数据量,最终的性能受限于模型的大小。

Q: logitK的数量是否越多越好?

A: 保存的logitK的的数量不是越多越好,因为teacher模型的logit也可能有部分噪声,选取topk的策略不仅可以降低存储成本,也能起到一定的降噪作用。(作者在imagenet1k取得是10, imagenet21k取的是100)

Q: distill pretrain + finetune架构真的有效吗?

A: 从实验来看是有效的,不同的数据规模、不同的基础模型均能得到一定的提升。因此distill pretrain + fintuning可以作为一种较为通用的范式。

Q: 预训练的Tearcher 模型对student的影响大吗?

A: 更好的teacher模型能训练得到更强student模型,但好的teacher模型往往很大,会带来较大的时间消耗。
TinyViT: 一种高效的蒸馏方法

TinyViT: 一种高效的蒸馏方法
TinyViT: 一种高效的蒸馏方法

扩展思考

What are the underlying factors limiting small models to fit large data?

主要是由于数据集中的Hardsample导致的

标签错误、由于一张图片中有多个目标导致相似的图片有不同的标签。Imagenet21k大约有10%的困难样本。对于小模型来说,拟合这些困难样本较为吃力以至于训练准确率比起大模型低得多。

作者提出两个方法解决这个问题:1. 采用大规模数据集训练的预训练模型(Florence)在imagenet21k微调,找出哪些大模型在top5都识别错误的样本(这个操作移除了2M个图片)。2. 以大模型作为teacher,采用文中提出的蒸馏方法在imagenet-21k训练小模型。

上述两个方法的收益:1. 方法一能够提升0.7%的性能. 2. 方法2能提升1.7%的性能。

Why can distillation improve the performance of small models on large datasets?

作者认为核心原因是teacher模型能够将类别间的关系注入给学生模型。对于常规的分类任务,一张图片只对应一个类别,但忽视了类别与类别之间联系,而论文提出的distillation是根据概率向量进行优化,概率向量反映了该图片在各个类别上的分布。文章来源地址https://www.toymoban.com/news/detail-510261.html

参考文献

到了这里,关于TinyViT: 一种高效的蒸馏方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【自然语言处理】【多模态】ALBEF:基于动量蒸馏的视觉语言表示学习

    ALBEF:基于动量蒸馏的视觉语言表示学习 《Align before Fuse:Vision and Language Representation Learning with Momentum Distillation》 论文地址:https://arxiv.org/pdf/2107.07651.pdf 相关博客: 【自然语言处理】【多模态】多模态综述:视觉语言预训练模型 【自然语言处理】【多模态】CLIP:从自然语

    2024年02月03日
    浏览(137)
  • 【文献分享】比目前最先进的模型轻30%!高效多机器人SLAM蒸馏描述符!

    论文题目: Descriptor Distillation for Efficient Multi-Robot SLAM 中文题目: 高效多机器人SLAM蒸馏描述符 作者:Xiyue Guo, Junjie Hu, Hujun Bao and Guofeng Zhang 作者机构:浙江大学CADCG国家重点实验室 香港中文大学(深圳) 论文链接:https://arxiv.org/pdf/2303.08420.pdf 本文通过生成具有最小推理时间的

    2024年02月14日
    浏览(44)
  • 【多模态】18、ViLD | 通过对视觉和语言知识蒸馏来实现开集目标检测(ICLR2022)

    论文:Open-vocabulary Object Detection via Vision and Language Knowledge Distillation 代码:https://github.com/tensorflow/tpu/tree/master/models/official/detection/projects/vild 效果: 在 zero-shot 测试下,coco 达到了 36.6 AP,PASCAL VOC 达到了 72.2AP,Object365 达到了 11.8AP 本文提出了 Vision and Language knowledge Distillation(

    2024年02月14日
    浏览(45)
  • 【计算机视觉】最近跑实验的感悟:大模型训练太难了!

    这里大模型训练特指基座大模型的从0开始训练,不包括在2000条数据上SFT这样的小任务。 有人说大模型嘛,简单,给我卡就行,等到老板真给你买来了1000张卡你就知道有多难了,老板说,小王,卡买来了,三个月给我搞出来。 然后你发现,就算有人把正确的代码,数据,参

    2024年02月09日
    浏览(43)
  • 医疗机构,快速掌握一种高效电力供应!

    在现代医疗环境中,各种医疗设备的顺畅运行对于确保患者的健康和医疗流程的有效性至关重要。然而,电力供应的不稳定性或中断可能会对医疗设备和系统造成严重影响。 为了应对这一挑战,蓄电池作为备用电源已经成为医院的重要组成部分。但是,单纯地安装蓄电池并不

    2024年02月10日
    浏览(45)
  • 目标检测中的知识蒸馏方法

    知识蒸馏 (Knowledge Distillation KD) 是 模型压缩 (轻量化)的一种有效的解决方案,这种方法可以使轻量级的学生模型获得繁琐的教师模型中的知识。知识蒸馏使用一种 教师—学生 (Teacher-Student)训练结构,通常是已训练好的教师模型提供知识,学生模型通过蒸馏训练来获取教师

    2024年02月06日
    浏览(39)
  • 任意模型都能蒸馏,异构模型的知识蒸馏方法OFAKD已在昇思MindSpore开源

    自知识蒸馏方法在2014年被首次提出以来,其开始广泛被应用于模型压缩领域。在更强大教师模型辅助监督信息的帮助下,学生模型往往能够实现比直接训练更高的精度。然而,现有的知识蒸馏相关研究只考虑了同架构模型的蒸馏方法,而忽略了教师模型与学生模型异构的情形

    2024年02月22日
    浏览(40)
  • 带头双向循环链表:一种高效的数据结构

    💓 博客主页:江池俊的博客 ⏩ 收录专栏:数据结构探索 👉专栏推荐:✅cpolar ✅C语言进阶之路 💻代码仓库:江池俊的代码仓库 🔥编译环境: Visual Studio 2022 🎉欢迎大家点赞👍评论📝收藏⭐ 双向循环链表是一种复杂的数据结构,它结合了双向链表和循环链表的优点。与

    2024年02月05日
    浏览(53)
  • 深入解析Redis:一种快速、高效的键值存储系统

    在现代应用程序中,高性能和可扩展性是至关重要的。Redis(Remote Dictionary Server)是一种快速、高效的键值存储系统,它具有出色的性能和灵活的数据结构。本文将深入解析Redis的特点、安装配置、基本操作、高级功能、性能优化、应用场景、注意事项和最佳实践。 1.1 介绍

    2024年02月16日
    浏览(39)
  • 【计算机视觉 | 目标检测】术语理解9:AIGC的理解,对比学习,解码器,Mask解码器,耦合蒸馏,半耦合,图像编码器和组合解码器的耦合优化

    AIGC指的是使用人工智能技术自动生成的各类数字内容,包括文本、图像、音频、视频等。它利用机器学习模型进行智能化内容生成。 主要的技术手段包括: 自然语言生成(NLG):使用RNN、GPT等语言模型生成文本。 生成对抗网络(GAN):使用GAN生成高质量图片。 自动语音合成(TTS):使用

    2024年02月04日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包