5.10.8 Transformer in Transformer

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

 

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

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

相关文章

智慧党建小程序源码系统 源码全开源支持二次开发 带完整的安装代码包以及搭建部署教程

源码系统概述 智慧党建小程序源码系统是一款基于微信小程序开发的党建管理工具,它集党员管理、党费收缴、活动组织、信息发布等功能于一体,实现了党建工作的全面数字化。该系统采用先进的云计算和大数据技术,支持多平台、多终端访问&#xff…

J-STAGE (日本电子科学与技术信息集成)数据库介绍及文献下载

J-STAGE (日本电子科学与技术信息集成)是日本学术出版物的平台。它由日本科学技术振兴机构(JST)开发和管理。该系统不仅包括期刊,还有论文集,研究报告、技术报告等。文献多为英文,少数为日文。目前网站上所发布的内容来…

二.基础篇: 面向对象进阶

1. 基础篇语法篇:一.基础篇:基础语法-CSDN博客 面向对象进阶 本章主要学习内容: static继承包,final,权限修饰符,代码块抽象类接口多态内部类 1. static static翻译过来就是静态的意思static表示静态&am…

家用洗地机哪款最好用?附热门洗地机品牌推荐,看完这篇不踩坑

随着技术的不断发展,现在的洗地机功能已经越来越强大了,它可以高效的扫地、拖地、不用手动清洗滚刷,甚至有些中高端型号还能边洗地边除菌,远程操控自清洁,简直就是家居清洁的小能手!那么,家用洗…

‘vue-cli-service‘ is not recognized as an internal or external command解决方案

vue-cli-service is not recognized as an internal or external command, operable program or batch file.解决方案 先进行 : npm install -g vue/cli 命令安装vue cli 是必须的。 如果 npm run build 还是报错 遇到同样的提示: 这时候先安装依赖 np…

深入理解与应用C++ Vector

1. C Vector 简介与基本使用 C 的 vector 是一个序列容器,用于表示可变大小的数组。它结合了数组的高效元素访问和动态大小调整的灵活性。与静态数组相比,vector 的大小可以根据需要自动调整,这是通过在底层使用动态数组来实现的。当新元素被…

返回倒数第K个节点(C语言)———链表经典算法题

题目描述​​​​​​:面试题 02.02. 返回倒数第 k 个节点 - 力扣(LeetCode): 答案展示: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/int kthToLast(struct Li…

娱乐营销的新玩法:Kompas.ai如何让内容更加趣味化

在数字化时代,内容营销已成为品牌与消费者沟通的重要桥梁。然而,随着信息的爆炸式增长,用户的注意力越来越分散,传统的营销方式已经难以吸引用户的兴趣。在这种背景下,娱乐营销应运而生,它通过将娱乐元素融…

2023年30米分辨率土地利用遥感监测数据

改革开放以来,中国经济的快速发展对土地利用模式产生了深刻的影响。同时,中国又具有复杂的自然环境背景和广阔的陆地面积,其土地利用变化不仅对国家发展,也对全球环境变化产生了深刻的影响。为了恢复和重建我国土地利用变化的现代…

R语言:GSEA分析

#安装软件包 > if (!requireNamespace("BiocManager", quietly TRUE)) install.packages("BiocManager") > BiocManager::install("limma") > BiocManager::install("org.Hs.eg.db") > BiocManager::install("…

【回溯 栈 代数系统 动态规划】282. 给表达式添加运算符

本文涉及知识点 回溯 栈 代数系统 动态规划 LeetCode 282. 给表达式添加运算符 给定一个仅包含数字 0-9 的字符串 num 和一个目标值整数 target ,在 num 的数字之间添加 二元 运算符(不是一元)、- 或 * ,返回 所有 能够得到 ta…

C++深度解析教程笔记8

C深度解析教程笔记8 第17课 - 对象的构造(上)类定义中成员变量i和j的初始值?实验-成员变量的初始值对象初始化解决方案1实验-手动调用函数初始化对象对象初始化解决方案2:构造函数实验-构造函数小结 第18课 - 对象的构造&#xff…

File类~路径、创建文件对象

路径分为相对路径(不带盘符),绝对路径(带盘符) 路径是可以存在的,也可以是不存在的 创建文件对象的三个方法:

QT设计模式:策略模式

基本概念 策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列方法,并使它们可以相互替换。策略模式使得算法可以独立于客户端而变化,使得客户端可以根据需要选择相应的算法。 策略模式通常由以下角色组…

使用非官网购买Chatgpt的api调用

测试代码 from openai import OpenAI client OpenAI(api_key用户密钥) import json import os import timeclass ChatGPT:def __init__(self, user):self.user userself.messages [{"role": "system", "content": "Agent"}]def as…

每周一算法:传递闭包

题目描述 不等式排序 给定 n n n个变量和 m m m个不等式。其中 n n n小于等于 26 26 26,变量分别用前 n n n 的大写英文字母表示。 不等式之间具有传递性,即若 A > B A>B A>B 且 B > C B>C B>C,则 A > C A>C …

linux下的进程通信

进程通信 进程为什么需要通信呢?进程通信的技术背景进程通信本质 进程通信分类管道匿名管道pipe匿名管道原理管道特点 命名管道创建命名管道命名管道原理 System V IPC管道与 System V的区别共享内存函数ftok()shmget() shmat()shmdt()shmctl()删除共享内存System V…

【笔记】EF_PNN获取及运营商名称显示(待完善)

问题背景 当设备无法成功解析EONS(PNN)的值(即SIM卡EF文件内容),则会用次优先级的NITZ去refresh了SPN。(问题代码如下,是通过Phone对象拿到plmn为空) 运营商名称一般显示优先级:Eons > NITZ > XML OPL id 0 对应的是PNN第一条 功能逻辑 (定制)当卡中的spn为空…

生产制造行业推拉式生产的复合应用

一、案例分析(汽配行业) 重点: 1. MTO/MTS 与 PUSH/PULL 有关系但是不是充分关系 2. MTO/MTS 是公司经营策略,更多是对市场需求的经营策略,体现在生产时机上的不同,一个是等客户需求,一个是填…

做国外问卷调查,一天能挣多少钱?

大家好​,我是汇舟问卷,专注于国外问卷调查项目已经五年的时间了,目前做的一直比较稳定。 这个项目说白了就是通过搭建国外的环境,登录问卷平台,通过参与国外企业发布的问卷调查来获取​美金奖励。 那么参与的问卷的…