[基础] Vision Transformer

VIT: AN IMAGE IS WORTH 16X16 WORDS

link

TL;DR

首篇使用纯Transformer来做CV任务的文章。

Method


首先将图像拆成多个图片Patch,每个Patch通过LindearProjection变成embedding特征,使用Transformer的Encoder来聚合多个embedding。为了使用模型能够做分类任务,在Encoder输入部分会增加一个额外的Cls Token。

Cls Token

如果没有这个Token,那么Encoder从任何一个Patch Embedding对应的位置来输出类别都会破坏Patch之间对称性。于是使用cls token的位置来聚合其它Patch Embedding的特征信息,从而获取全局特征来分类。

Code

参数

Experiment


1.相同计算量情况下ViT优于CNN;
2.在计算量较小时Hybrid(ViT+CNN)有优势,但计算量变大之后融合CNN的优势就不存在了。

Conclusion

Q: 为什么Vision Transformer的上限要比CNN更高?
A:因为CNN有诱导偏差(Inductive Bias),即CNN由卷积作为基本单元构成,卷积无法改变特征2D相邻结构,每一层特征始终具有2D相邻关系,使得模型无法自主学习spatial信息。而ViT学习过程中局部特征由MLP提取,全局相关性由Self-Attention聚合,根据Self-Attention加权的原理,embedding之间本身没有位置相关关系,符合加法交换律,唯一的位置信息由Encoder输入时的Position Encoding提供,除此之外再无2D spatial信息,这使得ViT在学习少了一些Spatial上的诱导偏差。

posted @   fariver  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示