zoukankan      html  css  js  c++  java
  • CVPR2021 | 华为诺亚实验室提出Transformer in Transformer

    前言:

    transformer用于图像方面的应用逐渐多了起来,其主要做法是将图像进行分块,形成块序列,简单地将块直接丢进transformer中。然而这样的做法忽略了块之间的内在结构信息,为此,这篇论文提出了一种同时利用了块内部序列和块之间序列信息的transformer模型,称之为Transformer-iN-Transformer,简称TNT。

    主要思想

    图片

    TNT模型把一张图像分为块序列,每个块reshape为像素序列。经过线性变换可从块和像素中获得patch embedding和pixel embedding。将这两者放进堆叠的TNT block中学习。

    在TNT block中由outer transformer block和inner transformer block组成。

    outer transformer block负责建模patch embedding上的全局相关性,inner block负责建模pixel embedding之间的局部结构信息。通过把pixel embedding线性映射到patch embedding空间的方式来使patch embedding融合局部信息。为了保持空间信息,引入了位置编码。最后class token通过一个MLP用于分类。

    通过提出的TNT模型,可以把全局和局部的结构信息建模,并提高特征表示能力。在精度和计算量方面,TNT在ImageNet和downstream 任务上有非常优异的表现。例如,TNT-S所在ImageNet top-1上在只有5.2B FLOPs的前提下实现了81.3%,比DeiT高了 1.5%。

    一些细节

    图片

    对照这个图,用几个公式来介绍。

    图片

    MSA为Multi-head Self-Attention。

    MLP为Multi Layer Perceptron。

    LN为Layer Normalization。

    Vec为flatten。

    加号表示残差连接。

    前两个公式是inner transformer block,处理块内部的信息,第三个公式是将块内部的信息通过线性映射到patch embedding空间,最后两个公式是outer transformer block,处理块之间的信息。

    位置编码的方式看下面的图就足了。

    图片

    模型参数量和计算量如下表所示:

    图片

    Conclusion

    图片

    最近把公众号(CV技术指南)所有的技术总结打包成了一个pdf,在公众号中回复关键字“技术总结”可获取。

    图片

    本文来源于公众号CV技术指南的技术总结系列,更多内容请扫描文末二维码关注公众号。

  • 相关阅读:
    分布式锁原理及实现方式
    【FAQ】Maven 本地仓库明明有jar包,pom文件还是报错解决办法
    【FAQ】tomcat启动jdk版本不一致
    【Map,HashMap,Vector,List】资料汇总
    【FAQ】调用接口序列化问题
    【docker】docker下安装mysql
    linux tcpdump抓包Post请求
    Springboot 在@Configuration注解的勒种 使用@Autowired或者@value注解 读取.yml属性失败
    Springboot使用Shiro-整合Redis作为缓存 解决定时刷新问题
    CentOS yum 安装nginx
  • 原文地址:https://www.cnblogs.com/wxkang/p/14729707.html
Copyright © 2011-2022 走看看