vit网络模型简介

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

目录

一、前言

1.1 Transformer在视觉领域上使用的难点

1.2 输入序列长度的改进

1.3 VIT对输入的改进

二、Vision Transformer模型

2.1 Embedding层

2.2 Transformer Encoder

2.3 MLP Head

2.4  具体流程

三、模型搭建参数

四、结果分析


一、前言

1.1 Transformer在视觉领域上使用的难点

        在NLP中,输入transformer中的是一个序列,而在视觉领域,需要考虑如何将一个2d图片转化为一个1d的序列,最直观的想法就是将图片中的像素点输入到transformer中,但是这样会有一个问题,因为模型训练中图片的大小是224*224=50176,而正常的bert的序列长度是512,是bert的100倍,这个的复杂度太高了。

1.2 输入序列长度的改进

        如果直接输入像素点复杂度太高的话,就想着如何降低这部分的复杂度

        1)使用网络中间的特征图

        比如用res50最后一个stage res4 的feature map size只有14*14=196,序列长度是满足预期的

        2)孤立自注意力

        使用local window而不是整张图,输入的序列长度可以由windows size来控制

        3)轴自注意力

        将在2d图片上的自注意力操作改为分别在图片的高和宽两个维度上做self-attention,可以大大降低复杂度,但是由于目前硬件没有对这种操作做加速,很难支持大规模的数据量级。

1.3 VIT对输入的改进

        先将图片切分成一个个patch,然后每一个patch作为一个token输入到transformer中,但是由于整个transformer每个token之间都会做attention,所以输入本身并不存在一个顺序问题。但是对于图片而言,每个patch之间是有顺序的,所以类比bert,给每个patch embedding加上一个position embedding(是sum)。同时最终的输出也借鉴了bert, 用0和cls来替代整体,这部分对应的embedding就是最终的输出。

二、Vision Transformer模型

        下图是原论文中给出的关于Vision Transformer(ViT)的模型框架。简单而言,模型由三个模块组成:

1.Linear Projection of Flattened Patches(Embedding层)

2.Transformer Encoder

3.MLP Head(最终用于分类的层结构)

vit网络模型简介

2.1 Embedding层

        对于标准的Transformer模块,要求输入的是token(向量)序列,即二维矩阵[num_token, token_dim],如下图,token0-9对应的都是向量,以ViT-B/16为例,每个token向量长度为768。

vit网络模型简介

        对于图像数据而言,其数据格式为[H, W, C]是三维矩阵明显不是Transformer想要的。所以需要先通过一个Embedding层来对数据做个变换。如下图所示,首先将一张图片按给定大小分成一堆Patches。以ViT-B/16为例,将输入图片(224x224)按照16x16大小的Patch进行划分,划分后会得到196个Patches。接着通过线性映射将每个Patch映射到一维向量中,以ViT-B/16为例,每个Patche数据shape为[16, 16, 3]通过映射得到一个长度为768的向量(后面都直接称为token)。[16, 16, 3] -> [768]

        在代码实现中,直接通过一个卷积层来实现。 以ViT-B/16为例,直接使用一个卷积核大小为16x16,步距为16,卷积核个数为768的卷积来实现。通过卷积[224, 224, 3] -> [14, 14, 768],然后把H以及W两个维度展平即可[14, 14, 768] -> [196, 768],此时正好变成了一个二维矩阵,正是Transformer想要的。

2.2 Transformer Encoder

        Transformer Encoder其实就是重复堆叠Encoder Block L次,主要由Layer Norm、Multi-Head Attention、Dropout和MLP Block几部分组成。

vit网络模型简介vit网络模型简介

2.3 MLP Head

        上面通过Transformer Encoder后输出的shape和输入的shape是保持不变的,以ViT-B/16为例,输入的是[197, 768]输出的还是[197, 768]。这里我们只是需要分类的信息,所以我们只需要提取出[class]token生成的对应结果就行,即[197, 768]中抽取出[class]token对应的[1, 768]。接着我们通过MLP Head得到我们最终的分类结果。MLP Head原论文中说在训练ImageNet21K时是由Linear+tanh激活函数+Linear组成。但是迁移到ImageNet1K上或者你自己的数据上时,只用一个Linear即可。

vit网络模型简介

2.4  具体流程

        1.首先将分辨率为 T × H × W 的输入视频,其中 T 为帧数、H 为高度、W 为宽度,分割成尺寸为1×16×16的非重叠块,然后在平坦图像块上逐点运用线性层,将其投影到潜在尺寸 D 中。就是1×16×16的核大小和步长的卷积,如表1中patch1阶段所示。

vit网络模型简介

        2.位置嵌入E ∈ ​添加到长度为L且维数为D的投影序列的每个元素。

        3.通过N个变换器块的顺序处理,产生的长度为L+1的序列,每个变换器块执行注意力(MHA)、多层感知机(MLP)和层规范化(LN)操作。通过以下公式计算:

vit网络模型简介

        注:此处产生长度为L+1的序列是因为spacetime resolution + class token

         4.N个连续块之后的结果序列被层规范化,通过线性层来预测输出。此处需要注意,默认情况下,MLP的输入是4D。

三、模型搭建参数

        在论文的Table1中有给出三个模型(Base/ Large/ Huge)的参数,在源码中除了有Patch Size为16x16的外还有32x32的。
vit网络模型简介

其中:

Layers就是Transformer Encoder中重复堆叠Encoder Block的次数 L。
Hidden Size就是对应通过Embedding层(Patch Embedding + Class Embedding + Position Embedding)后每个token的dim(序列向量的长度)
MLP Size是Transformer Encoder中MLP Block第一个全连接的节点个数(是token长度的4倍)
Heads代表Transformer中Multi-Head Attention的heads数。

四、结果分析

vit网络模型简介

        上表是论文用来对比ViT,Resnet(和刚刚讲的一样,使用的卷积层和Norm层都进行了修改)以及Hybrid模型的效果。通过对比可得出结论:

        1.在训练epoch较少时Hybrid优于ViT -> Epoch小选Hybrid

        2.当epoch增大后ViT优于Hybrid -> Epoch大选ViT文章来源地址https://www.toymoban.com/news/detail-410212.html

到了这里,关于vit网络模型简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 视觉Transformer经典论文——ViT、DeiT的与原理解读与实现

    最近ChatGPT、文心一言等大模型爆火,追究其原理还是绕不开2017年提出的Transformer结构。Transformer算法自从提出后,在各个领域的相关工作还是非常多的,这里分享之前在其他平台的一篇笔记给大家,详细解读CV领域的两个经典Transformer系列工作——ViT和DeiT。 论文地址:An Ima

    2024年02月14日
    浏览(55)
  • 图解Vit 2:Vision Transformer——视觉问题中的注意力机制

    上节回顾 在Transformer之前的RNN,其实已经用到了注意力机制。Seq2Seq。 对于Original RNN,每个RNN的输入,都是对应一个输出。对于original RNN,他的输入和输出必须是一样的。 在处理不是一对一的问题时,提出了RNN Seq2Seq。也就是在前面先输入整体,然后再依次把对应的输出出来

    2024年02月17日
    浏览(43)
  • 图解Vit 3:Vision Transformer——ViT模型全流程拆解

    先把上一篇中的遗留问题解释清楚:上图中,代码中的all_head_dim就是有多少head。把他们拼接起来。 Encoder在Multi-Head Self-Attention之后,维度一直是BND`,一直没有变。 不论是BN(Batch Normalization)还是LN(Layer Normalization),都是对batch来做的。只是他们的归一化方式不同。我们在求mea

    2024年02月16日
    浏览(38)
  • 《Vision Transformer (ViT)》论文精度,并解析ViT模型结构以及代码实现

    《AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE》 论文共有22页,表格和图像很多,网络模型结构解释的很清楚,并且用四个公式展示了模型的计算过程;本文章对其进行精度,并对源码进行剖析,希望读者可以耐心读下去。 论文地址:https://arxiv.org/abs/2010.11929 源

    2024年02月05日
    浏览(39)
  • AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT/Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月04日
    浏览(48)
  • AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT、Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月20日
    浏览(47)
  • AI绘画能力的起源:通俗理解VAE、扩散模型DDPM、DETR、ViT/Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月06日
    浏览(48)
  • 论文笔记:InternImage—基于可变形卷积的视觉大模型,超越ViT视觉大模型,COCO 新纪录 64.5 mAP!

    Title:InternImage: Exploring Large-Scale Vision Foundation Models with Deformable Convolutions Paper Link:https://arxiv.org/abs/2211.05778 Code Link:https://github.com/OpenGVLab/InternImage 拿到文章之后先看了一眼在ImageNet1k上的结果,确实很高,超越了同等大小下的VAN、RepLKNet、ConvNext等先进的大核注意力CNN模型,

    2024年02月05日
    浏览(34)
  • AI绘画能力的起源:从VAE、扩散模型DDPM、DETR到ViT/MAE/Swin transformer

    2018年我写过一篇博客,叫:《一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD》,该文相当于梳理了2019年之前CV领域的典型视觉模型,比如 2014 R-CNN 2015 Fast R-CNN、Faster R-CNN 2016 YOLO、SSD 2017 Mask R-CNN、YOLOv2 2018 YOLOv3 随着2019 CenterNet的发布,特别是2020发布的DETR(End-to-End

    2024年02月08日
    浏览(46)
  • 图片分类网络ViT、MobileViT、Swin-Transformer、MobileNetV3、ConvNeXt、EfficientNetV2

    参考我的另一篇博文《李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer》 参考我的另一篇博文《李沐论文精读系列二:Vision Transformer、MAE、Swin-Transformer》 论文名称:MobileViT: Light-Weight, General-Purpose, and Mobile-Friendly Vision Transformer 参考小绿豆的博文《MobileViT模型简介》

    2024年02月04日
    浏览(56)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包