【TNT】Transformer in Transformer

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


论文:https://arxiv.org/pdf/2103.00112.pdf

代码:https://github.com/huawei-noah/CV-Backbones


目录

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大小的切片,即:

 其中X^{^{1}}为其中一个视觉句子,将其再切片,得到x^{i,j},即视觉单词:

 

 其中x^{i,j}为第i个句子里的第j个单词.

2.第二步就是通过线性投影,将视觉单词转成单词序列,即y^{i,j}

 

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

L代表第L个block,是堆叠block的总数。第一个block中的Y_{0}^{i}就是第二步中的Y_{i}

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

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

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

 其中Z_{class}为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语义分割任务

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zy_destiny

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值