变形金刚在图像识别方面比CNN更好吗?
链接到文 — https://arxiv.org/pdf/2010.11929.pdf
一、说明
如今,在自然语言处理(NLP)任务中,转换器已成为goto架构(例如BERT,GPT-3等)。另一方面,变压器在计算机视觉任务中的使用仍然非常有限。大多数研究人员直接使用卷积层,或者将某些注意力块与卷积块一起添加到计算机视觉应用(如Xception,ResNet,EfficientNet,DenseNet,Inception等)中。关于视觉转换器(ViT)的论文在图像序列上实现了纯变压器模型,而无需卷积块来对图像进行分类。本文展示了ViT如何在各种图像识别数据集上获得比大多数最先进的CNN网络更好的结果,同时使用更少的计算资源。
二、视觉变压器 (ViT)
转换器是对数据序列进行操作的网络,例如一组单词。这些单词集首先被标记化,然后输入到转换器中。转换器添加 Attention(二次运算 — 计算每对标记化单词之间的成对内积。随着字数的增加,操作数也会增加)。
因此,图像更难在变形金刚上训练。图像由像素组成,每个图像可以包含数千到数百万个像素。因此,在转换器中,每个像素将与图像中的每个其他像素进行成对操作。在大小为 500*500 像素的图像中,即 500^2,因此注意力机制将花费 (500^2)^2 次操作。这是一项艰巨的任务,即使有多个 GPU。因此,对于图像,研究人员大多使用某种形式的局部注意力(像素聚类),而不是使用全局注意力。
ViT的作者通过使用全局注意力来解决这个问题,但不是在整个图像上,而是在多个图像补丁上。因此,首先将大图像分成多个小块(例如 16*16 像素)。如图 1 所示。

图1.图像分为多个补丁(来源:原始论文中的图像)
然后将这些映像修补程序展开为一系列映像,如图 2 所示。这些图像序列具有位置嵌入。

图2.图像补丁展开成一系列图像(来源:原始论文中的图像)
最初,变压器不知道哪个补丁应该去哪里。因此,位置嵌入有助于变压器了解每个补丁应该适合的位置。在论文中,作者使用了简单的编号1,2,3...n,以指定补丁的位置,如图 3 所示。这些不仅仅是数字,而是可学习的向量。也就是说,数字 1 不直接使用,而是存在一个查找表,其中包含表示补丁位置的每个数字的向量。因此,对于第一个补丁,从表中抓取第一个矢量并与补丁一起放入变压器中。同样,对于第二个补丁,从表中抓取第二个矢量并与第二个补丁一起放入变压器中,依此类推。如图 2 所示。

图3.带有位置嵌入的补丁(来源:图片来自原始论文)

图4.位置嵌入作为向量表示(来源:作者创建的图像)
映像修补程序是小映像(16*16 像素)。这在某种程度上需要以一种变压器理解它的方式馈送。一种方法是将图像展开为 16*16 = 256 维向量。然而,该论文的作者使用了线性投影。这意味着有一个矩阵,表示为“E”(嵌入)。获取单个补丁并首先解卷成线性向量。然后将该向量与嵌入矩阵 E 相乘。然后将最终结果与位置嵌入一起馈送到变压器。
然后将所有补丁(线性投影)及其单独的位置嵌入送入变压器编码器。该变压器是标准的变压器架构(您只需要注意 - 纸)。
还有一个额外的可学习嵌入,标记为位置零,如图 5 所示。此嵌入的输出用于最终对整个图像进行分类。

图5.整个ViT架构,带有额外的可学习嵌入 - 用红色标记,最左边的嵌入(来源:原始论文的图片)
三、结果
表1显示了ViT与各种数据集上最先进的CNN架构的结果比较。ViT是在JFT-300数据集上进行预训练的。下面的结果表明,在所有数据集上,ViT的表现都优于基于ResNet的架构和EfficentNet-L2架构(在嘈杂的学生权重上预训练)。这两种模型都是当前最先进的CNN架构。在表1中,ViT-H指的是ViT-Huge(32层),ViT-L指的是ViT-Large(24层)。ViT-H/L 后面的数字 14 和 16 表示从每个图像创建的补丁大小(14*14 或 16*16)。
该表还显示,与其他 2 个 CNN 模型相比,ViT 需要的计算资源要少得多。

表 1.ViT结果与各种图像数据集上其他CNN架构的比较(来源:原始论文中的表格)
图6显示了变压器在对各种图像进行分类时给予的注意。

图6:从输出标记到输入空间的注意力机制(来源:原始论文图片)
四、结论
4.1 视觉变压器是否会在计算机视觉任务中取代CNN?
到目前为止,CNN已经在计算机视觉任务中占据主导地位。图像基于这样的想法,即一个像素依赖于其相邻像素,下一个像素依赖于其相邻像素(颜色、亮度、对比度等)。CNN对这个想法的研究,并在图像的补丁上使用过滤器来提取重要的特征和边缘。这有助于模型仅从图像中学习必要的重要特征,而不是图像每个像素的细节。
但是,如果将整个图像数据馈送到模型中,而不仅仅是过滤器可以提取的部分(或它认为重要的部分),则模型表现更好的机会更高。这正是视觉转换器内部正在发生的事情。这可能是在这种情况下,视觉变压器比大多数CNN型号工作得更好的原因之一。
4.2 但这是否意味着变压器将来将在计算机视觉任务中取代CNN?
好吧,答案是,不会那么快。就在几天前,EfficientNet V2型号发布,其性能甚至比Vision Transformers更好。这只是意味着,现在我们可以期待来自两种类型(CNN和变形金刚)的新架构将在不久的将来推出更新,更好,更高效的模型。
相关文章:
变形金刚在图像识别方面比CNN更好吗?
链接到文 — https://arxiv.org/pdf/2010.11929.pdf 一、说明 如今,在自然语言处理(NLP)任务中,转换器已成为goto架构(例如BERT,GPT-3等)。另一方面,变压器在计算机视觉任务中的使用…...
【Javascript】ES6新增之类的认识
在现代编程语言中,类是面向对象编程范式中的核心概念之一。 与函数类似,类本质上是一种特殊的函数,它允许我们将数据和操作封装在一起,以创建具有共同行为和状态的对象。 在类的世界里,我们有类表达式和类声明…...
C#随机法 双峰函数 求极值 避免落入局部最优解
避免落入局部最优解,只要让步长够长即可。 x1 resultX1 random1.NextDouble()*100; 如果后面不乘以100,则很大概率落入负数的最大值 Random random1 new Random(DateTime.Now.Millisecond);double x1 0, resultX10,max-999999,maxTemp0;for (int i …...
JavaScript高级:常见设计模式
设计模式是在软件开发中重复出现的问题的解决方案,它们是经过验证的、被广泛接受的最佳实践。设计模式可以让我们避免重复造轮子,提高代码质量和可维护性。在本文中,我们将介绍几种常见的设计模式,以及它们的实现和应用。 1. 单例…...
32bit国产低功耗无线MCU芯片
超低功耗无线MCU芯片MS1642,集成了高性能的32位ARMCortex-M0内核,宽电压工作范围的MCU。嵌入高达64Kbytes高可靠Flash和8Kbytes SRAM存储器,最高工作频率32MHz。芯片集成多路I2C、USART等通讯外设,1路12bit ADC,5个16b…...
scope组件穿透
今天我们以单选框为例来探究一下样式的穿透问题 1.代码 <template><div class""><el-radio v-model"radio" label"1">备选项</el-radio><el-radio v-model"radio" label"2">备选项</el-r…...
分类预测 | Python实现LR逻辑回归多输入分类预测
分类预测 | Python实现LR逻辑回归多输入分类预测 目录 分类预测 | Python实现LR逻辑回归多输入分类预测基本介绍模型描述源码设计学习小结参考资料基本介绍 逻辑回归是一种广义线性的分类模型且其模型结构可以视为单层的神经网络,由一层输入层、一层仅带有一个sigmoid激活函数…...
【微信小程序】通过使用 wx.navigateTo方法进行页面跳转,跳转后的页面中通过一些方式回传值给原页面
以下是几种常见的回传值的方式: 使用 wx.navigateTo 方法传递参数: 在跳转时,可以在目标页面的 URL 中携带参数,然后在目标页面的 onLoad 方法中获取参数,并在目标页面中进行处理。例如: // 原页面跳转到目…...
DIP: Spectral Bias of DIP 频谱偏置解释DIP
On Measuring and Controlling the Spectral Bias of the Deep Image Prior 文章目录 On Measuring and Controlling the Spectral Bias of the Deep Image Prior1. 方法原理1.1 动机1.2 相关概念1.3 方法原理频带一致度量与网络退化谱偏移和网络结构的关系Lipschitz-controlle…...
【考研数学】概率论与梳理统计 | 第一章——随机事件与概率(1)
文章目录 一、随机试验与随机事件1.1 随机试验1.2 样本空间1.3 随机事件 二、事件的运算与关系2.1 事件的运算2.2 事件的关系2.3 事件运算的性质 三、概率的公理化定义与概率的基本性质3.1 概率的公理化定义3.2 概率的基本性质 写在最后 一、随机试验与随机事件 1.1 随机试验 …...
LeetCode 36题:有效的数独
题目 请你判断一个 9 x 9 的数独是否有效。只需要 根据以下规则 ,验证已经填入的数字是否有效即可。 数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图ÿ…...
word横向页面侧面页码设置及转pdf后横线变竖线的解决方案
在处理材料的时候,会遇到同一个文档里自某一页开始,页面布局是横向的,这时候页码要设置在侧面,方法是双击页脚,然后在word工具栏上选择“插入”——>“文本框”——>“绘制竖版文本框”,然后在页面左…...
华为OD机试 - 字符串划分(Java JS Python)
题目描述 给定一个小写字母组成的字符串 s,请找出字符串中两个不同位置的字符作为分割点,使得字符串分成三个连续子串且子串权重相等,注意子串不包含分割点。 若能找到满足条件的两个分割点,请输出这两个分割点在字符串中的位置下标,若不能找到满足条件的分割点请返回0,…...
使用 `nmcli` 在 CentOS 8 上添加永久路由
CentOS 8 使用 NetworkManager 作为默认的网络管理工具,因此我们可以使用 nmcli 工具来实现相同的目标。使用 nmcli 可以更加直观地管理路由,并且更符合 CentOS 8 的默认网络管理方式。 以下是使用 nmcli 在 CentOS 8 上添加永久路由的步骤:…...
Java基础五之for循环小练习
加油,新时代大工人! 一、Java基础之算术运算符 二、Java基础之类型转换 三、Java基础之【字符串操作以及自增自减操作】 四、Java基础之赋值运算符和关系运算符 package base;import java.io.InputStream; import java.util.Scanner;/*** author wh* date 2023年08…...
解决 Python RabbitMQ/Pika 报错:pop from an empty deque
使用 python 的 pika 包连接rabbitmq,代码如下: import pika import threading import timedef on_message(channel, method_frame, header_frame, body):print(fon_message thread id: {threading.get_ident()})delivery_tag method_frame.delivery_t…...
观察者模式实战
场景 假设创建订单后需要发短信、发邮件等其它的操作,放在业务逻辑会使代码非常臃肿,可以使用观察者模式优化代码 代码实现 自定义一个事件 发送邮件 发送短信 最后再创建订单的业务逻辑进行监听,创建订单 假设后面还需要做其它的…...
035_小驰私房菜_Qualcomm账号注册以及提case流程
全网最具价值的Android Camera开发学习系列资料~ 作者:8年Android Camera开发,从Camera app一直做到Hal和驱动~ 欢迎订阅,相信能扩展你的知识面,提升个人能力~ 一、账号注册 1)登陆高通网站Wireless Technology & Innovation | Mobile Technology | Qualcomm, 采用…...
uniapp input输入框placeholder文本右对齐
input输入框placeholder文本右对齐 给input标签加上placeholder-class,这个是给placeholder设置样式,右对齐这就是text-align:right;字体颜色之类依次编辑即可。...
分布式监控平台—zabbix
前言一、zabbix概述1.1 什么是zabbix1.2 zabbix的监控原理1.3 zabbix常见五个应用程序1.4 zabbix的监控模式1.5 监控架构1.5.1 C/S(server—client)1.5.2 server—proxy—client1.5.3 master—node—client 二、部署zabbix2.1 部署 zabbix server 端2.2 …...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
电脑插入多块移动硬盘后经常出现卡顿和蓝屏
当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时,可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案: 1. 检查电源供电问题 问题原因:多块移动硬盘同时运行可能导致USB接口供电不足&#x…...
linux 错误码总结
1,错误码的概念与作用 在Linux系统中,错误码是系统调用或库函数在执行失败时返回的特定数值,用于指示具体的错误类型。这些错误码通过全局变量errno来存储和传递,errno由操作系统维护,保存最近一次发生的错误信息。值得注意的是,errno的值在每次系统调用或函数调用失败时…...
苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
分布式增量爬虫实现方案
之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面,避免重复抓取,以节省资源和时间。 在分布式环境下,增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路:将增量判…...
JAVA后端开发——多租户
数据隔离是多租户系统中的核心概念,确保一个租户(在这个系统中可能是一个公司或一个独立的客户)的数据对其他租户是不可见的。在 RuoYi 框架(您当前项目所使用的基础框架)中,这通常是通过在数据表中增加一个…...
LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...
【从零学习JVM|第三篇】类的生命周期(高频面试题)
前言: 在Java编程中,类的生命周期是指类从被加载到内存中开始,到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期,让读者对此有深刻印象。 目录 …...
