VIT-如何将Transformer更好的应用到CV领域

一文窥探近期大火的Transformer以及在图像分类领域的应用 本文首先将简要介绍Transformer的原理与其各个组成部分、Transformer在自然语言处理(NLP)领域的应用;接下来文章从图片分类与目标检测的角度介绍相应Transformer的应用;最后本文将介绍Transformer在应用到CV领域时依然存在的不足以及未来可能的研究方向。 阅读详情

VIT:如何将Transformer更好的应用到CV领域

大家好,我是DASOU;

最近因为在做TRM在多模态视频的分类,会写一些TRM在CV中的应用,今天先来讲一下VIT;

论文名称是:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE

这个论文看下来,有这么几个重点需要去掌握:

  1. 将整张图片转化为多个patches,作为trm的序列输入
  2. 输入的时候需要加入位置编码,三种位置编码:一维,二维,相对位置编码没有太大区别
  3. TRM可以接受CNN的输出作为输入,作为一种TRM的混合结构,区别于VIT这种无卷积结构
  4. 可能是由于缺乏inductive biases,数据集上直接训练的VIT效果一般,需要先在大数据及上做预训练然后在任务数据上做微调才可以达到不错的效果
  5. VIT的【CLS】可有可无
  6. patches重叠与否区别不是特别大;

1. 简单背景介绍

在CV领域,CNN一直是主流模型;

TRM的最核心的一点就是自注意力机制,把这点借鉴到CV来说,一个最简单的想法就是我把每个像素当做是一个token,然后作为序列输入;

那么就是对每个token之间都做了多头注意力机制;假设我们的图像大小是2242241,那么序列长度就是50176,相当于BERT最大长度的512的100倍左右,这个参数量肯定是不能承受的;

针对这种情况,我们怎么处理呢?这个问题,本质上是去解决随着像素增加,复杂度平方级增长的问题;

一个改进就是将全局的这种注意力机制改为局部的注意力机制,也就是做token周围几个领域tokens之间的注意力机制;

还有一种改进是做稀疏注意力,是对注意力做了改进,本质在缓解TRM模型随着长度的增加,Attention部分所占用的内存和计算呈平方比增加的问题。

这几种改进思路可行,但是实施复杂;

所以一个比较简单的方法,就是将整个图像化整为零,从一整张图片转化为一个个的patch,也就是一个个的小方块;

直接看下面这个图:

其实在这里我想插一句,我之前在对图片元素做自注意力机制的时候,是对CNN提取图片的特征图,然后做attention;只不过,VIT这个模型在追求的一个特点就是完全抛弃掉卷积这个操作~~

2. 具体细节

2.1 模型架构图

论文中自带的模型架构图已经足够清晰,我直接搬过来,然后一点点去讲一下:

我们通过形状来了解一下数据的流动情况:

首先我们有一张图片,形状为:H∗W∗CH*W*CH∗W∗C ;其中H是高度,W是宽度,C是通道数量;

然后我们把这个图片转化为一个个的pathes,其中每一个patch的形状是P2∗CP^{2}*CP2∗C ; P是每个patch正方形的边长;

然后可以将多个通道压扁,转化为一个一维形状:P2.CP^{2}.CP2.C ;注意,这里就类似变成了一维数组;

总共有N个patches;

我们TRM的输入定为维度为DDD大小的token,那么我们就需要对每个一维数组P2.CP^{2}.CP2.C 做一个linear映射到DDD大小;

在TRM的输入中,处理token的embedding,其实还有一个是位置编码,VIT使用的就是简单的一维位置嵌入,映射到D维度就够了;这里论文提了一下,因为原始信息是图片,所以尝试了二维编码,但是没有明显提升;

VIT学习BERT,在最开始加入了CLS符号;

看到这点我其实疑惑了一下,BERT中加入CLS的一个原因是它预训练的时候使用了NSP,CLS的输出可以作为二分类的任务;但是图片这里显然没有第二张图片,所以加入CLS的解释就变成了想使用元素之间的注意力学习到所有tokens的信息;

2.2 位置编码消融实验

还有一点就是位置编码这块,作者做了消融,有四组实验,分别是:没有位置编码,一维位置编码,二维位置编码,以及相对位置编码;

在位置编码这里,作者还做了另外三组实验,就是只在最开始输入的时候加入位置编码,在每一层加入位置编码同时各自学习,在每一层加入位置编码同时共享这个位置编码;

实验结果看下面这个图:

结论就是没看出太大的区别,直接用一维的位置编码,同时只是在最开始的时候加入位置编码就可以【从结果看每一层位置编码共享效果会更好一点】

2.3 是否需要加入【CLS】token

VIT模型为了最小限度的改变trm架构,依旧沿用了bert中的【CLS】中的这个token;但是就像我在最上面说到的,BERT中加入CLS的一个原因是它预训练的时候使用了NSP,CLS的输出可以作为二分类的任务;但是图片这里显然没有第二张图片,所以可以不加如【CLS】token;

在整合图片信息的时候,两种方式,一种是使用【CLS】token,另一种就是对所有tokens的输出做一个平均,简称GAP;实验结果证明,两者可以达到的同样的效果,只不过要控制好学习率;

结果看下面这个图:

3. 预训练以及下游微调

在上面谈到,VIT在小数据上效果一般,需要做一个预训练再来一个微调,效果还不错;

这个其实不陌生,TRM在文本上也是,小数据不如lstm,bert在大量文本上预训练,学习到了大量的知识,才横扫了NLP;

直接看图吧,绝大部分效果还是不错的:

参考:"未来"的经典之作ViT:transformer is all you need! - 小小将的文章 - 知乎 https://zhuanlan.zhihu.com/p/356155277

从ViT到Swin,10篇顶会论文看Transformer在CV领域的发展历程 本文梳理了近期10篇Transformer、Attention机制在计算机视觉领域的应用,从ViT到Swin Transformer,完整了解CV Transformer的发展过程。 阅读详情

相关推荐

Vision Transformer (ViT) :Transformer在computer vision领域的应用(一)

介绍ViT模型

新兴IT民工的专栏 1868

Transformer系列专题(二)——multi-headed多头注意力机制

在实践中,当给定相同的查询、键和值的集合时,我们希望模型可以基于相同的注意力机制学习到不同的行为,然后将不同的行为作为知识组合起来,例如捕获序列内各种范围的依赖关系(例如,短距离依赖和长距离依赖)。因此,允许注意力机制组合使用查询、键和值的不同的 子空间表示(representation subspaces)可能是有益的。

weixin_73044854的博客 1606

SUMO从入门到精通:手把手教你用开源工具完成智能网联车仿真(附Python接口教程)

本文提供了一份SUMO开源交通仿真工具的完整实战指南,从环境搭建、基础仿真到Python接口TraCI的深度应用。重点讲解了如何利用SUMO的高度可定制性进行智能网联车仿真,包括实现动态信号优先等核心算法,并介绍了与网络仿真器集成以构建高保真车联网通信环境的方法。

weixin_28327051的博客 538

Tokens-to-token vit: Training vision transformers from scratch on imagenet

动机 VIT在中型数据集上从头训练的效果比CNN还差 原因 (1)对输入图像的简单token化不能对邻近像素的重要结构进行建模(如边缘) (2)冗余的注意主干设计导致有限的功能丰富度和模型训练的困难 解决问题的方法 提出了T2T-Vision Transformer 包括: (1)一个tokens-to-token的转换器,通过递归地聚合周边的token从而将图像逐渐得结构化成tokens (2)一个又深有窄的backbone Tokens-to-Token token从transformer层输出后,re

weixin_44000193的博客 873

告别兼容性困扰:在F-Droid中安全部署Termux的完整指南

本文提供了一份在F-Droid中安全部署Termux的完整指南,旨在彻底解决Android设备上的兼容性困扰。文章详细阐述了为何选择F-Droid而非Google Play商店,并逐步指导用户完成从彻底清理旧版本、安装F-Droid客户端、授予权限到最终安装配置Termux的全过程。指南还涵盖了进阶的稳定性配置、数据迁移方法以及常见问题排查,确保用户获得一个稳定、无冲突的命令行工作环境。

weixin_29224309的博客 945

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

Transformer多模态领域挖坑之作:ViT模型详细讲解

基于自注意机制的模型,例如Transformer已经成为NLP的范式,主要方法是在大规模语料库上训练,然后在小规模数据集上微调。随着模型和数据集的增大,还没出现训练饱和的现象。因此作者在ImageNet这种中型数据集上进行了训练,但是效果比同等大小的ResNet差了一点,作者认为主要原因是Transformer中没有inductive biases(归纳偏置,即一些先验知识),而Transformer要通过图片自己去学习知识,所以稍微逊色于传统的图像领域的网络是可以预见的。

2401_85379281的博客 1608

记住这两个纯净版Windows11各系列版本系统下载网站

记住这两个纯净版Windows11各系列版本系统下载网站 HelloWindows是一个完整极致的Windows纯净系统下载站,不夹带任何私货,系统全部来源于微软官方原版,本站只是收录官方发布的系统以及工具,方便大家下载,请放心使用。永久在线:www.hellowindows.cn。HelloWindows.cn - 精校 完整 极致 Windows系统下载仓储站。

拥抱具身智能,昇腾Ascend C 7020

Vision Transformer(ViT)

1. 前言 本文讲解Transformer模型在计算机视觉领域图片分类问题上的应用——Vision Transformer(ViT)。 本人全部文章请参见:博客文章导航目录 本文归属于:计算机视觉系列 2. Vision Transformer(ViT) Vision Transformer(ViT)是目前图片分类效果最好的模型,超越了最好的卷积神经网络(CNN)。ViT在2020年10月挂在arXiv上,2021年正式发表。在所有的公开数据集上,ViT的表现都超越了最好的ResNet,前提是在足够大的数据

RuizhiHe 4613

⭐️【2024年新版教程】vmware tools安装步骤(Windows、Linux、MacOS版本)

VMware Tools是VMware提供的一套实用工具,它可以增强虚拟机与宿主机之间的交互性能,如改进显示性能、优化鼠标和键盘性能、提供时间同步功能等。无论是在Windows、Linux还是MacOS虚拟机上,安装VMware Tools都可以提高虚拟机的使用体验。以上就是在不同操作系统上安装VMware Tools的步骤,希望对您有所帮助。

Python老吕的博客 6万+

RAG系统中Embedding模型选型实战

本文详细介绍了RAG系统中Embedding模型选型实战,希望能对学习RAG的同学们有所帮助。 文章目录 1. 前言 2. 思路解析 3. 测评数据集构建 3.1 步骤一 3.2 步骤二 3.3 数据示例 3.4 总结 4. 实战代码 4.1 本地模型 4.2 使用第三方的Embedding模型API

herosunly的博客 17万+

ViT(Vision Transformer)全文精读

** 1. 相关链接 :** 原文链接:[2010.11929] An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale (arxiv.org) 原文开源代码:GitHub - google-research/vision_transformer Pytorch版本代码:GitHub - lucidrains/vit-pytorch: Implementation of Vision Transformer, a

SeptemberH的博客 1万+

【WRF湿度调整策略】WRF/ERA5湿度数据对比

【WRF湿度调整策略】WRF/ERA5湿度数据对比

WW、forever的博客 120

【CV】VIT:如何将Transformer更好的应用到CV领域

最近因为在做TRM在多模态视频的分类,会写一些TRM在CV中的应用,今天先来讲一下VIT;论文名称是:AN IMAGE IS WORTH 16X16 WORDS: TRANSFORMERS FOR IMAGE RECOGNITION AT SCALE这个论文看下来,有这么几个重点需要去掌握:将整张图片转化为多个patches,作为 TRM 的序列输入输入的时候需要加入位置...

fengdu78的博客 632

Unreal5从入门到精通之初学者碰到解决不了的问题怎么办?

在学习Unreal的过程中,你曾陷入困境了吗?对于我来说,这种情况发生得比我愿意承认的要多得多。幸运的是,除了一般地在网上搜索之外,还有很多地方可以获得虚幻引擎的帮助。

TxNet 979

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ViT论文总结

Vit论文复盘

qq_29423387的博客 1629

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

【Transformer系列】深入浅出理解ViT(Vision Transformer)模型

【Transformer系列】深入浅出理解ViT(Vision Transformer)网络模型

IT菜鸟 6万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

大模型算法(一):从Transformer到ViT再到LLaMA

从transformer到LLM的变化以及当下LLM的一些相关技术

qq_45983373的博客 2377

Transformer主干网络——ViT保姆级解析

前言 最近准备跑点主干网络的实验,transformer在cv都杀疯了,整理下最近这些网络的发展以及创新点。从”万恶之源“ViT开始吧。 结构 根据上图介绍大致流程,首先一幅建筑的图片,作者将它分为大小相同的9块, 然后每一块通过展平以及线性层编码成9个特征, 然后额外拼接一个形状一样的一个特征用于分类: 接下来,因为将图片分块他们原始对于图像中的位置信息没有了,所以作者加了一个可以学习的位置特征在原特征上, 注意这里是加,不是拼接,比如说图像块1的特征是(0,0,0,0,0.5,1.0),加上一

qq_37668436的博客 1万+

Transformer在CV领域的应用与部署

可能存在格式问题,可访问个人博客: Transformer在CV领域的应用与部署 前言 Transformer介绍 Transformer for CV Transformer类网络部署 参考资料 前言 浅谈 Transformer 原理以及基本应用以及模型优化的一些思考。 Transformer介绍 Transformer 最早出自Google 2017年发布的论文:Attention is all you need。Transformer 结构提出在于完全摈弃了传统的循环的"encoder-deco

sunny0660的博客 1837

CV领域Transformer这一篇就够了(原理详解+pytorch代码复现)

CV领域Transformer这一篇就够了(原理详解+pytorch代码复现)

ZhengrongYue的博客 1万+

Transformer在CV领域的优缺点

Transformer在CV上的应用前景

PETERPARKERRR的博客 9669

【计算机视觉】Vision Transformer (ViT)详细解析

【计算机视觉】Vision Transformer (ViT)详细解析

Danger的博客 1万+

论文理解【Vision Transformer】—— 【VIT】An Image is Worth 16x16 Words: Transformers for Image Recognition

本文介绍经典的 ViT 论文,它是第一个将 Transformer 模型有效应用到较大规模 CV 任务上的工作,并且保持了 Transformer 模型本身的 Scaling 能力,启发了很多后续工作

佚失的诗篇 4209

AI大模型系列之三:Swin Transformer 最强CV图解(深度好文)

SwinTransformer是一种为视觉领域设计的分层Transformer结构。它的两大特性是滑动窗口和分层表示。滑动窗口在局部不重叠的窗口中计算自注意力,并允许跨窗口连接。分层结构允许模型适配不同尺度的图片,并且计算复杂度与图像大小呈线性关系。Swin Transformer借鉴了CNN的分层结构,不仅能够做分类,还能够和CNN一样扩展到下游任务,用于计算机视觉任务的通用主干网络,可以用于图像分类、图像分割、目标检测等一系列视觉下游任务。

Peter_Changyb的博客 2万+

ViT、DETR 和 Swin Transformer :基于 Transformer 的计算机视觉(CV)模型

图像输入 → 线性 Patch Embedding → Swin Transformer Block(窗口注意力) → 多尺度特征提取 → 适用于分类、检测、分割。

lqq 1816
上一篇: BN踩坑记--谈一下Batch Normalization的优缺点和适用场景
下一篇: NLP任务中-layer-norm比BatchNorm好在哪里
onnx
博客等级 码龄5年 1万+粉丝 416原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

onnx

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值