位置: IT常识 - 正文

Vision Transformer 模型详解

编辑:rootadmin
Vision Transformer 模型详解 目录前言模型结构实验总结Question Summary前言

推荐整理分享Vision Transformer 模型详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

虽然说transformer已经是NLP领域的一个标准:BERT模型、GPT3或者是T5模型,但是当年

Vision transformer 提出时用transformer来做CV还是很有限的; 在视觉领域,自注意力要么是跟

卷积神经网络一起使用,要么用来把某一些卷积神经网络中的卷积替换成自注意力,但是还是保持

整体的结构不变; ViT是2020年Google团队提出的将Transformer应用在图像分类的模型,因为其

模型“简单”且效果好,可扩展性强(scalable,模型越大效果越好),成为了transformer在CV领域

应用的里程碑著作,也引爆了后续相关研究。

模型结构

作者将transformer结构去除掉decoder部分后经过改进将其运用到视觉领域。vision transformer模型结构主要包括三部分:

patch embeding 部分transformer encoder部分MLP head部分。

整个模型结构可以分为五个步骤进行:

1、将图片切分成多个patch。

2、将得到的patches经过一个线性映射层后得到多个token embedding。

3、将得到的多个token embedding concat一个额外的CLS token,然后和位置编码相加,构成完整的encoder模块的输入。

4、 将相加后的结果传入Transformer Encoder模块。

5、Transformer Encoder 模块的输出经过MLP Head 模块做分类输出。

Transformer Block:

Layer Norm层:标准归一化,为了更好的收敛。MHA层:多头自注意力机制输入和输出做残差连接Layer NormMLP层: Linear + GRLU +Linear +Dropout

L个Transformer Block 构成一个完整的Transformer Encoder模块。经过Transformer Block 后维度不变。

实验

Vision Transformer 模型详解

给出的最佳模型在ImageNet1K上能够达到88.55%的准确率(先在Google自家的JFT数据集上进行了预训练),说明Transformer在CV领域确实是有效的。 用vision transformer 模型和卷积神经网络(resnet)做了对比,实验发现在中小数据集上,

卷积神经网络的效果比vit模型的效果要好(原因在Question Summary)。随着数据及规模的增大,

ViT模型的效果要逐渐优于卷积神经网络的效果。

用vision transformer 模型和卷积神经网络(resnet)以及Hybrid结构(混合结构)做了对比,

结果相同,同时Hybrid结构在中小型数据集上也能够达到能好的性能(毕竟结合了卷积神经网络和

Transformer的优点),但随着数据集的增大,发现Transform的结构要比Hybrid结构性能优秀。 作者还做了关于自注意力机制的实验,从实验结果我们可以看出,模型可以很好的利用自注意力机制学习到图片的特征。 做了关于CLS Token和GAP以及关于不同维度的消融实验。ViT模型最后利用CLS Token做分类预

测,而卷积神经网络则是利用GAP(全局平均池化),从实验结果可以看出,CLS Token 可以和

GAP 达到同样的效果,但是要求不同的学习率。

总结

如果在足够多的数据上做预训练,也可以不需要卷积神经网路,直接使用标准的Transformer也能够

把视觉问题解决的很好;尤其是当在大规模的数据上面做预训练然后迁移到中小型数据集上面使用的

时候,Vision Transformer能够获得跟最好的卷积神经网络相媲美的结果。

Question Summary

在中小型数据集上,ViT模型不如卷积神经网络的原因:

卷积神经网络存在归纳偏置:locality 和translation equivariance。有了归纳偏置后,就有了先验知识,可以利用较少的数据去学习一个比较好的模型,而transformer没有先验知识,所以需要数据自己学习,所以在大数据集上的性能比中小数据集上。

位置编码:

如果不标注位置,在Transform看来图片就是一样的,所以需要加上位置编码。

CLS Token:

在NLP的分类任务中,被看作一个全局的对句子的理解,在这里可以看作一个图像的整体特征。

MLP Head:

一个通用的分类头,最后用交叉熵函数进行模型的训练。

论文:原论文链接 代码:pytorch代码

本文链接地址:https://www.jiuchutong.com/zhishi/294588.html 转载请保留说明!

上一篇:vue:聊天对话框的实现(vue聊天系统)

下一篇:【uni-app】小程序实现微信授权登陆(附流程图)(unigui 小程序)

  • 公对公100万的生意扣税多少
  • 补提以前年度的盈余公积可以在本年任意月份提取吗
  • 什么叫应纳税所得额
  • 计提所得税分录计提的时候金额比实际缴纳多
  • 建筑业普票和专票的比例
  • 公司开普票和专票哪个好
  • 融资租赁担保余值
  • 保险经纪公司要取得什么证
  • 什么企业可以开增值税专用发票
  • 银行开户费用计入
  • 小规模和纳税人一般怎么选择
  • 汽车4s店索赔和维修
  • 收到进度款开票如何做账务处理合适呢?
  • 其他综合收益为什么要结转
  • 进项发票税点属于什么科目?
  • 税目与应纳税额的关系
  • 小微企业减免的增值税账务处理
  • 收购不良资产收益怎么算
  • 小规模纳税人开票要交印花税吗
  • 企业所得税纳税申报表A类
  • 分公司交总公司管理费怎么做账
  • 盘盈现金计入当期损益
  • u盘如何进行杀毒
  • 物业公司营业成本包括哪些
  • 电脑系统权限管理在哪里
  • PHP:oci_new_connect()的用法_Oracle函数
  • ZF框架实现发送邮件的方法
  • win7电脑软键盘怎么打开
  • php的数组函数
  • PHP:oci_field_is_null()的用法_Oracle函数
  • 营业利润是怎么计算的?
  • an exit
  • php数据类型分为哪几类
  • 申报系统异常
  • framework怎么查看
  • 图文详解水的画法
  • 支付个人赔偿款入账
  • 投资公司取得的发票
  • 【深度学习】模型过拟合的原因以及解决办法
  • iotop命令 监视磁盘I/O状态
  • 收到投标保证金现金流量
  • 营业税金及附加会计分录
  • 城镇土地使用税优惠政策
  • 图形验证码api
  • python代码用什么运行
  • 以前年度多缴的税
  • 主要业务是生产销售家电
  • 背书的银行承兑汇票怎么做账
  • 装修费用账务怎么处理
  • 注销时其他应付款借方余额怎么账务处理
  • 低值易耗品库存
  • 递延所得税会计处理全过程
  • 一次性补缴一年社保
  • 资产负债表中没有其他应收款
  • 收到投资款如何做税务登记
  • 生产型企业电费会计分录
  • 申报表怎么更正
  • 在sql中执行一个创建数据表的脚本文件
  • win8更改桌面位置
  • linux进程的概念
  • 如何在windows里保存画过的画
  • windows10x预览版
  • win7窗口大小怎么设置
  • linux 文件命名
  • win7旗舰版系统激活码
  • win7系统电脑开热点
  • freebsd连接wifi
  • Android自定义控件,切换APP再切回来控件消失了
  • qt pro load
  • js判断数组是否相等
  • jquery-file-upload 文件上传带进度条效果
  • opengl glu
  • js存储
  • 下列关于js的说法正确的是
  • 设计模式具有的优点
  • 深入浅出css
  • javascript面向对象编程
  • 发票一年可以开多少
  • 山东省立第三医院地址
  • 天津环保网站官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设