5.10.8 Transformer in Transformer

news2025/1/6 9:14:57

Transformer iN Transformer (TNT)。具体来说,我们将局部补丁(例如,16×16)视为“视觉句子”,并将它们进一步划分为更小的补丁(例如,4×4)作为“视觉单词”。每个单词的注意力将与给定视觉句子中的其他单词一起计算,计算成本可以忽略不计。单词和句子的特征将被聚合以增强表示能力。

1. 介绍

Transformer是一种主要基于自注意力机制的神经网络,它可以提供不同特征之间的关系。

CV 任务中的输入图像和真实标签之间存在语义差距。ViT 将给定​​图像划分为多个局部块作为视觉序列。然后,可以自然地计算任意两个图像块之间的注意力,以便为识别任务生成有效的特征表示。

文章贡献

一种用于视觉识别的新型 Transformer-in-Transformer (TNT) 架构。为了增强视觉 Transformer 的特征表示能力,首先将输入图像划分为多个块作为“视觉句子”,然后进一步将它们分成子补丁作为“视觉单词”。

除了用于提取视觉句子的特征和注意力的传统Transformer Block之外,我们进一步将子变压器嵌入到架构中以挖掘较小视觉单词的特征和细节。

具体来说,每个视觉句子中视觉单词之间的特征和注意力是使用共享网络独立计算的,因此增加的参数量和 FLOP(浮点运算)可以忽略不计。然后,单词的特征将被聚合成相应的视觉句子。该类令牌还通过全连接头用于后续视觉识别任务。通过所提出的TNT模型,我们可以提取细粒度的视觉信息并提供更多细节的特征。

2. 方法

2.1 预先工作

多头自注意力

在自注意力模块中,输入 X\in\mathbb{R}^{n\times d}被线性变换为三个部分,查询Q\in\mathbb{R}^{n\times d_{k}},键K\in\mathbb{R}^{n\times d_{k}}和值V\in\mathbb{R}^{n\times d_{v}}。其中 n 是序列长度,dd_kd_v 分别是输入、查询(键)和值的维度。缩放点积注意力:Attention(Q,K,V)=softmax(\frac{QK^{T}}{\sqrt{d_{k}}})V最后,使用线性层来产生输出。多头自注意力将查询、键和值拆分为 h 个部分并并行执行注意力函数,然后将每个头的输出值连接并线性投影以形成最终输出。

多层感知器(MLP)

MLP 应用于自注意力层之间,用于特征变换和非线性:

MLP(X)=FC(\sigma(FC(X))),\quad FC(X)=XW+b其中W和b分别是全连接层的权重和偏置项,σ(·)是激活函数。

层归一化(LN)

层归一化 是 Transformer 中稳定训练和更快收敛的关键部分。LN 应用于每个样本x\in R^d

LN(x)=\frac{x-\mu}{\delta}\circ\gamma+\beta,其中\mu \in R, \delta \in R分别是特征的平均值和标准差,\circ是逐元素点积,

\gamma\in R^d,\beta\in R^d是可学习的变换参数。

2.2 Transformer in Transformer

给定一个 2D 图像,我们将其均匀分割为 n 个补丁\mathcal{X}=[X^{1},X^{2},\cdots,X^{n}]\in\mathbb{R}^{n\times p\times p\times3},其中

(p,p)是每个图像块的分辨率。ViT 仅利用标准转换器来处理补丁序列,这会破坏补丁的局部结构,Transformer-in-Transformer (TNT) 架构来学习图像中的全局和局部信息。

在 TNT 中,我们将补丁视为代表图像的视觉句子。每个补丁又分为m个子补丁,即一个视觉句子由一系列视觉单词组成:X^i\to[x^{i,1},x^{i,2},\cdots,x^{i,m}],其中x^{i,j}\in\mathbb{R}^{s\times s\times3}是第 i 个视觉句子的第 j 个视觉词;(s,s)是子块的大小,j=1,2,\cdots,m

通过线性投影,我们将视觉单词转换为一系列单词嵌入:

Y^{i}=[y^{i,1},y^{i,2},\cdots,y^{i,m}],\quad y^{i,j}=FC(Vec(x^{i,j}))

其中y^{i,j}\in\mathbb{R}^c是第 j 个词嵌入,c 是词嵌入的维度,Vec(·) 是向量化操作。


在 TNT 中,我们有两个数据流,其中一个数据流跨视觉句子进行操作,另一个数据流处理每个句子内的视觉单词。对于词嵌入,我们利用Transformer Block来探索视觉单词之间的关系:

Y{'}_{l}^{i}=Y_{l-1}^{i}+MSA(LN(Y_{l-1}^{i}))

Y_{l}^{i}=Y{'}_{l}^{i}+MLP(LN(Y{'}_{l}^{i}))

其中l=1,2,\cdots,L是第 l 个块的索引,L是堆叠块的总数。第一个块Y_o^i的输出就是Y^i。变换后图像中的所有词嵌入均为\mathcal{Y}_{l}=[Y_{l}^{1},Y_{l}^{2},\cdots,Y_{l}^{n}],可以看作内部Transformer Block,表示为T_{in}。该过程通过计算任意两个视觉单词之间的交互来构建视觉单词之间的关系。

对于句子级别,创建句子嵌入记忆来存储句子级别表示的序列:

\mathcal{Z}_{0}=[Z_{\mathrm{class}},Z_{0}^{1},Z_{0}^{2},\cdots,Z_{0}^{n}]\in\mathbb{R}^{(n+1)\times d} 其中Z_{class}是类似于ViT的类标记,并且它们都被初始化为零。在每一层中,词嵌入的序列通过线性投影变换到句子嵌入的域中,并添加到句子嵌入中:Z_{l-1}^i=Z_{l-1}^i+FC(Vec(Y_l^i)),其中Z_{l-1}^i\in\mathbb{R}^d。使用标准Transformer Block来转换句子嵌入:

\mathcal{Z}^{\prime}{}_{l}=\mathcal{Z}_{l-1}+MSA(LN(\mathcal{Z}_{l-1}))

\mathcal{Z}_{l}=\mathcal{Z}^{\prime}{}_{l}+MLP(LN(\mathcal{Z}^{\prime}{}_{l}))

外部变压器块 T_{out} 用于对句子嵌入之间的关系进行建模。

TNT块的输入和输出包括视觉词嵌入和句子嵌入。\mathcal{Y}_l,\mathcal{Z}_l=TNT(\mathcal{Y}_{l-1},\mathcal{Z}_{l-1})


在TNT 块中,内部 Transformer 块用于对视觉单词之间的关系进行建模以进行局部特征提取,外部 Transformer 块从句子序列中捕获内在信息。最后,分类标记用作图像表示,并应用全连接层进行分类。

位置编码

空间信息是图像识别的重要因素。对于句子嵌入和词嵌入,我们都添加相应的位置编码来保留空间信息,使用标准的可学习一维位置编码。具体来说,每个句子都分配有一个位置编码:

\mathcal{Z}_0\leftarrow\mathcal{Z}_0+E_{sentence},其中E_{sentence}\in\mathbb{R}^{(n+1)\times d}是句子位置编码。对于句子中的视觉单词,每个单词嵌入都添加一个单词位置编码:Y_0^i\leftarrow Y_0^i+E_{word}, i=1,2,\cdots,n

其中E_{word}\in\mathbb{R}^{m\times c}是跨句子共享的单词位置编码。这样,句子位置编码可以保持全局空间信息,而词位置编码用于保持局部相对位置

2.3 复杂性分析

标准变压器块包括两部分,即多头自注意力和多层感知器。MSA的FLOPs为

2nd(d_{k}+d_{v})+n^{2}(d_{k}+d_{v}),MLP的FLOPs为2nd_v rd_v。其中 r 是MLP中隐藏层的维度扩展比。总体而言,标准变压器块的 FLOPs 为

\mathrm{FLOPs}_T=2nd(d_k+d_v)+n^2(d_k+d_v)+2nddr。由于 r 通常设置为4,并且输入、键(查询)和值的维度通常设置为相同,因此FLOPs计算可以简化为\mathrm{FLOPs}_T=2nd(6d+n)

FLOPs值越高,说明模型或算法的计算复杂度越高,可能需要更强大的计算资源来支持其运行

 参数个数为\mathrm{Params}_T=12dd

TNT 块由三部分组成:内部变压器块 Tin、外部变压器块 Tout 和线性层。 Tin和Tout的计算复杂度分别为2nmc(6c + m)和2nd(6d + n)。线性层的 FLOPs 为 nmcd。总共,TNT 块的 FLOP 为

\mathrm{FLOPs}_{TNT}=2nmc(6c+m)+nmcd+2nd(6d+n)。TNT块的参数复杂度计算为

\mathrm{Params}_{TNT}=12cc+mcd+12dd

TNT 块与标准 Transformer 块的 FLOPs 比率约为 1.14×。同样,参数比例约为1.08×。随着计算和内存成本的小幅增加,我们的 TNT 模块可以有效地对局部结构信息进行建模,并在准确性和复杂性之间实现更好的权衡。

2.4 网络架构

3. 实验

3.1 数据集和实验设置

ImageNet ILSVRC 2012 [26] 是一个图像分类基准,由属于 1000 个类的 120 万张训练图像和 50K 个验证图像(每类 50 张图像)组成。数据集下载链接

3.2 ImageNet 上的 TNT

在TNT结构中,句子位置编码用于维护全局空间信息,单词位置编码用于保留局部相对位置。

3.3 消融实验

视觉词的数量:

在TNT中,输入图像被分割成许多16×16的块,并且每个块进一步被分割成 m 个大小为(s, s)的子块(视觉词)以提高计算效率。

本文中 m 默认取值为16.

3.4 可视化

特征图的可视化

将 DeiT 和 TNT 的学习特征可视化,以进一步了解所提出方法的效果。为了更好的可视化,输入图像的大小调整为 1024×1024。特征图是通过根据块的空间位置重塑块嵌入来形成的

第 1 个、第 6 个和第 12 个块中的特征图如图(a)所示,其中每个块随机采样 12 个特征图。与 DeiT 相比,TNT 中本地信息得到了更好的保存。我们还使用 t-SNE 对第 12 个块中的所有 384 个特征图进行可视化。

t-SNE算法的核心思想是将高维空间中的数据点映射到低维空间中,使得相似的数据点在低维空间中靠近彼此,而不相似的数据点则被远离。

可视化了 TNT 的像素级嵌入。对于每个补丁,我们根据词嵌入的空间位置重塑词嵌入以形成特征图,然后按通道维度对这些特征图进行平均。对应于14×14块的平均特征图

注意力图的可视化。我们的 TNT 块中有两个自注意力层,即内部自注意力层和外部自注意力层,分别用于建模视觉单词和句子之间的关系。内部变压器中不同查询的注意力图。对于给定的查询视觉词,具有相似外观的视觉词的注意力值较高,表明它们的特征将与查询交互更相关。

 

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

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

相关文章

ChatGLM 本地部署指南(问题解决)

硬件要求(模型推理): INT4 : RTX3090*1,显存24GB,内存32GB,系统盘200GB 如果你没有 GPU 硬件的话,也可以在 CPU 上进行推理,但是推理速度会更慢。 模型微调硬件要求更高。…

高效测评系统方案助力沃尔玛、亚马逊卖家提升产品销量

无论在哪个电商平台,测评确实是最有效的推广方式。测之前一定要选好产品,因为对于大部分卖家而言,不可能你店铺里所有的都是爆款,所以选择的是需要有潜力成为爆款的产品。测评是指通过搭建安全的环境模拟真实的买家购物行为&#…

AH1515-12v转3V20A电源芯片

AH1515-12v转3V20A电源芯片:一款强大的电源解决方案 在当今的电子设备领域,电源管理的重要性不言而喻。一款优秀的电源芯片能够为各种设备提供稳定、高效的电能转换。今天,我们将为大家介绍一款极具特色的电源芯片——AH1515。这款芯片将为您…

FMEA存在的五个主要不足及改进措施——FMEA软件

免费试用FMEA软件-免费版-SunFMEA 在制造业和产品设计领域,失效模式与影响分析(Failure Modes and Effects Analysis,简称FMEA)被广泛运用,用于预防潜在的设计或制造缺陷。然而,尽管FMEA在风险管理方面发挥…

【51】Camunda8-Zeebe核心引擎-Zeebe Gateway

概述 Zeebe网关是Zeebe集群的一个组件,它可以被视为Zeebe集群的联系点,它允许Zeebe客户端与Zeebe集群内的Zeebe代理进行通信。有关Zeebe broker的更多信息,请访问我们的附加文档。 总而言之,Zeebe broker是Zeebe集群的主要部分,它完成所有繁重的工作,如处理、复制、导出…

加州大学欧文分校英语高级语法专项课程01:Verb Tenses and Passives 学习笔记

Verb Tenses and Passives Course Certificate Course Intro 本文是学习 Verb Tenses and Passives 这门课的学习笔记。 文章目录 Verb Tenses and PassivesWeek 01: Simple, Progressive, and Perfect Verb Tenses ReviewLearning Objectives Present Perfect Tense Review L…

Spring Cloud Alibaba Sentinel 集成与限流实战(6)

项目的源码地址 Spring Cloud Alibaba 工程搭建(1) Spring Cloud Alibaba 工程搭建连接数据库(2) Spring Cloud Alibaba 集成 nacos 以及整合 Ribbon 与 Feign 实现负载调用(3) Spring Cloud Alibaba Ribbo…

MySQL————创建存储过程函数

存储过程使用大纲 有参数传递 delimiter $$ 声明一个名称为get_student_introduce create procedure add_student_infor( in p_userName VARCHAR(20),in p_phone VARCHAR(11),in p_sex char(2),in p_introduce VARCHAR(255)) 开始操作 BEGIN 撰写真正在操作DMLDQL都行 INSE…

Transformer模型详解04-Encoder 结构

文章目录 简介基础知识归一化作用常用归一化 残差连接 Add & NormFeed Forward代码实现 简介 Transformer 模型中的 Encoder 层主要负责将输入序列进行编码,将输入序列中的每个词或标记转换为其对应的向量表示,并且捕获输入序列中的语义和关系。 具…

(超详细讲解)实现将idea的java程序打包成exe (新版,可以在没有java的电脑下运行,即可以发给好朋友一起玩)

目录 实现打包到exe大概步骤 工具准备 1.将java程序文件打包成jar文件 2.准备好jre文件 3.使用exe4j软件打包好 4.最终打包 实现打包到exe大概步骤 1.打包需要满足的条件:将java文件转成jar文件的工具exe4j、 以及需要满足jdk1.8以上(因安装exe4…

Android面试题之Kotlin和Java之间互操作

本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 互操作性和可空性 要注意Java中所有类型都是可空的String!表示平台数据类型 public class JavaTest {public String generateName() {return …

2024中国(重庆)无人机展览会8月在重庆举办

2024中国(重庆)无人机展览会8月在重庆举办 邀请函 主办单位: 中国航空学会 重庆市南岸区人民政府 招商执行单位: 重庆港华展览有限公司 报名:【交易会I 59交易会2351交易会9466】 展会背景: 为更好的培养航空航天产业和无人…

Python 数据处理 合并二维数组和 DataFrame 中特定列的值

🍉 CSDN 叶庭云:https://yetingyun.blog.csdn.net/ 示例代码如下: import numpy as np import pandas as pddata {label: [1, 2, 3, 4]} df pd.DataFrame(data)values_array df[["label"]].values random_array np.random.ran…

CSDN使用

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

Python-VBA函数之旅-sum函数

目录 一、sum函数的常见应用场景 二、sum函数使用注意事项 三、如何用好sum函数? 1、sum函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、sum函数的常…

AI绘画神级Stable Diffusion入门教程|快速入门SD绘画原理与安装

什么是Stable Diffusion,什么是炼丹师?根据市场研究机构预测,到2025年全球AI绘画市场规模将达到100亿美元,其中Stable Diffusion(简称SD)作为一种先进的图像生成技术之一,市场份额也在不断增长&…

Llama3-Tutorial(Llama 3 超级课堂)-- 笔记

第1节—Llama 3 本地 Web Demo 部署 端口转发 vscode里面设置端口转发 https://a-aide-20240416-b4c2755-160476.intern-ai.org.cn/proxy/8501/ ssh -CNg -L 8501:127.0.0.1:8501 rootssh.intern-ai.org.cn -p 43681参考 https://github.com/SmartFlowAI/Llama3-Tutorial/b…

每日一练2024.5.9

题目: 给定一个非负整数数组 nums, nums 中一半整数是 奇数 ,一半整数是 偶数 。 对数组进行排序,以便当 nums[i] 为奇数时,i 也是 奇数 ;当 nums[i] 为偶数时, i 也是 偶数 。 你可以返回 …

防伪溯源一体化管理系统基于FastAdmin+ThinkPHP和Uniapp(源码搭建/上线/运营/售后/维护更新)

一款基于FastAdminThinkPHP和Uniapp进行开发的多平台(微信小程序、H5网页)溯源、防伪、管理一体化独立系统,拥有强大的防伪码和溯源码双码生成功能(内置多种生成规则)、批量大量导出防伪和溯源码码数据、支持代理商管理…

活动预告|“AI+Security”系列第1期:大模型网络空间安全前沿探索活动火热报名中

由Wisemodel社区、安全极客主办的 “AISecurity”系列第1期: 大模型网络空间安全前沿探索 线下活动 将于2024年5月18日下午14:00 在苏州街16号神州数码大厦5层举行 本活动旨在汇聚业界专家和实践者共同探讨和推进AI自身安全、AI赋能安全与AI给安全带来的挑战等关…