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

 

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

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

相关文章

信号和槽基本概念

🐌博主主页:🐌​倔强的大蜗牛🐌​ 📚专栏分类:QT❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、概述 二、信号的本质 三、槽的本质 一、概述 在 Qt 中,用户和控件的每次交互过程称…

Bootloader+升级方案

随着设备的功能越来越强大,系统也越来越复杂,产品升级也成为了开发过程不可或缺的一道程序。在工程应用中,如何在不更改硬件的前提下通过软件的方式实现产品升级。通过Bootloader来实现固件的升级是一种极好的方式,Bootloader是单…

I2CKD : INTRA- AND INTER-CLASS KNOWLEDGE DISTILLATION FOR SEMANTIC SEGMENTATION

摘要 本文提出了一种新的针对图像语义分割的知识蒸馏方法,称为类内和类间知识蒸馏(I2CKD)。该方法的重点是在教师(繁琐模型)和学生(紧凑模型)的中间层之间捕获和传递知识。对于知识提取&#x…

12个乒乓球,有一个次品,不知轻重,用一台无砝码天平称三次,找出次品,告知轻重?

前言 B站上看到个视频:为什么有人不认可清北的学生大多是智商高的? 然后试了下,发现我真菜 自己的思路(失败) 三次称重要获取到12个乒乓球中那个是次品,我想着将12个小球编号,分为四组,每组…

yo!这里是socket网络编程相关介绍

目录 前言 基本概念 源ip&&目的ip 源端口号&&目的端口号 udp&&tcp初识 socket编程 网络字节序 socket常见接口 socket bind listen accept connect 地址转换函数 字符串转in_addr in_addr转字符串 套接字读写函数 recvfrom&&a…

Java入门基础学习笔记2——JDK的选择下载安装

搭建Java的开发环境: Java的产品叫JDK(Java Development Kit: Java开发者工具包),必须安装JDK才能使用Java。 JDK的发展史: LTS:Long-term Support:长期支持版。指的Java会对这些版…

pycharm报错Process finished with exit code -1073740791 (0xC0000409)

pycharm报错Process finished with exit code -1073740791 (0xC0000409) 各种垃圾文章(包括chatgpt产生的垃圾文章),没有给出具体的解决办法。 解决办法就是把具体报错信息显示出来,然后再去查。 勾选 然后再运行就能把错误显示…

MetaRTC-play拉流客户端代码分析

渲染使用opengl,音频播放使用alsa。 当点击播放按钮后,以此调用的类如下,开始建立rtc连接,AV解码,音频渲染,视频渲染。 如果想去除QT,改为cmake工程管理,去掉渲染部分即可。 下方是…

Linux---vim编辑器(续写)

5. vim正常模式命令集 插入模式 按「i」切换进入插入模式「insert mode」, 按“i”进入插入模式后是从光标当前位置开始输入文件; 按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字; 按「o」进入插入模式…

从头开始学Spring—01Spring介绍和IOC容器思想

目录 1.Spring介绍 1.1Spring概述 1.2特性 1.3五大功能模块 2.IOC容器 2.1IOC思想 ①获取资源的传统方式 ②反转控制方式获取资源 ③DI 2.2IOC容器在Spring中的实现 ①BeanFactory ②ApplicationContext ③ApplicationContext的主要实现类 1.Spring介绍 1.1Sprin…

Linux系统一步一脚印式学习

Linux操作系统具有许多特点和优势。首先,它是开放源代码的,也就意味着任何人都可以对源代码进行查看和修改。其次,可以同时支持多个用户且可以同时执行多个任务,此外,Linux操作系统也非常稳定和安全。相对于其他操作系…

安全测试|常见SQL注入攻击方式、影响及预防

SQL注入 什么是SQL注入? SQL注入是比较常见的网络攻击方式之一,主要攻击对象是数据库,针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,篡改数据库。 SQL注入简单来说就是通过在表单中填写包含SQL关键…

SSD-60S施耐德电机保护器EOCR-SSD

EOCR主要产品有电子式电动机保护继电器,电子式过电流继电器,电子式欠电流继电器,电子式欠电压继电器,其它保护装置,电流互感器。EOCR-SSD 10-60A电机保护器 系列型号: EOCRSSD-05SEOCRssD-30s EOCRSSD-60SEOCRSSD-0…

开源即时通讯IM框架 MobileIMSDK v6.5 发布

一、更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes、Github Release Notes)。 MobileIMSDK 可能是市面上唯一同时支持 UDPTCPWebSocket 三种协议的同类开源IM框架。轻量级、高…

8种常见的CMD命令

1.怎么打开CMD窗口 步骤1:winr 步骤2:在弹出的窗口输入cmd,然后点击确认,就会出现一个cmd的窗口 2.CMD的8种常见命令 2.1盘符名称冒号 说明:切换盘的路径 打开CMD窗口这里默认的是C盘的Users的27823路径底下&#xf…

基于微信小程序+JAVA Springboot 实现的【网上商城小程序】app+后台管理系统 (内附设计LW + PPT+ 源码+ 演示视频 下载)

项目名称 项目名称: 基于微信小程序的网上商城 项目技术栈 该项目采用了以下核心技术栈: 后端框架/库: Java, SSM框架数据库: MySQL前端技术: 微信开发者工具,微信小程序框架 项目展示 5.1 管理员服务…

Mat: Unknown HPROF Version

问题:Mat 加载 android studio 导出的 hprof 文件失败 原因:android hprof 文件不是标准的 java hprof 文件 解决办法: 使用 android sdk 自带的命令将 hprof 转换成标准的 java hprof

瞬息全宇宙——穿越之旅终极教程,手把手教你做出百万点赞视频

最近一种叫“瞬息全宇宙”的视频火了,抖音一期视频百万赞,各个博主视频都在带瞬息全宇宙这个标签,于是就有很多朋友催我出教程了,在琢磨了几天之后,终于整出来了 教程包含了插件的安装,界面的讲解&#xff…

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

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

HTML4(三):表单

文章目录 表单1. 基本结构2. 常用表单控件2.1 文本输入框2.2 密码输入框2.3 单选框2.4 复选框2.5 隐藏域2.6 提交按钮2.7 重置按钮2.8 普通按钮2.9 文本域2.10 下拉框2.11 示例 3. 禁用表单控件4. lable标签5. fieldset与legend标签6. 总结 表单 概念:一种包含交互…