【CV|2. vit——vision transformer】了解vit之前可以先看论文 attention is all in need,主要看论文中transformer中的encode和decode部分。
在vit中主要应用了transformer的encode部分。
vit整体的网络框架结构图
文章图片
vit原理讲解的很好:ViT和DeiT的原理与使用 - 知乎
vit原理:把图像使用patch(p*p*c),分隔为N等份。每份拉成一维向量D。N等份就有N*D维度。因为分隔图片的patch尺寸可能会拉成很长的一维向量(比如patch尺寸为32,3通道。拉成一位向量长度32*32*3=3072),不仅计算量较大,复杂度较高,并且存在部分冗余信息,所以会较长的一维向量转换为较低的维度(比如把3072为转换为固定128维等)。同时还会增加一个分类的embedding(比如维度128),作为后面分类维度的分类标签训练和预测使用,和图像patch的所有向量concat,放到第一个维度(如图红框)。然后把(N+1)*D加上positional embedding后放到transformer的encode编码器中进行自编码,把编码后的结果的第一维度(就是分类token的这维)信息拿取出来,过MLP head(红框里上面)后进行分类。
推荐阅读
- 深度学习|yolov5安全帽检测、反光衣检测、抽烟检测
- 深度学习|关于添加注意力模块的yolov5-5.0与yolov5-6.0的检测效果对比
- python|python批量修改txt文件里的类别数,批量修改文件名
- 深度学习|yolov5-v6.1发布
- 深度学习|yolov5中使用denselayer替换focus,fpn结构改为bi-fpn
- 深度学习|关于yolov5加注意力之后的yaml文件讲解(5.0版本和6.0版本通用),文末有一个大部分人都没注意到的细节
- 深度学习|关于yolov5融合wbf算法的一些事情
- pytorch|从零开始pytorch手写字母识别
- 深度学习|深度学习(CNN和RNN学习笔记)