5.10.4 Vision Transformer的条件位置编码(CPE)

用于视觉 Transformer 的条件位置编码(CPE)方案与之前预定义且独立于输入标记的固定或可学习位置编码不同,CPE 是动态生成的,并以输入标记的局部邻域为条件。

CPE 可以轻松泛化到比模型在训练期间见过的输入序列更长的输入序列。此外,CPE 可以在视觉任务中保持所需的翻译等效性,从而提高性能。我们使用简单的位置编码生成器 (PEG) 来实现 CPE,以无缝地融入到当前的 Transformer 框架中。基于 PEG,我们提出了条件位置编码视觉变换器 Conditional Position encoding Vision Transformer (CPVT)。与学习位置编码的注意力图相比,CPVT 具有视觉上相似的注意力图,并提供了优异的结果。

Transformers 中的自注意力操作是排列不变的,它会丢弃输入序列中标记的顺序。之前的工作,将绝对位置编码添加到每个输入标记,从而实现顺序感知。

位置编码可以是可学习的,也可以用不同频率的正弦函数固定。这些位置编码严重损害了 Transformer 的灵活性,阻碍了其更广泛的应用。编码通常是与输入序列等长的向量,在训练期间与网络权重联合更新。因此,位置编码的长度和值一旦训练就固定了。在测试过程中,它会导致处理比训练数据中的序列长的序列变得困难。

在测试过程中无法适应更长的输入序列极大地限制了泛化范围。 在目标检测等视觉任务中,我们期望模型可以在推理过程中应用于任何尺寸的图像,这些图像可能比训练图像大得多。一种可能的补救措施是使用双三次插值将位置编码上采样到目标长度,如果不进行微调,它会降低性能。对于一般视觉,我们期望模型是平移等变的。


1. 介绍 

绝对位置编码方案可能会破坏平移等价性,因为它为每个标记(或每个图像块)添加了唯一的位置编码。相对位置编码不仅会带来额外的计算成本,而且还需要修改标准 Transformer 的实现。

在这项工作中,我们提出了一种新颖的位置编码(PE)方案,将位置信息合并到 Transformer 中。所提出的 PE 是动态生成的,并以输入标记的局部邻域为条件。因此,我们的位置编码可以随着输入大小而变化,并尝试保持平移等价性。

文章贡献

  • 提出了一种新颖的位置编码(PE)方案,称为条件位置编码(CPE)。 CPE 使用位置编码生成器 (PEG) 动态生成,可以通过现代深度学习框架轻松实现,无需更改当前的 Transformer API 。
  • 与广泛使用的绝对位置编码相反,CPE 可以提供一种对平移等价性更强的显式偏差,显著提高 Transformer 的性能。
  • 基于 CPE,我们提出了条件位置编码视觉变换器 (CPVT)。它比以前的视觉变压器实现了更好的性能。
  • CPE 可以很好地推广到任意输入分辨率,这是许多重要的下游任务(例如分割和检测)所需要的。通过实验,我们表明 CPE 可以显着提高金字塔变换器的分割和检测性能。

2. 相关工作

位置编码可以是固定的或可学习的,同时可以是绝对的或相对的。视觉转换器遵循相同的方式向网络注入位置信息。

绝对位置编码

在原始变压器中,编码是用不同频率的正弦函数生成的,然后将它们添加到输入中。或者,位置编码可以是可学习的,它们通过固定维度矩阵/张量实现,并通过 SGD 与模型参数联合更新。

相对位置编码

相对位置编码考虑输入序列中标记之间的距离。与绝对位置编码相比,相对位置编码可以是平移等变的,并且可以在训练期间自然地处理比最长序列更长的序列。

其他形式

复值嵌入是对全局绝对编码建模的扩展并显示出改进。

RoFormer利用旋转位置嵌入对绝对和相对位置信息进行编码以进行文本分类。

FLOATER提出了一种新颖的连续动态模型来捕获位置编码。训练时不受最大序列长度的限制,同时参数高效。

3. 具有条件位置编码的Vision Transformer

3.1 动机

在Vision Transformer中,大小为 H × W 的输入图像被分割为大小为 S × S 的块,块的数量为 N=\frac{HW}{S^2}。这些补丁添加了相同数量的可学习绝对位置编码向量。

首先,它阻止了模型处理比可学习的位置嵌入(PE)更长的序列。

可以通过删除位置编码来解决,除了位置编码之外,Vision Transformer的其他组件(MHSA和FFN)都可以直接应用于更长的序列。模型无法在没有位置编码的情况下提取顺序。

我们可以对位置编码进行插值,使它们具有与较长序列相同的长度。

其次,它使模型不是平移等变的,因为每个补丁都会添加一个唯一的位置编码向量。

3.2 条件位置编码

针对视觉任务的成功位置编码应该满足的三个要求:

  • 使输入序列具有排列不变性,并为平移等变性提供更强的显式偏差:

排列不变性:指的是模型的输出不应该因为输入序列中元素的排列顺序的改变而改变。

平移等变性:如果一个系统对于输入的平移(例如,在图像上左右或上下移动)能够给出一致性的输出,那么这个系统就具有平移等变性。

更强的显式偏差:指的是位置编码应该为模型提供明确的指导,使其更容易学习到平移等变性的特性。

  • 具有归纳性,并能够处理比训练时更长的序列

归纳性:指的是模型能够基于有限数量的训练样本学习到一般性的规律,并能够将这些规律应用到新的、未见过的数据上。

处理更长的序列:对于视觉任务,模型应该能够处理比训练时使用的图像更大分辨率或更长序列长度的图像。

  • 能够在一定程度上提供绝对位置信息

绝对位置信息对于许多视觉任务来说是至关重要的。例如,在目标检测或图像分割任务中,知道对象或区域的精确位置对于生成准确的预测结果至关重要。

通过位置编码来表征局部关系足以满足上述所有要求。首先,它是排列变异的,因为输入序列的排列也会影响一些局部邻域的顺序。然而,输入图像中对象的平移不会改变其局部邻域的顺序,即平移等变。其次,该模型可以轻松推广到更长的序列,因为仅涉及标记的局部邻域。此外,如果任何输入标记的绝对位置已知,则可以通过输入标记之间的相互关系来推断所有其他标记的绝对位置。


提出位置编码生成器(PEG)来动态生成以输入标记的局部邻域为条件的位置编码。

 PEG 可以通过具有内核 k (k ≥ 3) 和 \frac{k-1}{2}零填充的二维卷积来有效实现。

3.3 条件位置编码Vision Transformer (CPVT)

类标记不是平移不变的,尽管它可以学习成平移不变。一个简单的替代方案是直接用全局平均池化(GAP)替换它,它本质上是平移不变的,从而产生我们的 CVPT-GAP。

 

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

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

相关文章

Mysql8.0修改配置文件my.ini的坑

出现的问题:一般直接双击打开my.ini文件默认会用系统自带的记事本打开,如果打开后修改了其中的内容并通过记事本直接保存的话,下次重启就会导致mysql无法启动。 原因是mysql会以ANSI编码读取my.ini文件。 解决办法:使用notepad打…

Imitation Learning学习记录(理论例程)

前言 最近还是衔接着之前的学习记录,这次打算开始学习模仿学习的相关原理,参考的开源资料为 TeaPearce/Counter-Strike_Behavioural_Cloning: IEEE CoG & NeurIPS workshop paper ‘Counter-Strike Deathmatch with Large-Scale Behavioural Clonin…

现代制造之3D打印技术进行零件加工

现代制造 有现代技术支撑的制造业,即无论是制造还是服务行业,添了现代两个字不过是因为有了现代科学技术的支撑,如发达的通信方式,不断发展的互联网,信息化程度加强了,因此可以为这两个行业增加了不少优势…

简单易懂的Java Queue入门教程!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

600/天,海外项目值班,接不接?

朋友介绍了一个海外项目,广告系统短期维护,刚上线需要维护14天也就是2个星期,费用单价600/天,主要工作内容:北京晚上12点-早上8点值班,如果有问题及时响应并修复。 如果我年轻10岁,这个项目我倒…

【网站项目】SpringBoot803房屋租赁管理系统

🙊作者简介:拥有多年开发工作经验,分享技术代码帮助学生学习,独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。🌹赠送计算机毕业设计600个选题excel文件,帮助大学选题。赠送开题报告模板&#xff…

C++入门指南(上)

目录 ​编辑 一、祖师爷画像 二、什么是C 三、C发展史 四、C在工作领域的应用 1. 操作系统以及大型系统软件开发 2. 服务器端开发 3. 游戏开发 4. 嵌入式和物联网领域 5. 数字图像处理 6. 人工智能 7. 分布式应用 五、如何快速上手C 一、祖师爷画像 本贾尼斯特劳斯…

docker修改默认安装路径

docker安装之后默认在 /etc/docker 在/etc/docker 文件下有一个daemon -json 没有就新增 {"registry-mirrors": ["https://kfwkfulq.mirror.aliyuncs.com","https://2lqq34jg.mirror.aliyuncs.com","https://pee6w651.mirror.aliyuncs.c…

续篇——源码部署LAMP环境上线项目——禅道项目

上篇:LNMP环境部署WordPress——使用源码包安装方式部署环境-CSDN博客 目录 一.前提准备 1. 名词区别 2. 下载项目软件包 3. 上传项目源码到虚拟机并解压 二.安装Apache 1. 环境清理 2.关闭Nginx 3. 下载Apache 4. 下载APR组件 4.1 安装apr 4.2 安装apr-util组件 5…

算法学习012-不同路径 c++动态规划算法实现 中小学算法思维学习 信奥算法解析

目录 C不同路径 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、推荐资料 C不同路径 一、题目要求 1、编程实现 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” &#xff09…

德国储能项目锂电池储能集装箱突发火灾:安全挑战再引关注

2024年4月27日,德国尼尔莫尔商业区的一起锂电池储能集装箱火灾事件引起了全球关注。这起事故不仅导致两名消防员在救援过程中受伤,更暴露了储能系统在安全领域亟待解决的重要问题。 根据德国消防队的出警记录,火灾发生在晚上9点前不久。消防人…

在Linux操作系统中LVM逻辑券管理指令

1.PV物理券相关指令 1.查看机器中的PV pvscan 命令 这个叫做/dev/sda2 的PV,被加入到了名叫centos的卷组中,并且这个券组的大小是小于19.51GB 2.创建物理券 pvcreate 磁盘/分区名称 pvcreate /dev/sdc 3.删除物理券 pvremove 磁盘/分区名称 2.…

5.10.3 使用 Transformer 进行端到端对象检测(DETR)

框架的主要成分称为 DEtection TRansformer 或 DETR,是基于集合的全局损失,它通过二分匹配强制进行独特的预测,以及 Transformer 编码器-解码器架构。 DETR 会推理对象与全局图像上下文的关系,以直接并行输出最终的预测集。 1. …

欢乐钓鱼大师自动钓鱼,游戏辅助!

在探索《欢乐钓鱼大师》的世界时,一项备受关注的功能是陀螺仪模式。这是一种利用手机陀螺仪传感器来增强游戏体验的功能,通过模拟真实的钓鱼动作,让玩家更深入地沉浸在游戏的世界中,感受到更加逼真的钓鱼体验。在本篇攻略中&#…

【全开源】JAVA同城组局同城找搭子系统源码支持微信小程序微信公众号H5 APP

让你周末不孤单 发布活动:用户可以发布自己想要进行的活动,包括活动类型、时间、地点等信息,方便其他用户查找和参与。搜索搭档:用户可以根据活动类型、时间、地点等信息,搜索附近的搭档,快速找到志同道合…

Github 2024-05-12 php开源项目日报 Top10

根据Github Trendings的统计,今日(2024-05-12统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量PHP项目10Filament: 加速Laravel开发的完美起点 创建周期:1410 天开发语言:PHP协议类型:MIT LicenseStar数量:12228 个Fork数量:1990 次关…

工程师工具箱系列(2)hasor

文章目录 工程师工具箱系列(2)hasor简介特点环境准备引入依赖数据库脚本文件配置Hasor配置 运行测试小结 工程师工具箱系列(2)hasor 简介 Hasor有着自己的独立的生命周期与Spring的不同,是一套完整的体系,提供了注入DataQL、Dataway、hasor-web等等&am…

半小时搞懂STM32面经知识点——IIC

1.IIC 1.1什么是IIC? 同步半双工通信协议,适用于小数据和短距离传输。 1.2 IIC需要几条线? IIC总共有2条通信总线(SDA,SCL),SCL为时钟同步线,用于主机和从机间数据同步操作;SDA为…

SSM【Spring SpringMVC Mybatis】—— Spring(一)

目录 1、初识Spring 1.1 Spring简介 1.2 搭建Spring框架步骤 1.3 Spring特性 1.5 bean标签详解 2、SpringIOC底层实现 2.1 BeanFactory与ApplicationContexet 2.2 图解IOC类的结构 3、Spring依赖注入数值问题【重点】 3.1 字面量数值 3.2 CDATA区 3.3 外部已声明be…

JVM之运行时数据区

Java虚拟机在运行时管理的内存区域被称为运行时数据区。 程序计数器: 也叫pc寄存器,每个线程会通过程序计数器记录当前要执行的字节码指令的地址。程序计数器在运行时是不会发生内存溢出的,因为每个线程只存储一个固定长度的内存地址。 JAVA虚…