【TNT】Transformer in Transformer

编程入门 行业动态 更新时间:2024-10-13 16:21:28

【<a href=https://www.elefans.com/category/jswz/34/1759155.html style=TNT】Transformer in Transformer"/>

【TNT】Transformer in Transformer

这是今年中科院计算机科学实验室、华为和澳门大学联合写的一篇文章,题目非常硬核,TNT,像是多么爆炸性的产出。话不多说,直接开始学习吧。


论文:.00112.pdf

代码:


目录

1.背景

2.网络

2.1网络结构

2.2网络计算

 2.3位置编码

 3.实验

3.1TNT on ImageNet

3.2图像分类任务

 3.3目标检测任务

 3.4语义分割任务


1.背景

Transformer是基于自注意机制的一种神经网络,他能表示不同特征图之间的关系。Transformer 作为一种新型的神经网络架构,通过注意力机制将输入编码为强大的特征表征,通常,Transformer是将输入图像分成几个分块,然后计算每个分块之间的关系,自然影像由于具有丰富的细节和颜色信息,所以复杂性较高,但是分块的颗粒不够精细,无法挖掘不同尺度和位置的物体特征,因此,本文提出一种新的高性能Transformer结构-TNT(Transformer In Transformer )。

2.网络

2.1网络结构

为了增强特征表征能力,TNT首先将输入图像分成几个patch切片,类似于“视觉句子”,然后将每个“视觉句子”的patch切片再切分成几个切片,类似于“视觉单词”,TNT网络除了要提取传统transformer网络的“视觉句子”之间的注意力特征,还要挖掘“视觉单词”之间的参数。特别注意的是,计算“视觉单词”之间的注意力特征时采用共享网络参数机制,因此计算“视觉单词”之间的注意力特征的参数和FLOPS的增加量可以忽略不计。然后,这个“视觉单词”的特征会被合成到对应的“视觉句子”中,class token也会通过连接不同的head被用于各种视觉识别任务中,通过TNT模型,可以提取更细粒度的视觉信息,提供更多的特征细节。

2.2网络计算

假设输入影像为image,

1.第一步就是将image切片,切成n个P*P*3大小的切片,即:

 其中为其中一个视觉句子,将其再切片,得到,即视觉单词:

 

 其中为第i个句子里的第j个单词.

2.第二步就是通过线性投影,将视觉单词转成单词序列,即:

 

 3.通过正常的transformer操作计算每个视觉句子中视觉单词之间的特征,那么视觉单词之间的关系用下式来计算:

L代表第L个block,是堆叠block的总数。第一个block中的就是第二步中的

4.图像中所有的单词序列经过transformer之后被表示成:

它表示了所有视觉单词中任意两个单词之间的关系。

 5.在视觉句子等级上,跟ViT一样,我们首先将视觉句子表示成句子序列:

 其中为class token,这些均被初始化为0

6.将之前计算的视觉单词的transformer结果叠加到视觉句子上,得到:

 7.重复之前的transformer步骤,对视觉句子计算句子之间的关系,即:

 在此基础上,TNT的输入和输出可以被表示成:

 2.3位置编码

 空间信息对图像识别来说是非常重要的因素,因此对 sentence embeddings 和word embeddings都添加了位置编码。上面的网络图中可以看到。

 

 

 3.实验

3.1TNT on ImageNet

 可视化特征图的结果如下图所示:

3.2图像分类任务

 3.3目标检测任务

 3.4语义分割任务

整理不易,欢迎一键三连!!!

更多推荐

【TNT】Transformer in Transformer

本文发布于:2024-02-13 14:32:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759075.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:TNT   Transformer

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!