【AI】VIT Transformer论文学习笔记

论文:Dosovitskiy A, Beyer L, Kolesnikov A, et al. An image is worth 16x16 words: Transformers for image recognition at scale[J]. arXiv preprint arXiv:2010.11929, 2020

在这里插入图片描述

1.文章背景

计算机视觉当前最热门的两大基础模型就是Transformer和CNN了。

  • Transformer的应用

Transformer提出后在NLP领域中取得了极好的效果,其全Attention的结构,不仅增强了特征提取能力,还保持了并行计算的特点,可以又快又好的完成NLP领域内几乎所有任务,极大地推动自然语言处理的发展。
但在其在计算机视觉领域的应用还非常有限。在此之前只有目标检测(Object detection)中的DETR大规模使用了Transformer,其他领域很少,而纯Transformer结构的网络则是没有。
VIT这篇文章就是将Transformer模型应用在了CV领域,它将图像处理成Transformer模型可以应用的形式,沿用NLP领域中Transformer的方法,直接验证了其精度可以和ResNet不相上下,展示了在计算机视觉中使用纯Transformer结构的可能,为Transformer在CV领域的应用打开了大门。

  • Transformer的优势

1.并行计算
例如RNN,它每一层的参数都依赖前一个参数的计算结果,较难进行并行计算。而例如CNN,它每一层的计算的输入都是上一次的结果直接获取来的,可以进行并行计算,Transformer模型也具有这种能力。
在这里插入图片描述

2.全局视野
其计算可以层叠更大的图像范围

3.灵活的堆叠能力
由于MultiHead Attention机制,其堆叠能力更加灵活
在这里插入图片描述

2.文章导读

2.1摘要核心

  1. Transformer在NLP中已经成为经典
  2. 在CV中,Attention机制只是作为一个补充在使用
  3. 我们使用纯Transformer结构就可以在图像分类任务上取得不错的结果
  4. 在足够大的数据集上训练后,ViT可以拿到和CNN的SOTA不相上下的结果

2.2 VIT结构

VIT的主要思想就是迁移在NLP中应用很好的Transformer模型,以求在使用时做出最小的改动,来验证模型在CV领域应用的效果。要把原来的NLP中的模型应用在CV领域,需要对图像输入做出处理,这就隐身出来本文的核心idea:把图像切分重排,当作输入。
在这里插入图片描述

2.3 Attention 注意力机制

Attention其本质可以认为是加权平均。
在这里插入图片描述
输入层的各个参数与权重相乘后求和得出一个预测值。权重是如何获取的呢,实际上就是相似度计算。
将输入的图像解析之后,每个输入的要素都转换成坐标系上的向量,计算要素的相似度就可以转换为计算要素向量在坐标系上的距离,距离近的相识度高,距离远的相识度低,就可以使用向量的点积运算来做处理。
在这里插入图片描述
Q是输入值,K是关键词,self attention的计算实际上是在计算每个q和每个k的相似度。除以dk的平方根是为了避免较大的数值,较大的数值会导致softmax之后值更极端,softmax的极端值会导致梯度消失。softmax是将所有的值的权重和置为1,这个操作就想人的注意力似的,人对所有这些要素的注意力为1,有的要素注意力多点,有的要素注意力少点,softmax之后可以使权重更加集中。
相乘之后再进行相加,类比一词多意理解,这个词的多个意思都代表了这个词,具体要使用哪个意思需要借助其在句子中的意思。

然后进行MultiHead Attention操作,有多个Wq,Wk,Wv重复多次,结果concat一起。
在这里插入图片描述

2.3 输入端适配

将图像切图重排成一个个Patches,Patch经过Flatten操作后,获得一个个向量(Flattened patohes),然后经过Linner Projection获取到Input vector。
在这里插入图片描述

2.4 位置编码

图像切分重排后失去了位置信息,并且Transformer的内部运算是空间信息无关的,所以需要把位置信息编码重新传进网络;ViT使用了一个可学习的vector来编码,编码vector和patch vector直接相加组成输入
在这里插入图片描述

2.5 数据流

在这里插入图片描述

3.实验结果

ViT和ResNet Baseline取得了不相上下的结果
在这里插入图片描述
VIT 的性能可能依赖更大量的数据
在这里插入图片描述
Attention距离和网络层数的关系
Attention的距离可以等价为Conv中的感受野大小
可以看到越深的层数,Attention跨越的距离越远
但是在最底层,也有的head可以覆盖到很远的距离
这说明他们确实在负责Global信息整合
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225828.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

1146-table performance-schema.session_variables don‘t exits打卡navicat连接MySQL报错

navicat连接MySQL时报错: 管理员权限打开cmd 输入下面代码: mysql_upgrade -u root -p --force输入密码 然后就可以正常连接了。 mysql_upgrade检查所有数据库中与mysql服务器当前版本不兼容的所有表。 mysql_upgrade也会升级系统表,以便你…

mysql的组合查询

mysql的组合查询 1、mysql的内连接查询 在 MySQL 中,内连接(INNER JOIN)是一种根据两个或多个表之间的匹配条件,将多个表中的数据进行联接的操作。内连接只返回符合联接条件的行,而不会返回未匹配的行。 内连接的语…

故宫博物院与周大福珠宝集团 战略合作签约仪式在京举行

12月5日上午,故宫博物院与周大福珠宝集团战略合作签约仪式在故宫博物院故宫文化资产数字化应用研究所举行。文化和旅游部党组成员、故宫博物院院长王旭东,国际儒学联合会常务副会长、原文化部副部长丁伟,国际儒学联合会特别顾问、中国国际友好…

【项目】学生信息管理系统

概述 本系统总耗时 6 6 6 天,系统包括 学生发展与数据驱动平台6.2.cpp、学生信息.txt、用户账号.txt、注意事项.txt。由于代码对文件的调用使用的是相对路径,所以要求这 4 4 4 个文件都需要在同一目录。使用代码前先仔细看 注意事项。 如图&#xff1…

数据分析基础之《matplotlib(4)—柱状图》

一、柱状图绘制 1、柱状图要素 有类别 2、需求:对比每部电影的票房收入 电影数据如下图所示: 3、matplotlib.pyplot.bar(x, height, width0.8, bottomNone, *, aligncenter, dataNone, **kwargs) 说明: x:有几个类别 height&am…

ROS小练习——参数设置

目录 一、参数名获取 二、参数修改 1、代码修改 C python 2、命令行修改 3、启动时修改 4、launch文件传参修改 一、参数名获取 rosparam list 二、参数修改 1、代码修改 C #include "ros/ros.h"int main(int argc, char *argv[]) {ros::init(argc,argv,…

接口自动化测试之Yaml数据驱动封装!

一、数据驱动:pytest.mark.parametrize() 首先看个样本: import pytestclass TestData:# parametrize有两个值,一个是args_name:参数名,一个是args_value:参数值,可以有多个,进行数据解包# args_value可以…

智慧农业技术解决方案:PPT全文32页,附下载

关键词:智慧农业解决方案,数字农村,数字农业,智慧农业大数据平台,智慧农业技术方案 一、智慧农业技术平台建设方案 1、全球化和信息化趋势 随着全球化和信息化的加速发展,农业领域也面临着前所未有的挑战…

5分钟搞懂ECN

ECN是通过在IP和TCP头中携带拥塞信息,通知发送方网络拥塞状态,从而采取相应拥塞控制措施。原文: What is ECN(Explicit Congestion Notification)?[1] ECN是Explicit Congestion Notification的缩写,意思是显式拥塞通知算法,和慢…

【LeetCode】2621. 睡眠函数

睡眠函数 Promise异步 题目题解 题目 请你编写一个异步函数,它接收一个正整数参数 millis ,并休眠 millis 毫秒。要求此函数可以解析任何值。 示例 1: 输入:millis 100 输出:100 解释: 在 100ms 后此异步…

Java多线程:代码不只是在‘Hello World‘

Java线程好书推荐 概述01 多线程对于Java的意义02 为什么Java工程师必须掌握多线程03 Java多线程使用方式04 如何学好Java多线程写在末尾: 主页传送门:📀 传送 概述 摘要:互联网的每一个角落,无论是大型电商平台的秒杀…

<JavaEE> 多线程编程中的“等待和通知机制”:wait 和 notify 方法

目录 一、等待和通知机制的概念 二、wait() 方法 2.1 wait() 方法的使用 2.2 超时等待 2.3 异常唤醒 2.4 唤醒等待的方法 三、notify() 方法 四、notifyAll() 方法 五、wait 和 sleep 的对比 一、等待和通知机制的概念 1)什么是等待和通知机制&#xff1f…

若依框架的搭建

若依框架 若依框架的搭建(前后端分离版本)环境要求IDEA拉取Gitee源码Mysql 配置Redis 配置后端启动前端配置问题解决 效果展示 若依框架的搭建(前后端分离版本) 简介 RuoYi-Vue 是一个 Java EE 企业级快速开发平台,基…

线程池(Linux +C)

参考 手写线程池 - C语言版 | 爱编程的大丙 (subingwen.cn) 目录 1.为什么需要线程池? 1)线程问题: 2)如何解决线程问题(线程池的优势): 2.线程池是什么? 1)线程的…

无公网IP环境Windows系统使用VNC远程连接Deepin桌面

🔥博客主页: 小羊失眠啦. 🎥系列专栏:《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞👍收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,…

Hadoop学习笔记(HDP)-Part.19 安装Kafka

目录 Part.01 关于HDP Part.02 核心组件原理 Part.03 资源规划 Part.04 基础环境配置 Part.05 Yum源配置 Part.06 安装OracleJDK Part.07 安装MySQL Part.08 部署Ambari集群 Part.09 安装OpenLDAP Part.10 创建集群 Part.11 安装Kerberos Part.12 安装HDFS Part.13 安装Ranger …

使用pandas制作图表

数据可视化对于数据分析的重要性不言而喻,一个优秀的图表有足以一眼就看出关键所在。pandas利用matplotlib实现绘图。能够提供各种各样的图表功能,包括: 单折线图多折线图柱状图叠加柱状图水平叠加柱状图直方图拆分直方图箱型图区域块图形散点图饼图多子…

Linux AMH服务器管理面板本地安装与远程访问

最近,我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念,而且内容风趣幽默。我觉得它对大家可能会有所帮助,所以我在此分享。点击这里跳转到网站。 文章目录 1. Linux 安装AMH 面板2. 本地访问AMH 面板3. Linux安装…

MySQL老是卸载不干净,不会删除注册表,安装总是报错

给大家推荐一款非常使用的工具 geek点击官网下载。 安装完成主页就长这样: 右键点击你要删除的MySQL卸载即可。自动帮你清空注册表等信息。 谁用谁知道!!! 用了感觉不错的话记得回来给我点赞加评论哦!!&…

科普小知识-3D 打印是什么?

3D 打印是什么?作为近年来备受关注的前沿科技,3D 打印技术正在不断改变着制造业、医疗领域、艺术设计等多个领域的面貌。其又被称为增材制造,是一种通过电脑设计,逐层堆叠材料来创建三维物体的技术。 3D 打印的基本原理 3D 打印…