ViT:视觉 Transformer

ViT:视觉 Transformer

    • 网络结构
    • Transformer 编码器
    • MLP 头
    • CNN 和 Transformer

 


网络结构

Transformer 的优势:注意力机制相当于一个多标签检索系统,位置嵌入能知道每个单词的位置,而且适合并行。

尝试把 Transformer 迁移到视觉领域。

ViT 在 Transformer 基础上:

  • 输入:为了把图像空间序列化,引入了图片切分预处理、patch+位置嵌入
  • 主干:Transformer
  • 输出:MLP头及分类器

图片切分预处理:如输入图片大小为 224x224,将图片分为固定大小的patch(16x16),则每张图像会生成 224 ∗ 224 16 ∗ 16 = 196 个 p a t c h \frac{224 * 224}{16*16}=196个patch 1616224224=196patch ,把这些图像块摆成一行,即输入序列长度为196。


在图片块和 Transformer 之间,还有一个全连接层,对维度进行缩放。


patch+位置嵌入:给每个图像块,添加位置。


数学公式:

  • z 0 = [ x c l a s s ; x p 1 E ; x p 2 E ; ⋯ ; x p N E ] + E p o s , E ∈ R ( P 2 ⋅ C ) × D , E p o s ∈ R ( N + 1 ) × D (1) \begin{gathered} z_0 =[\mathbf{x}_{\mathrm{class}};\mathbf{x}_{p}^{1}\mathbf{E};\mathbf{x}_{p}^{2}\mathbf{E};\cdots;\mathbf{x}_{p}^{N}\mathbf{E}]+\mathbf{E}_{pos}, \mathbf{E}\in\mathbb{R}^{(P^{2}\cdot C)\times D},\mathbf{E}_{pos}\in\mathbb{R}^{(N+1)\times D} \text{(1)} \end{gathered} z0=[xclass;xp1E;xp2E;;xpNE]+Epos,ER(P2C)×D,EposR(N+1)×D(1)

z 0 z_0 z0输入图像进行编码 z 0 z_0 z0表示输入图像的嵌入向量。

x p ( 1 ) \mathbf{x}_{p}^{(1)} xp(1) 表示第一个图像块的嵌入向量, E \mathbf{E} E 是位置嵌入矩阵,用于将图像块的位置信息编码到嵌入向量中。

E pos \mathbf{E}_{\text{pos}} Epos 是位置编码矩阵,用于将位置信息添加到输入数据中。

x c l a s s \mathbf{x}_{\mathrm{class}} xclass向量用于解决图像分类问题,将整个图像的类别信息引入Transformer模型。

Transformer 编码器

计算出 z 0 z_0 z0 后,输入到 Transformer 编码器(没有用解码器):

输入部分:

  • Layer Norm:把 z 0 z_{0} z0 归一化,再 Q、K、V 分离。

  • 残差连接,减轻梯度消失、爆炸。

MSA:多头注意力,每个注意力头负责捕捉图像的不同局部信息,把图像中多个差异拿出来进行学习。

MLP 头

多层感知机(Multilayer Perceptron,MLP)是一种前馈神经网络:

MLP 分类头就是一个全连接层。

TA 的工作流程:

  • 接受编码器的输出
  • 先把 x c l a s s \mathbf{x}_{\mathrm{class}} xclass 提取出来
  • 再分类

ViT编码器的输出将是一个形状为(4, 16, 512)的张量。

  • 第一个维度4表示批次大小,即有4张输入图像。
  • 第二个维度16表示每张图像被分割为16个图像块。
  • 第三个维度512表示每个图像块的表示维度,即隐藏层的维度。

这个编码器输出可以包含输入图像的全局信息和局部信息的组合。

每个图像块的表示捕捉了该图像块的局部特征,而整个编码器输出则综合了所有图像块的信息,包括它们之间的关系,从而提供了更全局的图像信息。

CNN 和 Transformer

CNN擅长处理图像的局部特征,而ViT模型擅长处理图像的全局特征和整体类别信息。

选择CNN模型的情况:

  • 当任务关注图像的局部特征,比如纹理、形状、边缘等。
  • 当处理的图像较大,且局部特征在整体中仍然具有较大的重要性。
  • 当数据集较小,而且已经有了一些经典的CNN模型在类似任务上表现良好。

选择ViT模型的情况:

  • 当任务需要关注图像的全局特征和整体类别信息。
  • 当处理的图像相对较小,且全局结构和上下文信息对于任务很重要。
  • 当数据集较大,可以利用更强大的模型来提取全局信息和学习更复杂的特征。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot 面试题和答案,最新面经

覆盖了SpringBoot的方方面面。问题从SpringBoot的自动配置和起步依赖开始,接着深入到环境配置,再到异常处理、定时任务和异步处理等实用技能。每一个问题都能让你受到SpringBoot的强大和灵活性。 1. SpringBoot中核心特性有哪些? SpringBoo…

鸿蒙(HarmonyOS)应用开发——简易版轮播图

简述 轮播图在应用中,已经很常见的展现方式。像uniapp、iview,viewUI等前端组件框架,都提供了轮播图组件。那么在harmonyOS中,如果要实现轮播,我们是使用swiper 组件 swiper组件 swiper 组件是一种容器组件。它提供…

jmeter接口自动化测试通过csv文件读取用例并执行测试

最近在公司测试中经常使用jmeter这个工具进行接口自动化,简单记录下~ 一、在csv文件中编写好用例 首先在csv文件首行填写相关参数(可根据具体情况而定)并编写测试用例。脚本可通过优先级参数控制执行哪些接口,通过端口参数同时执…

【WebRTC】【Unity】Unity Web RTC1-Unity中简单实现远程画面

【项目资源下载】 本篇配套直接打开可用的项目包地址,欢迎下载: https://download.csdn.net/download/weixin_41697242/88612084 【背景】 想要在Unity中实现实时远程桌面,找到了Render Streaming这个手段,本篇介绍相应的使用方…

CSS层叠样式表一

1,CSS简介 1.1 CSS-网页的美容师 CSS的主要使用场景就是美化网页,布局页面的 CSS也是一种标记语言 CSS主要用于设置HTML页面中的文本内容(字体,大小,对齐方式等)、图片的外形(宽高、边框样式…

三天精通Selenium Web 自动化 - Selenium(Java)环境搭建 (new)

0 背景 开发工具idea代码管理mavenjdk1.8webdriver chrome 1 chromedriver & chrome chromedriver和chrome要对应上: chomedriver下载地址:淘宝镜像 这里用的是 chromedriver88-0-4324-96.zipchrome下载地址:如何降级和安装旧版本的C…

【华为OD题库-083】玩牌高手-Java

题目 给定一个长度为n的整型数组,表示一个选手在n轮内可选择的牌面分数。选手基于规则选牌,请计算所有轮结束后其可以获得的最高总分数。 选择规则如下: 1.在每轮里选手可以选择获取该轮牌面,则其总分数加上该轮牌面分数,为其新的…

NC 比telnet 强大网络命令

1. 扫描端口 nc -vz google.com 80 使用nc -vz参数可以进行端口扫描,-v表示输出详细信息,-z表示只扫描端口而不发送数据。 nc -nvuz 82.156.125.169 666 nc -nvz 192.168.1.110 1521 --u udp nc -nvz 82.156.125.169 20-24 $ nc -vz -n …

代码随想录刷题题Day11

刷题的第十一天,希望自己能够不断坚持下去,迎来蜕变。😀😀😀 刷题语言:C / Python Day11 任务 ● 理论基础 ● 递归遍历 ● 迭代遍历 ● 统一迭代 1 二叉树理论基础 1.1 二叉树的种类 (1&…

CentOS7安装JDK8

1. 下载JDK 下载地址:https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html 2. 解压JDK tar -zxvf jdk-8u341-linux-x64.tar.gz -C /usr/local/3. 配置环境变量 打开 /etc/profile vim /etc/profile末尾加上 export…

一文了解 Go 方法

前言 在前面的 一文熟悉 Go 函数 文章中,介绍了 Go 函数的声明,函数的几种形式如匿名函数、闭包、基于函数的自定义类型和函数参数详解等,而本文将对方法进行介绍,方法的本质就是函数,介绍方法的同时也会顺带对比其与函…

算法基础之分解质因数

分解质因数 核心思想&#xff1a;试除法(从小到大枚举所有数) #include<iostream>#include<algorithm>using namespace std;void div(int n){for(int i2;i<n/i;i){if(n%i 0) //找到最小质数i{int s0;while(n%i 0){n/i;s; //记录指数}cout<<i<<&…

js基础:简介、变量与数据类型、流程循环控制语句、数组及其api

JS基础&#xff1a;简介、变量与数据类型、流程循环控制语句、数组及其api 一、简介 1、js概述 tip&#xff1a;JavaScript是什么&#xff1f; 有什么作用&#xff1f; JavaScript&#xff08;简称JS&#xff09;是一种轻量级的、解释性的编程语言&#xff0c;主要用于在网页…

React系列:实现子组件A->父组件-子组件B变量流传

🍁 作者:知识浅谈,CSDN博客专家,阿里云签约博主,InfoQ签约博主,华为云云享专家,51CTO明日之星 📌 擅长领域:全栈工程师、爬虫、ACM算法 💒 公众号:知识浅谈 🔥网站:vip.zsqt.cc React系列总结 🎈useState的使用 创建响应式变量的时候,在react是需要使用u…

企业核心架构(高可用 ,高并发 ,高复用)

标题&#xff1a;构建高可用、高并发和高复用的应用系统 摘要&#xff1a;在当今互联网时代&#xff0c;提供高可用、高并发和高复用的应用系统对于确保用户体验和系统稳定性至关重要。本文将介绍一些常用的技术和最佳实践&#xff0c;以实现高可用性、高并发性和高复用性。并…

手机网站支付有风险吗?

这是一个在当今数字化时代中&#xff0c;消费者们常常会提出的问题。随着科技的发展和移动设备的普及&#xff0c;越来越多的商家开始接受在线支付&#xff0c;这无疑为消费者提供了极大的便利。然而&#xff0c;与此同时&#xff0c;也伴随着一些潜在的风险。本文将探讨手机网…

0012Java程序设计-ssm医院预约挂号及排队叫号系统

文章目录 **摘** **要**目 录系统实现5.2后端功能模块5.2.1管理员功能模块5.2.2医生功能模块 开发环境 摘 要 网络的广泛应用给生活带来了十分的便利。所以把医院预约挂号及排队叫号管理与现在网络相结合&#xff0c;利用java技术建设医院预约挂号及排队叫号系统&#xff0c;实…

Nginx安装【保姆级别】

目录 1.Nginx开源版本安装&#x1f495;&#x1f495;&#x1f495; 2.传到linux&#x1f495;&#x1f495;&#x1f495; 3.在linux上安装 &#x1f495;&#x1f495;&#x1f495; 4.启动Nginx &#x1f495;&#x1f495;&#x1f495; 5.安装成系统服务 &#x1f495…

【1day】复现飞企互联 FE业务协作平台editflow_manager文件SQL注入漏洞

注:该文章来自作者日常学习笔记,请勿利用文章内的相关技术从事非法测试,如因此产生的一切不良后果与作者无关。 目录 一、漏洞描述 二、影响版本 三、资产测绘 四、漏洞复现

Dockerfile创建镜像INMP+wordpress

Dockerfile创建镜像INMPwordpress 需要哪些呢&#xff1a; Nginx 172.111.0.10 docker-nginx Mysql 172.111.0.20 docker-mysql PHP 172.111.0.30 docker-PHP 开始实验&#xff1a; 创建各级目录&#xff0c;他们各自的包和配置文件必须要在同一目录下才可以生效&…