摘要:
ViT将图像切分成块,然后拉直,这种方法没有考虑块内的信息。(原文:ViT将图片切分成Patch,然后计算patch的表征和它们之间的关系。然而自然图像具有高度的复杂性,细节和颜色信息丰富,patch的划分粒度不够细致的话,将无法挖掘不同尺度和位置的物体特征。) 所以,作者提出了一种新的结构 TNT(Transformer in Transformer) ,用于进一步的提取更细粒度的特征和细节。 图1. TNT模型结构
具体介绍
TNT的结构如上图1所示 将送入Encoder的Patch(如16×16)称为“visual sentences”,然后将其进一步划分为更小的patch(如4×4),称为“visual words”。下面我用patch和sub-patch来指代sentences和words具体流程: patch切分成m个sub-patches后,先将sub-patches拉成向量,作一次映射,然后加上位置编码(不同patches的sub-patchs共享一个postion encoding)。过sub-patches级Transformer的block(self-attention layer+MLP),得到m个表征后,再拉成向量,再做一次映射,使其维度和1个patch相同(同一层block的参数也是不同sub-patch间共享),然后将二者相加。再将整合过sub-patces信息的patch过patch级的Transformer。 下图是指标(拿DeiT基本上都只拿加上训练tricks的,没有用知识蒸馏): 图2. ImageNet指标对比
可视化feature maps结果(将原始图片上采样成1024×1024,分成14×14个patch,过完block取embedding做可视化,比如输出是196×384,那么featute map大小就是14×14,总共384个),如下图3: 图3 .特征图可视化 attention map(用attention rollout 递归求注意力,即用cls token对每个patch的注意力一层一层递归的求到对原始patch的注意力,有多头就取平均的score)如下图4所示: 图4.注意力图可视化
总结:ViT浪费了patch中的局部特征,而TNT能够更好的保持局部信息和给局部信息建模。