计算机视觉中的Transformer
几十年来,理论物理学家一直在努力提出一个宏大的统一理论。通过统一,指的是将被认为是完全不同的两个或多个想法结合起来,将它们的不同方面证明为同一基础现象。一个例子是在19世纪之前,电和磁被看作是无关的现象,但电磁学理论成功地解释了它们,或以某种方式将这两种看似不同的现象统一起来。每当物理学家成功地将一组看似无关的东西统一起来,他们都会得到一个更强大的理论,可以解释更多内容,并且用更少的方法来实现。
我们在谈论计算机视觉时,为什么要谈论物理学呢?在人工智能领域也有类似的“统一”目标。在自然语言处理(NLP)领域,主导的建模架构是Transformer,而在计算机视觉领域,主要是卷积神经网络。然而,近年来情况发生了变化。NLP和CV能否通过基于Transformer的架构实现统一?让我们来看看!
什么是Transformer?
它有两个部分,前馈网络和自注意力。我们不会详细介绍自注意力,但在高层次上,它会将每个令牌与每个其他令牌进行比较,从而将运行时间提高到O(n**2)。总体目标是将n个令牌嵌入输入,并返回n个上下文丰富的嵌入。这个想法进一步形成了广泛使用的多头自注意力(MHSA),其在不同的输入令牌部分上并行使用了多组Q、K和V矩阵。然后在传递到MLP之前将产生的集合连接起来。这种技术非常有效,因为不同的头可以关注令牌之间的短程和长程关系,或者语义和句法关系。
您可能会问,如果这么好用,为什么我们不尝试用MHSA层替换卷积层,看看它是否做得更好?
这正是他们在这篇名为“Bottleneck Transformers for Visual Recognition”的论文中所做的。直接从论文的摘要中提取:“仅通过在ResNet的最后三个瓶颈块中将空间卷积替换为全局自注意,而不进行其他更改,我们的方法在实例分割和物体检测上显著改进了基线,同时减少了参数,延迟的开销最小。”这是多么惊人的事情啊!
唯一的区别是将3 × 3卷积层替换为MHSA
这可以通过直观地解释来解释,即左上角的感受野和右下角的感受野可能只在堆叠多个卷积层之后才能进行交互。在后期之前,没有全局交互。仅仅堆叠越来越多的层并不是真正需要的,而是需要一种明确的机制来建模全局依赖性,这就是MHSA在这里引入的新变化。
在NLP任务中,建模长程依赖性至关重要,我们很久以来都已经意识到了这一点,但是视觉领域一直只使用卷积,因为我们具有(附近像素比远处像素更重要)的局部性和平移不变性偏见。似乎在架构的某个地方,包含全局交互可以产生奇迹。BoTNET论文谈到了它是一个以CNN为基础的架构,在骨干部分中使用了自注意力。DETR模型(目标检测模型)具有基于CNN的骨干和顶部的变换块。但是,是否可以完全使用Transformer而不使用卷积来构建视觉系统呢?让我们来看看!
ViT
Google发表了一篇名为“一个图像值16x16个单词”的论文,在论文中,出现了一个视觉架构,里面没有一个卷积。一个256x256的图像有成千上万个像素,将每个像素制作成一个令牌,然后在自我关注步骤中使用,这在二次时间内根本不可行。因此,作者采取了将图像分成补丁并将它们通过线性层传递的方法,从而创建出每个补丁的扁平化嵌入,并在后续的变换步骤中使用它们。
从某种意义上说,Transformers缺乏CNN在图像类型数据设计中具有的归纳偏见。它们在将每个令牌与每个其他令牌进行比较方面非常通用,并且没有关于附近像素的任何信息。因此,位置嵌入被添加到线性投影中。即使在这些嵌入中,作者还表明更详细的二维嵌入与一维嵌入没有真正的收益,这显示了这种架构随着时间的推移学习位置的准确性。
ViT架构,如原始论文所示
论文链接:https://arxiv.org/pdf/2101.11605.pdf
· END ·
HAPPY LIFE
本文仅供学习交流使用,如有侵权请联系作者删除
相关文章:

计算机视觉中的Transformer
几十年来,理论物理学家一直在努力提出一个宏大的统一理论。通过统一,指的是将被认为是完全不同的两个或多个想法结合起来,将它们的不同方面证明为同一基础现象。一个例子是在19世纪之前,电和磁被看作是无关的现象,但电…...

UVA-1601 万圣节后的早晨 题解答案代码 算法竞赛入门经典第二版
GitHub - jzplp/aoapc-UVA-Answer: 算法竞赛入门经典 例题和习题答案 刘汝佳 第二版 以三个点的当前位置作为状态,广度优先遍历,找到终点即为最短次数。 注意: 一次可以移动多个点,但是每个点只能移动一步。在同一次中…...
nacos 403错误
403错误 2023-08-12 18:04:55,418 [main] ERROR [com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder:106] [trace,span,parent] - get data from Nacos error,dataId:gateway-server.yaml, com.alibaba.nacos.api.exception.NacosException: <html><body&…...
Python遥感图像处理应用篇(三十四):GDAL+Scikit-image+GLCM计算遥感图像纹理特征
1.运行环境 GDAL 3.4.2,Scikit-image最新版本0.19.3,numpy1.21.5 GDAL主要用于实现图像的读取和保存,Scikit-image和numpy对图像进行各种计算处理。 在调试好之前,由于numpy版本(1.16.6)低的问题,运行提示如下错误,更新为1.21.5版本之后就可以正常运行了,在此记录一…...

solr迁移到另一个solr中(docker单机)
背景介绍 solr数据迁移,或者版本升级,需要用到迁移,此处记录一下迁移方法以及过程中遇到的问题。我这边使用的是docker环境,非docker部署的应该也是一样的。 solr部署教程 准备工作 ● solrA 版本: 8.11.2 (已有so…...
谁能讲清楚Spark之Spark系统架构
### 整体架构概述 Spark与Hadoop MapReduce的结构类似,Spark也采用Master-Worker结构。如果一个Spark集群由4个节点组成,即1个Master节点和3个Worker节点,那么在部署Standalone版本后,Spark部署的系统架构图如图2.1所示。简单来说,Master节点负责管理应用和任务,…...

力扣:59. 螺旋矩阵 II(Python3)
题目: 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。 来源:力扣(LeetCode) 链接:力扣(LeetCode)官网 - 全…...

【electron】electron项目创建的方式:
文章目录 【1】npm init quick-start/electron(推荐)【2】 克隆仓库,快速启动【3】 通过脚手架搭建项目【4】 手动创建项目 【Electron官网】https://www.electronjs.org/zh/docs/latest/api/app 【1】npm init quick-start/electron…...
Vim学习(一)——基本命令与三种模式
写在前面, 致敬 8月3日,Vim创始人Bram Moolenaar去世,在此向老爷子致敬!感谢他为这个世界带来的优秀编辑器Vim。 基本介绍 Vim全称叫Vi IMproved. 而vi则是Visual Interface的缩写,他们处理都是ASCII码字符数据&am…...

unity新输入系统的简单使用(New InputSystem)
1、在包管理器 unity注册表中下载安装InputSystem 2、给玩家添加组件PlayerInput,点击CreatAction,创建一个InputAct InputAct,这是玩家的输入文件,在里面可以设置玩家输入 3、使用 例如玩家控制角色移动 在InputAct中,默认已经设置好了移…...

Redis——特性介绍与应用场景
Redis特性介绍 In-memory data structrues 众所周知,MySQL是一种关系型数据库,其通过表的结构存储数据,就类似于建立了一个excel表格来存储数据。但是像视频这类数据并不适合存储在关系型数据库中,因此存在非关系型数据库——通…...

网络:路由
1. 路由器 路由器工作在三层,每个接口都处于不用的网段中,即不同的广播域。但大多情况下,两台路由器直接相连的接口是同一个广播域,即一个网段。 路由器具有判断网络地址和选择路径的功能,能在多网络互联的环境中&…...

利用三维内容编辑器制作VR交互课件,简单好用易上手
随着虚拟现实技术的不断发展,越来越多的教育机构开始尝试将其应用于教育教学中。然而,要实现这一目标并不容易,需要专业的技术支持和开发团队。 为了解决这一问题,广州华锐互动研发了三维内容编辑器,它是一种基于虚拟现…...

中国首款量子计算机操作系统本源司南 PilotOS正式上线
中国安徽省量子计算工程研究中心近日宣布,中国国产量子计算机操作系统本源司南 PilotOS 客户端正式上线。 如果把量子芯片比喻成人的“心脏”,那么量子计算机操作系统就相当于人的“大脑”,量子计算应用软件则是人的“四肢”。 据安徽省量子…...

基层社会治理平台建设方案[113页PPT]
导读:原文《基层社会治理平台建设方案[113页PPT]》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式: 如需获取完…...
认识vite
一.了解vite的不同版本的更新 vite1版本是基于vue项目的,无法跨框架使用vite2可以跨框架(vue2,vue3,react)vite3模板变更;vite cli优化;import.meta.glob API变化;其他vite4主版本主…...

华为运动健康,十年创新天地宽
我听一位朋友讲过这样一个故事。某天早上,急诊科的医生迎来了一位患者,患者进来后直接说:“大夫,我房颤了。” 这位医生非常诧异,因为心脏房颤确实非常危急,但很多时候并没有明显的生理体征,患者…...

深度学习(37)—— 图神经网络GNN(2)
深度学习(37)—— 图神经网络GNN(2) 这一期主要是一些简单示例,针对不同的情况,使用的数据都是torch_geometric的内置数据集 文章目录 深度学习(37)—— 图神经网络GNN(…...

Unity游戏源码分享-乐节奏休闲游戏源码 guitar hero 支持mobile
Unity游戏源码分享-乐节奏休闲游戏源码 guitar hero 支持mobile 完整版下载地址:https://download.csdn.net/download/Highning0007/88198766...

VS Code配置Prettier格式化Apex
先决条件 安装nodejs和npm安装vs code安装salesforce extension pack 配置Prettier Apex 创建本地Salesforce项目 (Standard) command shift p -> SFDX: Create Project with Manifest -> Standard 打开terminal运行npm init生成package.json文件 安装prettier ap…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止
<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet: https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...

Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...